Use the following to guide your reading from Chapter 6: Architectural design in Software Engineering (Sommerville 2016):

  1. What is the distinction between “architecture in the small” and “architecture in the large”?
  2. List and briefly describe the three advantages of explicitly designing and documenting the software architecture according to Bass et al. (2012).
  3. How do non-functional system characteristics (e.g., performance, security, safety, availability, and maintainability) interact with architectural design decisions?
  4. What are the 4+1 architectural views?
  5. What are the roles and interactions of the Model-View-Controller (MVC) pattern?
  6. For each of the following architectural patterns, provide a brief description of it, an example application, when to use it, and its advantages and disadvantages.
    • model-view-controller
    • layered
    • repository
    • client-server
    • pipe and filter