Software Architecture & Design

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

In software development, what is the primary focus that differentiates Software Architecture from Software Design?

  • Software Architecture deals with how multiple software processes cooperate, while Software Design focuses on the internal design of a single software process. (correct)
  • Software Architecture documents the software, while Software Design implements it.
  • Software Architecture focuses on smaller structures, while Software Design deals with the bigger structures of the system.
  • Software Architecture deals with the internal logic of single modules, while Software Design coordinates multiple processes.

Which of the following best describes the role of Software Architecture within the Software Development Life Cycle (SDLC)?

  • It is defined and documented during the design phase. (correct)
  • It is implemented during the coding phase.
  • It is an element specific to the maintenance phase.
  • It is only relevant during the testing phase.

What key aspects are described by the architecture of a system?

  • The major components, their relationships (structures), and how they interact with each other. (correct)
  • The major components, their relationships and interactions, and the technology stack used.
  • Only the interaction between components and the user interface design.
  • Only the major components of the system.

Which of the following factors contribute to Software Architecture and Design, influencing decisions and trade-offs?

<p>Business strategy, quality attributes, human dynamics, and IT environment. (A)</p>
Signup and view all the answers

How are Software Architecture and Software Design typically segregated concerning functional and nonfunctional requirements?

<p>Architecture addresses nonfunctional requirements, while Design focuses on accomplishing functional requirements. (C)</p>
Signup and view all the answers

In the context of Software Architecture, what best describes its role as a 'blueprint' for a system?

<p>It is the structure of the system providing an abstraction to manage complexity and communication among components. (C)</p>
Signup and view all the answers

What is one of the primary objectives of defining a Software Architecture?

<p>To meet technical and operational requirements while optimizing quality attributes like performance and security. (C)</p>
Signup and view all the answers

Significant decisions surrounding software development organization are part of:

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

Select the statement that correctly describes the decisions encompassed by software architecture.

<p>Decisions involve selection of structural elements, specifying behavior, and aligning with business objectives. (C)</p>
Signup and view all the answers

What is the main purpose of software design, following the definition of software architecture?

<p>To provide a design plan that describes the elements of a system and how they fulfill requirements. (A)</p>
Signup and view all the answers

Which objective is primarily achieved by creating a Software Design plan?

<p>Negotiating system requirements and setting expectations with stakeholders. (D)</p>
Signup and view all the answers

The well-laid architecture of software is most closely associated with which risk?

<p>Reduces the business risks associated with building a technical solution. (D)</p>
Signup and view all the answers

A primary goal of Software Architecture includes:

<p>Exposing the structure of the system while hiding its implementation details. (C)</p>
Signup and view all the answers

What is a notable limitation of Software Architecture as a discipline?

<p>Lack of tools and standardized ways to represent architecture. (C)</p>
Signup and view all the answers

Why is understanding the role of the software architect important in software development?

<p>It ensures better communication among stakeholders and improves software development success. (D)</p>
Signup and view all the answers

Which of the following forms of expertise is essential for a Software Architect?

<p>Design expertise, including various methods and approaches. (D)</p>
Signup and view all the answers

What crucial role does a software architect play in relation to the development team?

<p>Leading the development team and coordinating efforts to maintain the design's integrity. (C)</p>
Signup and view all the answers

What is a Software Architect expected to do with design proposals?

<p>Review design proposals and evaluate trade-offs. (C)</p>
Signup and view all the answers

What is the main objective of defining quality attributes in software architecture?

<p>To differentiate a good system from a bad one based on system properties separate from functionality. (D)</p>
Signup and view all the answers

Which of the following is an example of a static quality attribute?

<p>Modularity (D)</p>
Signup and view all the answers

Flashcards

Software Architecture

Refers to the bigger structures of a software system, focusing on the cooperation of multiple software processes.

Software Design

Deals with the internal design of a single software process, focusing on smaller structures.

Design Phase

SDLC phase where the software architecture is defined and documented.

System Architecture

Describes a system's major components, their relationships, and how they interact.

Signup and view all the flashcards

