ch6

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 is the maximum allowed message delivery time for the system to ensure reliability?

  • 5 minutes
  • 10 seconds
  • 30 seconds (correct)
  • 1 minute

What peak load must the application handle during the enrollment period?

  • 100 concurrent users
  • 500 concurrent users (correct)
  • 1000 concurrent users
  • 250 concurrent users

Which programming language must be used for developing the system?

  • Java (correct)
  • C#
  • Python
  • JavaScript

What is the main concern regarding excessive component dependencies?

<p>It leads to difficulties in modifying the system. (B)</p> Signup and view all the answers

What is the primary business constraint regarding the technology used in the application?

<p>It must run as a plug-in for MS BizTalk. (C)</p> Signup and view all the answers

What is the definition of software architecture according to ANSI/IEEE Std 1471-2000?

<p>The fundamental organization of a system, including its components and their relationships. (D)</p> Signup and view all the answers

Which of the following is NOT an aspect defined by architecture?

<p>User interaction designs (C)</p> Signup and view all the answers

What is one advantage of having an explicit architecture in software development?

<p>It aids in communication among stakeholders. (C)</p> Signup and view all the answers

Which quality attribute requirement specifies the need for the system to operate continuously?

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

What is a potential focus of discussion based on explicit architecture?

<p>Analysis of non-functional requirements (D)</p> Signup and view all the answers

What is the primary benefit of lower coupling in component design?

<p>Allows for easier replacement of components without affecting others. (D)</p> Signup and view all the answers

Which of the following statements accurately describes higher cohesion in component design?

<p>Components are created to handle a single responsibility effectively. (A)</p> Signup and view all the answers

In an architectural context, what does communication primarily involve?

<p>Function calls and remote procedure calls. (B)</p> Signup and view all the answers

What is one major characteristic of architecture in software design?

<p>It abstracts and hides the complexity of the overall design. (A)</p> Signup and view all the answers

What does a 'marketecture' represent in software architecture?

<p>An informal depiction of a system’s structure and interactions. (C)</p> Signup and view all the answers

Flashcards

Software Architecture

The fundamental organization of a system, including its components, relationships, and design principles.

Architectural Design

The early stage of design that focuses on the system's overall structure.

Architecture Defines Structure

Key aspects of a system's design, like its structure, components, communication methods, and responsibilities.

Advantages of Explicit Architecture

Benefits of explicitly defining software architecture, including stakeholder communication, system analysis, and large-scale reuse.

Signup and view all the flashcards

Quality Attribute Requirements

Quality attributes like performance, security, and usability, and their corresponding architectural requirements.

Signup and view all the flashcards

Modifiability

A measure of how well a system can handle changing requirements without undergoing major rework. This means the architecture should allow for easy updates, modifications, and extensions.

Signup and view all the flashcards

Scalability

The ability of a system to handle increasing workloads or user traffic. It's about scaling up and out efficiently.

Signup and view all the flashcards

Reliability

This refers to how reliable a system is, meaning its ability to operate without failures and deliver expected outcomes. It often involves aspects like message delivery and time-bound guarantees.

Signup and view all the flashcards

Reduce direct dependencies on third-party components

An architectural principle advocating for reducing direct dependencies on third-party components. This involves using abstraction layers to create a buffer between your system and external components. This makes your system less dependent on external changes.

Signup and view all the flashcards

Excessive component dependencies

An architectural issue that arises when components are overly dependent on each other. This can create a fragile system where changes in one part can cascade and impact others.

Signup and view all the flashcards

Coupling

The degree to which components depend on each other. Lower coupling means components are less reliant on each other, making the system more flexible and easier to maintain.

Signup and view all the flashcards

Cohesion

The degree to which a component focuses on a single task or responsibility. Higher cohesion means a component is well-defined and does its job effectively.

Signup and view all the flashcards

Architecture Abstraction

A simplified representation of a system's structure and how its components interact. It hides the complexity of implementation details.

Signup and view all the flashcards

Component Communication

Methods used by components to communicate with each other. Examples include function calls, remote procedure calls, asynchronous messages, and synchronous messages.

Signup and view all the flashcards

Study Notes

Software Architecture Definitions

  • Architecture is the fundamental organization of a system, including its components, their relationships, and governing principles for design and evolution (ANSI/IEEE Std 1471-2000).
  • All software architecture is software design, but not all design is software architecture.
  • Architecture is the first stage of the design process.

Architectural Design Decisions

  • Is a generic application architecture suitable?
  • How will the system be distributed?
  • What architectural styles are appropriate?
  • How will the system be structured?
  • What method will decompose the system into modules?
  • What control strategy should be implemented?
  • How should the architectural design be evaluated?
  • How should the architecture be documented?

