Architectural Design PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This presentation details architectural design principles and examples for software engineering. It covers topics such as learning objectives, introductions, architectural models and patterns, and architectural design decisions, along with various examples.
Full Transcript
Architectural Design CSC450: Introduction to Software Engineering CSC450: Introduction to Software Engineering Architectural Design 1 / 29 Learning Objectives The importance of architectural design of s...
Architectural Design CSC450: Introduction to Software Engineering CSC450: Introduction to Software Engineering Architectural Design 1 / 29 Learning Objectives The importance of architectural design of software. The decisions made about the software architecture during the architectural design process. Architectural patterns. Application-Specific Architectural patterns. CSC450: Introduction to Software Engineering Architectural Design 2 / 29 Introduction Example: packing robot system CSC450: Introduction to Software Engineering Architectural Design 3 / 29 Introduction Software architecture is very important, it affects: The performance of the system. The Robustness of the system. The distributability of the system. The maintainability of the system. CSC450: Introduction to Software Engineering Architectural Design 4 / 29 Introduction Architectural model of a program is used As a way of encouraging discussions about the system design Useful for communication with system stakeholders and project planning As a way of documenting an architecture that has been designed Produce a complete system model that shows the different components in a system, their interfaces and their connections CSC450: Introduction to Software Engineering Architectural Design 5 / 29 Introduction Advantages of architectural design Stakeholder communication Provides a high-level presentation of the system System analysis Design decisions can determine if the system can meet critical requirements (e.g. performance, reliability, and maintainability) Large-scale reuse Describes of how a system is organized and how the components interoperate CSC450: Introduction to Software Engineering Architectural Design 6 / 29 Introduction Two levels of software architectures abstraction Architecture in the small Concerned with the architecture of individual programs How an individual program is decomposed into components Architecture in the large Concerned with the architecture of complex enterprise systems that include other systems, programs, and program components Enterprise systems may be distributed over different computers CSC450: Introduction to Software Engineering Architectural Design 7 / 29 Architectural design decisions Architectural design is a creative process There is no formulaic architectural design process Architectural design depends on The type of system being developed The background and experience of the system architect The specific requirements for the system Architectural design can be considered a a series of decisions to be made rather than a sequence of activities CSC450: Introduction to Software Engineering Architectural Design 8 / 29 Architectural design decisions CSC450: Introduction to Software Engineering Architectural Design 9 / 29 Architectural design decisions The choice of architectural style and structure depends on: Performance. Security. Safety. Availability. Maintainability. CSC450: Introduction to Software Engineering Architectural Design 10 / 29 Principles leading to good design Principle 1: Divide and conquer It is easier to design a software if it is subdivided into a collection of elements. Each element delivers distinct functionality that can be developed and validated independently of other elements. Principle 2: Increase cohesion where possible Measures how well a component “fits together”. The degree to which a component/module performs one and only one function. CSC450: Introduction to Software Engineering Architectural Design 11 / 29 Principles leading to good design Principle 3: Reduce coupling where possible The degree of interaction and interdependence between two software components or units Types of coupling: No coupling: ideal, but not practical. Low/Loose coupling: component changes are unlikely to affect other components. Tight coupling: all components are connected to each other. CSC450: Introduction to Software Engineering Architectural Design 12 / 29 Principles leading to good design Principle 4: Keep the level of abstraction as high as possible The software/system abstract model should be kept as high as possible. Principle 5: Increase reusability where possible Design the software components with reuse in mind. Principle 6: Reuse existing designs and code where possible Reuse existing successful designs and code. CSC450: Introduction to Software Engineering Architectural Design 13 / 29 Principles leading to good design Principle 7: Design for flexibility Software runs anywhere. Software work and integrate well with other applications Principle 8: Anticipate obsolescence Certain modules may become obsolete over time. Principle 9: Design for portability What other platforms can the software run on? CSC450: Introduction to Software Engineering Architectural Design 14 / 29 Principles leading to good design Principle 10: Design for testability Design the software to make the testing efficient and effective. Principle 11: Design defensively Anticipating all possible ways that an end-user could misuse the software. Designing the software so as to make such misuse impossible, or to minimize the negative consequences. CSC450: Introduction to Software Engineering Architectural Design 15 / 29 Architectural views What views or perspectives are useful when designing and documenting a system’s architecture? What notations should be used for describing architectural models? CSC450: Introduction to Software Engineering Architectural Design 16 / 29 Architectural views CSC450: Introduction to Software Engineering Architectural Design 17 / 29 Architectural views Logical view Shows the key abstractions in the system as objects or object classes. Relates the system requirements to entities in this logical view. Process view Shows how (at runtime) the system is composed of interacting processes. Making assessments about non-functional system characteristics such as performance and availability. CSC450: Introduction to Software Engineering Architectural Design 18 / 29 Architectural views Development view Shows how the software is decomposed for development Breakdown of the software into components. This view is useful for software managers and programmers. Physical view Shows the system hardware and how software components are distributed across the processors in the system. This view is useful for systems engineers planning a system deployment. CSC450: Introduction to Software Engineering Architectural Design 19 / 29 Architectural patterns Architectural pattern A stylized, abstract description of good practice, which has been tried and tested in different systems and environments. Should describe a system organization that has been successful in previous systems. Should include information on when it is and is not appropriate to use that pattern, and details on the pattern’s strengths and weaknesses. CSC450: Introduction to Software Engineering Architectural Design 20 / 29 Architectural patterns Example: Model-View-Controller pattern Separates presentation and interaction from the system data The system is structured into three logical components that interact with each other Model component: manages the system data and associated operations on that data View component: defines and manages how the data is presented to the user Controller component: manages user interaction (e.g., key presses, mouse clicks, etc.) CSC450: Introduction to Software Engineering Architectural Design 21 / 29 Architectural patterns Example: Model-View-Controller pattern CSC450: Introduction to Software Engineering Architectural Design 22 / 29 Architectural patterns Example: Web application architecture using Model-View-Controller CSC450: Introduction to Software Engineering Architectural Design 23 / 29 Architectural patterns Layered architecture CSC450: Introduction to Software Engineering Architectural Design 24 / 29 Architectural patterns Layered architecture: Example CSC450: Introduction to Software Engineering Architectural Design 25 / 29 Architectural patterns Repository architecture CSC450: Introduction to Software Engineering Architectural Design 26 / 29 Architectural patterns Client–server architecture CSC450: Introduction to Software Engineering Architectural Design 27 / 29 Architectural patterns Pipe and filter architecture CSC450: Introduction to Software Engineering Architectural Design 28 / 29 What did you Learn? CSC450: Introduction to Software Engineering Architectural Design 29 / 29