Software Architecture

A high-level blueprint for a system, serving as an abstraction to manage complexity and establish communication.

Signup and view all the flashcards

Software Design

Provides a plan that describes the elements of a system, how they fit, and work together to fulfill requirements.

Signup and view all the flashcards

Software Architecture Goal

The goal is to identify requirements affecting the application's structure, bridging business and technical needs.

Signup and view all the flashcards

Quality Attributes

Defines the desired qualities or characteristics of a software system, such as performance and security.

Signup and view all the flashcards

Static Quality Attributes

Reflect the system's structure, affecting development and maintenance costs, but invisible to the end-user.

Signup and view all the flashcards

Dynamic Quality Attributes

Reflect the system's behavior during execution, visible to the end-user, impacting runtime aspects.

Signup and view all the flashcards

Quality Scenarios

Specify how to prevent a fault from becoming a failure, based on attribute specifications.

Signup and view all the flashcards

Architectural Style

A set of principles shaping an application, defining a framework in terms of structural organization.

Signup and view all the flashcards

Service Oriented Architecture (SOA)

SOA is a design pattern to build systems that deliver services via protocols.

Signup and view all the flashcards

Service

A well-defined, self-contained function representing a unit of functionality in SOA.

Signup and view all the flashcards

Service Provider

The maintainer and provider of a service, which can publish it in a registry.

Signup and view all the flashcards

Service Consumer

Locates service metadata in the registry and develops client components to use the service.

Signup and view all the flashcards

Transport (SOA)

It transports requests and responses between the service consumer and provider.

Signup and view all the flashcards

Service Communication Protocol

It allows the service provider and the consumer to communicate with each other.

Signup and view all the flashcards

Architect Deliverable

It provides a clear, complete, and consistent set of functional goals for a system.

Signup and view all the flashcards

Key Design Principles

Design principles for minimizing cost, simplifying maintenance, and enhancing extendibility and usability.

Signup and view all the flashcards

Study Notes

  • Software Architecture involves larger system structures, while Software Design focuses on the smaller, internal design of single software processes
  • The design phase of the Software Development Life Cycle (SDLC) defines and documents software architecture
  • A system's architecture describes its major components, relationships, and interactions, encompassing business strategy, quality attributes, human dynamics, design, and IT environment

Software Architecture

  • It serves as a blueprint for a system, providing the structure
  • It establishes communication and coordination among components while managing system complexity
  • It defines a structured solution that meets technical and operational requirements, optimizing quality attributes like performance and security
  • It involves significant decisions related to software development that can impact the organization

Key Decisions in Software Architecture

  • Selection of structural elements and their interfaces
  • Behavior in collaborations among elements
  • Composition of structural and behavioral elements into subsystems
  • Alignment of architectural decisions with business objectives.
  • Architectural styles guide the organization

Software Design

  • Software design provides a plan that describes the elements of a system and how they function together
  • Objectives include:
  • Negotiating system requirements and setting expectations
  • Acting as a blueprint during development
  • Guiding implementation tasks
  • It follows domain analysis, requirements analysis, and risk analysis but comes before detailed design, coding, integration, and testing

Goals of Software Architecture

  • To identify requirements affecting the application structure
  • Reduces business risks, builds technical solutions, and bridges business with technical requirements
  • Goals include:
  • Exposing system structure while hiding implementation details
  • Realizing use-cases and scenarios
  • Addressing stakeholder requirements
  • Handling functional and quality requirements
  • Reducing ownership and improving market position

Limitations of Software Architecture

  • It remains an emerging discipline
  • Limitations:
  • Lack of standardized representation tools
  • Inability to predict implementation outcomes.
  • Lack of awareness and understanding among stakeholders
  • Difficulty in predicting project success based on architecture

Role of Software Architect

  • Provides solutions for technical teams
  • Requires expertise in:
  • Design: Including object-oriented and event-driven approaches
  • Domain: System expertise for software evolution.
  • Technology: Knowledge of available technologies
  • Methodological: Expertise in software development methodologies

