Podcast
Questions and Answers
What type of service integration allows services to communicate through their APIs?
What type of service integration allows services to communicate through their APIs?
- Full integration (correct)
- Partial integration
- Inter-service integration
- Independent services
What is a major drawback of implementing redundancy in a system?
What is a major drawback of implementing redundancy in a system?
- Higher development costs (correct)
- Improved reliability
- Simplified architecture
- Increased system performance
Independent services are aware of other services in the system.
Independent services are aware of other services in the system.
False (B)
Abstraction in software design involves focusing on the essential elements without regard for details.
Abstraction in software design involves focusing on the essential elements without regard for details.
What do partial integration services share between each other?
What do partial integration services share between each other?
What is the purpose of switching components in a redundant system?
What is the purpose of switching components in a redundant system?
Full integration services can communicate through their ______.
Full integration services can communicate through their ______.
Match the following services with their characteristics:
Match the following services with their characteristics:
The process of analyzing large-scale components into finer-grain components is called ______.
The process of analyzing large-scale components into finer-grain components is called ______.
Match the following software design concepts to their descriptions:
Match the following software design concepts to their descriptions:
What is one of the main goals of architectural design?
What is one of the main goals of architectural design?
The architecture of a system does not affect its non-functional properties.
The architecture of a system does not affect its non-functional properties.
Name one non-functional system quality attribute.
Name one non-functional system quality attribute.
The system should protect itself and users’ data from unauthorized attacks and intrusions, which is referred to as ______.
The system should protect itself and users’ data from unauthorized attacks and intrusions, which is referred to as ______.
Match the following non-functional system quality attributes with their descriptions:
Match the following non-functional system quality attributes with their descriptions:
What can increase the likelihood of programmers introducing bugs and security vulnerabilities?
What can increase the likelihood of programmers introducing bugs and security vulnerabilities?
Maintainability refers to how easily a system can be updated and new features added.
Maintainability refers to how easily a system can be updated and new features added.
Why is it important for a system to be reliable?
Why is it important for a system to be reliable?
What is one disadvantage of a multi-database architecture?
What is one disadvantage of a multi-database architecture?
In a shared database architecture, changes in database organization affect all components.
In a shared database architecture, changes in database organization affect all components.
What mechanism is necessary in a multi-database architecture to ensure data consistency?
What mechanism is necessary in a multi-database architecture to ensure data consistency?
A multi-database architecture may be ______ to implement and change.
A multi-database architecture may be ______ to implement and change.
Match the following architectural components to their functions:
Match the following architectural components to their functions:
Which nonfunctional characteristic affects all users?
Which nonfunctional characteristic affects all users?
A multi-database architecture ensures that all components share the same database.
A multi-database architecture ensures that all components share the same database.
What is the function of component C3 in a multi-database architecture?
What is the function of component C3 in a multi-database architecture?
What primarily defines the distribution architecture of a software system?
What primarily defines the distribution architecture of a software system?
In client-server architecture, the user interface is implemented on the server.
In client-server architecture, the user interface is implemented on the server.
What type of applications is client-server architecture particularly suited for?
What type of applications is client-server architecture particularly suited for?
In a client-server architecture, functionality is distributed between the client and one or more _____ computers.
In a client-server architecture, functionality is distributed between the client and one or more _____ computers.
Match the following services with their descriptions:
Match the following services with their descriptions:
Which component is NOT part of the client-server architecture?
Which component is NOT part of the client-server architecture?
Resource discovery is an example of a shared infrastructure service.
Resource discovery is an example of a shared infrastructure service.
What role does a load balancer play in a client-server architecture?
What role does a load balancer play in a client-server architecture?
What is a primary benefit of architectural diagrams in software architecture?
What is a primary benefit of architectural diagrams in software architecture?
The architecture of a software system does not influence its non-functional properties such as reliability and security.
The architecture of a software system does not influence its non-functional properties such as reliability and security.
What is the main purpose of separating concerns in software architecture?
What is the main purpose of separating concerns in software architecture?
Multi-tier client-server and service-oriented architectures are commonly used for ______-based systems.
Multi-tier client-server and service-oriented architectures are commonly used for ______-based systems.
Which of the following is an important part of the architectural design process?
Which of the following is an important part of the architectural design process?
Match the architectural concepts to their descriptions:
Match the architectural concepts to their descriptions:
Developers often prefer familiar technologies when making architectural choices.
Developers often prefer familiar technologies when making architectural choices.
What does architectural decomposition involve?
What does architectural decomposition involve?
Flashcards
Multi-database architecture
Multi-database architecture
An architecture where each component has its own copy of the database it needs, allowing independent data modifications.
Database reconciliation
Database reconciliation
Ensures consistency between multiple databases by synchronizing changes made to shared data.
Shared database architecture
Shared database architecture
A type of architecture where all components share the same database. Changes made by one component are visible to all others.
Software Architecture
Software Architecture
Signup and view all the flashcards
Nonfunctional product characteristics
Nonfunctional product characteristics
Signup and view all the flashcards
Component API access
Component API access
Signup and view all the flashcards
Architectural influences
Architectural influences
Signup and view all the flashcards
Product lifetime
Product lifetime
Signup and view all the flashcards
Architecture's impact on system properties
Architecture's impact on system properties
Signup and view all the flashcards
Architectural Design
Architectural Design
Signup and view all the flashcards
Software compatibility
Software compatibility
Signup and view all the flashcards
Software reuse
Software reuse
Signup and view all the flashcards
Resilience
Resilience
Signup and view all the flashcards
Security
Security
Signup and view all the flashcards
Maintainability
Maintainability
Signup and view all the flashcards
Responsiveness
Responsiveness
Signup and view all the flashcards
Full integration
Full integration
Signup and view all the flashcards
Partial integration
Partial integration
Signup and view all the flashcards
Independent integration
Independent integration
Signup and view all the flashcards
Layered architecture
Layered architecture
Signup and view all the flashcards
Layered architectural model of the iLearn system
Layered architectural model of the iLearn system
Signup and view all the flashcards
Redundancy
Redundancy
Signup and view all the flashcards
Decomposition
Decomposition
Signup and view all the flashcards
Abstraction
Abstraction
Signup and view all the flashcards
Layered Model
Layered Model
Signup and view all the flashcards
Technology Selection
Technology Selection
Signup and view all the flashcards
What is software architecture?
What is software architecture?
Signup and view all the flashcards
Client-server architecture
Client-server architecture
Signup and view all the flashcards
How does architecture impact system properties?
How does architecture impact system properties?
Signup and view all the flashcards
Distribution architecture
Distribution architecture
Signup and view all the flashcards
What is architectural design?
What is architectural design?
Signup and view all the flashcards
Client interface
Client interface
Signup and view all the flashcards
What is system decomposition?
What is system decomposition?
Signup and view all the flashcards
Load balancer
Load balancer
Signup and view all the flashcards
Database server
Database server
Signup and view all the flashcards
What is distribution architecture?
What is distribution architecture?
Signup and view all the flashcards
How to minimize architectural complexity?
How to minimize architectural complexity?
Signup and view all the flashcards
User interface
User interface
Signup and view all the flashcards
Functionality
Functionality
Signup and view all the flashcards
What are common layers in web systems?
What are common layers in web systems?
Signup and view all the flashcards
Why are technology choices important in architectural design?
Why are technology choices important in architectural design?
Signup and view all the flashcards
Servers
Servers
Signup and view all the flashcards
Study Notes
Course Information
- Course name: Software Architecture
- Course code: BIS301
- Academic year: 2023
- Lecturer: Ian Sommerville
Introduction to System Analysis and Design
- Lecture notes contain material from Ian Sommerville.
- Focus on software architecture principles.
Software Architecture
- Essential for creating reliable, secure, and efficient software.
- Involves organization, decomposition into components, server organization, and technologies used.
- Different interpretations of 'software architecture':
- As a noun (structure of a system)
- As a verb (process of defining structures)
- IEEE definition of software architecture: the fundamental organization of a software system, embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution.
Software Architecture and Components
- Component: An element implementing a functionality or set of features.
- Software components can be collections of one or more services used by other components.
- Architectural design of software components should outline interfaces but not the implementation details.
Why is Architecture Important?
- Architecture fundamentally affects non-functional system properties.
- Architectural design involves understanding issues affecting the product's architecture and creating descriptions showing critical parts and their connections.
- Important to minimize system complexity for maintainability and to reduce mistakes when modifying or expanding systems.
- Increased complexity leads to more difficulty and cost understanding and changing a system and increases the likelihood of bugs and security vulnerabilities.
Non-Functional System Quality Attributes
- Responsiveness: Time taken to return results to users.
- Reliability: System's features functioning as expected.
- Availability: System's ability to deliver services when requested.
- Security: System's protection from unauthorized access.
- Usability: Ease of use for system users.
- Maintainability: Ease of updating and adding new features.
- Resilience: System's ability to continue delivering services in case of partial failure or outside attack.
Architecture of System Security
- Centralized security architecture: Storing all data in one secure location with a concentrated security effort, but makes compromising of the data more difficult when attacked by the enemy.
- Distributed security architecture: Distributes information across multiple locations. Makes compromising more difficult because it requires breaching security in many locations, compared to only one.
Centralized Security Architectures
- Easier to design and build security protection.
- Protected information accessible efficiently.
- Breaches lead to a loss of all protected information.
- Distribution of information makes protection more expensive and time-consuming.
Maintainability and Performance
- Shared database architecture: Two components (C1 and C2) use a common database. Changes to the common data need changes to both components.
- Multiple database architecture: Each component has its own database copy. Changes to one component's data do not affect others. However, multiple databases can lead to performance and implementation cost overhead.
Architectural Decisions
- Non-functional product characteristics (like security and performance) influence architectural choices.
- Product lifetime and software reuse constrain architectural choices.
- Number of users and compatibility with other software influence architectural choices.
- Balancing maintainability and performance, security and usability, availability and time-to-market during architectural decisions.
Trade-offs
- Maintainability vs. performance: Decomposing into small, independent components improves maintainability but may decrease performance due to increased communication between components.
- Security vs. usability: Layered security (e.g. Authentication, application, IP, etc.) makes for easier security but users might have to interact with additional security layers, reducing usability.
- Availability vs. time-to-market: Redundancy (multiple components working in parallel) improves availability but increases development time and cost.
Architectural Design Questions
- How components should be organized ?
- How components should be distributed and communicate?
- Which technologies to use and which components should be reused?
- Emphasize overall system functionality and consider how they deliver the required security, reliability and performance.
Component Organization
- Abstraction in software design focuses on essentials, ignoring unnecessary details.
- Architectural level focus on a larger scale architectural components.
- Decomposition analysis of components (breaking them down) into smaller, more manageable parts.
- Layered models are frequently used to depict a system's arrangement.
Architectural Models of Document Retrieval System
(Example diagrams showing a layered structure with different functionality in each layer, such as user interface, information retrieval, database management etc).
Architectural Complexity
- Increased system complexity stems from the number and relationships of system components.
- Local relationships between components are easier to understand than relationships spanning multiple modules or parts of the system.
- Architectural components that share dependencies can become complex, affecting both parties when modifications occur.
- Localizing data wherever possible minimizes dependencies (makes the system simpler.)
Architectural Design Guidelines
- Focus on single concerns for each component which creates a clear separation of responsibilities in the system.
- Stable component interfaces that change slowly lead to more maintenance-friendly systems.
- Implement functionality only once (avoid functional duplication)
Design Guidelines and Layered Architectures
- Each layer functions independently of other layers.
- Top layer is user interaction.
- Bottom layers provide general functionality which is reusable.
- Consistent component interaction within each layer.
Cross-Cutting Concerns
Cross-cutting concerns (i.e. security, performance and reliability): affect all layers in complex systems. Every layer in the system must take precautions for these cross-cutting concerns. Modifying one part of the system might cause unforeseen consequences in other parts making modification complex after the system is developed.
Technology Choices for Architecture
- Database choice (relational or NoSQL)
- Platform (web-based, mobile-app or both).
- Server system (in-house, cloud or both).
- Open source components.
- Development tools.
Database Types
- Relational Databases (SQL): Structured data in tables, suitable for predictable transactions.
- NoSQL Databases (e.g., MongoDB): Flexible data structures to store unstructured or semi-structured information and suitable for data analysis or big data.
Delivery Platform
- Web-based, mobile-based systems or a combination of both.
- Factors impacting the platform include intermittent connectivity issues, processor power, power management limitations and the usability concerns of touch screens and slower interactions with a system.
Architectures
- Server systems to run on a customer's server or a cloud system.
- Business products running on a cloud system may be more difficult or costly depending on concerns such as security.
- Cloud provider choice is part of designing system architecture.
Open Source
- Open-source software is readily available, modifiable.
- Reusability reduces development costs.
- Constraints: dependence on open-source components, license issues, and lack of control over evolution.
- Choice is driven by type of product, target audience and developer expertise.
Development Tools
- Development tools (e.g., mobile development toolkits, web application frameworks).
- Tool assumptions about system architecture that may be necessary to comply with in some systems.
iLearn Design Principles
- Design goals for the iLearn system: Adaptability, ease of updates with new learning tools.
- Components and services can be changed and replaced.
- Age appropriateness of user interfaces.
- Minimal effort required for users to make changes without affecting other users working on the system.
Designing iLearn as a Service-Oriented System
- Components of the system as services.
- Replaceability of components.
- Flexibility for different kinds of users (adaptability, etc) and interfaces.
- Full, partial, and independent service integration through APIs.
Distribution Architecture
- Client-server architectures (e.g. a web server provides a service to a client).
- Distributes different components and functionality across various servers.
Multi-Tier Client-Server Architecture
- Web server, application server, and database server.
- Each tier handles a specific task and reduces load by distributing it over various tiers.
Service-Oriented Architecture
- Stateless components that work on several computers.
- Replicated services improve resilience to failure or increase demand.
Issues in Architectural Choices
- Data types and updates: Single shared database or multiple.
- Change frequency (how often system components change), if components change regularly, having them as independent modules improves maintainability.
- System execution platform for the entire system running on customer systems or a cloud system.
Key Points
- Software architecture: Organization, relationships between components and principles.
- Non-functional characteristics (reliability, efficiency, and security).
- Architectural descriptions for development teams.
- System decomposition to create smaller components and improve management.
- Separating concerns, avoiding duplication and focusing on component interfaces, to make the system more maintainable.
- Common layered structures for web-based systems.
- Multi-tier, client-server and service-oriented architectures are frequently utilized.
- Important decisions about technologies, the cloud or in-house implementation.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.