chapter 1: introduction object-oriented software...

35
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction

Upload: voxuyen

Post on 19-Apr-2018

245 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Usi

ng U

ML

, P

atte

rns,

and J

ava

Ob

ject

-Ori

ente

d S

oft

ware

En

gin

eeri

ng

Chapter 1: Introduction

Page 2: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4

Requirements for this Class

You are proficient in a programming language, but you have no experience in analysis or design of a system

You want to learn more about the technical aspects of analysis and design of complex software systems

Page 3: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5

Objectives of the Class

Appreciate Software Engineering:

Build complex software systems in the context of frequent change

Understand how to

produce a high quality software system within time

while dealing with complexity and change

Acquire technical knowledge (main emphasis)

Acquire managerial knowledge

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6

Acquire Technical Knowledge

Understand System Modeling

Learn UML (Unified Modeling Language)

Learn different modeling methods: Use Case modeling

Object Modeling

Dynamic Modeling

Issue Modeling

Learn how to use Tools:

CASE (Computer Aided Software Engineering)

Tool: Rose or HiMEMv.10

Component-Based Software Engineering

Learn how to use Design Patterns and Frameworks

Page 4: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7

Understand the Software Lifecycle

Process vs Product

Learn about different software lifecycles

Greenfield Engineering, Interface Engineering, Reengineering

Acquire Managerial Knowledge

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8

Readings

Required:

Bernd Bruegge, Allen Dutoit: “Object-Oriented Software Engineering: Using UML, Patterns, and Java”, Prentice Hall, 2003.

Recommended:

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: “Design Patterns”, Addison-Wesley, 1996.

Grady Booch, James Rumbaugh, Ivar Jacobson, “The Unified Modeling Language User Guide”, Addison Wesley, 1999.

K. Popper, “Objective Knowledge, an Evolutionary Approach, Oxford Press, 1979.

Additional books may be recommended during individuals lectures

Page 5: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9

Outline of Today’s Lecture

High quality software: State of the art

Modeling complex systems

Functional vs. object-oriented decomposition

Dealing with change:

Software lifecycle modeling

Reuse:

Design Patterns

Frameworks

Concluding remarks

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10

Can you develop this?

Page 6: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11

Requirements

Software

Limitations of Non-engineered Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12

The Current Big Problem

Page 7: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13

One Possible Answer

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14

Software Development Methods

Page 8: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15

Needs More What ???

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16

Why Modeling? Consider the problem of Scale……….

Page 9: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17

Influence of System Stakeholders

Persons who have an interest in the construction of a software system and might include

customers

users

developers

project mangers

marketers

maintainers

- Different concerns to guarantee and/or optimize

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18

Stakeholders’ Concerns

Page 10: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19

Users

People who use the system.

End users are concerned primarily with a

system’s ease of use.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20

Users - 2

End User are often the domain experts.

- consider a aircraft pilot, automobile

driver, homemaker

Page 11: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21

Customers

People who pay for the system’s development.

Customer are not always users.

Customer’s concerns include the system’s

- cost, functionality, lifetime,

- development time/time to market

- quality, flexibility to do many things on

delivery day, and over its lifetime

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22

Manager

Management stakeholders include those

managers from the development organization/customer organization

Manager’s concerns includePay back development costs

Maintaining the workforce’s core competency

and organization training

Investing to achieve strategic goals

Keeping development costs as low as possible

Page 12: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23

Manager -2

Adhering to the development schedule

Maintaining product quality

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24

Other Stakeholders

Developers are concerned about languages, technology, and the best to solve the problem

Maintainers are a system they can fix, improve, modify, extend, and so forth.

Administrators want a system they can tune, configure, deploy, and so forth.

Marketers want feature that meet or exceed the competitive price.

Page 13: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25

Software engineering concepts

consumes

Activity

WorkProduct ResourcesTask

Equipment

Time

Participant

Document

Model

System

is produced by *

*

**

Project

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26

Project: purpose is to develop a software system

consists of a number of Activities.

Activity: consists of a number of tasks.

Task: consumes Resources and produces a WorkProduct.

