Module Handbook

You can use this search form for searching subject module.



Topic Content:


This course is the architecture and design of complete software systems, building on components and patterns. Topics include architectural principles and alternatives, design documentation, relationships between levels of abstraction, theory and practice of human interface design, creating systems which can evolve, choosing software sources and strategies, prototyping and documenting designs, and employing patterns for reuse. How to design systems which a team of developers can implement, and which will be successful in the real world.


1.      Assess and improve the effectiveness of a team of software project stakeholders, including customers, users, and members of a significantly sized development overall team that is made up of smaller teams and using cross-teams.

2.      Recognize the differences between problems and solutions, and deal with their interactions.

3.      Use agile methods to design and develop a system for a real customer.

4.      Demonstrate object-oriented design basics like domain models, class diagrams, and interaction (sequence and communication) diagrams.

5.      Use fundamental design principles, methods, patterns and strategies in the creation of a software system and its supporting documents.

6.      Identify criteria for the design of a software system and select patterns, create frameworks, and partition software to satisfy the inherent trade-offs.

7.      Analyze and explain the feasibility and soundness of a software design.

8.      Design and build effective human-computer interfaces using standard methods and criteria. .

9.      Describe the basic ingredients of successful software product lines – How to do multiple releases of software.

10.  Analyze the quality attributes, economics and other global properties of existing designs and systems, and gain experience building systems so as to have desirable global properties. This is the heart of software architecture. Includes also make vs. buy decisions, and discussion of component selection.

11.  Create and document the overall design for a system and document this design using UML and other methodologies and notations. This elaborates on the ways to develop, prototype and document architectures.

12.  Practice the process by which architectures get created, in terms of technologies, economics, people, and processes, looking at more patterns and new angles, including also some full-blown design methods like use of different architectural styles.