Slide 1

Slide 1 text

CSE360 Introduction to Software Engineering Lecture 22: Software Architecture II Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu Office Hours: By appointment

Slide 2

Slide 2 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 2 Previously • “horizontal” and “vertical” partitioning • define separate branches for each major function • coordinate communication between modules • design so that decision making and work are stratified • results in propagation of fewer side effects • results in software that is easier to extend

Slide 3

Slide 3 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 3 Architectural Patterns • Model-View-Controller (MVC) • Layered Architecture • Repository architecture (Blackboard) • Client-Server architecture

Slide 4

Slide 4 text

Model-View-Controller Architecture Pattern

Slide 5

Slide 5 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 5 Model-View-Controller

Slide 6

Slide 6 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 6 MVC Implementation Subject

Slide 7

Slide 7 text

Layered Architecture Architecture Patterns

Slide 8

Slide 8 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 8 A generic layered architecture User interface Core business logic/application functionality System utilities System support (OS, database etc.) User interface management Authentication and authorization

Slide 9

Slide 9 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 9 Layered architecture Description Organizes the system into layers with related functionality associated with each layer. A layer provides services to the layer above it so the lowest-level layers represent core services that are likely to be used throughout the system. When used Used when : • building new facilities on top of existing systems; • the development is spread across several teams with each team responsibility for a layer of functionality; • there is a requirement for multi-level security. Advantages Allows replacement of entire layers so long as the interface is maintained. Redundant facilities (e.g., authentication) can be provided in each layer to increase the dependability of the system. Disadvantages In practice, providing a clean separation between layers is often difficult and a high-level layer may have to interact directly with lower-level layers rather than through the layer immediately below it. Performance can be a problem because of multiple levels of interpretation of a service request as it is processed at each layer.

Slide 10

Slide 10 text

Client-Server Architecture Patterns

Slide 11

Slide 11 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 11 Client-Server

Slide 12

Slide 12 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 12 Client-Server Description The functionality of the system is organized into services. Each service delivered from a separate server. Clients are users of these services and access servers to make use of them. When used Used when data has to be accessed from a range of locations. May also be used when the load on a system is variable. Advantages Distributed system Disadvantages Each service is a single point of failure so susceptible to denial of service attacks or server failure. Performance may be unpredictable because it depends on the network as well as the system.

Slide 13

Slide 13 text

Blackboard Architecture Patterns

Slide 14

Slide 14 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 14 Blackboard

Slide 15

Slide 15 text

Javier Gonzalez-Sanchez | CSE360 | Summer 2018 | 15 Blackboard Description All data in a system is managed in a central repository Components do not interact directly, only through the repository. When used when you have a system in which large volumes of information are generated that has to be stored for a long time. When the inclusion of data in the repository triggers an action or tool. Advantages Components can be independent—they do not need to know of the existence of other components. Changes made by one component can be propagated to all components. Disadvantages The repository is a single point of failure so problems in the repository affect the whole system. May be inefficiencies in organizing all communication through the repository.

Slide 16

Slide 16 text

CSE360 – Introduction to Software Engineering Javier G onzalez-Sanchez javiergs@ asu.edu Sum m er 2017 Disclaim er. These slides can only be used as study m aterial for the class C SE360 at ASU. They cannot be distributed or used for another purpose.