drexel university cs 451 software engineering winter 2009 1 yuanfang cai room 104, university...

22
Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 [email protected]

Upload: andra-norton

Post on 02-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

CS 451Software Engineering

Winter 2009

1

Yuanfang Cai

Room 104, University Crossings215.895.0298

[email protected]

Page 2: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design within the Context of Software Engineering

2

Page 3: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Software Design Between Requirement and Coding Including:

Data Design Architectural Design Interface Design Component Design Detailed Design

Need to be modeled, analyzed, and reviewed in industrial strength software.

3

Page 4: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Translating the Analysis Model into the Design Model

4

Data/Class Design

Architecture Design

Interface Design

Component Design

Page 5: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Process and Desgin Quality

5

Page 6: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Engineering Software design is an iterative process through

which requirements are translated into a “blueprint” for constructing software Abstraction Refinement

6

Page 7: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Engineering A design must implement all of the explicit requirements

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

A design must be a readable, understandable guide for those who generate code and those who test and subsequently support the software.

The design should provide a complete picture of the software, addressing, the data, functional, and behavioral domains from an implementation perspective.

7

Page 8: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Quality FURPS – Functionality, Usability, Reliability,

Performance, and Supportability. Functionality – assessed by evaluating:

the feature set capabilities of the program.

Usability - assessed by considering: human factors, overall aesthetics, consistency, end-user documentation.

8

Page 9: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Quality - Functionality, Usability, Reliability, Performance, and Supportability

Reliability – is evaluated by measuring: the frequency and severity of failure, the accuracy, of output results, the mean-time-to-failure, the ability to recover from failure, the predictability of the program.

Performance – is measured by: processing speed, response time, resource consumption, throughput, efficiency

9

Page 10: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Quality - Functionality, Usability, Reliability, Performance, and Supportability

Supportability – combines: the ability to extend the program (extensibility), adaptability, serviceability testability, compatibility, configurability.

10

Page 11: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts

11

Page 12: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts Abstraction

Architecture Patterns Data

Modularity Information Hiding Functional Independence Refinement Refactoring

Design Classes12

Page 13: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Abstraction “Abstraction is one of the fundamental ways that

we as humans cope with complexity.” Grady Booch

“What kinds of things do we abstract? data objects procedures modules just about anything

13

Page 14: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Architecture Software architecture alludes to “the overall

structure of the software and the ways in which that structure provides conceptual integrity for a system.

Architecture is: the structure or organization of program components

(modules), the manner in which these components interact, the structure of data that are used by the

components.

14

Page 15: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Patterns “A pattern is a named nugget of insight which conveys

the essence of a proven solution to a recurring problem within a certain context amidst competing concerns.”

“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” Christopher Alexander

15

Page 16: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts -Modularity MODULARITY

“Modularity is the single attribute of software that allows a program to be intellectually manageable”

Software is divided into separately named and addressable components, sometimes called modules, that are integrated to satisfy problem requirements.

16

Page 17: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts –Information Hiding Modules should be specified and designed so that

information (algorithms and data) contained within a module is inaccessible to other modules that have no need for such information.

This means that inadvertent errors introduced during modification are less likely to propagate to other locations within the software.

Changes to the internal representation of one module should have not have an effect on other modules.

17

Page 18: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Functional Independence

Functional independence is achieved by developing modules with “single-minded” function and an “aversion” to excessive interaction with other modules.

We want to design software so that each module addresses a specific subfunction of requirements and has a simple interface when viewed from other parts of the program structure.

18

Page 19: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Functional Independence Independence is assessed by using two

qualitative criteria: Cohesion – How related a module is to itself. It should

perform a single task and require little interaction with the rest of the program.

Coupling is an indication of the interconnectoin among modules in a software structure.

19

Page 20: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Refinement Stepwise refinement is when a program is

developed by successively refining levels of procedural detail.

Refinement is actually the process of elaboration.

20

Page 21: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Refactoring Refactoring is a reorganizational technique that

simplifies the design )of code) of a component without changing its function or behavior.

21

Page 22: Drexel University CS 451 Software Engineering Winter 2009 1 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu

Drexel University

Design Concepts-Design Classes Refine analysis classes by providing design details

Create a new set of design classes that implement a software infrastructure to support the business solution

Five types: User interface classes Business domain classes Process classes Persistent classes System classes

22