Software Architecture Flashcards

1
Q

What is Software Architecture?

A

Fundamental organization of a system embodied by its components, their relationships to each other & the environment, & the principles guiding its design & evolution

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

How do Bass, Clements, and Kazman define Software Architecture?

A

The set of structures needed to reason about the system, which comprise software elements, relations among them & properties of both

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

True or False: Every system has an architecture, but an architecture is not a system

A

True, an architecture & a system are not the same thing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

True or False: An architecture & an architecture description are not the same thing

A

True, an architecture exists whether it’s described (recorded) or not

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

True or False: Architecture Standards, architecture descriptions & development processes are separate concerns

A

True, What an architecture is is independent of how or whether it’s described & how it’s developed or implemented

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Why is software architecture important?

A
  1. Projects are requirements driven and architecture centric
  2. Software Architecture is a blueprint
  3. Software Architecture defines work assignments
  4. Software Architecture is the “primary carrier of system qualities”
  5. Helps identify & mitigate risks
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is an Architectural View?

A

A collection of models that represent one aspect of the entire system.

Expresses the architecture from the perspective of one or more stakeholders to address specific concerns

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is an Architectural Viewpoint?

A

A set of conventions for constructing, interpreting, using & analyzing a type of architecture view.

Generalized frameworks that establish languages, notations, methodologies & technique used to create an architecture view

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is an Architecture Description (AD)?

A

Expresses one possible architecture for a given system & typically consists of a combination of models and documents

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is an Architecture Model?

A

Represents a concrete model used to represent a particular stakeholder perspective in an architecture view

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is an Architecture Decision?

A

The result of architectural design activities that results in the definition of refinement of an architectural description element

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is an Architecture Rationale?

A

records the explanation, justification or reasoning about architecture decisions that have resulted in architecture solutions & any discarded alternatives

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is an Architecture Framework?

A

Establishes a common practice for creating, interpreting, analyzing and using architecture descriptions within a particular domain
(e.g. Krutchen 4+1 View Model)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is maintained as part of the ISO/IEC/IEEE 42010:2011 Standard?

A

A comprehensive survey of Architecture Frameworks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the 5 Viewpoints?

A
Requirements
Design
Interaction
Deployment
Validation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

List the characteristics of a Design Viewpoint

A
  • Defines the logical representation of a system
  • Logical structures of the software system
  • Described in Design Models
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

List the characteristics of a Physical Viewpoint

A
  • Defines the physical structures of the system
  • Physical elements that “manifest”, bring to life, logical elements
  • Described in deployment models
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What is the definition of a Module?

A

A unit of the system that is assigned specific computational responsibilities (concerns) & are the basis of work assignments

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What is the definition of a Component?

A

A modular, autonomous unit with well-defined interfaces that is replaceable within its environment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What is the definition of a Subsystem?

A

A unit of hierarchical decomposition for large systems that is a type of component commonly instantiated indirectly

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

What is the definition of an Artifact?

A

A concrete element in the physical world that is used or produced by a software development process or the system itself

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What are the 3 types of Architectural Structures?

A

Static Structures
Dynamic Structures
Allocation Structures

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What are Static/Module Architectural Structures?

A

Define how the system is to be structured into implementation units that have to be constructed

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What are the benefits of a Static/Module Architectural Structure?

A
  • Each module has to represent a well-defined, non-overlapping concern
  • Have clear and specific functional responsibilities
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

What are some examples of Static/Module Architectural Structures?

A
Layers
subsystems
components
Classes
Tables
Data Entities
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

What is a Decomposition Structure?

A

A structure that identifies the hierarchical composition of modules related to each other with contains/is-a-submodule of relationships

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

What are the benefits of a Decomposition Structure?

A
  • Each layer is decomposed into subsystems
  • Each Subsystem is decomposed into publically accessible elements (interfaces) & private, encapsulated elements (classes)
  • Informs resource allocation, project structuring, project planning, and configuration control
  • Enforces the encapsulation/information hiding principle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

What is a Layered Architecture?

A

An architecture where each part of the software system is decomposed into layers, subsystems, classes and interfaces

This is also a type of Decomposition Structure

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

What is a Dependency Structure?

A

Defines how modules are dependent on each other using dependency (USES) relationships

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

What are the benefits of a Dependency Structure?

A
  • Allow for functionality to be provided by supplier module to consumer modules
  • Change travels through dependencies in reverse
  • Controlling dependencies allows the architect to minimize the impact of changes to the system
  • enforces the separation of concerns principle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

What is a Generalization Structure?

A

Defines how modules are related through Generalization (Inheritance) relationships

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

What are the benefits of a Generalization Structure?

A
  • Capture the commonalities between modules
  • One of the mechanisms used to eliminate duplication
  • Allow the incremental addition of functionality in a controlled fashion that minimizes impact
  • Enables abstraction & polymorphism
  • Enforces the reuse principle through inheritance & polymorphism
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

