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
Signup and view all the flashcards
Quality Attribute Requirements
Quality Attribute Requirements
Signup and view all the flashcards
Modifiability
Modifiability
Signup and view all the flashcards
Scalability
Scalability
Signup and view all the flashcards
Reliability
Reliability
Signup and view all the flashcards
Reduce direct dependencies on third-party components
Reduce direct dependencies on third-party components
Signup and view all the flashcards
Excessive component dependencies
Excessive component dependencies
Signup and view all the flashcards
Coupling
Coupling
Signup and view all the flashcards
Cohesion
Cohesion
Signup and view all the flashcards
Architecture Abstraction
Architecture Abstraction
Signup and view all the flashcards
Component Communication
Component Communication
Signup and view all the flashcards
Study 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.