01_Why Software Architecture Flashcards

1
Q

What are small problems?

A
  • can be solved by yourslef
  • no formal qualification of the constructor needed
  • Client and constructor are the same person -> Who would complain?

Example: Own Birdhouse etc.

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

What are medium-size problems?

A
  • Skilled craftsmen can solve them
  • not too muc formal knowledge necessary
  • can be done without large planning
  • experience (mostly) replaces technology

Example: Housework

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

What are complex problems?

A
  • to besolved by cooperation of specialists
  • needs a formal approval / certificate necessary
  • needs experience, technology, design methodology and planning skills required

Example: Airplane

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

Around how many lines of code are needed so that software architecture becomes necessary?

A

Projects larger than 30.000 lines of code

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

What is the motivation of Software architecture?

A

Increasing Role of Software:

  • Core part of Businesses
  • Core part of products

Therefore:

  • Higher risk,
  • complexity (limitation of the brain, shortterm memory can save 7+-2 information) and
  • economy due to increasing role of software
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How to manage complexity?

A

We want to create uniform structures:

  • easier to comprehend
  • easier to remember
  • easier to associate
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are methods to create manage complexity?

A

Chunking:

  • Modularity
  • Information Hiding
  • Encapsulation
  • Separation of concerns
  • Responsibilities

Hierarchy:

  • Abstraction (details in lower part of hierarchy)
  • Decomposition (parting things)!!!
  • Generalization
  • Non-cyclic relations (tree)

Patterns:

  • conceptual integrity
  • consistency (use patterns in same way)
  • uniformity (same structure)
  • simplicity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the risks that projects might fail?

A
  • tasks need more time
  • things don’t work
  • unexpected effects
  • goals not met (Performane issues, technology changes)
  • deadlines not met
  • customer unsatisfied

-Investment lost

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

How can we manage risks?

A

Risk resolution:

  • early assesment
  • measures for resolution
  • resolve biggest risks first
  • accumulate and benefit from experience

Project Management:

  • divide and conquer: packages and tasks
  • work division and specialization
  • incremental work
  • goal-oriented optimization
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How to achieve economic success?

A
Customer:
Fulfill requirements:
-Functions, business processes
-System quality: scalability, usability...
-in-time delivery 
Provider:
Achieve satisfaction:
-plannable: predict effort & quality
-efficient: avoid rework
-evolution: accumulate knowledge
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the reasons Why Software Architecture is important?

A
  • Inhibiting or Enabling a System’s Quality Attributes (hard to change)
  • Reasoning About and Managing Change
  • Early Prediction of System Qualities
  • Enhancing Communication Among Stakeholders (abstraction needed)
  • Earliest Design Decisions (weight of a decision)
  • Defining Constraints on an Implementation
  • Influencing the Organizational Structure (important for communication)
  • Enabling Evolutionary Prototyping
  • Improving Cost and Schedule Estimates
  • Transferable, Reusable Model
  • Using Independently Developed Components
  • Restricting Design Vocabulary (reduce number of terms, achieve abstraction e.g. domain concept)
  • Basis for Training (onboarding new people)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Definition Software Architecture from Bass et. al.

A

The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations (and behaviour) among them, and properties of both.

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

Definition Software Architecture from Taylor

A

A software system’s architecture is the set of principal design decisions about the system

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

Definition Software Architecture from Shaw and Garlan

A

Software architecture [is a level of design that] involves –the description of elements from which systems are built,
–interactions among those elements,
–patterns that guide their composition, and
–constraints on these patterns.

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

Definition ISO42010 Systems and software engineering —Architecture description

A

⟨system⟩ fundamental conceptsor propertiesof a system in its environment embodied in its elements, relationships, and in the principlesof its design and evolution

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

Definition Software Architecture by M. Voelter (focusing on evolution)

A

Software architecture is all those aspects of a system that we want to be consistent throughout the system for reasons ranging from meeting nonfunctional requirements to technology best practices to maintainability to developer training.

17
Q

What are the 3 architectural structures and views?

A

Module structures:

  • module=implementation unit
  • responsibilities are relations to requirements
  • about static relationships/structure

Component-connector (C&C) structures:

  • component-connector=runtime unit
  • interaction between runtime (=components) entities
  • is about behavior
  • about the dynamic relationships

Allocation structures:

  • how to develop the structures
  • it is needed to perform a mapping:
    1) mapping to hardware elements e.g. processors -> deployment
    2) mapping to workpackages
18
Q

What does module structure includes?

A
  • decomposition structure (breaking things into parts)
  • uses structure (between modules, e.g. call import)
  • Layer structure (modules are layered)
  • Class/Generalization structure (not that important for Software architecture as decomposition)
  • data model
19
Q

What does component-connector structure includes?

A
  • service structure (parts may serve as services)

- concurrency structure (parallelity /sequence of structure plays important role)

20
Q

What does Allocation structures includes?

A
  • deployment structure
  • implementation structure
  • work assignment structure (workpackages)
21
Q

What is a Structure?

A

Set of (architectural) elements with relations

E.g. Allocation structure:
-Deployment of components to compute units

22
Q

What is a View?

A

Representation of this set with relations for system stakeholders (like a diagram)

E.g. Allocation View:
-UML Deployment diagram

23
Q

What is Behavior in the architecture context?

A
  • how elements interact (structure and relation) with each other
  • we want to structure functionality and behavior
24
Q

Definition of Architectural Patterns?

A

Solutions to recurring problems:

  • Compositions and structures found useful (over time, over different domains)
  • documented and disseminated (verbreitet)
  • packaged strategies
  • reuse of knowledge
25
Q

Name a pattern for Module, Component-connector and Allocation

A

Module:

  • Layer, a Layer is allowed to call Layers below him, but not Layers that are above him
  • helps to reduce complexity of relations of an element

Component-connector:
-Repository Client-server

Allocation:

  • Competence center (create teams with needed skills)
  • platform (organisational pattern to put things together)
26
Q

How can you achieve optimized solutions as a software architect?

A

Through Architects collaboration:

  1. Design solution
  2. Describe solution
  3. Explain solution
  4. Architect B Understands solution, asks questions
  5. Understand comprehension issues and deiciencies
  6. Improve solution and description
  7. Architect B Assess and check solution, then gives hints
  8. Revise solution
27
Q

What makes a “good” architecture?

A
  • good=fit for purpose

- purpose=goals within context (4 goals)

28
Q

What are the goals for software architecture?

A
  • Efficient development
  • Risk minimization
  • Preserve core knowledge
  • achieve comprehension
29
Q

Describe the goal “efficient development” for software architecture

A

Efficient development:

  • maximized outcome by a minimized effort
  • reduce rework
  • basic structure for a system/project
  • > modularity needed
  • > Organization: group structure
  • > Planning: work packages
  • > independent implementation (e.g. subcontractors, technology platforms)
30
Q

Describe the goal “Risk minimization” for software architecture

A

Risk minimization:

  • discovering critical issues from the requirement
  • early assesment to reduce rework, basic decisions, critical decisions
  • early check if goals can be reached
31
Q

Describe the goal “Achieve comprehension” for software architecture

A

Achieve comprehension:

  • communication between stakeholders (important people involved)
  • each stakeholder gets a customized View
  • basis for training (onboarding)
  • reference and vision
32
Q

Describe the goal “Preserve knowledge” for software architecture

A

Preserve knowledge:

  • communication over longterm
  • transferable knowledge
  • intellectual property
  • incremental improvement