Course Description
Full cycle of a software system development effort, including requirements definition, system analysis, design, implementation, and testing. Special emphasis is placed on system analysis and design. The design phase includes development of a user interface. A large term project incorporates the full software life cycle.
Additional Requirements for Graduate Students:
Graduate students conduct an in-depth study of one of the phases in the software life cycle. They carry larger responsibilities in the design and development of the term project.
Athena Title
Software Engineering
Equivalent Courses
Not open to students with credit in CSCI 4050E or CSCI 6050E
Prerequisite
CSCI 2720 or CSCI 2725
Semester Course Offered
Offered fall and spring
Grading System
A - F (Traditional)
Course Objectives
This course presents a survey of topics in software engineering most relevant to students studying computer science. At the end of the semester, all students will be able to do the following: 1. Identify and differentiate phases of a typical software process and how it relates to the software life cycle and the different software process models. 2. Create functional requirement specifications in the form of use cases and user stories, and differentiate between functional and non-functional requirements. 3. Develop static and dynamic UML diagrams to model both the structural and behavioral aspects of the software system throughout the different phases of the development life cycle. 4. Create a software architecture specification, including subsystem decomposition and subsystem interface descriptions. 5. Communicate and effectively function as a member of a software development team to develop a software system based on its specification and previously created models. 6. As a team, deliver a coherent and professional presentation and demonstration of a functioning software system and the results of its testing.
Topical Outline
1. Software engineering and software process (3-hours) 2. Team and project management (2-hours) 3. Requirements elicitation and specification (4-hours) 4. Use case modeling (3-hours) 5. Requirements analysis (4-hours) 6. UML diagrams (4-hours) 7. Static and dynamic modeling (3-hours) 8. System design and architectural styles (4-hours) 9. Design patterns (3-hours) 10. Detailed (object) design (4-hours) 11. Object constraint language (1-hour) 12. Implementation techniques (5-hours) 13. Source code management (2-hours) 14. Persistence and storage systems (2-hours) 15. Verification and testing (3-hours) 16. Software demonstration (3-hours)
Syllabus