Podcast
Questions and Answers
What aspect of software architecture directly impacts performance and usability?
What aspect of software architecture directly impacts performance and usability?
- Database choice
- Programming language used
- Architectural design (correct)
- Color scheme of the user interface
According to the IEEE definition, which of the following is NOT a component of software architecture?
According to the IEEE definition, which of the following is NOT a component of software architecture?
- Fundamental organization of the system
- Development environment (correct)
- Guiding design principles
- Components and their relationships
Why is it important to focus on architectural design during development?
Why is it important to focus on architectural design during development?
- To minimize testing requirements
- To speed up the coding process
- To ensure a visually appealing interface
- To create a reliable and secure product (correct)
In software architecture, what does a component typically implement?
In software architecture, what does a component typically implement?
Which interpretation of software architecture views it as a process?
Which interpretation of software architecture views it as a process?
When designing the software architecture, what should be prioritized instead of implementation details?
When designing the software architecture, what should be prioritized instead of implementation details?
How does software architecture affect maintainability?
How does software architecture affect maintainability?
Which of the following best describes a software component?
Which of the following best describes a software component?
What is the main goal of architectural design in software systems?
What is the main goal of architectural design in software systems?
Which non-functional quality attribute ensures a system behaves as expected by both developers and users?
Which non-functional quality attribute ensures a system behaves as expected by both developers and users?
How does complexity in a system impact programming?
How does complexity in a system impact programming?
Which non-functional attribute assesses if a system can deliver its services when requested?
Which non-functional attribute assesses if a system can deliver its services when requested?
What is a consequence of maintaining a highly complex system?
What is a consequence of maintaining a highly complex system?
Which attribute relates to the system's ability to minimize errors for users?
Which attribute relates to the system's ability to minimize errors for users?
What is the role of architectural description in software architecture?
What is the role of architectural description in software architecture?
Which attribute ensures the system can protect itself and user data from intrusions?
Which attribute ensures the system can protect itself and user data from intrusions?
What is a characteristic of a multi-database architecture?
What is a characteristic of a multi-database architecture?
What role does component C3 play in a multi-database architecture?
What role does component C3 play in a multi-database architecture?
Which of the following statements about nonfunctional product characteristics is correct?
Which of the following statements about nonfunctional product characteristics is correct?
How does a shared database architecture differ from a multi-database architecture?
How does a shared database architecture differ from a multi-database architecture?
What is one potential drawback of implementing a multi-database architecture?
What is one potential drawback of implementing a multi-database architecture?
What impact does the number of users have on architectural decisions?
What impact does the number of users have on architectural decisions?
What is a significant architectural influence mentioned in the content?
What is a significant architectural influence mentioned in the content?
Which of the following is not a benefit of a multi-database architecture?
Which of the following is not a benefit of a multi-database architecture?
What is a primary goal when decomposing a system into components?
What is a primary goal when decomposing a system into components?
Which component is responsible for managing user authentication and authorization?
Which component is responsible for managing user authentication and authorization?
What contributes to architectural complexity in a system?
What contributes to architectural complexity in a system?
Which of the following components is involved in document index management?
Which of the following components is involved in document index management?
In an architectural model, what is the role of the web browser?
In an architectural model, what is the role of the web browser?
What component is associated with logging user activities within the system?
What component is associated with logging user activities within the system?
Which option primarily deals with document retrieval processes?
Which option primarily deals with document retrieval processes?
Which database component is not mentioned in the architectural model?
Which database component is not mentioned in the architectural model?
What largely influences the architectural choices made by developers?
What largely influences the architectural choices made by developers?
What is a primary role of architectural descriptions?
What is a primary role of architectural descriptions?
What strategy should be employed to minimize complexity in software architecture?
What strategy should be employed to minimize complexity in software architecture?
Which layered structure is typical in web-based systems?
Which layered structure is typical in web-based systems?
What aspect of a distribution architecture is primarily defined?
What aspect of a distribution architecture is primarily defined?
Which type of architecture is commonly used in web-based systems?
Which type of architecture is commonly used in web-based systems?
What critical element should be a focal point during architectural design?
What critical element should be a focal point during architectural design?
Which of the following actions is emphasized for improving system architecture?
Which of the following actions is emphasized for improving system architecture?
What is the main purpose of having multiple layers in a security architecture?
What is the main purpose of having multiple layers in a security architecture?
Which of the following could be considered a usability issue related to layered security?
Which of the following could be considered a usability issue related to layered security?
What trade-off must be considered in the context of security architecture?
What trade-off must be considered in the context of security architecture?
How is system availability typically expressed?
How is system availability typically expressed?
What is a consequence of having too many security layers?
What is a consequence of having too many security layers?
What is a benefit of employing redundant components in a system architecture?
What is a benefit of employing redundant components in a system architecture?
Which of the following describes a helper component in security architecture?
Which of the following describes a helper component in security architecture?
What could result from users looking for work-arounds to avoid re-authentication?
What could result from users looking for work-arounds to avoid re-authentication?
Flashcards
Software Architecture
Software Architecture
The overall structure of a software system, including its components, their relationships, and design principles.
Software Component
Software Component
A part of a software system that implements a specific set of functions or features.
Component Interface
Component Interface
The way components interact with each other.
Software Architecture Impact
Software Architecture Impact
Architecture significantly affects performance, usability, security, reliability, and maintainability of a software product.
Signup and view all the flashcards
System Decomposition
System Decomposition
Breaking down a software system into smaller, more manageable components.
Signup and view all the flashcards
Architectural Design
Architectural Design
The design of a software system's organization, decomposition, and technologies.
Signup and view all the flashcards
Component Implementation
Component Implementation
How a specific component is realized.
Signup and view all the flashcards
Software Architecture Principles
Software Architecture Principles
The guiding rules for designing and evolving a software system.
Signup and view all the flashcards
Non-functional System Properties
Non-functional System Properties
Characteristics of a software system that aren't related to its functionality, like responsiveness, reliability, and security.
Signup and view all the flashcards
Responsiveness
Responsiveness
How quickly a software system returns results to users.
Signup and view all the flashcards
Reliability
Reliability
Consistency in software behavior as expected by users and developers.
Signup and view all the flashcards
Availability
Availability
The ability of a system to deliver its services when requested.
Signup and view all the flashcards
Security
Security
Protecting software from unauthorized access and malicious attacks.
Signup and view all the flashcards
Maintainability
Maintainability
Ease of updating and adding new features to a software system.
Signup and view all the flashcards
Complexity
Complexity
The difficulty of understanding a system due to its intricate components.
Signup and view all the flashcards
Architectural model
Architectural model
A simplified representation of a system showing its components and their interactions.
Signup and view all the flashcards
Complexity in architecture
Complexity in architecture
The number and nature of relationships between components in a system.
Signup and view all the flashcards
Decomposing a system
Decomposing a system
Breaking down a large system into smaller, manageable parts.
Signup and view all the flashcards
Shared Database
Shared Database
An architecture where multiple components share a single database for data storage.
Signup and view all the flashcards
Multi-database Architecture
Multi-database Architecture
An architecture where each component has its own copy of the database parts it needs. This allows for independent database changes.
Signup and view all the flashcards
Unnecessary complexity
Unnecessary complexity
Complexity that doesn't add value to the system and can make it harder to maintain.
Signup and view all the flashcards
Web browser in a system
Web browser in a system
The user interface for interacting with a web-based system.
Signup and view all the flashcards
Database Reconciliation
Database Reconciliation
A mechanism to ensure the consistency of data shared between multiple databases in a multi-database architecture.
Signup and view all the flashcards
User interface management
User interface management
Handles user interactions, including authentication, form submission, and web page generation.
Signup and view all the flashcards
Nonfunctional Product Characteristics
Nonfunctional Product Characteristics
Factors that affect the quality and usability of a system, but are not directly related to its core functionality. Examples include performance, security, and reliability.
Signup and view all the flashcards
Architectural Influences
Architectural Influences
Factors that influence architectural decisions, including nonfunctional product characteristics, number of users, and software reuse.
Signup and view all the flashcards
Information retrieval
Information retrieval
The process of finding and accessing information within a system, often using search queries.
Signup and view all the flashcards
Basic services
Basic services
Essential functions of a system, such as database querying, user account management, and logging.
Signup and view all the flashcards
Software Compatibility
Software Compatibility
The ability of different software components or systems to work together without issues.
Signup and view all the flashcards
Product Lifetime
Product Lifetime
The expected period of time a product will be in use and supported.
Signup and view all the flashcards
Software Reuse
Software Reuse
The practice of using existing software components in new projects to save time and effort.
Signup and view all the flashcards
Non-functional Properties
Non-functional Properties
Characteristics of a software system that are not related to its primary functionality, but are essential for its success, such as reliability, security, performance, and usability.
Signup and view all the flashcards
Layered Architecture
Layered Architecture
A common structure in web-based systems that separates components into distinct layers, such as user interface, application logic, and database.
Signup and view all the flashcards
Separation of Concerns
Separation of Concerns
A design principle that aims to reduce complexity by organizing components based on specific functions or responsibilities.
Signup and view all the flashcards
Distribution Architecture
Distribution Architecture
Describes how components are distributed across multiple servers in a system, including data storage, processing, and user interaction.
Signup and view all the flashcards
Multi-tier Architecture
Multi-tier Architecture
A system architecture that involves multiple layers of servers performing different roles, common in web applications.
Signup and view all the flashcards
Service-oriented Architecture (SOA)
Service-oriented Architecture (SOA)
A software design approach that uses loosely coupled components called services to perform specific functions, enabling interoperability and flexibility.
Signup and view all the flashcards
Layered Security
Layered Security
A security approach that implements multiple security layers, each protecting different aspects of the system, making it harder for attackers to compromise.
Signup and view all the flashcards
Authentication Layers
Authentication Layers
Different levels of authentication that users must pass through to access specific parts of a system.
Signup and view all the flashcards
Usability Impact of Security Layers
Usability Impact of Security Layers
Increased security can hinder user experience as users need to remember passwords and navigate multiple authentication steps, potentially slowing down their interactions.
Signup and view all the flashcards
Redundant Components for Availability
Redundant Components for Availability
Using duplicate components in a system ensures that if one fails, the other takes over, maintaining system uptime and availability.
Signup and view all the flashcards
Trade-off: Availability vs. Time-to-Market
Trade-off: Availability vs. Time-to-Market
Balancing the need for high system uptime with the pressure to launch a product quickly. More time spent on making the system highly available delays its release.
Signup and view all the flashcards
Impact of Security on Performance
Impact of Security on Performance
Adding security measures can slow down a system's performance as it needs to process extra checks and verifications.
Signup and view all the flashcards
Workarounds to Security Layers
Workarounds to Security Layers
Users may find ways to bypass security measures to avoid inconvenience, potentially weakening security.
Signup and view all the flashcards
Helper Components
Helper Components
Software features designed to make it easier for users to navigate security layers, such as password managers or auto-login features.
Signup and view all the flashcardsStudy Notes
Course Information
- Course title: An Awesome Introduction to System Analysis and Design
- Course code: BIS301
- Academic year: 2023
- Lecture notes partly based on material from Ian Sommerville
Software Architecture
- Creating reliable, secure, and efficient software requires careful attention to architectural design, encompassing:
- Overall system organization
- Decomposition of software into components
- Server organization
- Technologies used in development
- Software architecture significantly influences performance, usability, security, reliability, and maintainability.
- The term "software architecture" has diverse interpretations. Some view it as a noun (system structure), while others consider it a verb (process of defining structures).
- IEEE definition: Architecture is 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
- A component is an element implementing a set of functionalities or features.
- A software component can be a collection of one or more services used by other components.
- Architectural design of components doesn't need to specify implementation details. Implementations of interfaces can be handled later.
Why is Architecture Important?
- Architecture fundamentally impacts non-functional system properties (shown in Table 4.2).
- Architectural design involves understanding factors affecting the architecture, and designing a description of critical components and their relations.
- Minimizing complexity is crucial for a maintainable system. Increased system complexity brings increased difficulty and expense for understanding and modification.
- Complex systems are more prone to programmer errors and introduce security vulnerabilities during modifications and extensions.
Non-functional System Quality Attributes
- This is shown in Table 4.2.
- Responsiveness: Does the system return results in a reasonable time?
- Reliability: Do system features behave as expected?
- Availability: Can the system deliver services when needed?
- Security: Does the system protect itself and user data?
- Usability: Can users access and utilize features effectively?
- Maintainability: Can the system be updated easily?
- Resilience: Can the system continue service during partial failures or external attacks?
Centralized Security Architectures
- Centralized security architectures store all sensitive data in one secure location.
- This approach simplifies security protection by concentrating resources.
- However, a breach in a centralized architecture compromises the entire system.
- A distributed architecture, by contrast, would make a breach significantly more difficult, as it would require security breaches in multiple locations.
Maintainability and Performance
- A shared database architecture (Figure 4.2) can cause performance issues if changes to the database need adjustments in other parts of the system.
- A separate architecture for components with their individual copies of needed database parts resolves dependencies between components and makes maintenance less cumbersome.
Architectural Design Guidelines
- Separation of concerns: Organize components with a focus on one concern.
- Stable interfaces: Design coherent interfaces that change slowly.
- Implement once: Avoid duplicating functionality across different parts of the architecture.
Design Guidelines and Layered Architectures
- Layers represent areas of concern (e.g., user interaction, data retrieval).
- Each layer uses components independent of other layers.
- Lower layers provide general functionalities; higher layers build on those.
- Architectural models are high-level; detail implementation is excluded by the architecture model.
- Ideally, interactions happen between layers and not across layers.
Cross-Cutting Concerns
- Cross-cutting concerns apply system-wide and affect all layers.
- Examples include security, performance, and reliability.
- Modifying a system to improve security can be difficult due to the nature of cross-cutting concerns.
Security as a Cross-Cutting Concern
- Security architecture should have protection at every level.
- Single points of failure in security can compromise the entire system.
- Distributing security efforts across layers increases resilience against vulnerabilities.
Layered Architecture for Web-Based Applications
- Commonly, a web application has layers like browser interface, authentication and user interaction, application functionality, basic shared services, and database management.
iLearn Design Principles
- iLearn aimed to create an adaptable system supporting diverse tools.
- Principles included: replaceability, extensibility, age-appropriate interfaces, programmability, minimum work.
Service-Oriented Architecture
- Service-oriented architectures are stateless and can be replicated.
- This facilitates scalability and resilience to failure.
- Full and partial integration models were used in the iLearn design by establishing component interdependence based on API functionality.
Issues in Architectural Choices
- Data types/updates: consider using shared databases for structured data.
- Change frequency: if components may change often, isolate them as services.
- Execution platform: cloud architecture is often simpler for scaling, in contrast to local multi-tiered architecture.
Technology Choices
- Database technologies (Relational SQL, or NoSQL).
- Platform (mobile app and/or web-based platform).
- Server options (in-house or cloud).
Database Details
- Relational databases organize data in structured tables, suitable for transaction processing where data structure is predictable.
- NoSQL databases provide flexible data models, efficient with "big data" requiring concurrent processing, suitable for data analysis.
Delivery Platform
- Web-based deliverability may require intermittent connection handling and resource optimization.
- In contrast, mobile versions present processor power constraints, battery life limitations, and considerations for on-screen keyboards.
Server Decisions
- Decisions must be made on whether a system is client-server or cloud-based.
- Considerations are needed for consumer-facing applications versus those intended for businesses regarding cloud security considerations and potential predictability (or unpredictability) of usage patterns.
Open Source Software
- The advantage of open source is the availability and ease of reuse.
- Drawbacks include constraints imposed by the software and maintenance obligations to the open source source code.
- Choices should depend on the product type, target market, and development team expertise.
Development Tools
- Frameworks and technologies influence architecture, demanding developer adherence to embedded assumptions.
- Personal experience of development teams with technologies greatly affect decisions on particular architectural choices, either favoring relational databases over NoSQL approaches, or vice-versa.
Key Points Summarized
- Software architecture fundamentally determines a system's organization, interconnections, and evolution methodology.
- Architectural considerations significantly impact non-functional system aspects like security, reliability, and performance.
- Principles like separation of concerns, stable interfaces, and implementation once aid in system design.
- A shared understanding, fostered by informal architectural diagrams, helps development teams coordinate.
- Architecture design usually starts with high-level decomposition, refining to smaller architectural components, that can then be used by the software system.
- Understanding the nature of cross-cutting concerns is very important in software design.
- The choice of technologies, delivery platforms, and execution environment impacts the overall design.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.