BIS301 Software Architecture Overview
48 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • 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?

    <p>A coherent set of functionalities</p> Signup and view all the answers

    Which interpretation of software architecture views it as a process?

    <p>Architecture as a verb</p> Signup and view all the answers

    When designing the software architecture, what should be prioritized instead of implementation details?

    <p>Component interfaces</p> Signup and view all the answers

    How does software architecture affect maintainability?

    <p>Through the organization and relationships of components</p> Signup and view all the answers

    Which of the following best describes a software component?

    <p>An element that implements a set of services</p> Signup and view all the answers

    What is the main goal of architectural design in software systems?

    <p>To minimize complexity and improve understanding.</p> Signup and view all the answers

    Which non-functional quality attribute ensures a system behaves as expected by both developers and users?

    <p>Reliability</p> Signup and view all the answers

    How does complexity in a system impact programming?

    <p>Increases the chances of mistakes when modifying the system.</p> Signup and view all the answers

    Which non-functional attribute assesses if a system can deliver its services when requested?

    <p>Availability</p> Signup and view all the answers

    What is a consequence of maintaining a highly complex system?

    <p>Increased likelihood of introducing bugs.</p> Signup and view all the answers

    Which attribute relates to the system's ability to minimize errors for users?

    <p>Usability</p> Signup and view all the answers

    What is the role of architectural description in software architecture?

    <p>To show critical components and their relationships.</p> Signup and view all the answers

    Which attribute ensures the system can protect itself and user data from intrusions?

    <p>Security</p> Signup and view all the answers

    What is a characteristic of a multi-database architecture?

    <p>It can run slower and cost more to implement.</p> Signup and view all the answers

    What role does component C3 play in a multi-database architecture?

    <p>Ensuring data consistency between C1 and C2.</p> Signup and view all the answers

    Which of the following statements about nonfunctional product characteristics is correct?

    <p>They influence aspects like security and performance.</p> Signup and view all the answers

    How does a shared database architecture differ from a multi-database architecture?

    <p>It has a single database that all components access.</p> Signup and view all the answers

    What is one potential drawback of implementing a multi-database architecture?

    <p>Higher costs associated with changes.</p> Signup and view all the answers

    What impact does the number of users have on architectural decisions?

    <p>It can influence scalability and performance requirements.</p> Signup and view all the answers

    What is a significant architectural influence mentioned in the content?

    <p>Software reuse.</p> Signup and view all the answers

    Which of the following is not a benefit of a multi-database architecture?

    <p>Increased performance speed.</p> Signup and view all the answers

    What is a primary goal when decomposing a system into components?

    <p>To avoid unnecessary software complexity</p> Signup and view all the answers

    Which component is responsible for managing user authentication and authorization?

    <p>User interface management</p> Signup and view all the answers

    What contributes to architectural complexity in a system?

    <p>The number and nature of relationships between components</p> Signup and view all the answers

    Which of the following components is involved in document index management?

    <p>Index querying and creation</p> Signup and view all the answers

    In an architectural model, what is the role of the web browser?

    <p>To generate web pages</p> Signup and view all the answers

    What component is associated with logging user activities within the system?

    <p>Basic services</p> Signup and view all the answers

    Which option primarily deals with document retrieval processes?

    <p>Information retrieval</p> Signup and view all the answers

    Which database component is not mentioned in the architectural model?

    <p>DB6</p> Signup and view all the answers

    What largely influences the architectural choices made by developers?

    <p>Experience with development technologies</p> Signup and view all the answers

    What is a primary role of architectural descriptions?

    <p>To guide team discussions on system organization</p> Signup and view all the answers

    What strategy should be employed to minimize complexity in software architecture?

    <p>Separate concerns and avoid functional duplication</p> Signup and view all the answers

    Which layered structure is typical in web-based systems?

    <p>User interface, application-specific, database</p> Signup and view all the answers

    What aspect of a distribution architecture is primarily defined?

    <p>The organization of servers and component allocations</p> Signup and view all the answers

    Which type of architecture is commonly used in web-based systems?

    <p>Service-oriented and multi-tier architectures</p> Signup and view all the answers

    What critical element should be a focal point during architectural design?

    <p>Choosing database and cloud technologies</p> Signup and view all the answers

    Which of the following actions is emphasized for improving system architecture?

    <p>Focusing on component interfaces</p> Signup and view all the answers

    What is the main purpose of having multiple layers in a security architecture?

    <p>To ensure that if one layer is compromised, others remain intact</p> Signup and view all the answers

    Which of the following could be considered a usability issue related to layered security?

    <p>Users forgetting passwords required for authentication</p> Signup and view all the answers

    What trade-off must be considered in the context of security architecture?

    <p>Availability vs. time-to-market</p> Signup and view all the answers

    How is system availability typically expressed?

    <p>As a percentage of uptime</p> Signup and view all the answers

    What is a consequence of having too many security layers?

    <p>Reduced usability and user frustration</p> Signup and view all the answers

    What is a benefit of employing redundant components in a system architecture?

    <p>Improved system availability</p> Signup and view all the answers

    Which of the following describes a helper component in security architecture?

    <p>An element that reduces the authentication burden on users</p> Signup and view all the answers

    What could result from users looking for work-arounds to avoid re-authentication?

    <p>Potential security risks</p> Signup and view all the answers

    Study 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.

    Quiz Team

    Related Documents

    Description

    This quiz covers the essential concepts of software architecture as outlined in the course 'An Awesome Introduction to System Analysis and Design'. It delves into system organization, component decomposition, and the significance of architectural design in software performance and security. Additionally, it explores the diverse interpretations of software architecture as both a noun and a verb.

    More Like This

    Introduction to Software Architecture
    38 questions

    Introduction to Software Architecture

    PreeminentChrysoprase1769 avatar
    PreeminentChrysoprase1769
    Introduction to Software Architecture
    15 questions
    Use Quizgecko on...
    Browser
    Browser