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