WorkProduct: can be either a System, a Model, or a Document.

Resource: are either Participant, Time, Equiment.

Page 14: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27

Participant

- client: orders and pay for the system

- developer: constructs the system

- project manger: plans and budgets the project and

coordinates the developers and client.

- end-users: are supported by the system

All the above persons involves in the project as participants.

Responsibilities in the project or the system as role.

A role is assigned with a set of tasks and is assigned to aparticipant.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28

Examples of roles in software engineering

for TicketDistibuter Project

Analyst, programmer, testerDeveloper

bossManager

TravelersUser

Train companyClient

ResponsibilitiesRole

Page 15: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29

Software Production has a Poor Track Record Example: Space Shuttle Software

Cost: $10 Billion, millions of dollars more than planned

Time: 3 years late

Quality: First launch of Columbia was cancelled because of a synchronization problem with the Shuttle's 5 onboard computers.

Error was traced back to a change made 2 years earlier when aprogrammer changed a delay factor in an interrupt handler from 50 to 80 milliseconds.

The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing.

Substantial errors still exist.

Astronauts are supplied with a book of known software problems"Program Notes and Waivers".

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30

Quality of today’s software….

The average software product released on the market is not error free.

QuickTime?and aCinepak decompressor

are needed to see this picture.

Page 16: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31

…has major impact on Users

QuickTime?and a decompressor

are needed to see this picture.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32

Software Engineering: A Problem Solving Activity

Analysis: Understand the nature of the problem and break theproblem into pieces

Synthesis: Put the pieces together into a large structure

For problem solving we use

Techniques (methods):Formal procedures for producing results using some well-defined notation

Methodologies:Collection of techniques applied across software development and unified by a philosophical approach

Tools:Instrument or automated systems to accomplish a technique

Page 17: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 20

Software Engineering: Definition

Software Engineering is a collection of techniques,

methodologies and tools that help

with the production of

a high quality software system

with a given budget

before a given deadline

while change occurs.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34

Scientist vs Engineer

Computer Scientist

Proves theorems about algorithms, designs languages, defines knowledge representation schemes

Has infinite time…

Engineer

Develops a solution for an application-specific problem for a client

Uses computers & languages, tools, techniques and methods

Software Engineer

Works in multiple application domains

Has only 3 months...

…while changes occurs in requirements and available technology

Page 18: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35

Factors affecting the quality of a software system

Complexity:

The system is so complex that no single programmer can understand it anymore

The introduction of one bug fix causes another bug

Change:

The “Entropy” of a software system increases with each change: Each implemented change erodes the structure of the system which makes the next change even more expensive (“Second Law of Software Dynamics”).

As time goes on, the cost to implement a change will be too high, and the system will then be unable to support its intended task. This is true of all systems, independent of their application domain or technological base.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36

Why are software systems so complex?

The problem domain is difficult

The development process is very difficult to manage

Software offers extreme flexibility

Software is a discrete system

Page 19: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37

Dealing with Complexity

1. Abstraction

2. Decomposition

3. Hierarchy

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38

B-27

What is this?

Page 20: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39B-28

What is this?

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40

What is this?

Page 21: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41

1. Abstraction

Inherent human limitation to deal with complexity

The 7 +- 2 phenomena

Chunking: Group collection of objects

Ignore unessential details: => Models

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42

Models are used to provide abstractions

System Model:Object Model: What is the structure of the system? What are theobjects and how are they related?

Functional model: What are the functions of the system? How is data flowing through the system?

Dynamic model: How does the system react to external events? Howis the event flow in the system ?

Task Model:PERT Chart: What are the dependencies between the tasks?

Schedule: How can this be done within the time limit?

Org Chart: What are the roles in the project or organization?

Issues Model:What are the open and closed issues? What constraints were posedby the client? What resolutions were made?

Page 22: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43

Interdependencies of the Models

System Model (Structure,

Functionality,

Dynamic Behavior)

Issue Model

(Proposals,

Arguments,

Resolutions)

Task Model

(Organization,

Activities

Schedule)

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44

The “Bermuda Triangle” of Modeling

