CSE 216 Software Engineering (3)
Instructor: Jim Femister
Current Catalog Description
The software life-cycle; life-cycle models; software planning; testing; specification methods; maintenance. Emphasis on team work and large-scale software systems, including oral presentations and written reports. Prerequisite: CSE 109.
Textbook
Hans van Vliet, Software Engineering: Principles and Practice, 2nd ed., J. Wiley.
References
Martin Fowler, UML Distilled, Addison Wesley.
Rumbaugh, Jacobson, Booch, The Unified Modeling Language Reference Manual, Addison Wesley.
Course Goals
1. Understanding of
o basic software engineering terminology
o the software life-cycle
o the roles and responsibilities of the various stakeholders in a software project
o the role of software process in facilitating development and ensuring software quality
2. Ability to prepare a requirements specification.
3. Ability to create control-flow graphs, data-flow graphs, and compute simple quality metrics.
4. Ability to use CASE tools.
5. Ability to design interfaces.
6. Ability to use the Unified Modeling Language.
7. Gain experience working in a team.
8. Appreciation of the issues that make large-scale software engineering challenging.
Prerequisites by Topic
1. Fluency in writing code in C++.
2. Ability to effectively use classes to construct medium-scale software.
Major Topics Covered in the Course
1. Software Process
2. Project Management (including Project Planning, Cost Estimation, and Configuration Management)
3. Requirements Engineering
4. Software Architecture
5. Software Design (including Functional Decomposition, Data Flow Design, Object-Oriented Analysis & Design, User Interface Design, the Unified Modeling Language)
6. Software Quality
7. Reusability
8. Maintainability
9. Testing
10. CASE Tools
Laboratory projects (specify number of weeks on each)
Requirements Specification (2 weeks), Interface Design (2 weeks), Class Design (2 weeks), Implementation and Unit Testing (3 weeks), Integration (3 weeks).
Estimate CSAB Category
CORE ADVANCED
Data Structures
Computer Organization and Architecture
Algorithms Software Design 2.5
Concepts of Programming Languages 0.5
Oral and Written Communications
Every student is required to submit at least __2__ written reports (not including exams, tests, quizzes, or commented programs) of typically __8__ pages and to make ____ oral presentations of typically _____ minutes duration. Include only material that is graded for grammar, spelling, style, and so forth, as well as for technical content, completeness, and accuracy.
Social and Ethical Issues
Theoretical Content
Modeling: 10 classes
Program analysis techniques: 4 classes
Role of polymorphism, interfaces, and Class Factory design pattern in reducing coupling among modules: 4 classes
Problem Analysis
Students work in teams to:
Understand and analyze the class project, then write a Requirements Specification for it.
Understand the overall architecture design, then determine the interface to their portion of the system.
Determine how to test their portion of the system in isolation, and how to test its integration into the overall system.
Solution Design
Students work individually to:
Apply the Class Factory design pattern in a programming assignment
Students work in teams to:
Design the implementation for their portion of the class project.