CMPS 4350 Advanced Software Engineering
Catalog Description
CMPS 4350 Advanced Software Engineering (4)
Continuation of the introductory software engineering course. Methods and tools for the implementation, integration, testing and maintenance of large, complex software systems. Program development and test environments. Group laboratory project. Technical presentation methods and practice. Ethical and social issues in software engineering. Prerequisite: CMPS 3350.
Prerequisites by Topic
Knowledge of the foundations of software engineering
Programming skill in a high level language
Knowledge of data structures and algorithms
Units and Contact Time
4 semester units. 3 units lecture and 1 unit lab.
Selected elective for CS
Required Textbook
Software Engineering, 9th Edition. By: Ian Summerville. Publisher: Addison-Westley. Pub. Date: 2011. Web ISBN-13: 978-0-13-703515-1.
Recommended Textbook and Other Supplemental Materials
Personal laptop computer is recommended in case of large class size.
Huaqing Wang, Melissa Danforth, Donna Meyers, Gordon Griesel
Student Learning Outcomes
This course covers the following ACM/IEEE Body of Knowledge student learning outcomes:

1. SE/Software Processes
2. SE/Software Project Management
3. SE/Requirements Engineering
4. SE/Software Construction
5. SE/Software Verification and Validation
6. SE/Software Evolution
7. SE/Software Reliability
ABET Outcome Coverage

The course maps to the following performance indicators for Computer Science (CAC/ABET):

(CAC PIb2): Produce a solution within specifications.
Group Project
(CAC PIc3): Design the selected solution for a given problem.
Programming assignments and group project
(CAC PIc4): Implement the designed solution for a given problem.
Group project
(CAC PId1): Fulfill team duties and share in the work of the team.
Group project
(CAC PId2): Listen and communicate with other team members.
Group project
(CAC PId3): Research and gather information.
Group project
(CAC PId4): Meet deadlines and achieve project goals.
Group project
(CAC PId5): Cooperate on reports with a reasonable share of duties.
Group project
(CAC PIf1): Write technical reports.
Group project
(CAC PIf2): Prepare and deliver oral presentations.
Group project
(CAC PIi1): Program in a suitable computer language.
Programming assignments and group project
(CAC PIi3): Utilize problem solving skills and techniques to complete the task.
Programming assignmenta and group project
(CAC PIk1): Understand the software/system life-cycle.
Group project
(CAC PIk2): Write documentation for each phase of the development cycle.
Group project
Lecture Topics and Rough Schedule

Week-1 Software processes, Software process models
Week-2 Agile software development
Week-3 Agile project management, Extreme programming
Week-4 System modeling
Week-5 Design and implementation, Object-oriented design using UML
Week-6 to 8 Software testing, Test-driven development, Release testing, User testing
Week-9 to 10 Dependability and security, Dependability properties, Dependability and security specifications, Risk-driven requirements
Week-11 Software reuse, Application frameworks
Week-12 Component-based software engineering
Week-13 Distributed software engineering, Software as a service
Week-14 Embedded software, Timing analysis, Real-time operating systems
Week-15 Aspect-oriented software engineering
Design Content Description
Not applicable to course.
Prepared By
Gordon Griesel, August 2014
Approved by CEE/CS Department on [date]
Effective Fall 2016