System Models

Issue Model Task Models

PERT ChartGantt Chart

Org Chart

Constraints

Issues

Proposals

Arguments

Object Model

Functional

ModelDynamic Model

class...

class...

class...Code

Pro Con

Forward

Engineering

Reverse

Engineering

Page 23: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45

Model-based software Engineering:Code is a derivation of object model

Problem Statement : A stock exchange lists many companies. Each company is identified by a ticker symbol

public class StockExchange{

public Vector m_Company = new Vector();

};

public class Company

{

public int m_tickerSymbol

public Vector m_StockExchange = new Vector();

};

Implementation phase results in code

Analysis phase results in cbject model (UML Class Diagram):

StockExchange Company

tickerSymbolLists

**

A good software engineer writes as little code as possibleA good software engineer writes as little code as possible

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46

Example of an Issue: Galileo vs the Church

What is the center of the Universe?

Church: The earth is the center of the universe. Why? Aristotle says so.

Galileo: The sun is the center of the universe. Why? Copernicus says so. Also, the Jupiter’s moons rotate round Jupiter, not around Earth.

Page 24: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47

Issue-Modeling

Issue:

What is the

Center of the

Universe?

Proposal1:

The earth!

Proposal2:

The sun!

Pro:

Copernicus

says so.

Pro:

Aristotle

says so.

Pro:

Change will disturb

the people.

Con:

Jupiter’s moons rotate

around Jupiter, not

around Earth.

Resolution (1615):

The church

decides proposal 1

is right

Resolution (1998):

The church declares

proposal 1 was wrong

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48

Which decomposition is the right one?

2. Decomposition

A technique used to master complexity (“divide and conquer”)

Functional decomposition

The system is decomposed into modules

Each module is a major processing step (function) in the application domain

Modules can be decomposed into smaller modules

Object-oriented decomposition

The system is decomposed into classes (“objects”)

Each class is a major abstraction in the application domain

Classes can be decomposed into smaller classes

Page 25: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49

Functional Decomposition

Top Level functions

Level 1 functions

Level 2 functions

Machine Instructions

System

Function

Load R10 Add R1, R10

Read Input TransformProduce

Output

TransformProduce

OutputRead Input

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50

Functional Decomposition

Functionality is spread all over the system

Maintainer must understand the whole system to make a single change to the system

Consequence:

Codes are hard to understand

Code that is complex and impossible to maintain

User interface is often awkward and non-intuitive

Example: Microsoft Powerpoint’s Autoshapes

Page 26: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 51

Autoshape

Functional Decomposition: Autoshape

Draw

Rectangle

Draw

Oval

Draw

Circle

DrawChangeMouse

click

Change

Rectangle

Change

Oval

Change

Circle

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 52

What is This?

Page 27: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 53

Model of an Eskimo

EskimoSize

Dress()Smile()Sleep()

ShoeSize

ColorType

Wear()

*CoatSize

ColorType

Wear()

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 54

Iterative Modeling then leads to ....

EskimoSize

Dress()Smile()Sleep()

CaveLightingEnter()Leave()

lives in

but is it the right model?

Entrance*

OutsideTemperature

LightSeasonHunt()

Organize()

movesaround

WindholeDiameter

MainEntranceSize

Page 28: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 55

Alternative Model: The Head of an Indian

IndianHair

Dress()Smile()Sleep()

MouthNrOfTeethsSizeopen()speak()

*Ear

Sizelisten()

FaceNosesmile()close_eye()

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 56

Class Identification

Class identification is crucial to object-oriented modeling

Basic assumption:

1. We can find the classes for a new software system: We call this Greenfield Engineering

2. We can identify the classes in an existing system: We call this Reengineering

3. We can create a class-based interface to any system: We call this Interface Engineering

Why can we do this? Philosophy, science, experimental evidence

What are the limitations? Depending on the purpose of the system different objects might be found

How can we identify the purpose of a system?

Page 29: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 57

What is this Thing?

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 58

Modeling a Briefcase

BriefCase

Capacity: Integer

Weight: Integer

Open()

Close()

Carry()

