Architecture of Software Systems SWEN 4322

Course description:

This course is designed for students with Java background. The course objective is to familiarize the student with techniques for designing reusable combinations of Java classes and organizing their cooperation to produce modular and maintainable Java programs. Upon completion of the course, the student will be able to understand most important design patterns and apply object-oriented techniques for designing reusable, maintainable and modifiable software.

Course Aims:

This course aims to:
• Indicate which underlying object oriented design principle(s) it is based on.
• Explain the reasoning for each object oriented design principle.
• Explain what specific object oriented design problem the pattern solves.
• Provide a specific context for each pattern in which it can be applied.
• Draw a high level class diagram in UML for each pattern.
• Explain how the different components of the pattern collaborate with each other. 
• List the consequences of applying each pattern to the overall software quality of a system.
• List which patterns are related to this pattern and what type pattern each pattern is. 
• Implement this pattern in Java to a real world problem. 
• Be able to mix patterns with each other and understand the consequences of mixing patterns on the overall quality of a system.

Course outcomes:

Upon completion of this course, the student should be able to:
•  Rise to design challenges through use of tools and methodologies.
•  Reduce business risks associated with building technical solutions.
•  Address stakeholder requirements and satisfy both functional and quality requirements.
•  Refer to international standards to help structure your architect team and projects.
•  Hard and software engineering.