Software Architecture and Integration Quiz

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

  • Higher development costs (correct)
  • Improved reliability
  • Simplified architecture
  • Increased system performance

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.

<p>True (A)</p> Signup and view all the answers

What do partial integration services share between each other?

<p>service components and databases</p> Signup and view all the answers

What is the purpose of switching components in a redundant system?

<p>To switch operation to a redundant component when a failure is detected.</p> Signup and view all the answers

Full integration services can communicate through their ______.

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

Match the following services with their characteristics:

<p>Full integration = Can communicate through APIs Partial integration = Shares components and databases Independent service = Unaware of other services Application service = Provides specific functionalities like archiving</p> Signup and view all the answers

The process of analyzing large-scale components into finer-grain components is called ______.

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

Match the following software design concepts to their descriptions:

<p>Abstraction = Focusing on essential elements without details Redundancy = Including extra components for reliability Decomposition = Breaking down large components into finer components Layered models = Illustrating system composition through layers</p> Signup and view all the answers

What is one of the main goals of architectural design?

<p>To minimize system complexity (B)</p> Signup and view all the answers

The architecture of a system does not affect its non-functional properties.

<p>False (B)</p> Signup and view all the answers

Name one non-functional system quality attribute.

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

The system should protect itself and users’ data from unauthorized attacks and intrusions, which is referred to as ______.

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

Match the following non-functional system quality attributes with their descriptions:

<p>Responsiveness = The system returns results in a reasonable time Availability = The system can deliver services when requested by users Usability = Users can access the features quickly and without errors Resilience = The system continues to function despite partial failures</p> Signup and view all the answers

What can increase the likelihood of programmers introducing bugs and security vulnerabilities?

<p>Complex systems (C)</p> Signup and view all the answers

Maintainability refers to how easily a system can be updated and new features added.

<p>True (A)</p> Signup and view all the answers

Why is it important for a system to be reliable?

<p>So that features behave as expected by both developers and users.</p> Signup and view all the answers

What is one disadvantage of a multi-database architecture?

<p>It can run more slowly. (D)</p> Signup and view all the answers

In a shared database architecture, changes in database organization affect all components.

<p>True (A)</p> Signup and view all the answers

What mechanism is necessary in a multi-database architecture to ensure data consistency?

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

A multi-database architecture may be ______ to implement and change.

<p>more expensive</p> Signup and view all the answers

Match the following architectural components to their functions:

<p>C1 = Component that accesses its own database C2 = Component that accesses its own database C3 = Component ensuring data consistency</p> Signup and view all the answers

Which nonfunctional characteristic affects all users?

<p>Security (C)</p> Signup and view all the answers

A multi-database architecture ensures that all components share the same database.

<p>False (B)</p> Signup and view all the answers

What is the function of component C3 in a multi-database architecture?

<p>Database reconciliation</p> Signup and view all the answers

What primarily defines the distribution architecture of a software system?

<p>Servers and component allocation (C)</p> Signup and view all the answers

In client-server architecture, the user interface is implemented on the server.

<p>False (B)</p> Signup and view all the answers

What type of applications is client-server architecture particularly suited for?

<p>Applications where clients access a shared database and business logic operations.</p> Signup and view all the answers

In a client-server architecture, functionality is distributed between the client and one or more _____ computers.

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

Match the following services with their descriptions:

<p>Authentication = Verifying user identity Logging and monitoring = Tracking system activities User storage = Storing user data Application interfacing = Connecting different software applications</p> Signup and view all the answers

Which component is NOT part of the client-server architecture?

<p>Personal device storage (D)</p> Signup and view all the answers

Resource discovery is an example of a shared infrastructure service.

<p>True (A)</p> Signup and view all the answers

What role does a load balancer play in a client-server architecture?

<p>It distributes client requests across multiple servers.</p> Signup and view all the answers

What is a primary benefit of architectural diagrams in software architecture?

<p>They facilitate fast sharing and drawing. (D)</p> Signup and view all the answers

The architecture of a software system does not influence its non-functional properties such as reliability and security.

<p>False (B)</p> Signup and view all the answers

What is the main purpose of separating concerns in software architecture?

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

Multi-tier client-server and service-oriented architectures are commonly used for ______-based systems.

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

Which of the following is an important part of the architectural design process?

<p>Deciding on database and cloud technologies (B)</p> Signup and view all the answers

Match the architectural concepts to their descriptions:

<p>Separation of Concerns = Minimizes complexity by focusing on distinct areas of a system Service-Oriented Architecture = Uses services to support the needs of different clients Layered Structure = Includes multiple distinct layers like user interface and application System Decomposition = Analyses large components into smaller, manageable parts</p> Signup and view all the answers

Developers often prefer familiar technologies when making architectural choices.

<p>True (A)</p> Signup and view all the answers

What does architectural decomposition involve?

<p>Analyzing architectural components into finer-grain components</p> Signup and view all the answers

Flashcards

Multi-database architecture

An architecture where each component has its own copy of the database it needs, allowing independent data modifications.

Database reconciliation

Ensures consistency between multiple databases by synchronizing changes made to shared data.

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

