Software Architecture #
1. Given an architecture diagram or description, identify the architecture style. #

2. Know 1 advantage and disadvantage of: #
-
Client-Server

-
Layered & Mutli-tiered

-
Model-View-Controller

-
Pipe and filter

3. Given a class diagram, answer some questions about relationships/properties. #

4. Name and explain(brief) some symptoms of poor design. #

5. Name and explain(brief) three general design principles. #

6. Given a design that breaks a SOLID principle, identify a solution. #

7. Define Coupling and Cohesion. Know the ideal levels of each (low coupling, high cohesion.) #

8. What and why of design patterns, in general. #

9. Design pattern types (Creational, Structural, Behavioral) #

10. A problem solved by a design pattern and how the design pattern provides a solution. For example, given a problem what design pattern(s) would be most appropriate. Only select from set of patterns covered in class. #
Singleton

Factory

Composite

Iterator

Observer

Strategy

11. The difference between Static & Dynamic analysis #

e.g. SonarQube

12. Strengths & Weaknesses of manual and automated static analyses. #

13. Identify/define measurements done by Static Analysis tool #

14. Define Refactoring & its purpose #

15. The refactoring process #
