Podcast
Questions and Answers
Architectural design is unrelated to requirements engineering.
Architectural design is unrelated to requirements engineering.
False (B)
The output of the architectural design process is an architectural model that outlines the system as a set of communicating components.
The output of the architectural design process is an architectural model that outlines the system as a set of communicating components.
True (A)
Refactoring the system architecture is usually inexpensive and does not affect many components.
Refactoring the system architecture is usually inexpensive and does not affect many components.
False (B)
Architecture in the small focuses on complex enterprise systems that include multiple managed programs.
Architecture in the small focuses on complex enterprise systems that include multiple managed programs.
Explicit architecture can aid in stakeholder communication and system analysis.
Explicit architecture can aid in stakeholder communication and system analysis.
Product-line architectures are designed to be non-reusable across a range of systems.
Product-line architectures are designed to be non-reusable across a range of systems.
Architecture in the large considers the organization of an individual program.
Architecture in the large considers the organization of an individual program.
The early stages of agile processes typically involve designing an overall system architecture.
The early stages of agile processes typically involve designing an overall system architecture.
Layered architecture organizes a system into layers with unrelated functionality.
Layered architecture organizes a system into layers with unrelated functionality.
In a layered architecture, when a layer interface changes, only the adjacent layer is affected.
In a layered architecture, when a layer interface changes, only the adjacent layer is affected.
The lowest-level layers in a layered architecture represent auxiliary services that are rarely used.
The lowest-level layers in a layered architecture represent auxiliary services that are rarely used.
Layered architecture is suitable for incremental development across different layers.
Layered architecture is suitable for incremental development across different layers.
One of the disadvantages of layered architecture is the difficulty in achieving a clean separation between layers.
One of the disadvantages of layered architecture is the difficulty in achieving a clean separation between layers.
Using layered architecture often improves system performance despite multiple layers of interpretation.
Using layered architecture often improves system performance despite multiple layers of interpretation.
Layered architecture allows for the replacement of entire layers, provided the interface is maintained.
Layered architecture allows for the replacement of entire layers, provided the interface is maintained.
Layered architecture is commonly used when building new functionalities on top of existing systems.
Layered architecture is commonly used when building new functionalities on top of existing systems.
Simple block diagrams showing entities are the most frequently used method for documenting software architectures.
Simple block diagrams showing entities are the most frequently used method for documenting software architectures.
Box and line diagrams are very detailed and show the nature of component relationships in a system.
Box and line diagrams are very detailed and show the nature of component relationships in a system.
In a client-server architecture, services are delivered from a single server.
In a client-server architecture, services are delivered from a single server.
Replication of servers is beneficial in a client-server architecture during variable system load.
Replication of servers is beneficial in a client-server architecture during variable system load.
Architectural models are not necessary for facilitating discussion about the system design.
Architectural models are not necessary for facilitating discussion about the system design.
A primary disadvantage of client-server architecture is the potential for each service to be a single point of failure.
A primary disadvantage of client-server architecture is the potential for each service to be a single point of failure.
Architectural design processes are uniform across all types of systems.
Architectural design processes are uniform across all types of systems.
The aim of documenting an architecture is to produce an incomplete system model.
The aim of documenting an architecture is to produce an incomplete system model.
Client-server architecture can only be implemented on a distributed network.
Client-server architecture can only be implemented on a distributed network.
Systems within the same domain typically share similar architectures that reflect common domain concepts.
Systems within the same domain typically share similar architectures that reflect common domain concepts.
The pipe and filter model processes inputs to produce outputs through transformation functions.
The pipe and filter model processes inputs to produce outputs through transformation functions.
Application product lines can only be built around a unique architecture without variants.
Application product lines can only be built around a unique architecture without variants.
Client-server architecture completely eliminates management problems when servers are owned by different organizations.
Client-server architecture completely eliminates management problems when servers are owned by different organizations.
Architectural design decisions have no impact on the non-functional characteristics of the system.
Architectural design decisions have no impact on the non-functional characteristics of the system.
A network is necessary for clients to access servers in a client-server architecture.
A network is necessary for clients to access servers in a client-server architecture.
The performance of a client-server system is independent of the network conditions.
The performance of a client-server system is independent of the network conditions.
A batch sequential model is suitable for interactive systems.
A batch sequential model is suitable for interactive systems.
The pipe and filter pattern allows data to flow continuously through filters.
The pipe and filter pattern allows data to flow continuously through filters.
Each filter in a pipe and filter system performs multiple types of data transformations.
Each filter in a pipe and filter system performs multiple types of data transformations.
The pipe and filter architecture cannot be implemented as a concurrent system.
The pipe and filter architecture cannot be implemented as a concurrent system.
In a repository architecture, sub-systems can directly interact with each other without a central database.
In a repository architecture, sub-systems can directly interact with each other without a central database.
In a pipe and filter system, the format for data transfer must be agreed upon by communicating transformations.
In a pipe and filter system, the format for data transfer must be agreed upon by communicating transformations.
The repository pattern is best suited for systems that generate large volumes of information that need long-term storage.
The repository pattern is best suited for systems that generate large volumes of information that need long-term storage.
Generic application architectures are designed to meet specific organizational needs.
Generic application architectures are designed to meet specific organizational needs.
The evolution of a pipe and filter system can be achieved by adding transformations.
The evolution of a pipe and filter system can be achieved by adding transformations.
One advantage of using a repository is that it allows for independent components that do not need to know about each other's existence.
One advantage of using a repository is that it allows for independent components that do not need to know about each other's existence.
System overhead increases when functional transformations in a pipe and filter system use incompatible data structures.
System overhead increases when functional transformations in a pipe and filter system use incompatible data structures.
The repository architecture is considered a distributed model for data sharing.
The repository architecture is considered a distributed model for data sharing.
Shared data in a repository system is accessible to all sub-systems.
Shared data in a repository system is accessible to all sub-systems.
A disadvantage of repository architecture is that it may lead to consistent data management across components.
A disadvantage of repository architecture is that it may lead to consistent data management across components.
Distributing the repository across several computers simplifies communication between system components.
Distributing the repository across several computers simplifies communication between system components.
One of the main uses of the repository pattern is in data-driven systems where data inclusion triggers an action.
One of the main uses of the repository pattern is in data-driven systems where data inclusion triggers an action.
Flashcards
Block Diagrams
Block Diagrams
Simple, informal diagrams used to show entities and their relationships. Commonly used for documenting software architectures. Lack semantics, don't show relationship types or entity properties.
Box and Line Diagrams
Box and Line Diagrams
Architectural models that provide a high-level view of a system, facilitating communication with stakeholders and aiding project planning. They are abstract and don't convey the intricacies of component relationships or properties.
Architectural Design
Architectural Design
A process of creating and documenting the structure of a software system. It involves making decisions about the components, their relationships, and how they interact to achieve the system's goals.
Architecture Reuse
Architecture Reuse
Signup and view all the flashcards
Application Product Lines
Application Product Lines
Signup and view all the flashcards
Repository Pattern
Repository Pattern
Signup and view all the flashcards
Shared Data Repository
Shared Data Repository
Signup and view all the flashcards
Independent Sub-system Databases
Independent Sub-system Databases
Signup and view all the flashcards
Repository Model for Large Data
Repository Model for Large Data
Signup and view all the flashcards
Suitable Systems for Repository Pattern
Suitable Systems for Repository Pattern
Signup and view all the flashcards
Consistency and Change Propagation
Consistency and Change Propagation
Signup and view all the flashcards
Disadvantages of Repository Pattern
Disadvantages of Repository Pattern
Signup and view all the flashcards
Distributing the Repository
Distributing the Repository
Signup and view all the flashcards
What is Architectural Design?
What is Architectural Design?
Signup and view all the flashcards
What is Architectural Design's Role?
What is Architectural Design's Role?
Signup and view all the flashcards
What is an Architectural Model?
What is an Architectural Model?
Signup and view all the flashcards
Why is Refactoring Architecture Expensive?
Why is Refactoring Architecture Expensive?
Signup and view all the flashcards
What is Architecture in the Small?
What is Architecture in the Small?
Signup and view all the flashcards
What is Architecture in the Large?
What is Architecture in the Large?
Signup and view all the flashcards
Why is Explicit Architecture Beneficial?
Why is Explicit Architecture Beneficial?
Signup and view all the flashcards
What are Product-Line Architectures?
What are Product-Line Architectures?
Signup and view all the flashcards
Model-View-Controller (MVC)
Model-View-Controller (MVC)
Signup and view all the flashcards
Layered Architecture
Layered Architecture
Signup and view all the flashcards
Lowest-Level Layer
Lowest-Level Layer
Signup and view all the flashcards
Intermediate Layer
Intermediate Layer
Signup and view all the flashcards
Highest-Level Layer
Highest-Level Layer
Signup and view all the flashcards
Layer Replaceability
Layer Replaceability
Signup and view all the flashcards
Redundant Facilities in Layers
Redundant Facilities in Layers
Signup and view all the flashcards
Performance Impact of Layered Architecture
Performance Impact of Layered Architecture
Signup and view all the flashcards
Client-Server Architecture
Client-Server Architecture
Signup and view all the flashcards
Client-Server Pattern
Client-Server Pattern
Signup and view all the flashcards
Pipe and Filter Architecture
Pipe and Filter Architecture
Signup and view all the flashcards
Distributed System Model
Distributed System Model
Signup and view all the flashcards
Stand-Alone Servers
Stand-Alone Servers
Signup and view all the flashcards
Clients
Clients
Signup and view all the flashcards
Network
Network
Signup and view all the flashcards
Advantages of Client-Server Pattern
Advantages of Client-Server Pattern
Signup and view all the flashcards
Pipe and Filter Pattern
Pipe and Filter Pattern
Signup and view all the flashcards
Batch Sequential Model
Batch Sequential Model
Signup and view all the flashcards
Filter Reusability
Filter Reusability
Signup and view all the flashcards
Ease of Evolution
Ease of Evolution
Signup and view all the flashcards
Data Transfer Format
Data Transfer Format
Signup and view all the flashcards
Applications of Pipe and Filter
Applications of Pipe and Filter
Signup and view all the flashcards
Application Architectures
Application Architectures
Signup and view all the flashcards
Generic Application architecture
Generic Application architecture
Signup and view all the flashcards
Study Notes
Architectural Design
- Architectural design is concerned with understanding how a software system should be organized and designing the overall structure.
- It's the critical link between design and requirements engineering, identifying main structural components and relationships between them.
- The output of the architectural design process is an architectural model; this describes how the system is organized as communicating components.
Agility and Architecture
- An early stage of agile processes is designing an overall system architecture.
- Refactoring the system architecture is typically expensive due to affecting many system components.
Architectural Abstraction
- Architecture in the small concerns individual programs, focusing on how a program is decomposed into components.
- Architecture in the large involves complex enterprise systems, including other systems, programs, and components, often distributed across multiple computers and companies.
Advantages of Explicit Architecture
- Stakeholder communication: Architecture serves as a discussion point for stakeholders.
- System analysis: Helps assess if a system meets non-functional requirements.
- Large-scale reuse: Architects can be reusable across various systems, allowing for product-line architectures.
Architectural Representations
- Informal block diagrams are frequently used to document software architectures, showing entities and relationships.
- However, these diagrams lack semantics and don't show the types of relationships or entity properties.
- Architectural model requirements depend on its specific usage.
Box and Line Diagrams
- Very abstract, omitting component relationships and external properties.
- Useful for communication with stakeholders and project planning.
Use of Architectural Models
- Facilitate discussions about system design by providing a high-level overview, enabling stakeholders to relate to and understand the system without excessive detail.
- Document the architecture, creating a complete system model displaying components, interfaces, and connections.
Architectural Design Decisions
- The architectural design processes vary based on the specific system type.
- Many decisions have impacts on non-functional system characteristics.
- Examples include decisions on generic applications, data distribution, or architectural patterns and styles.
Architecture Reuse
- Systems in similar domains often have similar architectures based on shared concepts.
- Application product lines are built around core architectures enabling specific customer requirements.
- System architectures can be designed around pre-existing patterns or styles, which capture the essence of an architecture and can be adapted.
Architecture and System Characteristics
- Performance: Optimize critical operations and minimize communication by using large components.
- Security: Use layered architectures to place critical assets in inner layers.
- Safety: Focus safety-critical features within certain subsystems.
- Availability: Ensure redundancy and fault tolerance via redundant components.
- Maintainability: Use interchangeable, replaceable components.
Architectural Views
- Understanding perspectives and notations for describing architectural models.
- Each model provides a specific view or perspective of the system, for example, demonstrating modular decomposition, run-time interactions, or network distributions.
- Multiple views are needed for comprehensive documentation and design. This is useful as a way to describe the systems architecture and multiple aspects.
4 + 1 View Model of Software Architecture
- A logical view emphasizing key abstractions as objects (or objects/classes).
- A process view illustrating how interacting processes (at run-time) compose the system.
- A development view detailing how software is decomposed for design.
- A physical view highlighting system hardware and component distribution across processors.
- Use cases or scenarios can be used to relate these aspects.
Representing Architectural Views
- While some propose UML for system architecture documentation, it is deemed insufficient due to its lack of relevant high-level abstractions.
- Architectural Description Languages are developed but not widely adopted.
Architectural Patterns
- Patterns represent, share, and reuse architectural knowledge.
- They offer stylized descriptions of successful design practices.
- They include insights into when they are and aren't applicable offering context on useful applications.
- Both tabular and graphical descriptions are used to represent the patterns.
The Model-View-Controller (MVC) Pattern
- Separates presentation/interaction from system data.
- Composed of Model, View, and Controller components interacting to manage data, presentation and user input.
- Figure 6.4 (within the text) visually demonstrates the architecture of a web-based application system using the MVC pattern.
- Useful when multiple views or interactions are needed, and future presentation/interaction approaches are unknown.
Web Application Architecture using MVC
- Illustrates a web application's structure using an MVC pattern with the involved components (controller, view, model).
Layered Architecture
- Models interfacing subsystems, with each layer (or machine) offering services—often useful for incremental development, with interface changes affecting only adjacent layers.
- The layered principle is sometimes not a suitable structure for systems.
Layered Architecture Pattern
- Organizes systems by functionality into layers, showing a layered structure where related functionality is arranged.
- Lower layers provide core services to higher layers (like Figure 6.6 and 6.7 in the text).
- Suitable in multi-team/multi-level security/incremental building.
Generic Layered Architecture
- Defines generic components of a layered architecture—typical components such as user interfaces, management of authentication and authorization, business logic, system utilities, and system support including the operating system and database.
The Architecture of the iLearn System
- A layered approach demonstrates the specific application components found within iLearn, including utility layer components.
Repository Architecture
- Subsystems need to share data (in two main ways). This is achieved via a central database or repository or each subsystem maintaining its own database and explicitly sharing data.
- This is an efficient data-sharing mechanism.
The Repository Pattern
- In this pattern, all data is managed in a central repository accessible to all components.
- It is recommended when large volumes of data need to be stored and accessed over time, or for action triggers (that are data-driven) in a system.
Repository Architecture for an IDE
- Illustrates how an integrated development environment (IDE) that uses a central repository stores and retrieves information among its various components.
Client-Server Architecture
- A model for distributed systems, where components handle tasks such as data transfer, specific services, user calls, and network connections.
- These models can be implemented on a single computer.
The Client-Server Pattern
- A system functionality is organized into services delivered by independent servers accessed by client components.
- Shows a potential example of a library organized as a client-server system.
- Provides a way of distributing functionality. This is helpful for data that is stored in a shared database from various locations.
A Client-Server Architecture for a Film Library
- Example visualizing a client-server system in a film library, demonstrating how multiple clients access centralized film catalogues, video stores, photos and web servers.
Pipe and Filter Architecture
- A model of functional transformations. Data transformation components process input to produce outputs.
- Suitable for data processing systems with sequential transformations.
- Not well-suited for interactive systems.
The Pipe and Filter Pattern
- Focuses on a data processing model based on discrete processing components as filters and data flowing through them.
- Describes a typical use in a data processing system utilizing a pipeline and filters.
Example of Pipe and Filter Architecture in a Payments System
- A diagram visually presenting a payments system's architecture using the pipe and filter model.
Application Architectures
- Application systems are created to meet specific needs.
- Businesses frequently share similar needs, leading to shared architectures.
- Generic application architectures provide flexible support through various configurations.
Use of Application Architectures
- Starting point for architectural design, acting as initial guidelines,
- A design checklist
- Organizing development team tasks
- Assessing components and reuse
- Defining application types
Examples of Application Types
- Data processing applications without explicit user intervention
- Transaction processing applications managing database updates
- Event processing applications interpreting events from the environment
- Language processing applications interpreting user intent using specialized languages
Application Type Examples
- Examples include e-commerce systems, reservation systems, and compilers/interpreters, amongst other language processing systems.
Transaction Processing Systems
- Systems processing user requests and updates on databases.
- A transaction is a coherent set of operations toward a goal, like booking a flight.
- Users send requests asynchronously; a transaction manager processes them.
The Structure of Transaction Processing Applications
- Illustrates a typical structure for a transaction processing system via a sequence of components.
The Software Architecture of an ATM System
- An architecture example for an ATM system visualizing how input, process, and output data flow.
Information Systems Architecture
- Information systems are layered, with typical components including user interfaces, communication, information retrieval, and databases.
Layered Information System Architecture
- A layout visualizing a typical layered architecture with specific roles for data flow within an information system.
- The layout in this case, shows how the information system layers are organized sequentially with database transaction layers.
The Architecture of the Mentcare System
- Example visualizing the structure of a medical/healthcare system.
Web-based Information Systems
- Web-based systems handle resource management using web browsers.
- E-commerce systems are an example of this, with functionalities like (shopping carts) to manage a number of items in a single payment transaction
Server Implementation
- Usually, these are multi-tier client-server implementations involving the webserver for communication, an application server, and a database server to control database transactions.
The Architecture of a Language Processing System
- Displays a graphical representation of a language processing system, illustrating the sequence of steps starting from source code to production of results.
Key Points
- A software architecture describes a system's organization.
- Decisions made during design can affect architecture and systems.
- Architectures help document the system from multiple views.
- Patterns are used for reusing existing system knowledge and practices.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.