$30 off During Our Annual Pro Sale. View Details »

CSE460 Lecture 28

CSE460 Lecture 28

Software Analysis and Design
Software Architecture
(202011)

Javier Gonzalez-Sanchez
PRO

July 28, 2020
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs
    CSE 460
    Software Analysis and Design
    Lecture 28: Software Architecture
    Dr. Javier Gonzalez-Sanchez
    [email protected]
    javiergs.engineering.asu.edu | javiergs.com
    PERALTA 230U
    Office Hours: By appointment

    View Slide

  2. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 2
    jgs
    Software Design

    View Slide

  3. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 3
    jgs
    Software Architecture
    Java.util
    javax.swing
    java.awt

    View Slide

  4. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 4
    jgs
    Definition
    § Software design
    It is responsible for the code level design: what each class is doing, its
    relationships, and scope.
    § Software architecture
    It is responsible for the skeleton and the high-level organization of a
    software.
    It identifies the main structural modules (or components) in a system and
    the relationships between them.

    View Slide

  5. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 5
    jgs
    Architecture Goals
    § Define separate branches for each major function
    § Coordinate communication between modules
    § Limit propagation of side effects
    § Facilitate extensibility, modifiability and reuse

    View Slide

  6. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 6
    jgs
    Architecture Representation
    § The most frequently used method for documenting software architectures
    are simple, informal block diagrams
    § They show entities and relationships
    § They lack semantics, do not show the types of relationships between
    entities nor the visible properties of entities in the architecture.

    View Slide

  7. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 7
    jgs
    Architectural Decisions
    Is there a generic application
    architecture that can act as a
    template for the system that is
    being designed?
    How will the system be
    distributed across hardware
    cores or processors?
    What architectural patterns or
    styles might be used?
    What will be the fundamental
    approach used to structure
    the system?
    How will the structural
    components in the system be
    decomposed into
    sub-components?
    What strategy will be used to
    control the operation of the
    components in the system?
    What architectural organization
    is best for delivering the
    non-functional requirements
    of the system?
    How should the architecture
    of the system be
    documented?
    ?

    View Slide

  8. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 8
    jgs
    Architectural Patterns
    1. Model-View-Controller (MVC)
    2. Layered Architecture
    3. Repository Architecture (Blackboard)
    4. Client-Server architecture

    View Slide

  9. jgs
    Model-View-Controller

    View Slide

  10. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 10
    jgs
    Model-View-Controller

    View Slide

  11. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 11
    jgs
    Model-View-Controller

    View Slide

  12. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 12
    jgs
    Model-View-Controller

    View Slide

  13. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 13
    jgs
    Model-View-Controller
    Description
    Separates presentation and interaction from the system data into three logical
    components:
    1. Model manages the system data and operations.
    2. View defines and manages how the data is presented to the user.
    3. Controller manages user interaction (e.g., key presses, mouse clicks, etc.)
    and passes these interactions to the View and the Model.
    When
    Used
    • Used when there are multiple ways to view and interact with data.
    • Also, used when the future requirements for interaction and presentation of
    data are unknown.
    Advantages
    • Allows the data to change independently of its representation and vice versa.
    • Supports presentation of the same data in different ways with changes made
    in one representation shown in all of them.
    Disadvantages
    • Additional code and complexity when the data model and interactions are
    simple.

    View Slide

  14. Javier Gonzalez-Sanchez | CSE460 | Fall 2020 | 14
    jgs
    Drafting an Implementation

    View Slide

  15. jgs
    To be Continued…

    View Slide

  16. jgs
    CSE 460 Software Analysis and Design
    Javier Gonzalez-Sanchez
    [email protected]
    Fall 2020
    Disclaimer. These slides can only be used as study material for the class CSE460 at ASU. They cannot be distributed or used for another purpose.

    View Slide