Software Architect's Hidden Role

  • Facilitates technical work, reinforces team trust.
  • Shares knowledge and protects team members from distractions

Deliverables of the Architect

  • Clear, complete and achievable goals
  • Functional system description with decomposition layers
  • System concept and design with decomposition layers
  • Notion of timing, operator attributes, and plans for implementation/operation
  • Document or process ensuring functional decomposition is followed and interfaces are controlled

Quality Attributes

  • Attributes are properties separate from system functionality
  • They affect runtime behavior, system design, and user experience
  • Attributes are classified as static or dynamic

Static Quality Attributes

  • Reflect system structure and organization and are related to architecture, design, and source code
  • Affect development and maintenance costs but are invisible to end-users, including modularity, testability, and maintainability

Dynamic Quality Attributes

  • Reflect system behavior during execution, related to system architecture, design, configuration, and platform
  • Visible to end-users at runtime, like throughput, robustness, and scalability

Quality Scenarios

  • Scenarios specify how to prevent faults from becoming failures, based on attribute specifications
  • Components:
  • Source: Internal or external entity that generates stimulus
  • Stimulus: Condition that requires consideration upon arrival
  • Environment: Context in which the stimulus occurs
  • Artifact: processors, channels, storage etc
  • Response: Activity after stimulus
  • Measure: responses should be measurable, so requirements can be tested

Common Quality Attributes

  • Design Qualities:
  • Conceptual Integrity: Consistency and coherence of design.
  • Maintainability: Ease of making changes
  • Reusability: Ability to use components in other applications
  • Run-time Qualities:
  • Interoperability: Ability of different systems to operate successfully together
  • Manageability: Ease of system administration
  • Reliability: Ability to remain operational over time
  • Scalability: Ability to handle increased load
  • Security: Preventing malicious actions
  • Performance: Responsiveness of the system
  • Availability: Proportion of time the system is functional and working
  • System Qualities:
  • Supportability: Ability to provide helpful information for issue resolution
  • Testability: Ease of creating test criteria
  • User Qualities:
  • Usability: Meeting user requirements intuitively, to satisfy the consumer
  • Architecture Quality:
  • Correctness: Accountability for meeting requirements
  • Portability: Ability to run in different computing environments
  • Non-runtime quality:
  • Integrality: ability to components to work together correctly
  • Modifiability: accommodation to changes
  • Business qualities:
  • Cost & schedule; the cost must respect market competition
  • Marketability; the use of the system for the best in market

Architectural Style

  • Architectural style, also called architectural pattern, is a set of principles that shape an application
  • It defines an abstract framework for a family of systems in terms of structural organization
  • It provides a lexicon of components/connectors, improves partitioning, and describes component configuration

Architectural Styles

  • Each style describes a system category with
  • Component types
  • Connectors
  • Semantic constraints
  • Semantic models
  • Topological layouts
  • Common Architectural Styles:
  • Message Bus
  • Service-Oriented Architecture (SOA)
  • Pipes and Filters
  • Client/server.
  • 3-tier or N-tier
  • Domain Driven Design
  • Separated Presentation
  • Component Based
  • Layered
  • Object Oriented

Service Oriented Architecture (SOA)

  • It is designed to build distributed systems
  • It delivers services to other applications through a protocol
  • It allows for reusability via interfaces & is not restricted by language or platform
  • Architectures makes use of services available in the network, use common standards, and enable service integrations.
  • It combines many components from existing services and provides design principles that structure system development
  • SOA also integrates into decentralized systems

What is a Service?

  • A unit of functionality that is self-contained and well-defined
  • It exchanges information and uses a loosely coupled, message-based communication model

Service Connections

  • A service consumer sends a request; provider sends a response
  • Service connections are understandable to both

Service-Oriented Terminologies

  • Services: Logical entities defined by interfaces.
  • Service provider: Implements service specification
  • Service consumer: Requests service from a provider
  • Service locator: Registry that examines service provider interfaces
  • Service broker: Passes service requests to additional service providers

Major Roles within SOA

  • Service Provider: Maintains the service and makes it available.
  • Service Consumer: Locates service metadata in the registry

