Podcast
Questions and Answers
What is the maximum allowed message delivery time for the system to ensure reliability?
What is the maximum allowed message delivery time for the system to ensure reliability?
- 5 minutes
- 10 seconds
- 30 seconds (correct)
- 1 minute
What peak load must the application handle during the enrollment period?
What peak load must the application handle during the enrollment period?
- 100 concurrent users
- 500 concurrent users (correct)
- 1000 concurrent users
- 250 concurrent users
Which programming language must be used for developing the system?
Which programming language must be used for developing the system?
- Java (correct)
- C#
- Python
- JavaScript
What is the main concern regarding excessive component dependencies?
What is the main concern regarding excessive component dependencies?
What is the primary business constraint regarding the technology used in the application?
What is the primary business constraint regarding the technology used in the application?
What is the definition of software architecture according to ANSI/IEEE Std 1471-2000?
What is the definition of software architecture according to ANSI/IEEE Std 1471-2000?
Which of the following is NOT an aspect defined by architecture?
Which of the following is NOT an aspect defined by architecture?
What is one advantage of having an explicit architecture in software development?
What is one advantage of having an explicit architecture in software development?
Which quality attribute requirement specifies the need for the system to operate continuously?
Which quality attribute requirement specifies the need for the system to operate continuously?
What is a potential focus of discussion based on explicit architecture?
What is a potential focus of discussion based on explicit architecture?
What is the primary benefit of lower coupling in component design?
What is the primary benefit of lower coupling in component design?
Which of the following statements accurately describes higher cohesion in component design?
Which of the following statements accurately describes higher cohesion in component design?
In an architectural context, what does communication primarily involve?
In an architectural context, what does communication primarily involve?
What is one major characteristic of architecture in software design?
What is one major characteristic of architecture in software design?
What does a 'marketecture' represent in software architecture?
What does a 'marketecture' represent in software architecture?
Flashcards
Software Architecture
Software Architecture
The fundamental organization of a system, including its components, relationships, and design principles.
Architectural Design
Architectural Design
The early stage of design that focuses on the system's overall structure.
Architecture Defines Structure
Architecture Defines Structure
Key aspects of a system's design, like its structure, components, communication methods, and responsibilities.
Advantages of Explicit Architecture
Advantages of Explicit Architecture
Benefits of explicitly defining software architecture, including stakeholder communication, system analysis, and large-scale reuse.
Signup and view all the flashcards
Quality Attribute Requirements
Quality Attribute Requirements
Quality attributes like performance, security, and usability, and their corresponding architectural requirements.
Signup and view all the flashcards
Modifiability
Modifiability
A measure of how well a system can handle changing requirements without undergoing major rework. This means the architecture should allow for easy updates, modifications, and extensions.
Signup and view all the flashcards
Scalability
Scalability
The ability of a system to handle increasing workloads or user traffic. It's about scaling up and out efficiently.
Signup and view all the flashcards
Reliability
Reliability
This refers to how reliable a system is, meaning its ability to operate without failures and deliver expected outcomes. It often involves aspects like message delivery and time-bound guarantees.
Signup and view all the flashcards
Reduce direct dependencies on third-party components
Reduce direct dependencies on third-party components
An architectural principle advocating for reducing direct dependencies on third-party components. This involves using abstraction layers to create a buffer between your system and external components. This makes your system less dependent on external changes.
Signup and view all the flashcards
Excessive component dependencies
Excessive component dependencies
An architectural issue that arises when components are overly dependent on each other. This can create a fragile system where changes in one part can cascade and impact others.
Signup and view all the flashcards
Coupling
Coupling
The degree to which components depend on each other. Lower coupling means components are less reliant on each other, making the system more flexible and easier to maintain.
Signup and view all the flashcards
Cohesion
Cohesion
The degree to which a component focuses on a single task or responsibility. Higher cohesion means a component is well-defined and does its job effectively.
Signup and view all the flashcards
Architecture Abstraction
Architecture Abstraction
A simplified representation of a system's structure and how its components interact. It hides the complexity of implementation details.
Signup and view all the flashcards
Component Communication
Component Communication
Methods used by components to communicate with each other. Examples include function calls, remote procedure calls, asynchronous messages, and synchronous messages.
Signup and view all the flashcardsStudy Notes
Software Architecture Definitions
- Architecture is the fundamental organization of a system, including its components, their relationships, and governing principles for design and evolution (ANSI/IEEE Std 1471-2000).
- All software architecture is software design, but not all design is software architecture.
- Architecture is the first stage of the design process.
Architectural Design Decisions
- Is a generic application architecture suitable?
- How will the system be distributed?
- What architectural styles are appropriate?
- How will the system be structured?
- What method will decompose the system into modules?
- What control strategy should be implemented?
- How should the architectural design be evaluated?
- How should the architecture be documented?
Architecture Defines Structure
- Decomposes the system into components, modules, or subsystems.
- Defines component interfaces, detailing what a component can do.
- Defines component communications and dependencies.
- Outlines how components communicate.
- Specifies the responsibilities of each component.
- Clearly describes what each component will do when called upon.
Advantages of Explicit Architecture
- Facilitates stakeholder communication, using architecture as a discussion point.
- Enables system analysis to evaluate its non-functional requirements.
- Allows for large-scale reuse across various systems.
- Supports development of product-line architectures.
Quality Attribute Requirements
- Performance: Sub-four-second response times for 90% of requests.
- Security: All communications must be authenticated and encrypted using certificates.
- Resource Management: Server component runs on a low-end office server with 512MB memory.
- Usability: User interface runs in an internet browser to support remote users.
- Availability: 24/7/365 system operation with 0.99 overall availability.
- Reliability: No message loss with message delivery confirmations within 30 seconds.
- Scalability: Application handles a peak load of 500 concurrent users during the enrollment period.
- Modifiability: Architecture supports phased migration from current 4GL to .NET.
Constraints
- Business: Technology must integrate as a plug-in for MS BizTalk.
- Development: System must be written in Java.
- Schedule: First version delivery within six months.
- Business: Collaboration with MegaHugeTechCorp and leveraging their technology.
Structure and Dependencies
- Excessive component dependencies are undesirable.
- Identifying components prone to change is crucial.
- Minimizing direct dependencies on these components enhances the system's modifiability.
Coupling & Cohesion
- Lower Coupling: Minimize dependencies between components.
- Higher Cohesion: Design single-task components (responsibility).
Architecture Specifies Component Communication
- Communication involves function calls, RPCs (remote procedure calls), message passing (asynchronous), and synchronization to wait for reply.
Architecture is an Abstraction
- Provides an abstract view of design, hiding complexity.
- May not directly map architecture elements to software elements.
- Examples: Marketecture (informal depictions of structure, interactions, and design philosophies)
- Marketecture is easy to understand, promotes discussion, useful during design, review and sales process.
Marketecture Example
- A diagram illustrating ICDE repository, ICDE recording software, ICDE monitoring, internet, local information repositories, analysts, and third-party tools.
Decomposition
- Hierarchical decomposition is an effective abstraction approach.
- Components are allocated to development teams for partitioning.
- Architecture aims to lower coupling between clients and servers.
- Architecture seeks to attain high cohesion.
Philippe Krutchen - 4+1 View Model
- Logical View: Displays architecturally significant elements and their relationships.
- Process View: Highlights communication elements in the architecture.
- Physical View: How major processes/components are mapped to hardware.
- Development View: Shows internal software component organization.
- Architecture Use Cases: Specifies architecture requirements related to multiple views.
Architectural Patterns
- Reusable solutions to common problems in software architecture.
- Design Patterns: Apply to classes and relationships in code.
- Architectural Patterns: Focus on subsystems, components, and external systems.
N-Tier Client-Server Pattern
- Separates concerns (presentation, business logic, data).
- Uses synchronous communications (request-reply).
- Implements flexible deployment across tiers.
The Client-server pattern
-
System organized into services delivered from separate servers.
-
Clients access services for operations or data.
-
Example: Film/video library with shared database.
-
Advantages: Distributed services, variable load, broader accessibility
-
Disadvantages: Single point of failure, potential network dependence, possible management issues if servers are owned by different entities.
Publish-Subscribe Pattern
- Many-to-many messaging, sending to all registered subscribers.
- Loose coupling, no direct binding between publishers and subscribers.
Pipe and Filter
-
A simple architectural style connecting filters that process data streams.
-
Each filter is connected to the next filter via a pipe for processing.
-
Advantages: Easy understanding, supports transformation reuse.
-
Disadvantages: Defining agreed-upon data formats for filter communication is essential.
The pipe and filter pattern
- Data processing is organized with distinct components (filters) transforming data.
- Data flows sequentially through these components.
- Advantages: Data transformation reuse is facilitated, and the workflow structure aligns with business processes.
- Disadvantages: There may be complexities when handling data formats, and communication overhead between filters can increase for non-compatible data.
Software Architecture Modeling; UML Component Diagram
- The diagram illustrates relationships between components, using UML component diagrams.
UML Communication Diagram
- This diagram illustrates interaction between components and objects in a system, using UML communication diagrams to show interactions.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.