Software Engineering - Architectural Design (Week 3, Lesson 3) PDF
Document Details
Uploaded by QuickerLyre9899
Tags
Summary
This document provides an overview of software engineering concepts, focusing on architectural design. It covers architectural design decisions, views, patterns, and reuse. The document also touches on software architecture and its characteristics, such as performance, security, safety, availability, and maintainability.
Full Transcript
Software engineering Chapter 5: Architectural Design Winter semester 24/25 Topics covered Architectural design decisions Architectural views Architectural patterns (styles) Application archit Software architecture The design process for identifying the sub-systems making up a...
Software engineering Chapter 5: Architectural Design Winter semester 24/25 Topics covered Architectural design decisions Architectural views Architectural patterns (styles) Application archit Software architecture The design process for identifying the sub-systems making up a system and the framework for sub- system control and communication is architectural design. The output of this design process is a description of the software architecture. Architectural design An early stage of the system design process. Represents the link between specification and design processes. Often carried out in parallel with some specification activities. It involves identifying major system components and their communications. Not incremental, even in Agile, cost of change is high. The architecture of a packing robot control system Architectural abstraction Architecture in the small is concerned with the architecture of individual programs. At this level, we are concerned with the way that an individual program is decomposed into components. Architecture in the large is concerned with the architecture of complex enterprise systems as distribute systems that include other systems, programs, and program components. These enterprise systems are distributed over different computers, which may be owned and managed by different companies. Advantages of explicit architecture Stakeholder communication Architecture may be used as a focus of discussion by system stakeholders. System analysis Means that analysis of whether the system can meet its non-functional requirements is possible. Large-scale reuse The architecture may be reusable across a range of systems Product-line architectures may be developed. Architectural representations Simple, informal block diagrams showing entities and relationships are the most frequently used method for documenting software architectures. But these have been criticized because they lack semantics, do not show the types of relationships between entities nor the visible properties of entities in the architecture. Use of architectural models As a way of facilitating discussion about the system design A high-level architectural view of a system is useful for communication with system stakeholders and project planning because it is not cluttered with detail. Stakeholders can relate to it and understand an abstract view of the system. They can then discuss the system as a whole without being confused by detail. As a way of documenting an architecture that has been designed The aim here is to produce a complete system model that shows the different components in a system, their interfaces and their connections. Architectural design decisions Architectural design is a creative process so the process differs depending on the type of system being developed. However, a number of common decisions span all design processes and these decisions affect the non- functional characteristics of the system. Architectural design decisions Is there a generic application architecture that can be used? How will the system be distributed? What architectural styles are appropriate? What approach will be used to structure the system? How will the system be decomposed into modules? What control strategy should be used? How will the architectural design be evaluated? How should the architecture be documented? Architecture reuse Systems in the same domain often have similar architectures that reflect domain concepts. Application product lines are built around a core architecture with variants that satisfy particular customer requirements. The architecture of a system may be designed around one of more architectural patterns or styles. These capture the essence of an architecture and can be instantiated in different ways. Architecture and system characteristics Performance Localize critical operations and minimize communications. Use large rather than fine-grain components. Security Use a layered architecture with critical assets in the inner layers. Safety Localize safety-critical features in a small number of sub-systems. Architecture and system characteristics Availability Include redundant components and mechanisms for fault tolerance. Maintainability Use fine-grain, replaceable components. 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? Each architectural model only shows one view or perspective of the system. It might show how a system is decomposed into modules, how the run-time processes interact or the different ways in which system components are distributed across a network. For both design and documentation, you usually need to present multiple views of the software architecture. 4 + 1 view model of software architecture (Krutchen) A logical view, which shows the key abstractions in the system as objects or object classes. (Requirements) A process view, which shows how, at run-time, the system is composed of interacting processes. A development view, which shows how the software is decomposed for development. A physical view, which shows the system hardware and how software components are distributed across the processors in the system. All the views above related through a user view (+1) Architectural patterns Patterns are a means of representing, sharing and reusing knowledge. An architectural pattern is a stylized description of good design practice, which has been tried and tested in different environments. Patterns should include information about when they are and when the are not useful. Patterns may be represented using tabular and graphical descriptions. Design Patterns Creational Structural Behavioural Singleton Decorator Observer Interface Adapter Interpreter Factory Composite Iterator Builder Memento State UML: Basic Class UML: Directed Association UML:A Class That Extends/Inherits A Class UML: A Class That Implements an Interface UML Aggregations UML: Composition Software engineering Creational Design Patterns Winter semester 24/25 Singleton Pattern Singleton Use Case Prototype Pattern Prototype Use Case Factory Pattern https://sbcode.net/typescript/factory/ Factory Use Case Builder Pattern Builder Use Case