Components of Service-Oriented Architecture

  • The service-oriented architecture stack includes:
    • Functional aspects (transport, protocol, description, service, business process, registry),
    • Quality of service aspects(policy, security, transaction, management)

Quality of Service Aspects

  • Policy – protocols used to provide services to consumers
  • Security – the protocols used to identify & authorise
  • Transaction – provides consistent results
  • Management – set of attributes used to manage services

Characteristics of SOA

  • Services are loosely coupled and are self-contained
  • Supports interoperability and provides encapsulation, discovery, composition and reusability
  • Facilitates Quality of Service (QoS) through Service Level Agreements (SLA)
  • Has better scalability and availability due to location transparency
  • It provides easier maintenance with reduced cost of development

Advantages of SOA

  • Easy integration due to service specifications
  • Managed complexity via isolated service specifications.
  • Has platform independence and communicates through a shared language
  • Loose coupling allows implementation without impacting services.
  • Provides parallel development and easy availability, reliability and service reusability
  • Offers easy maintenance because as each service is independent

Disadvantages of SOA

  • Results in high overhead, when validating input it impacts performance
  • Requires high investment & complex management because complex interactions occur

Practical Applications of SOA

  • It is used in many everyday areas
  • Used by air forces & the military for increasing situational awareness
  • It aids in the development of healthcare & mobile applications like GPS functions
  • It also functions in the maintenance of museums

Types of Architecture

  • Business architecture- Business strategy
  • Application (software) architecture- serves as a blueprint
  • Information architecture- Data assets and management resources
  • Information technology (IT) architecture- the hardware & software used to make up each system

Architecture Design Process

  • Key inputs include the analysis of tasks and the hardware architecture
  • Result includes an architectural description

Steps

  • Understand the Problem- to create an effective solution
  • Identify Design Elements & their Relationships- build a baseline to determine the context of each system
  • Evaluate the Architecture Design- to determine if there is conformance to standards
  • Transform the Architecture Design- to completely satisfy the quality attribute requirements

Key Architecture Principles

  • Build to Change instead of Building to Last- build in flexibility for the future
  • Reduce Risk & Analyze- UML is good to use, but do not let it suppress design
  • communication & visualization
  • Use Models & give an overview

Key Design Principles

  • Separation of Concerns- divide each system into components
  • Single Responsibility Principle- each module should have a job.
  • Principle of Least Knowledge- the components & objects should not know each other, keeping them maintainable.
  • Minimize Large Design Upfront- be careful when designing if there are unclear points.
  • Do not Repeat the Functionality- code should be implemented one time
  • Prefer Composition over Inheritance- this will not block free use of child classes, reducing hierarchies.
  • Identify Components & group them in logical layers- this will help the system be easier to understand for the end user
  • Define protocol between layers
  • Define data format for each later
  • should be abstract
  • Handle exceptions/errors properly

Architecture Models

  • UML object oriental modelling
  • Architecture View Model; 4+1 for stakeholders and is an architecture verification method for documenting design, to cover all architecture aspects
  • ADL defines architecture

UML

  • It is a pictorial language to make blueprints
  • Its functions are visualisation, specification, costruction and documentation
  • Structural Diagrams
  • Class
  • Object
  • Component
  • Composite Structure
  • Package
  • Deployment
  • Behavioural Diagrams
  • Use Case
  • Activity
  • State Machine
  • Sequence
  • Interaction Overview
  • Communication
  • Time Sequenced

Architecture View Model

  • A system with multiple views:
  • Logical-object view
  • Process-concurrency views
  • Physical-mapping onto hardware
  • Development-static structure and can be extended by adding one more view called scenario view or use case

Why is it called 4+1 & not 5

  • Because the use case view has a special significance as it details the high level requirement of a system while other views details

Architecture Description Languages (ADLS)

  • ADLs have syntax for a Language, they need to communicate as well as:
  • Implementation
  • Have ablity to represent styles
  • Support analytical capabilities

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
Use Quizgecko on...
Browser
Browser