The way a system is designed, defining its key components and how they interact. It impacts how the software performs and how easily it can be changed.

Signup and view all the flashcards

Nonfunctional product characteristics

Aspects of software that affect how a user interacts with it, but don't directly relate to its core functionality. Examples include performance, reliability, and security.

Signup and view all the flashcards

Component API access

Services provided by software components can be accessed directly by other components or through the component's API.

Signup and view all the flashcards

Architectural influences

The impact of various considerations on how software is built, including the number of users and the need for software reusability.

Signup and view all the flashcards

Product lifetime

The length of time a software product is expected to be used and supported.

Signup and view all the flashcards

Architecture's impact on system properties

The architecture of a system significantly influences its non-functional properties, such as performance, security, and reliability.

Signup and view all the flashcards

Architectural Design

The process of understanding the requirements and constraints of a system and creating a design that outlines its components and their relationships.

Signup and view all the flashcards

Software compatibility

The ability of a software product to work with other systems or components.

Signup and view all the flashcards

Software reuse

The degree to which existing software components can be reused in new projects.

Signup and view all the flashcards

Resilience

The ability of a system to function effectively in the face of failures or attacks, ensuring continued service delivery.

Signup and view all the flashcards

Security

The ability of a system to protect itself and user data from unauthorized access and attacks.

Signup and view all the flashcards

Maintainability

The ability to easily modify and update a system without introducing errors or affecting its functionality.

Signup and view all the flashcards

Responsiveness

The system's ability to provide responses to users in a timely and efficient manner.

Signup and view all the flashcards

Full integration

Services have direct communication through APIs, enabling them to interact with each other.

Signup and view all the flashcards

Partial integration

Services share components and databases but lack direct communication.

Signup and view all the flashcards

Independent integration

Services operate independently without shared resources or knowledge of others, allowing for easy replacement.

Signup and view all the flashcards

Layered architecture

A software architecture pattern where services are grouped into layers, each with specific responsibilities, creating a structured system.

Signup and view all the flashcards

Layered architectural model of the iLearn system

A software architecture model showcasing the different layers of the iLearn system, highlighting its user interface, configuration services, and application services.

Signup and view all the flashcards

Redundancy

The practice of using multiple components to perform the same function, where failure of one component is mitigated by the others. This ensures system reliability and availability.

Signup and view all the flashcards

Decomposition

The process of breaking down a complex system into smaller, manageable components, each with its own specific function. This helps with design, development, and maintenance.

Signup and view all the flashcards

Abstraction

A simplified representation of a system or component, focusing on its essential features without getting into detailed implementation. This helps with high-level understanding and communication.

Signup and view all the flashcards

Layered Model

A model that organizes a system into distinct layers, with each layer providing specific functionality and relying on the layers below it. This structure promotes modularity and separation of concerns.

Signup and view all the flashcards

Technology Selection

The process of choosing appropriate technologies and components for a system, considering factors such as functionality, scalability, security, and cost. This involves selecting existing components or developing new ones as needed.

Signup and view all the flashcards

What is software architecture?

The fundamental structure of a system, outlining components, their relationships, and design principles.

Signup and view all the flashcards

Client-server architecture

A software architecture where clients interact with servers to access shared data and services.

Signup and view all the flashcards

How does architecture impact system properties?

Non-functional aspects, such as performance, reliability, and security, are significantly influenced by a system's architecture.

Signup and view all the flashcards

Distribution architecture

A distribution architecture where components are allocated to specific servers in a software system.

Signup and view all the flashcards

What is architectural design?

The process of understanding key product issues and creating descriptions of components and their relationships.

Signup and view all the flashcards

Client interface

The interface that allows clients to interact with a server.

Signup and view all the flashcards

What is system decomposition?

Analyzing architectural components and breaking them down into smaller, more detailed components.

Signup and view all the flashcards

Load balancer

A component in client-server architectures responsible for managing the connections and distributing requests across multiple servers.

Signup and view all the flashcards

Database server

A server that manages and stores data for multiple clients.

Signup and view all the flashcards

What is distribution architecture?

The organization of servers and component allocation in a system.

Signup and view all the flashcards

How to minimize architectural complexity?

Separating concerns, avoiding redundancy, and focusing on component interfaces to minimize complexity.

Signup and view all the flashcards

User interface

The part of the system that handles user input and displays outputs.

Signup and view all the flashcards

Functionality

Refers to the features and operations that a system can perform.

Signup and view all the flashcards

What are common layers in web systems?

UI layers, application logic layers, and database layers, often used in web applications.

Signup and view all the flashcards

Why are technology choices important in architectural design?

Making decisions on technologies like databases and cloud services is crucial during architectural design.

Signup and view all the flashcards

Servers

The set of computers used to run software components in a distribution architecture.

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.

Quiz Team

Related Documents

More Like This

Enterprise Service Integration Quiz
12 questions
Tema 21. Servicios web I
15 questions
Integration	WIS
21 questions

Integration WIS

SupportedAstatine4145 avatar
SupportedAstatine4145
Use Quizgecko on...
Browser
Browser