Architecture Defines Structure

  • Decomposes the system into components, modules, or subsystems.
  • Defines component interfaces, detailing what a component can do.
  • Defines component communications and dependencies.
  • Outlines how components communicate.
  • Specifies the responsibilities of each component.
  • Clearly describes what each component will do when called upon.

Advantages of Explicit Architecture

  • Facilitates stakeholder communication, using architecture as a discussion point.
  • Enables system analysis to evaluate its non-functional requirements.
  • Allows for large-scale reuse across various systems.
  • Supports development of product-line architectures.

Quality Attribute Requirements

  • Performance: Sub-four-second response times for 90% of requests.
  • Security: All communications must be authenticated and encrypted using certificates.
  • Resource Management: Server component runs on a low-end office server with 512MB memory.
  • Usability: User interface runs in an internet browser to support remote users.
  • Availability: 24/7/365 system operation with 0.99 overall availability.
  • Reliability: No message loss with message delivery confirmations within 30 seconds.
  • Scalability: Application handles a peak load of 500 concurrent users during the enrollment period.
  • Modifiability: Architecture supports phased migration from current 4GL to .NET.

Constraints

  • Business: Technology must integrate as a plug-in for MS BizTalk.
  • Development: System must be written in Java.
  • Schedule: First version delivery within six months.
  • Business: Collaboration with MegaHugeTechCorp and leveraging their technology.

Structure and Dependencies

  • Excessive component dependencies are undesirable.
  • Identifying components prone to change is crucial.
  • Minimizing direct dependencies on these components enhances the system's modifiability.

Coupling & Cohesion

  • Lower Coupling: Minimize dependencies between components.
  • Higher Cohesion: Design single-task components (responsibility).

Architecture Specifies Component Communication

  • Communication involves function calls, RPCs (remote procedure calls), message passing (asynchronous), and synchronization to wait for reply.

Architecture is an Abstraction

  • Provides an abstract view of design, hiding complexity.
  • May not directly map architecture elements to software elements.
  • Examples: Marketecture (informal depictions of structure, interactions, and design philosophies)
  • Marketecture is easy to understand, promotes discussion, useful during design, review and sales process.

Marketecture Example

  • A diagram illustrating ICDE repository, ICDE recording software, ICDE monitoring, internet, local information repositories, analysts, and third-party tools.

Decomposition

  • Hierarchical decomposition is an effective abstraction approach.
  • Components are allocated to development teams for partitioning.
  • Architecture aims to lower coupling between clients and servers.
  • Architecture seeks to attain high cohesion.

Philippe Krutchen - 4+1 View Model

  • Logical View: Displays architecturally significant elements and their relationships.
  • Process View: Highlights communication elements in the architecture.
  • Physical View: How major processes/components are mapped to hardware.
  • Development View: Shows internal software component organization.
  • Architecture Use Cases: Specifies architecture requirements related to multiple views.

Architectural Patterns

  • Reusable solutions to common problems in software architecture.
  • Design Patterns: Apply to classes and relationships in code.
  • Architectural Patterns: Focus on subsystems, components, and external systems.

N-Tier Client-Server Pattern

  • Separates concerns (presentation, business logic, data).
  • Uses synchronous communications (request-reply).
  • Implements flexible deployment across tiers.

The Client-server pattern

  • System organized into services delivered from separate servers.

  • Clients access services for operations or data.

  • Example: Film/video library with shared database.

  • Advantages: Distributed services, variable load, broader accessibility

  • Disadvantages: Single point of failure, potential network dependence, possible management issues if servers are owned by different entities.

Publish-Subscribe Pattern

  • Many-to-many messaging, sending to all registered subscribers.
  • Loose coupling, no direct binding between publishers and subscribers.

Pipe and Filter

  • A simple architectural style connecting filters that process data streams.

  • Each filter is connected to the next filter via a pipe for processing.

  • Advantages: Easy understanding, supports transformation reuse.

  • Disadvantages: Defining agreed-upon data formats for filter communication is essential.

The pipe and filter pattern

  • Data processing is organized with distinct components (filters) transforming data.
  • Data flows sequentially through these components.
  • Advantages: Data transformation reuse is facilitated, and the workflow structure aligns with business processes.
  • Disadvantages: There may be complexities when handling data formats, and communication overhead between filters can increase for non-compatible data.

Software Architecture Modeling; UML Component Diagram

  • The diagram illustrates relationships between components, using UML component diagrams.

UML Communication Diagram

  • This diagram illustrates interaction between components and objects in a system, using UML communication diagrams to show interactions.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Software Architecture PDF

More Like This

Use Quizgecko on...
Browser
Browser