Software Architecture: Design and Qualities

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 does software architecture primarily deal with?

  • The specific lines of code in a software system.
  • The database schema design.
  • The graphical user interface design.
  • The bigger structures of a software system and how multiple software processes cooperate. (correct)

Software architecture serves as a detailed implementation plan for a system.

False (B)

Which of the following is an example of a system quality that software architecture is a primary carrier of?

  • Specific algorithm efficiency
  • Performance, modifiability, and security (correct)
  • Naming conventions of variables
  • Choice of programming language

Name three system qualities that software architecture influences.

<p>Performance, modifiability, security</p> Signup and view all the answers

Which of the following is NOT considered a factor of software architecture?

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

A ______ or specification is a factor of software architecture used for the construction of an object or system.

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

Quality attributes in software architecture include aspects like correctness, reliability, and readability.

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

Which of the following best describes the role of the IT environment in software architecture?

<p>An integrated collection of technology components that serve the needs of its users. (B)</p> Signup and view all the answers

What does 'human dynamics' refer to within the factors of software architecture?

<p>The team-oriented activity involving engineers, developers, analysts, and other experts. (A)</p> Signup and view all the answers

Business strategy is unrelated to the factors influencing software architecture.

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

What is the purpose of a design plan in software design?

<p>To describe the elements of a system, how they fit, and work together to fulfill system requirements. (B)</p> Signup and view all the answers

Name two objectives achieved by having a design plan in software development.

<p>To negotiate system requirements and to set expectations with customers.</p> Signup and view all the answers

A software design plan acts solely as a code blueprint and is only useful during the coding phase.

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

According to the diagram, what is a step that directly influences 'Software Architecture Design'?

<p>Requirement desired Quality (B)</p> Signup and view all the answers

One goal of architecture is to expose the structure of the system, but hide its ______ details.

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

Which of the following is a goal of software architecture?

<p>To realize all the use-cases and scenarios. (C)</p> Signup and view all the answers

Name two goals of software architecture related to improving organizational or system aspects.

<p>Reduce the goal of ownership and improve the organization's market position, improve external confidence.</p> Signup and view all the answers

One limitation of software architecture is the abundance of standardized tools to represent architecture.

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

Which statement reflects a limitation of software architecture?

<p>There is a lack of analysis methods to predict whether architecture will meet requirements. (A)</p> Signup and view all the answers

Effective communication among stakeholders is a common limitation in software architecture.

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

If a person has design expertise, methodological expertise, and technology expertise, what role may they be qualified to perform?

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

Name two areas of expertise a software architect should possess.

<p>Design, domain, technology, or methodological</p> Signup and view all the answers

A software architect should be an expert in the system being developed and plan for software ______.

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

Which of the following best describes 'Conceptual Integrity' as a quality attribute?

<p>The consistency and coherence of the overall design. (B)</p> Signup and view all the answers

'Maintainability' refers to the consistency of the software design

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

Define what is meant by 'reusability' in terms of common quality attributes of software.

<p>Capability for components to be suitable for use in other applications.</p> Signup and view all the answers

What does 'Interoperability' primarily measure?

<p>The ability of system to operate successfully by communicating with other external systems. (A)</p> Signup and view all the answers

[Blank] defines how easy it is for system administrators to manage the applications.

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

Define what 'reliability' means in the context of system quality attributes.

<p>Ability of a system to remain operational over time.</p> Signup and view all the answers

'Scalability' refers to the availability to prevent accidents.

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

Why is 'Security' significant as a quality attribute?

<p>Capability of a system to prevent malicious or accidental actions outside of the designed usages. (B)</p> Signup and view all the answers

What does 'Availability' mean as a run-time quality attribute?

<p>The system uptime. (A)</p> Signup and view all the answers

Explain the meaning of 'testability.'

<p>Measure of how easy it is to create test criteria for the system and its components.</p> Signup and view all the answers

'Usability' describes if components of the system can be used in other applications.

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

What does 'correctness' refer to as an architectural quality?

<p>It is accountability for satisfying all the requirements of the system. (A)</p> Signup and view all the answers

Describe the meaning of 'portability' as a non-runtime quality.

<p>Ability of the system to run under different computing environment.</p> Signup and view all the answers

Modifiability determines if developed components can work together correctly.

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

With respect to market competition, use of a system is known as ______.

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

Which definition best fits ‘architectural style’?

<p>A set of principles which shapes an application (B)</p> Signup and view all the answers

Architectural style does not allow the reuse of design.

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

Why is the architectural style important with solving problems?

<p>Reuse of designs gives solutions to frequently occuring problems</p> Signup and view all the answers

Flashcards

Software Architecture

Refers to high-level structures of a software system & how processes cooperate.

Design as a Factor

A factor in software architecture referring to a plan or specification.

Quality Attributes

A factor, it includes correctness, reliability, learnability, robustness and maintainability.

IT Environment

The environment is an integrated collection of technology components that serves its users.

