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?
What is a major drawback of implementing redundancy in a system?
What is a major drawback of implementing redundancy in a system?
Independent services are aware of other services in the system.
Independent services are aware of other services in the system.
False
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.
Signup and view all the answers
What do partial integration services share between each other?
What do partial integration services share between each other?
Signup and view all the answers
What is the purpose of switching components in a redundant system?
What is the purpose of switching components in a redundant system?
Signup and view all the answers
Full integration services can communicate through their ______.
Full integration services can communicate through their ______.
Signup and view all the answers
Match the following services with their characteristics:
Match the following services with their characteristics:
Signup and view all the answers
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 ______.
Signup and view all the answers
Match the following software design concepts to their descriptions:
Match the following software design concepts to their descriptions:
Signup and view all the answers
What is one of the main goals of architectural design?
What is one of the main goals of architectural design?
Signup and view all the answers
The architecture of a system does not affect its non-functional properties.
The architecture of a system does not affect its non-functional properties.
Signup and view all the answers
Name one non-functional system quality attribute.
Name one non-functional system quality attribute.
Signup and view all the answers
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 ______.
Signup and view all the answers
Match the following non-functional system quality attributes with their descriptions:
Match the following non-functional system quality attributes with their descriptions:
Signup and view all the answers
What can increase the likelihood of programmers introducing bugs and security vulnerabilities?
What can increase the likelihood of programmers introducing bugs and security vulnerabilities?
Signup and view all the answers
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.
Signup and view all the answers
Why is it important for a system to be reliable?
Why is it important for a system to be reliable?
Signup and view all the answers
What is one disadvantage of a multi-database architecture?
What is one disadvantage of a multi-database architecture?
Signup and view all the answers
In a shared database architecture, changes in database organization affect all components.
In a shared database architecture, changes in database organization affect all components.
Signup and view all the answers
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?
Signup and view all the answers
A multi-database architecture may be ______ to implement and change.
A multi-database architecture may be ______ to implement and change.
Signup and view all the answers
Match the following architectural components to their functions:
Match the following architectural components to their functions:
Signup and view all the answers
Which nonfunctional characteristic affects all users?
Which nonfunctional characteristic affects all users?
Signup and view all the answers
A multi-database architecture ensures that all components share the same database.
A multi-database architecture ensures that all components share the same database.
Signup and view all the answers
What is the function of component C3 in a multi-database architecture?
What is the function of component C3 in a multi-database architecture?
Signup and view all the answers
What primarily defines the distribution architecture of a software system?
What primarily defines the distribution architecture of a software system?
Signup and view all the answers
In client-server architecture, the user interface is implemented on the server.
In client-server architecture, the user interface is implemented on the server.
Signup and view all the answers
What type of applications is client-server architecture particularly suited for?
What type of applications is client-server architecture particularly suited for?
Signup and view all the answers
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.
Signup and view all the answers
Match the following services with their descriptions:
Match the following services with their descriptions:
Signup and view all the answers
Which component is NOT part of the client-server architecture?
Which component is NOT part of the client-server architecture?
Signup and view all the answers
Resource discovery is an example of a shared infrastructure service.
Resource discovery is an example of a shared infrastructure service.
Signup and view all the answers
What role does a load balancer play in a client-server architecture?
What role does a load balancer play in a client-server architecture?
Signup and view all the answers
What is a primary benefit of architectural diagrams in software architecture?
What is a primary benefit of architectural diagrams in software architecture?
Signup and view all the answers
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.
Signup and view all the answers
What is the main purpose of separating concerns in software architecture?
What is the main purpose of separating concerns in software architecture?
Signup and view all the answers
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.
Signup and view all the answers
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?
Signup and view all the answers
Match the architectural concepts to their descriptions:
Match the architectural concepts to their descriptions:
Signup and view all the answers
Developers often prefer familiar technologies when making architectural choices.
Developers often prefer familiar technologies when making architectural choices.
Signup and view all the answers
What does architectural decomposition involve?
What does architectural decomposition involve?
Signup and view all the answers
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.
Related Documents
Description
Test your knowledge on software architecture concepts, service integration types, and redundancy in systems. This quiz will cover key terms and theories essential for understanding how services communicate and the challenges of integrating systems effectively.