CS-499G 8/17/2015148 Design Concepts and Principles.

18
CS-499G 03/22/22 1 Design Concepts and Principles

Transcript of CS-499G 8/17/2015148 Design Concepts and Principles.

Page 1: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 1

Design Concepts and Principles

Page 2: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 2

Design PrinciplesThe design process should not suffer from ‘tunnel vision.’

The design should be traceable to the specifications. The design should not reinvent the wheel.

The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world.

The design should exhibit uniformity and integration.

The design should be structured to accommodate change.

The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered.

Design is not coding, coding is not design. The design should be assessed for quality as it is being created, not after the fact.

The design should be reviewed to minimize conceptual (semantic) errors.

From Davis [DAV95]

Page 3: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 3

Modular Designeasier to build, easier to change, easier to fix ...

Page 4: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 4

Modularity: Trade-offs

What is the "right" number of modules for a specific software design?

cost of software

number of modules

module development cost

optimal number of modules

moduleintegration

cost

Page 5: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 5

Sizing Modules: Two Views

MODULE

What's inside??

How big is it??

Page 6: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 6

Functional Independence

COHESIONthe degree to which a module performs one and only one function

COUPLINGthe degree to which a module is “connected to” other modules in the system

Page 7: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 7

Information Hiding

modulecontrolledcontrolledinterfaceinterface

"secret"

• algorithm

• data structure

• details of external interface

• resource allocation policy

clients

a specific design decision

Page 8: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 8

Why Information Hiding?reduces the likelihood of “side effects”limits the global impact of local design decisionsemphasizes communication through controlled interfacesdiscourages the use of global dataleads to encapsulation—an attribute of high quality designresults in higher quality software

Page 9: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 9

Partitioning the Architecture

“horizontal” and “vertical” partitioning are required

Page 10: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 10

Horizontal Partitioning

define separate branches of the module hierarchy for each major functionuse control modules to coordinate communication between functions

function 1 function 3

function 2

Page 11: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 11

Vertical Partitioning: Factoring

design so that decision making and work are stratifieddecision making modules should reside at the top of the architecture

workers

decision-makers

Page 12: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 12

Why Partitioned Architecture?results in software that is easier to testleads to software that is easier to maintainresults in propagation of fewer side effectsresults in software that is easier to extend

Structured Design?objective: to derive a program architecture that is partitioned

Page 13: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 13

User Interface Design

Page 14: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 14

Interfaces Are Designed

intermodular interface designdriven by data flow between modules

external interface designdriven by interface between applicationsdriven by interface between software and non-human producers and/or consumers of information

human-computer interface designdriven by the communication between human and machine

Page 15: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 15

Interface Design

Easy to use?

Easy to understand?

Easy to learn?

Page 16: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 16

Interface Design

lack of consistencytoo much memorizationno guidance / helpno context sensitivitypoor responseArcane/unfriendly

Typical Design Errors

Page 17: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 17

Golden RulesPlace the user in controlReduce the user’s memory loadMake the interface consistent

Place the User in Control Define interaction modes in a way that does not force a user into unnecessary or undesired actions. Provide for flexible interaction. Allow user interaction to be interruptible and undoable. Streamline interaction as skill levels advance and allow the interaction to be customized. Hide technical internals from the casual user. Design for direct interaction with objects that appear on the screen.

Page 18: CS-499G 8/17/2015148 Design Concepts and Principles.

CS-499G04/19/23 18

Golden RulesReduce the User’s Memory Load

Reduce demand on short-term memory. Establish meaningful defaults. Define shortcuts that are intuitive. The visual layout of the interface should be based on a real world metaphor. Disclose information in a progressive fashion.

Make the Interface ConsistentAllow the user to put the current task into a meaningful context. Maintain consistency across a family of applications. If past interactive models have created user expectations, do not make changes unless there is a compelling reason to do so.