software design chapter 6 quiz

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/25

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

26 Terms

1
New cards

What are the two layers of software problems?

Wicked problems and tame problems

2
New cards

Where do wicked problems typically come from?

Domains outside computer science(biology, business, meteorology)

3
New cards

Example of wicked problem

Web commerce application

4
New cards

Open-ended, ill-defined, large, require much work

wicked problem

5
New cards

Where do tame problems typically occur?

Across various problem domains

6
New cards

Better defined, small, but can be complicated and difficult

tame problems

7
New cards

example of tame problems

Sorting and searching

8
New cards

What is the traditional approach people take a large, wicked problem?

A linear, top-down problem-solving approach, similar to the waterfall model

9
New cards

What is an alternative to the linear approach for solving wicked problems?

An opportunity-driven or opportunistic approach

10
New cards

The design must satisfy the requirement correctly within platform constraints

fitness of purpose

11
New cards

Related closely to modularity, this principle says you should separate out functional pieces of your design cleanly in order to facilitate ease of maintenance and simplicity. Modularity is good.

Separation of concerns

12
New cards

Keep your design simple as possible. This will let other understand what you’re up to. If you find a place that can be simplified, do it! if simplifying your design means adding more modules or classes to your design, that’s okay.

Simplicity

13
New cards

A simple, understandable design is amenable to change. The first kind change you’ll encounter is fixing errors, Errors occur at all phases of the development process: requirements, analysis, design, coding, and testing. The more coherent and easy to understand your design is, the easier it will be to isolate and fix errors.

Easy of maintenance

14
New cards

Modules are connected only through interfaces, not shared internal data, reducing maintenance and errors

loose coupling

15
New cards

The complement of loose coupling. Cohesion within a module is the degree to which the module is self-contained with regard both to the data it holds and the operation that act on the data.

High cohesion.

16
New cards

An outgrowth of simplicity and loose coupling is the ability to ass new features to the design easily.

Extensibility

17
New cards

Though not high on the list, keeping in mind that your software may need to be ported to another platform(or two or three) is a desirable characteristics.

Portability

18
New cards

Alan Davis and Richard Fairley call this intellectual distance. Its how far your design is from a real-world object. The heuristic here is to try to find a real-world objects that are close to things you want to model in your program.

Find real-world objects to model

19
New cards

Whether you’re doing object oriented design and you’re creating interface and abstract classes, or you’re doing a more traditional layered design, you want to use abstraction.

Abstraction is key

20
New cards

is the concept that you isolate information both data and behavior in your program so that you can isolate errors and isolate changes; you also only allow access to the information hiding.

Information hiding is your friend

21
New cards

Breaking your design up into semi-independent pieces has many advantages. It keep the design manageable in your head; you can just think about one part at a time and leave the other a black boxes.

Keep your design modular

22
New cards

If you make the assumption that there will be changes in your requirements, then there will likely be changes in your design as well. If you identify those areas of your design that are likely to change, you can separate them, this mitigating the impact of any changes you need to make.

Identify the parts of your design that are likely to change

23
New cards

Along with modularity, information hiding, change, using loose coupling will make your design easier to understand and to change as time goes along.

Use loose coupling, interfaces, and abstract classes

24
New cards

Robert Glass describes great software designers as having “ a large set of standard patterns” that they carry around with them and apply to their designs. This is what design experience is all about doing design over and over again and learning from experience

Use your knapsack full of common design patterns

25
New cards

Your design should adhere to the Principle of One Right Place; debugging and maintenance will be much easier

Adhere to the Principle of One Right Place

26
New cards

This type of visualization can settle the design in your head and can point out errors or possible complications in the design

Use diagrams as a designer languange