1.3 Design Concepts Flashcards

1
Q

What is design?

A

deliberative, purposive planning

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

What is software design?

A

The process of building a program while satisfying a problem’s functional requirements and not violating its non-functional requirements.

It’s a question of tradeoffs/

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

What are the two phases of software design?

A
  • Architectural design
  • Detail design
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is architectural design?

A

The process of identifying and assigning the responsibility of behavior to various modules or components of a software program.

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

What is detail design?

A

The process of specifying the behavior of each of the system components that you’ve identified during architectural design. e.g., data structures and algorithms.

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

What are the some examples of design notation?

A

Pseudo code; Program Design Language (PDL)
- keywords, free syntax of natural language, data declaration, subprogram definition and calling

Structured programming
- set of control structures that allow you to sequence, condition, repetition; chunking

Flowcharts; call graphs
- directed graphs: node is computational unit; arc is flow of control

Decision tables
- rules, conditions, actions

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

What is a design method?

A

A systematic sequence of steps that a design team uses to solve a problem.

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

Issues with design validation

A
  • independence of validators (people who did the designs should not be the people who do the review)
  • dependence on design method
  • on-going versus after-the-fact
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

other design issues

A
  • architectural vs detail design
  • functional behavior vs non-functional constraints
  • specification/what versus design/how
  • application specificity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Traditional Design Documentation

A
  • Subcomponents: process/activities, data/data flows
  • Control flow: control regime
  • Performance
  • Resources

supplementary requirements: IEEE standard 1016

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

What is coupling?

A

The extent to which two components depend on each other for successful execution.

Low coupling is good.

Making a change in a system with high coupling is hard b/c a change to one component means a change to another component and so on…

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

What is cohesion?

A

The extent to which a component has a single purpose or function.

High cohesion is good.

Highly cohesive modules are easy to reuse b/c they have a single purpose.

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

Information hiding

A

encapsulating the capabilities a module has behind an abstract interface.

allows you to change the implementation details later without breaking the caller

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

abstraction mechanisms

A
  • Declarative: what, not how
  • Aggregation: container, not contents
  • Generalization: class, not individuals
  • Parameterization: binding details later
  • Non-determinim: leaving choices unspecified
How well did you know this?
1
Not at all
2
3
4
5
Perfectly