What is a Data Model Structure?

A

Describes the static information structure in terms of data entities and their relationship:

  • One-to-One
  • One-to-Many
  • Many-to-Many

Essential for Information Systems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

What are the benefits of a Data Model Structure?

A
  • In certain architecture patterns, this structure drives the design of the system
  • Captures the database design through Entity Relationship Diagrams (ERDs)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

What are Dynamic Structures?

A

Define how the runtime system elements react with each other to deliver the functionality of the system

36
Q

What is the benefit of a Dynamic Structure?

A
  • Allow the architect to analyze & define the structures the system has at runtime (dynamic structure)
37
Q

What requirements does a Dynamic Structure affect?

A

Performance
Availability
Security
Other Non-Functional Requirements

38
Q

What are two examples of common Dynamic Structures?

A

Service Structures

Concurrency Structures

39
Q

What are the characteristics of a Service Structure?

A
  • Essential in service-oriented architectures
  • Define how services can connect with each other an how they can communicate
  • Define which services can run concurrently & independently from each other & which do not
40
Q

What are the characteristics of a Concurrency Structure?

A
  • Identifies processes & threads used in the system & how static elements are allocated to them
  • Address resource contention & define policies for managing shared resources
  • Critical to performance, availability & scalability
41
Q

What are Allocation Structures?

A

Define how elements of static & dynamic structures map/are allocated to elements that are not software:

  • Hardware
  • Personnel
  • Storage
42
Q

Allocation Structures are what?

A

The glue of the development process

43
Q

What are the benefits of Allocation Structures?

A
  • Deployment structure allocates software elements to hardware elements & defines how software is installed & operated
  • Work-breakdown structures represent the foundation of project management
  • Implementation structures enable suitable configuration, version control, integration & testing
44
Q

Why is Incremental Development of Architecture usually unsuccessful?

A

Refactoring the system architecture is expense

45
Q

Who’s responsible for the Software Architecture?

A

A single architect OR a small team with a chief architect leader

46
Q

What should the Software Architecture be based of?

A

A prioritized list of well-specified quality attribute requirements

47
Q

What does the Architecture Description address?

A

All the sufficient “views” corresponding to stakeholder concerns

48
Q

What should the Software Architecture should use in order to achieve quality attributes and deliver non-functional requirements

A

Well-known architectural patterns and tactics

49
Q

What should the Software Architecture be independent of?

A

specific versions of 3rd party software

50
Q

True or False: Static & Dynamic components have a one-to-one correspondence

A

False, Static & Dynamic components do NOT have a one-to-one correspondence

51
Q

What should Software Architectures enable, even at runtime?

A

Flexible distribution strategies

52
Q

What must be minimized in Software Architecture and why?

A

The connections between architectural components so that the system does the same things in the same way

53
Q

What are the reasons why Software Architecture is important?

A
  1. Drives the quality attributes of the resulting system
  2. Allos the team to manage change
  3. Establishes the foundation for incremental development & delivery
  4. Architecture Descriptions enhance communication between system stakeholders
  5. Embodies most fundamental, hardest-to-change design decisions
  6. Defines the constraints that focus design alternatives & shape the construction & maintenance process
  7. Represents the foundation for training new members of the development team
  8. Key artifact that allows the team to analyze & determine cost & schedule
  9. Defines reusable structures that can be used for creating product lines
  10. Heavily related to the very structure of a development organization
54
Q

Engineered Software Systems are what?

A

Requirements Driven & Architecture Centric

55
Q

What are Design Patterns?

A
  • Describe the context in which a problem manifests
  • Identifies the problem arising in the context
  • Defines a proven solution to the problem from both a static (design time) and dynamic (run time) perspective
56
Q

What are Architectural Patterns?

A

Define the overall structuring principle followed by a software architecture

Describe proven reusable solutions for specifying the fundamental structures of an application

57
Q

What is a Layered Architecture Pattern?

A

System Organization into layers with related functionality associated to each layer

Known Use: Information & Support Systems

58
Q

What are the properties of a Layered Architecture Pattern?

A
  • Separates concern & manages the dependency structure through loosely coupled layers
  • Necessitates that layers be represented vertically (stacked) & are only allowed to depend on lower layers
59
Q

What are the benefits of a Layered Architecture Pattern?

A
  • Allows for the replacement of entire layers, especially exterior layers
  • Allowing multiple UI layers for different types of interfaces (e.g. Mobile, web, & desktop)
  • Keep the solution independent from a database provider to allow replacement for scalability reasons or cost
60
Q

What are the risks of a Layered Architecture Pattern?

A
  • Separation into layers is often difficulty especially to maintain a strict layer architecture
  • Performance can suffer when layers must mediate requests made by upper to lower layers
61
Q

What is a Client-Server Architecture?

A

Deployment pattern for distributed systems typically designed with a layered logical architecture

