Architectural Design Flashcards
What is 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.
What is 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.
Why architecture?
• The architecture is not the operational
software. Rather, it is a representation that
enables a software engineer to:
– (1) analyze the effectiveness of the design in
meeting its stated requirements,
– (2) consider architectural alternatives at a stage
when making design changes is still relatively easy,
and
– (3) reduce the risks associated with the
construction of the software.
Why is architecture important?
- Representations of software architecture are an enabler for communication between all parties (stakeholders) interested in the development of a computer-based system.
- The architecture highlights early design decisions that will have a profound impact on all software engineering work that follows and, as important, on the ultimate success of the system as an operational entity.
- Architecture “constitutes a relatively small, intellectually graspable mode of how the system is structured and how its components work together”
What are the advantages of explicit architecture?
- Stakeholder communication
- System analysis
- Large-scale reuse
What does the system architecture affect?
- performance,
- robustness,
- distributability, and
- maintainability
What is system structuring?
- Concerned with decomposing the system into interacting sub-systems.
- The architectural design is normally expressed as a block diagram presenting an overview of the system structure.
- More specific models showing how sub-systems share data, are distributed and interface with each other may also be developed.
How can architecture be used to improve system quality?
•Performance
–Localisecritical operations and minimisecommunications. Use large rather than fine-grain components.
•Security
–Use a layered architecture with critical assets in the inner layers.
•Safety
–Localisesafety-critical features in a small number of sub-systems.
•Availability
–Include redundant components and mechanisms for fault tolerance.
•Maintainability
–Use fine-grain, replaceable components.
What is 4+1 view model of software architecture?
- A logical view, which shows the key abstractions in the system as objects or object classes.
- 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.
What are three most used system organization styles?
–A shared data repository style;
–A shared services and servers style;
–An abstract machine or layered style.
What is an architectural pattern?
- 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.
What is layered architecture?
- Used to model the interfacing of sub-systems.
- Organizes the system into a set of layers (or abstract machines) each of which provide a set of services.
- Supports the incremental development of sub-systems in different layers. When a layer interface changes, only the adjacent layer is affected.
- However, often artificial to structure systems in this way.
What is a repository model?
•Sub-systems must exchange data. This may be done in two ways:
–Shared data is held in a central database or repository and may be accessed by all sub-systems;
–Each sub-system maintains its own database and passes data explicitly to other sub-systems.
•When large amounts of data are to be shared, the repository model of sharing is most commonly used.
What are pros and cons of the repository model?
•Advantages
–Efficient way to share large amounts of data;
–Sub-systems need not be concerned with how data is produced Centralised management e.g. backup, security, etc.
–Sharing model is published as the repository schema.
•Disadvantages
–Sub-systems must agree on a repository data model. Inevitably a compromise;
–Data evolution is difficult and expensive;
–No scope for specific management policies;
–Difficult to distribute efficiently.
What is a client-server model?
- Distributed system model which shows how data and processing is distributed across a range of components.
- Set of stand-alone servers which provide specific services such as printing, data management, etc.
- Set of clients which call on these services.
- Network which allows clients to access servers.