Fundamentals of Software Architecture Flashcards

1
Q

What are the four dimensions that define software architecture?

A
  • Architecture characteristics
    • Architecture decisions
    • Design principles
    • Structure
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is the difference between an architecture decision and a design principle?

A
  • Architecture decisions define the rules for how a system should be constructed
    • Design principles provide guidance for implementing architecture decisions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

List the eight core expectations of a software architect?

A
  • Make architecture decisions
    • Continually analyze the architecture
    • Keep current with latest trends
    • Ensure compliance with decisions
    • Diverse exposure and experience
    • Have business domain knowledge
    • Possess interpersonal skills
    • Understand and navigate politics
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is the First Law of Software Architecture?

A

Everything in software is a trade-off

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

Describe the traditional approach of architecture versus development and explain why that approach no longer works

A

a. Architects have to see things differently by:
i. Understanding the difference between architecture and design
ii. Having a wide breadth of technical knowledge while still maintaining a certain level of technical depth in order to see solutions and possibilities that others don’t see
iii. Understanding, analyzing, and reconciling trad-offs between various solutions and technologies
iv. Understanding the importance of business drivers and how they translate to architectural concerns

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

List the levels of knowledge in the knowledge triangle and provide an example of each

A

a. Stuff you know
i. Technologies, frameworks, languages, and tools
b. Stuff you know you don’t know
i. Things you know a little about but have little or no experience
c. Stuff you don’t know you don’t know
i. Possible technologies, frameworks, languages, and tools that you have never heard of but could be the best solution

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

Why is it more important for an architect to focus on technical breadth rather than technical depth

A

Technical breadth falls into the stuff you know you don’t know, allowing the architect to consider more options that may better fit a problem

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

What are some of the ways of maintaining your technical depth and remaining hands-on as an architect

A

Building POCs, attacking technical debt, bug fixes, build fitness functions and automation

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

What is meant by the term connascence?

A

a quality metric to allow reasoning about the complexity caused by dependency relationships in object-oriented design

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

What is the difference between static and dynamic connascence?

A

Static refers to source code level coupling, dynamic refers to run time coupling

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

What does connascence of type mean? Is it static or dynamic connascence?

A

Connascence of type is static and refers to agreeing on the type of entity among multiple components

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

How long the system will need to be available

A

Availability

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

Disaster recovery capability

A

Continuity

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

Includes stress testing, peak analysis, analysis of the frequency of functions used, capacity required, and response times

A

Performance

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

Business continuity requirements

A

Recoverability

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

If the system needs to be fail-safe, or if it is mission critical in a way that affects lives

A

Reliability/safety

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

Ability to handle error and boundary conditions while running if the internet connection goes down or if there is a power outage or hardware failure

A

Robustness

18
Q

Ability for the system to perform and operate as the number of users or requests increase

A

Scalability

19
Q

What are the 7 Operational Architecture Characteristics

A

Availability
Continuity
Performance
Recoverability
Reliability
Robustness
Scalability

20
Q

What are the 9 Structural Architectural Characteristics

A

Configurability
Extensibility
Installability
Leverageability
Localization
Maintainability
Portability
Supportability
Upgradeability

21
Q

Ability for the end users to easily change aspects of the software’s configuration

A

Configurability

22
Q

How important it is to plug new pieces of functionality in

A

Extensibility

23
Q

Ease of system installation on all necessary platforms

A

Installability

24
Q

Ability to leverage common components across multiple products

A

Leverageability

25
Q

Support for multiple languages on entry/query screens

A

Localization

26
Q

How easy it is to apply changes and enhancements

A

Maintainability

27
Q

Does the system need to run on more than one platform

A

Portability

28
Q

What level of technical support is needed by the application

A

Supportability

29
Q

Ability to easily/quickly upgrade from a previous version of this application/solution

A

Upgradeability

30
Q

What are the 8 Cross-Cutting Architectural Characteristics

A

Accessibility
Archivability
Authorization
Legal
Privacy
Security
Supportability
Usability

31
Q

What are the 7 ISO Organized Capabilities

A

Performance efficiency
Compatibility
Usability
Reliability
Security
Maintainability
Portability

32
Q

Access to all your users, including those with disabilities like colorblindness or hearing loss

A

Accessibility

33
Q

Will the data need to be archived or deleted after a period of time

A

Archivability

34
Q

Security requirements to ensure users can access only certain functions within the application

A

Authorization

35
Q

What legislative constraints is the system operating in

A

Legal

36
Q

Ability to hide transactions from internal company employees

A

Privacy

37
Q

Does the data need to be encrypted in the database

A

Security

38
Q

Which level of technical support is needed by the application

A

Supportability

39
Q

Level of training required for users to achieve their goals with the application/solution

A

Usability

40
Q

What are the 7 Fallacies of architecture

A

Fallacy #1: The Network is Reliable
* Network is assumed to be reliable but it is not
Fallacy #2: Latency is Zero
* What is the average round-trip latency in a RESTful call
Fallacy #3: Bandwidth is Infinite
* Usually not a concern in monolith but must be considered in distributed
Fallacy #4: The Network is Secure
* It is not
Fallacy #5: The Topology Never Changes
* Networks change and modernize just like software
Fallacy #6: There is Only One Administrator
* Collaboration with all of operations, not just one
Fallacy #7: Transport Cost is Zero
* Infrastructure costs money, the more you use the more it costs

41
Q

What are the 3 most common styles of Monolithic Architecture

A

Layered
Pipeline
Microkernel

42
Q

What are the 5 most common styles of Distributed Architecture

A

Service-based
Event-driven
Space-based
Service-oriented
Microservices