Architectural Considerations and Design Patterns Flashcards

1
Q

All systems have an architecture even if you do not design one. Explain this
statement.

A

Every system has an architecture. Whether the architecture is appropriate or not is a different issue altogether. You have taken deliberate actions to plan and design or have you happened into it unknowingly.

nb//You may also have big ball of mud – an unperceivable architecture – still an architecture –

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

Almost every architectural design can be used to satisfy most of a system’s functional requirements, why?

A

regardless of the architectural design used, the functional requirements can be satisfied As there are many architectural solutions that can fulfil functional requirements

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

What are the main factors that influence architectural design?
AKA : Architectural Drivers

A

. Design purpose (Why are you using the architectural design)

· Quality attributes (most important, nonfunctional requirements)

· Primary functionality

· Architectural concerns

· Constraints

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

Explain what is meant by the architecture of a software

A

The architecture of a system describes its major components, their relationships (structures), and how they interact with each other to meet the requirements of the system

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

What are the three main categories of architectural structures?

A

modules - (raw code)
component connector
allocation

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

Explain the purpose of each architectural structures with examples

A

Module View:
Allows you to express the way in which the modules/classes/packages of the system are organized and primarily reflect the dependency relationships between them. They allow us to think about the modularity, modifiability and maintainability as well as performance characteristics of the system.

Component and Connector Structures allow us to reason about the run time properties of the system. It allows us to think about and reason about the actual components that will exist to provide services at run time, the interfaces or connections between them.

Allocation Structure allows us to reason about the allocation of resources such people, time, money or the artifacts in relation to hardware. Work breakdown Structure used to allocate team members to modules in the system. Or deployment structure used to map components/artifacts hardware interfaces and execution environments hardware

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

The layered architectural pattern is what kind of structure

A

Module Structure

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

The Client-Server Architecture design is what type of structure?

A

Component Structure

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

What are design patterns?

A

A software design pattern is a reusable solution to a reoccurring
design problem.

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

What is the difference between a design pattern and an algorithm?

A

The purpose of an algorithm is to solve a specific problem
(sorting, searching, etc.) in a computationally efficient way as
measured in terms of time and space complexity. As opposed to the purpose of a design pattern is to organize code in a
developmentally efficient way as measured in terms of
flexibility, maintainability, reusability, etc.

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

Why is an algorithm NOT a design pattern?

A

• Algorithms are not design patterns because they have different
objectives.

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

What are the properties of a design pattern?

A

§ Design (and more generally engineering) is about balancing
conflicting forces or constraints.
§ Design patterns provide general solutions at a medium level of
abstraction.
§ Patterns aren’t dogma.

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

What is the Rule of Three in design patterns?

A

The general rule-of-thumb is a software
design can’t be considered a pattern until
it has been applied in a real-world solution at least three times (the so-called “Rule of Three”)

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

What are some benefits of design patterns?

A

• Design patterns facilitate reuse.
• Design patterns make design easier but not easy.
• Design patterns capture expertise and facilitate its dissemination.
• Design patterns define a shared vocabulary for discussing design.
• Design patterns move software development closer to a well established engineering discipline.
• Design patterns demonstrate concepts and principles of good
design.
• Knowing popular design patterns makes it easier to learn class
libraries that use design patterns.

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

What makes a design pattern unique ?

A

§ Design patterns aren’t distinguished by their static structure
alone.
§ What makes a design pattern unique is its intent.
The intent of a pattern is the problem solved or the reason for
using it.

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

For any design pattern with which you are familiar:

a) Explain its intent. (Hint: The intent of the design pattern, is the design issue or problem it
addresses. What exactly does the design pattern do?)

A

§ The intent of the State pattern is to allow an object to alter its
behavior when its internal state changes.

§ The intent of the Strategy pattern is to encapsulate different
algorithms or behaviors and make them interchangeable from
the client’s perspective.