This course will equip you with an arsenal of software design and architecture skills. The goal of object-oriented design is to produce design models of a software system. A design model describes a system’s internal structure and behavior from the developers' point of view and guides them during system implementation. The design model is derived by an iterative process—components, sub-components, etc.—from the analysis model, which describes the system from the user's perspective. Design and analysis models are constructed out of Unified Modeling Language (UML) diagrams and recurring design templates called design patterns.
After presenting an overview of how object-oriented design fits into the software development process, the course focuses on assembling systems from components using architectural patterns such as Model-View-Controller, Component-Container, Client-Server, and Agent-Based. You’ll also learn about the internal structure and dynamics of components using class diagrams, sequence diagrams, and design patterns. Assignments will focus on using CASE tools to build design models. Programming assignments will include analyzing designs and building frameworks.
Skills Needed: Knowledge of object-oriented development, including UML notation, and familiarity with an object-oriented language such as Java or C++.
Note: Students should bring a laptop with StarUML 2.0 and either Eclipse or NetBeans installed.