Untitled Deck Flashcards

1
Q

What is Software Design?

A

Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product.

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

What do design principles establish?

A

An overriding philosophy that guides the designer as the work is performed.

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

What must be understood before applying design practice mechanics?

A

Design concepts.

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

How do software design practices change?

A

Continuously as new methods, better analysis, and broader understanding evolve.

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

What is Data/Class design?

A

Transforms analysis classes into implementation classes and data structures.

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

What does Architectural design define?

A

Relationships among the major software structural elements.

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

What does Interface design define?

A

How software elements, hardware elements, and end-users communicate.

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

What does Component-level design transform?

A

Structural elements into procedural descriptions of software components.

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

What must the design implement?

A

All of the explicit requirements contained in the analysis model, and accommodate all of the implicit requirements desired by the customer.

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

What should the design provide?

A

A complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective.

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

What are the quality guidelines for design?

A
  1. A design should exhibit an architecture created using recognizable architectural styles or patterns, composed of well-designed components, implemented in an evolutionary fashion.
  2. A design should be modular.
  3. A design should contain distinct representations of data, architecture, interfaces, and components.
  4. A design should lead to data structures drawn from recognizable data patterns.
  5. A design should contain functionally independent components.
  6. A design should lead to interfaces that reduce complexity of connections between components and the external environment.
  7. A design should be derived using a repeatable method driven by software requirements analysis.
  8. A design should be represented using meaningful notation.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What common characteristics do design methodologies share?

A
  1. A mechanism for translating the requirements model into a design representation.
  2. A notation for representing functional components and their interfaces.
  3. Heuristics for refinement and partitioning.
  4. Guidelines for quality assessment.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is abstraction in design concepts?

A

Data (named collection of data describing data object) and procedural (name sequence of instructions with specific and limited function).

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

What does architecture refer to in software design?

A

Overall structure or organization of software components, ways components interact, and structure of data used by components.

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

What are design patterns?

A

Describe a design structure that solves a well-defined design problem within a specific context.

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

What is separation of concerns?

A

Any complex problem can be more easily handled if it is subdivided into pieces.

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

What is modularity?

A

Compartmentalization of data and function.

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

What is information hiding?

A

Controlled interfaces which define and enforce access to component procedural detail and any local data structure used by the component.

19
Q

What is functional independence?

A

Single-minded (high cohesion) components with aversion to excessive interaction with other components (low coupling).

20
Q

What is stepwise refinement?

A

Incremental elaboration of detail for all abstractions.

21
Q

What is refactoring?

A

A reorganization technique that simplifies the design without changing functionality.

22
Q

What are design classes?

A

Provide design detail that will enable analysis classes to be implemented.

23
Q

What are the characteristics of design classes?

A
  1. Complete (includes all necessary attributes and methods) and sufficient (contains only those methods needed to achieve class intent).
  2. Primitiveness (each class method focuses on providing one service).
  3. High cohesion (small, focused, single-minded classes).
  4. Low coupling (class collaboration kept to a minimum).
24
Q

What does information hiding reduce?

A

The likelihood of ‘side effects’ and limits the global impact of local design decisions.

25
Q

What are the structural properties of architecture?

A

Defines the components of a system (for example, modules, objects, filters) and how components are packaged and interact.

26
Q

What are extra-functional properties in architecture?

A

Address how the design architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other characteristics.

27
Q

What does architectural design draw upon?

A

Repeatable patterns (building blocks) often encountered in the design of similar systems.

28
Q

What is the purpose of architectural descriptions?

A

To document an architecture and identify the system stakeholders having concerns fundamental to the architecture.

29
Q

What is the role of architecture in software development?

A

Facilitates communication among all stakeholders and highlights early design decisions that impact all subsequent software engineering work.

30
Q

What is architectural tradeoff analysis?

A
  1. Collect scenarios.
  2. Elicit requirements, constraints.
31
Q

What is the control topology in architecture?

A

The geometric form that control takes, which can be centralized, hierarchical, or distributed.

32
Q

How do components transfer control within the system?

A

Via well-defined interfaces, events, or messaging systems that signal the need for action by other components.

33
Q

What is the mode of data transfer?

A

Occurs in various modes, such as synchronous, asynchronous, batch, or stream-based, depending on system requirements.

34
Q

How do functional components interact with data components?

A

By querying, updating, or processing data based on application logic.

35
Q

What are architectural considerations?

A
  1. Economy – software is uncluttered and relies on abstraction to reduce unnecessary detail.
  2. Visibility – Architectural decisions should be obvious to software engineers.
  3. Spacing – Separation of concerns in a design without hidden dependencies.
  4. Symmetry – Implies consistency and balance in system attributes.
  5. Emergence – Key to creating scalable, efficient, and economic software architectures.
36
Q

What is the purpose of architectural design?

A

The software must be placed into context and define external entities that it interacts with.

37
Q

What is an architectural archetype?

A

An archetype is an abstraction that represents one element of system behavior.

38
Q

What is the role of the designer in architectural design?

A

The designer specifies the structure of the system by defining and refining software components that implement each archetype.

39
Q

What are the steps in Architectural Tradeoff Analysis?

A
  1. Collect scenarios. 2. Elicit requirements, constraints, environment description. 3. Describe architectural styles/patterns. 4. Evaluate quality attributes. 5. Identify sensitivity of quality attributes. 6. Critique candidate architectures.
40
Q

What is the purpose of architectural reviews?

A

To assess the ability of the software architecture to meet quality requirements and identify potential risks.

41
Q

How can architectural reviews reduce project costs?

A

By detecting design problems early.

42
Q

What methods are often used in architectural reviews?

A

Experience-based reviews, prototype evaluation, scenario reviews, and checklists.

43
Q

What are the steps in Pattern-based Architectural Reviews?

A
  1. Identify quality attributes. 2. Discuss system architecture diagram. 3. Identify architecture patterns used. 4. Use documentation to determine patterns’ effect. 5. Identify quality issues. 6. Develop summary of issues and revisions.