Signup and view all the flashcards

Human Dynamics

A factor which is an activity involving engineers, business analysts and project managers.

Signup and view all the flashcards

Business Strategy

A factor comprising actions and decisions to reach business goals and be competitive.

Signup and view all the flashcards

Software Design Plan

Describes elements, their fit, and how they fulfill the system's requirements.

Signup and view all the flashcards

Goals of Architecture

Expose system structure, realize use-cases, address stakeholder needs, and handle functional/quality needs.

Signup and view all the flashcards

Roles of Software Architect

Expertise in software design, domain knowledge, tech and methodologies.

Signup and view all the flashcards

Conceptual Integrity

Consistency and coherence of the overall software design.

Signup and view all the flashcards

Maintainability

System's ability to undergo changes with ease.

Signup and view all the flashcards

Reusability

Components suitable for use in other applications.

Signup and view all the flashcards

Interoperability

Ability of systems to exchange information, written and run by external parties.

Signup and view all the flashcards

Manageability

How easy it is for system administrators to manage applications.

Signup and view all the flashcards

Reliability

Ability of system to remain operational.

Signup and view all the flashcards

Scalability

Ability to handle a load increase or be readily enlarged.

Signup and view all the flashcards

Security

System's capability to prevent malicious actions.

Signup and view all the flashcards

Performance

Responsiveness of a system to execute actions.

Signup and view all the flashcards

Availability

Proportion of time the system is functional and working.

Signup and view all the flashcards

Supportability

Provide information for resolving issues.

Signup and view all the flashcards

Testability

Ease of creating test criteria.

Signup and view all the flashcards

Usability

How well the app meets user needs.

Signup and view all the flashcards

Correctness

Satisfying all quality requirements.

Signup and view all the flashcards

Portability

Running under different computing environments.

Signup and view all the flashcards

Integrality

Separately developed components function together.

Signup and view all the flashcards

Modifiability

How easily software accommodates changes.

Signup and view all the flashcards

Marketability

System's respect to market competition.

Signup and view all the flashcards

Cost and Schedule

Cost relative to time and lifespan.

Signup and view all the flashcards

Architectural Style

Principles shaping an application, provides lexicon of components and connectors and rules.

Signup and view all the flashcards

Message Bus

A communication style which is a software system that uses communication channels

Signup and view all the flashcards

Service Oriented Architecture

Applications expose functionality as a service

Signup and view all the flashcards

Client/Server architecture

Splits a system for clients and servers.

Signup and view all the flashcards

N-tier architecture

Separates functionality into segments

Signup and view all the flashcards

Domain Driven design

A design focused on businesss

Signup and view all the flashcards

Component Based design

Breakdown application design into design components

Signup and view all the flashcards

Layered

Separate concerns out into a layer

Signup and view all the flashcards

Object oriented

Divisions of responsibilities into object

Signup and view all the flashcards

Business architecture.

This strategic style defines the strategy and governance

Signup and view all the flashcards

Application (software) Architecture

Serves as a the blueprint for the system

Signup and view all the flashcards

Information Technology (IT) Architecture

Hardware and software that makes up the system

Signup and view all the flashcards

Study Notes

Software Architecture

  • Refers to the broader structures of a software system
  • Concerns how multiple software processes work together to achieve tasks
  • Serves as a blueprint
  • Provides an abstraction for managing system complexity
  • Establishes communication and coordination among components
  • Functions as the main carrier of system qualities like performance, security, and modifiability
  • Achieved through a unified architectural vision

Factors of Software Architecture

  • Quality Attributes
  • Design
  • IT Environment
  • Human Dynamics
  • Business Strategy

Design

  • A plan or specification for constructing an object or system
  • Used for implementing an activity or process
  • The result of a plan or specification, such as a product, prototype or process.

Quality Attributes

  • Includes correctness, reliability, adequacy, learnability, robustness, maintainability, readability, extensibility, testability, efficiency, portability.

IT Environment

  • Integrated collection of technology components
  • Caters to the needs of its users and the owner of the resulting system

Human Dynamics

  • A team-oriented activity
  • Involves engineers, developers, business analysts, domain experts, data/infrastructure architects, project managers, etc.

Business Strategy

  • Refers to the actions and decisions a company undertakes to achieve its business goals
  • Aims to be competitive in its industry

Software Design

  • Provides a design plan
  • Describes the elements of a system, their fit, and interaction to fulfill the system's requirements
  • Objectives include negotiating system requirements and setting expectations with customers, marketing and management personnel
  • Serves as a blueprint during development
  • Guides implementation tasks, including detailed design, coding, integration, and testing

Goals of Architecture

  • Expose the structure of the system
  • Hide its implementation details
  • Realize use-cases and scenarios
  • Address the requirements of various stakeholders
  • Handle both functional and quality requirements
  • Improve the organization's market position
  • Improve the quality and functionality offered by the system
  • Improve external confidence in either the organization or system