Page 30: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 59

A new Use for a Briefcase

BriefCase

Capacity: Integer

Weight: Integer

Open()

Close()

Carry()

SitOnIt()

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 60

Questions

Why did we model the thing as “Briefcase”?

Why did we not model it as a chair?

What do we do if the SitOnIt() operation is the most frequently used operation?

The briefcase is only used for sitting on it. It is never opened nor closed.

Is it a “Chair”or a “Briefcase”?

How long shall we live with our modeling mistake?

Page 31: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 61

3. Hierarchy

We got abstractions and decomposition

This leads us to chunks (classes, objects) which we view with object model

Another way to deal with complexity is to provide simple relationships between the chunks

One of the most important relationships is hierarchy

2 important hierarchies

"Part of" hierarchy

"Is-kind-of" hierarchy

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 62

Part of Hierarchy

Computer

I/O Devices CPU Memory

Cache ALU Program

Counter

Page 32: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 63

Is-Kind-of Hierarchy (Taxonomy)

Cell

Muscle Cell Blood Cell Nerve Cell

Striate Smooth Red White Cortical Pyramidal

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 64

So where are we right now?

Three ways to deal with complexity:

Abstraction

Decomposition

Hierarchy

Object-oriented decomposition is a good methodology

Unfortunately, depending on the purpose of the system, different objects can be found

How can we do it right?

Many different possibilities

Our current approach: Start with a description of the functionality (Use case model), then proceed to the object model

This leads us to the software lifecycle

Page 33: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 65

Software Lifecycle Activities

Subsystems

Structured By

class...

class...

class...

SourceCode

Implemented

By

SolutionDomainObjects

Realized By

System

Design

Object

Design

Implemen-

tationTesting

ApplicationDomainObjects

Expressed in

Terms Of

Test Cases

?

Verified

By

class....?

Requirements

Elicitation

Use CaseModel

Analysis

...and their models

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 66

Software Lifecycle Definition

Software lifecycle:

Set of activities and their relationships to each other to support the development of a software system

Typical Lifecycle questions:

Which activities should I select for the software project?

What are the dependencies between activities?

How should I schedule the activities?

Page 34: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 67

Reusability

A good software design solves a specific problem but is general enough to address future problems (for example, changing requirements)

Experts do not solve every problem from first principles

They reuse solutions that have worked for them in the past

Goal for the software engineer:

Design the software to be reusable across application domains and designs

How?

Use design patterns and frameworks whenever possible

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 68

Design Patterns and Frameworks

Design Pattern:

A small set of classes that provide a template solution to a recurring design problem

Reusable design knowledge on a higher level than datastructures(link lists, binary trees, etc)

Framework:

A moderately large set of classes that collaborate to carry out a set of responsibilities in an application domain.

Examples: User Interface Builder

Provide architectural guidance during the design phase

Provide a foundation for software components industry

Page 35: Chapter 1: Introduction Object-Oriented Software Engineeringselab.hongik.ac.kr/show_data/education/F-ch01.pdf ·  · 2006-08-08Bernd Bruegge & Allen H. Dutoit Object-Oriented Software

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 69

Patterns are used by many people

Chess Master:

Openings

Middle games

End games

Writer

Tragically Flawed Hero (Macbeth, Hamlet)

Romantic Novel

User Manual

Architect

Office Building

Commercial Building

Private Home

Software Engineer

Composite Pattern: A collection of objects needs to be treated like a single object

Adapter Pattern (Wrapper): Interface to an existing system

Bridge Pattern: Interface to an existing system, but allow it to be extensible

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 70

Summary

Software engineering is a problem solving activity Developing quality software for a complex problem within a limited time while things are changing

There are many ways to deal with complexityModeling, decomposition, abstraction, hierarchy

Issue models: Show the negotiation aspects

System models: Show the technical aspects

Task models: Show the project management aspects

Use Patterns: Reduce complexity even further

Many ways to do deal with changeTailor the software lifecycle to deal with changing project conditions

Use a nonlinear software lifecycle to deal with changing requirements or changing technology

Provide configuration management to deal with changing entities