CS 618 - Software Design
Credits: 3
Course Description
This course provides an overview of the software design field: software design overview, software design process, a survery of software design methods (such as structured design methods, object-oriented design methods, concurrent design methods), design reviews, as well as discussing current topics such as object-oriented programming, refactoring, and design patterns. Testing and validation techniques will be emphasized throughout the course. Program designs will be developed and validated throughout the course. Readings and summaries of current and seminal journal papers and texts will be required.
Prereqs: 9 graduate credits
Needed Skills
Students should have had an undergraduate course in software engineering, CS 616, and/or software engineering experience.
Learning Outcomes
Students will learn about the software design process. They will learn about a number of design methods. They will explore current topics such as aspect-oriented programming and design patterns. They will learn about verification of design.
Week by Week Course Outline
| Week | Topics |
|---|---|
| 1 | Overview of Software Engineering, Requirements Engineering |
| 2 | Overview of software design, Design process (includes OOAD), Software design concepts, introduction to software design methods |
| 3 | Key issues in software design, Software structure and architecture, software design notation (static, dynamic), Survey of software design strategies and methods - functional |
| 4 | Survey of software design strategies and methods - OO: Overview of OO analysis and modeling - background, UML notation, OO lifecycle, Database design |
| 5 | UML notation, Model-View-Controller, Use case modeling |
| 6 | Classes - static modeling, object and class structuring, Design Patterns |
| 7 | Design Patterns, Finite state machines, dynamic modeling |
| 8 | Packaging, documentation, process issues, OO Architecture, design detilas (metrics, more on Patterns) |
| 9 | User interface design |
| 10 | Conceptual model, behavioral model, reviews, Design analysis |
| 11 | Contruction, Generalization, Specification, Refactoring |
| 12 | Refactoring, Aspect-oriented programming |
| 13 | Concurrent OO design |
| 14-15 | Student lectures |
Examinations
Exact details about examinations in this course will be determined by the instructor offering the course. Typically there will be two in-class exams and one in-class final examination. Specific details will be made available in the syllabus at the start of each semester in which the course is offered.
Grading
A student's grade will be determined by a weighted average of homework assignments, a written project, class participation, presentations, hour exams, and the final examination. The faculty offering the course will make the details available at the start of the course. A typical weighting is:
Attendance and participation - 10%
Homework - 10%
Presentations - $15%
Paper - 15%
Hour Exams - 35%
Final - 15%
Possible Textbooks
Derek Hatley, Peter Hruschka, and Imtiaz Pirbhai
Process for System Architecture and Requirements Engineering
Dorset House Publishing
ISBN: 0-932633-41-2
Karl Wiegers
Software Requirements
Microsoft Press
ISBN: 0-7356-0631-5
Leszek Maciaszek
Requirements Analysis and System Design
Addison Wesley
ISBN: 0-201-70944-9