Limitations of Software Architecture

  • Lack of standardized ways to represent architecture
  • Lack of analysis methods to predict whether it will accomplish requirements
  • Lack of awareness of its importance
  • Lack of understanding of the roles of software architects
  • Poor communication among stakeholders.
  • Lack of understanding of the design process
  • Lack of design experience and evaluation of design

Roles of Software Architect

  • Design Expertise: Expert with software design and methodologies.
  • Domain Expertise: Expert on the system.
  • Technology Expertise: Expert on available technologies.
  • Methodological Expertise: Expert on software development methodologies such as SDLC

Common Quality Attributes

  • Conceptual Integrity
    • Consistency and coherence of overall design, including components/modules
  • Maintainability
    • System's ability to undergo changes
  • Reusability
    • Capability for components/subsystems to be suitable for other applications
  • Interoperability
    • Ability of systems to exchange information with ones written and run by external parties
  • Manageability
    • Ease for system administrators to manage applications
  • Reliability
    • Ability to remain operational over time.
  • Scalability
    • Handle load increase without impacting system performance/size
  • Security
    • Prevent malicious and accidental actions
  • Performance
    • Responsiveness of executing actions within a given time
  • Availability
    • Proportion of time the system is functional and working
  • Supportability
    • Ability to provide helpful information for recognizing and fixing problems
  • Testability
    • Ease for creating test criteria for the system and its components
  • Usability
    • How well the application meets customer needs by being intuitive
  • Correctness
    • Accountability for satisfying system requirements
  • Portability
    • Functioning with different computing environments
  • Integrality
    • Ability to make separately developed components work correctly together.
  • Modifiability
    • Ease with which software accommodates changes
  • Marketability
    • The system's use with respect to market competition
  • Cost and Schedule
    • Costs with respect to time to market, lifespan, and utilization of existing systems

Architectural Style

  • Called architectural pattern
  • A set of principles for shaping an application
  • An abstract framework for a family of systems
  • Defines system in terms of structural organizations
  • Provides a lexicon of components and connectors with rules
  • Improves partitioning and allows design reuse by providing solutions to recurring issues
  • Describes how to configure a collection of reusable components and connectors

Common Architectural Design

  • Message Bus (Communication)
    • Software system that can use multiple communication channels.
  • Services-Oriented Architecture SOA (Communication)
    • Applications use contracts and messages.
  • Client/Server (Deployment)
    • The system is divided into two applications, client and server.
  • 3-tier or N-tier (Deployment)
    • Separates functionality into segments on physically separate computers.
  • Domain Driven Design (Domain)
    • Business objects are based on entities within the business domain.
  • Component Based (Structure)
    • The application design is divided reusable components that expose communication interfaces.
  • Layered (Structure)
    • Divide application into stacked groups of concerns
  • Object Oriented (Structure)
    • Divide into objects each containing relevant data and behavior

Types of Architecture

  • Business Architecture
    • Defines business strategy, governance, organization, and processes.
    • Focuses on the analysis and design of processes.
  • Application (Software) Architecture
    • Serves as a blueprint for individual app systems and interactions.
    • Defines relationships to business processes.
  • Information Architecture
    • Defines logical and physical data assets.
  • Information Technology (IT) Architecture
    • Defines hardware and software building blocks.

Architecture Design Process

  • Understand the Problem
  • The most crucial step because affects the quality of the rest
  • Identify Design Elements and their Relationship
  • Build a baseline for the context of the system.
  • Decompose to main components based on functions.
  • Can be modeled using design structure matrix (DSM) for dependencies.
  • Evaluate the Architecture Design
  • Each attribute is estimated.
  • Involves evaluating conformance to architectural quality attributes.
  • Transform the Architecture Design
  • Performed after evaluation.
  • Change until quality attributes are satisfied.
  • Choosing design solutions to improve quality while preserving domain.

Key Architecture Principles

  • Build to Change Instead of Building to Last
  • Reduce Risk and Model to Analyze
  • Use Models and Visualizations as Communication and Collaboration Tool
  • Use an Incremental and Iterative Approach

Key Design Principles

  • Separation of Concerns
  • Single Responsibility Principle
  • Principle of Least Knowledge
  • Minimize Large Design Upfront
  • Do not Repeat the Functionality
  • Prefer Composition over Inheritance while Reusing the Functionality
  • Identify Components and Group them in Logical Layers
  • Define the Communication Protocol between Layers
  • Define Data Format for a Layer
  • System Service Components should be Abstract
  • Design Exceptions and Exception Handling Mechanism
  • Naming Conventions

Studying That Suits You

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

Quiz Team

Related Documents

More Like This

Software Design and Development Quiz
10 questions
N-Tier Architecture Overview
0 questions

N-Tier Architecture Overview

CooperativeEducation7036 avatar
CooperativeEducation7036
Software Architecture Design
39 questions

Software Architecture Design

ReputableMusicalSaw1941 avatar
ReputableMusicalSaw1941
Use Quizgecko on...
Browser
Browser