Course image Software Architecture and Design
Department of Computer and Software Engineering

The aim of this module is to provide the knowledge of fundamental concepts of Software Architecture and Design that teaches the principles and concepts involved in the analysis and design of large software systems. 

Software design refer to either all the activities that are involved in conceptualizing, framing, implementing, commissioning and ultimately modifying complex systems or the activities following requirements specification and before programming, as a stylized software engineering process.

Learning Outcomes

A.    Knowledge and Understanding

Having successfully completed the module, students should be able to demonstrate knowledge and understanding of:

  1. Knowledge and understanding with special reference to adverse architectural and design effects, 
  2. Knowledge of principles, techniques and applications using complex systems. 
  3. Classifying requirements to functional and no  functional categories.
  4. Expressing a software design using an appropriate graphical notation. 
  5. Comparisons and contrast analysis and design patterns based on their relative merits. 
  6. Demonstrating an understanding of Design by Contract and formal verification. 
  7. Have an in-depth knowledge of the role and use of CASE tools in the design process.