62
Q

What are some characteristics of a Client-Server Architecture?

A
  • the system is represented by a set of services, each service provided by a separate server
  • Clients are consumers of services & access the corresponding servers to use them
63
Q

What are the benefits of a Client-server Architecture pattern?

A
  • Distributes components across multiple networked machines (servers)
  • Increases availability to many clients
  • Scalability & robustness
64
Q

What are the risks of a Client-Server Architecture pattern?

A
  • Each service can be a single point of failure (Mitigated through cloud redundancy)
  • Susceptible to denial-of-service attacks (DDoS)
  • Performance is typically unpredictable
65
Q

What is a Repository Architecture Pattern?

A

Data is managed in a central repository accessible to all components

Known Uses:

  • Information Management Systems
  • Command & Control Systems
  • CAD
  • IDE’s
66
Q

What are some characteristics of a Repository Architecture Pattern?

A
  • Components do not interact directly, only through the repository
  • Repository is passive with control being solely the responsibility of the components accessing the repository
67
Q

What are the benefits of a Repository Architecture Pattern?

A
  • Components are independent of each other since they never communicate directly
  • Design of data driven systems that allows for large volumes of data to be managed & stored
  • Data is centrally managed, can be distributed, synchronized & backed up
68
Q

What are the risks of a Repository Architecture Pattern?

A
  • communication between components is inefficient since it is data through the data store
  • The data store represents a single point of failure. (Mitigated through cloud redundancy)
69
Q

What is a Blackboard Architecture Pattern?

A

A subclass of the Repository Pattern where the repository is active

Known uses: AI, Cognitive Computing

70
Q

List some characteristics of a Blackboard Architecture Pattern?

A
  • The active repository role is played by the blackboard architectural component
  • Data maintained on the blackboard repository is unstructured
  • the blackboard component has the control responsibilities
  • Cooperative & opportunistic problem solving
71
Q

What are the benefits of the Blackboard Architecture Pattern?

A
  • Suitable when no closed solution is available for the problem to be solved
  • Flexibility, changeability & maintainability
  • Knowledge sources/experts are reusable components as they are independent of each other
  • Fault tolerance & robust as solutions may be supported by multiple knowledge sources
72
Q

What are the risks of the Blackboard Architecture Pattern?

A
  • Hard to test since there is no deterministic algorithm
  • Solution to the problem is not guaranteed
  • Optimal control strategy is not clear & requires experimentation
  • Typically not efficient
  • Requires high development effort
73
Q

What are the components that are used in the Blackboard Architecture pattern called?

A

Knowledge Sources

74
Q

What is a Pipe & Filter Architecture Pattern?

A

Divides the task of a system into a sequence of processing steps that transform input into output

Known Uses:

  • Data & Batch Processing Systems
  • Embedded Systems with limited user interaction
75
Q

What are the characteristics of a Pipe & Filter Architecture Pattern?

A
  • Data flows from one transformation to another through a pipe
  • The input to the system is provided by a data source & the output of the system is consumed by a data sink
76
Q

What are the benefits of the Pipe & filter Architecture Pattern?

A
  • No intermediate files necessary to store the results of a filter in order to be provided to another
  • Flexibility by filter exchange, filter recombination
  • Reusability provided by filter components
  • Rapid prototyping of processing pipelines
  • Efficiency through parallel processing
77
Q

What are the risks of the Pipe & Filter Architecture Pattern?

A
  • Sharing state information between filters is expensive & inflexible
  • Efficiency through parallel processing is not always possible or productive
  • Data conversions required by different filters leads to overhead
  • Error handling & reporting is limited to logging & restarting pipelines
78
Q

In a Pipe & Filter Architecture Pattern, what provides the system input?

A

A Data Source

79
Q

In a Pipe & Filter Architecture Pattern, what consumes the system output?

A

A Data Sink

80
Q

In a Pipe & Filter Architecture Pattern, what is each processing step called?

A

A filter

81
Q

What are the two types of Architectural Control Patterns?

A

Centralized

Event-Driven

82
Q

What is a Centralized Architectural Control Pattern?

A

Designates a component of the system to direct the flow of control through the system
e.g. Call & Return Model, Manager Model

83
Q

What is an Event-Driven Architectural Control Pattern?

A

Uses a system of asynchronous events that system components respond to as events occur

e.g. Broadcast Model, Interrupt-Driven Model

84
Q

What are Reference Application Architectures?

A

Describe the structure & organization of particular types of software systems

85
Q

What is the purpose of Reference Application Architectures?

A

Establish a common vocabulary that can be used to describe & compare the architectures of systems that belong to the same class

86
Q

What are some common Reference Application Architecture Systems?

A
  • Transaction Processings Systems
  • Information Systems
  • Resource Allocation Systems
  • Event Processing Systems
  • Batch Data Processing Systems
  • Language Processing Systems