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 those systems satisfy quality attributes such as security, availability, performance, scalability, modifiability, and maintainability. Students learn the importance of designing software according to specific engineering principles using well understood software patterns and software architectures that isolate within the code base where change is likely to take place and ensure a robust code base that is engineered to integrate required changes over time through evolving requirements. Prerequisite: ESOF 328 and CSCI 332.


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)

E3. Students should have a solid understanding of commonly used data structures and well-known algorithms and how to implement them in a high-level object-oriented programming language. (CSCI 332)

Course Outcomes:

R1. Be able to design and implement a term project in a high-level object-oriented program language by utilizing at least two (2) software design patterns and conforming to a well-known software architecture. (SE: 1, 2)

R2. Be able to analyze and articulate the impact of their engineered design on the quality attributes of their code base. (SE: 3, 4)

R3. Understand the concept of software design patterns, why they are useful, and how they are created and promulgated. (SE: 1, 2, 3)

R4. Be familiar with some of the 23 “Gang of Four” design patterns and other useful patterns and give the requirements for an application for which at least one of the patterns studied applies, can select and appropriately utilize the pattern. (SE: 1, 2, 3)

R5. Must be able to provide a complete design document – using the latest version of UML – for the software being written. (SE: 3)

III-1-2-1 - Computing fundamentals, software design and construction, requirements analysis, security, verification, and validation
III-1-2-2 - Software engineering processes and tools appropriate for the development of complex software systems