ESOF 427


Software Design and Architecture

3 Cr. (Hrs.:3 Lec.)

Builds on the student's existing knowledge of and experience designing software. This course focuses on high level design of software systems so that those systems satisfy quality attributes such as security, availability, performance, and modifiability. Students will learn the importance of developing, documenting, communicating, and adhering to a software architecture that achieves not only the functional but also the non-functional requirements of a software system. Prerequisite: ESOF 328 and CSCI 443. (1st)

Course generally offered fall (1st) semester.

Expectations:

E1. Students have a conceptual understanding of and practical experience with the steps of requirements production, including requirements elicitation, requirements validation, and requirements management. (ESOF 328)

E2. Students have worked in a group to design, implement, test, and maintain a small software system (5000 lines of code) and appreciate the complexities of implementing a large software system. Students have made at least two presentations on aspects of the software systems that they implemented. (ESOF 322)

Course Outcomes:

At the conclusion of this course those students who receive at least a grade of C- will:

R1. Be able to give a satisfactory answer to an essay quiz question on the importance of designing for modifiability, availability and reliability, and on tactics for achieving specific quality attributes. (EAC-a, c, e, g, k; SEC-1, 2)

R2.Given functional and modifiability, availability, and reliability requirements for a software application, be able to create and document a design which satisfies the functional requirements and addresses the modifiability, availability, and reliability requirements. (EAC-a, c, e, g, k; SEC-1, 2)

R3. Understand the concept of software design patterns, why they are useful, and how they are created and promulgated. (EAC-a, c, e, g, k; SEC-1, 2)

R4. Be familiar with some of the 23 "Gang of Four" design patterns and other useful patterns, and given the requirements for an application for which at least one of the patterns studied applies, can select and appropriately utilize the pattern. (EAC-a, c, e, k; SEC-1, 2)

R5. Understand design views and can document a software design in a MTM Program Product Software Design Description. (EAC-a, e, k; SEC-1, 2)

R6. Be able to implement and test any of the design patterns covered in this course using Java or C# in either Eclipse, or Microsoft Visual Studio. (EAC-a; SEC-1, 2)