Chapter 6 Flashcards
What is Architectural design?
Architectural design is the first stage in the software design process. It is the critical link between design and requirements engineering, as it identifies the main structural components in a system and the relationships between them. The output of the architectural design process is an architectural model that describes how the system is organized as a set of
communicating components.
What are the levels of abtraction at software architecture design?
- 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 that include other systems, programs, and program components.
These enterprise systems may be distributed over different computers, which
may be owned and managed by different companies.
Which requirements have the most significant effect on a system’s architecture?
Non-functional requirements.
What are the advantages of explicitly desgning software architecture?
- Stakeholder communication. The architecture is a high-level presentation of the system that may be used as a focus for discussion by a range of different stakeholders.
- System analysis. Making the system architecture explicit at an early stage in the
system development requires some analysis. Architectural design decisions
have a profound effect on whether or not the system can meet critical requirements such as performance, reliability, and maintainability. - Large-scale reuse. An architectural model is a compact, manageable description
of how a system is organized and how the components interoperate. The system
architecture is often the same for systems with similar requirements and so can
support large-scale software reuse. Product-line architectures are an approach to reuse where the same architecture is reused across a range of related systems.
System architectures are often modeled informally using simple block diagrams. Each box in the diagram represents a [1……]. Boxes within
boxes indicate that the component has been decomposed to [2…..]. [3….]
mean that data and or control signals are passed from component to component in
the direction of the [4….].
- component
- subcomponents
- Arrows
- arrows
What are the two ways in which an architectural model of a program
is used?
- As a way of encouraging discussions 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. - 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.
What is an Architectural pattern?
An Architectural pattern is a description of a system organization, such as a client–server organization or a layered architecture. Architectural patterns capture the essence of an architecture that has been used in different software systems.
The choice of architectural style and structure should depend on the non-functional requirements of the system:
- Performance
- Security
- Safety
- Availability
- Maintainability
What are the four fundamental architectural views?
- A logical view, which shows the key abstractions in the system as objects or
object classes. It should be possible to relate the system requirements to entities
in this logical view. - A process view, which shows how, at runtime, the system is composed of interacting processes. This view is useful for making judgments about non-functional system characteristics such as performance and availability.
- A development view, which shows how the software is decomposed for development; that is, it shows the breakdown of the software into components that are implemented by a single developer or development team. This view is useful for software managers and programmers.
- A physical view, which 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.
What is 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. The Model component manages the system data and
associated operations on that data. The View component defines and manages how the data is presented to the user. The Controller component manages user interaction and passes these interactions to the View and the Model.
when is MVC used?
It is 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.
What are the advantages and disadvantages of MVC?
- Advanatges: 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: May involve additional code and code complexity when the data
model and interactions are simple.
What is layered architecture?
It 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 is layered architecture used?
It is used when building new facilities on top of existing systems; when the development is spread across several teams with each team responsibility for a layer of functionality; when there is a requirement for multilevel security.
Advantages and disadvantages of the layered architecture?
Advantage: Allows replacement of entire layers as long as the interface is maintained. Redundant facilities can be provided in each layer to increase the dependability of the system.
Disadvantage: 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.