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.
Knowledge of the foundations of software engineering
Programming skill in a high level language
Knowledge of data structures and algorithms
4 semester units. 3 units lecture and 1 unit lab.
Selected elective for CS
Software Engineering, 9th Edition.
By: Ian Summerville.
Publisher: Addison-Westley.
Pub. Date: 2011.
Web ISBN-13: 978-0-13-703515-1.
Personal laptop computer is recommended in case of large class size.
Huaqing Wang, Melissa Danforth, Donna Meyers, Gordon Griesel
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
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
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 |
Not applicable to course.
Gordon Griesel, August 2014
Approved by CEE/CS Department on [date]
Effective Fall 2016