CS 5150 So(ware Engineering 16. Models for Program Design William - - PowerPoint PPT Presentation

cs 5150 so ware engineering 16 models for program design
SMART_READER_LITE
LIVE PREVIEW

CS 5150 So(ware Engineering 16. Models for Program Design William - - PowerPoint PPT Presentation

Cornell University Compu1ng and Informa1on Science CS 5150 So(ware Engineering 16. Models for Program Design William Y. Arms Approaches to Program Development Heavyweight approach Program design and coding are separate. The design uses class


slide-1
SLIDE 1

Cornell University Compu1ng and Informa1on Science

CS 5150 So(ware Engineering

  • 16. Models for Program Design

William Y. Arms

slide-2
SLIDE 2

Approaches to Program Development

Heavyweight approach Program design and coding are separate. The design uses class models and other models to specify the program in detail, before beginning to code. UML is a good modeling language for this purpose. Lightweight approach The program design and coding are interwoven. The development is iteraJve, using an Integrated development environment (IDE). Mixed approach Outline design is created using models, with details worked out iteraJvely during coding.

slide-3
SLIDE 3

Program Design

The task of program design is to represent the so(ware architecture in a form that can be implemented as one or more executable programs. Given a system architecture, the program design specifies:

  • programs, components, packages, classes, class hierarchies, etc.
  • interfaces, protocols (where not part of the system architecture)
  • algorithms, data structures, security mechanisms, operaJonal

procedures

slide-4
SLIDE 4

UML Models

UML models (diagrams and specifica1ons) can be used for almost all aspects of program design.

  • Diagrams give a general overview of the design, showing the principal

elements and how they relate to each other.

  • Specifica1ons provide details about each element of the design.

In heavyweight so(ware development processes, the specificaJons should have sufficient detail that they can be used to write code from. The goal is to complete the enJre specificaJon before coding begins.

slide-5
SLIDE 5

UML Models

Models used mainly for requirements

  • Use case diagram shows a set of use cases and actors, and their

relaJonships. Models used mainly for systems architecture

  • Component diagram shows the organizaJon and dependencies among

a set of components.

  • Deployment diagram shows the configuraJon of processing nodes and

the components that live on them. Models used mainly for program design

  • Class diagram shows a set of classes, interfaces, and collaboraJons

with their relaJonships.

  • Object diagram or sequence diagram show a set of objects and their

relaJonships.

slide-6
SLIDE 6

Class Diagram

Window

  • rigin

size

  • pen()

close() move() display() name a&ributes [local, instance, and class (sta5c) variables] methods responsibili5es [op5onal text] A class is a descripJon of a set of objects that share the same aYributes, methods, relaJonships, and semanJcs. Note on terminology. This course uses the term methods for the

  • peraJons that a class supports. UML uses the less familiar term
  • peraJons for this purpose.
slide-7
SLIDE 7

The "Hello, World!" Applet

import java.awt.Graphics; class HelloWorld extends java.applet.Applet { public void paint (Graphics g) { g.drawString ("Hello, World!", 10, 20); } } Example from: BRJ

slide-8
SLIDE 8

The HelloWorld Class

HelloWorld paint() class name methods

slide-9
SLIDE 9

The HelloWorld Class

HelloWorld paint() g.drawString ("HelloWorld", 10, 20) class name methods

  • p5onal annota5on
slide-10
SLIDE 10

NotaJon: RelaJonships

A generaliza1on is a relaJonship is which objects of the specialized element (child) are subsJtutable for objects of the generalized element (parent). child parent A realiza1on is a semanJc relaJonship between classifiers, wherein one classifier specifies a contract that another classifier guarantees to carry out. A dependency is a semanJc relaJonship between two things in which a change to one may effect the semanJcs of the other.

slide-11
SLIDE 11

The HelloWorld Class

Applet HelloWorld paint() Graphics generaliza5on dependency Note that the Applet and Graphics classes are shown elided, i.e., just the name is shown, not the aYributes or

  • peraJons.
slide-12
SLIDE 12

NotaJon: AssociaJon

0..1 * employer employee An associa1on is a structural relaJonship that describes a set of links, a link being a connecJon among objects.

slide-13
SLIDE 13

AssociaJon

ParkingLot ParkingSpace locaJon is_available() 1 1 ... *

slide-14
SLIDE 14

RaJonal Rose: A Typical Class Diagram

slide-15
SLIDE 15

RaJonal Rose: SpecificaJon Fields

slide-16
SLIDE 16

Deciding which Classes to Use

Given a real-life system, how do you decide what classes to use? Step 1. IdenJfy a set of candidate classes that represent the system design.

  • What terms do the users and implementers use to describe the system?

These terms are candidates for classes.

  • Is each candidate class crisply defined?
  • For each class, what is its set of responsibiliJes? Are the responsibiliJes

evenly balanced among the classes?

  • What aYributes and methods does each class need to carry out its

responsibiliJes?

slide-17
SLIDE 17

Deciding which Classes to Use

Step 2. Modify the set of classes Goals:

  • Improve the clarity of the design

If the purpose of each class is clear, with easily understood methods and relaJonships, developers are likely to write simple code, which future maintainers can understand and modify.

  • Increase coherence within classes, and lower coupling between classes.

Aim for high cohesion within classes and weak coupling between them.

slide-18
SLIDE 18

ApplicaJon Classes and SoluJon Classes

A good design is o(en a combinaJon of applicaJon classes and soluJon classes.

  • Applica1on classes represent applicaJon concepts.

Noun idenJficaJon is an effecJve technique to generate candidate applicaJon classes.

  • Solu1on classes represent system concepts, e.g., user interface
  • bjects, databases, etc.
slide-19
SLIDE 19

Noun IdenJficaJon: a Library Example

The library contains books and journals. It may have several copies of a given book. Some of the books are reserved for short-term loans only. All

  • thers may be borrowed by any library member for three weeks.

Members of the library can normally borrow up to six items at a 5me, but members of staff may borrow up to 12 items at one 5me. Only members

  • f staff may borrow journals.

The system must keep track of when books and journals are borrowed and returned, and enforce the rules.

slide-20
SLIDE 20

Noun IdenJficaJon: a Library Example

The library contains books and journals. It may have several copies of a given book. Some of the books are reserved for short-term loans only. All

  • thers may be borrowed by any library member for three weeks.

Members of the library can normally borrow up to six items at a 5me, but members of staff may borrow up to 12 items at one 5me. Only members

  • f staff may borrow journals.

The system must keep track of when books and journals are borrowed and returned, and enforce the rules.

slide-21
SLIDE 21

Candidate Classes

Noun Comments Candidate Library the name of the system no Book yes Journal yes Copy yes ShortTermLoan event no (?) LibraryMember yes Week measure no MemberOfLibrary repeat of LibraryMember no Item book or journal yes (?) Time abstract term no MemberOfStaff yes System general term no Rule general term no

slide-22
SLIDE 22

RelaJons between Classes

Book is an Item Journal is an Item Copy is a copy of a Book LibraryMember Item MemberOfStaff is a LibraryMember Is Item needed?

slide-23
SLIDE 23

Methods

LibraryMember borrows Copy LibraryMember returns Copy MemberOfStaff borrows Journal MemberOfStaff returns Journal Item not needed yet.

slide-24
SLIDE 24

A Possible Class Diagram

MemberOfStaff Book Journal is a copy of

1..* 1

LibraryMember 1 0..* 0..12 1

  • n loan
  • n loan

Copy

slide-25
SLIDE 25

From Candidate Classes to Completed Design

Methods used to move to final design Reuse: Wherever possible use exisJng components, or class libraries. They may need extensions. Restructuring: Change the design to improve understandability, maintainability,

  • etc. Techniques include merging similar classes, splijng complex classes, etc.

OpJmizaJon: Ensure that the system meets anJcipated performance requirements, e.g., by changed algorithms or restructuring. CompleJon: Fill all gaps, specify interfaces, etc. Design is iteraJve As the process moves from preliminary design to specificaJon, implementaJon, and tesJng it is common to find weaknesses in the program

  • design. Be prepared to make major modificaJons.
slide-26
SLIDE 26

Modeling Dynamic Aspects of Systems

Interac1on diagram: shows set of objects and their relaJonships including messages that may be dispatched among them.

  • Sequence diagrams: Jme ordering of messages
slide-27
SLIDE 27

InteracJon: Informal Bouncing Ball Diagrams

Example: execuJon of an HTTP get command, e.g., hYp://www.cs.cornell.edu/ Client Servers domain name service TCP connecJon HTTP get

slide-28
SLIDE 28

UML NotaJon for Classes and Objects

Classes Objects AnyClass aYribute1 aYribute2 method1() method2() AnyClass

  • r

anObject:AnyClass :AnyClass anObject The names of objects are underlined.

  • r
  • r
slide-29
SLIDE 29

NotaJon: InteracJon

display An interac1on is a behavior that comprises a set of messages exchanged among a set of objects within a parJcular context to accomplish a specific purpose.

slide-30
SLIDE 30

AcJons on Objects

call return send create object destroy object returnCopy(c)

  • kToBorrow()

local status noJfyReturn(b) asynchronous signal <<create>> <<destroy>> stereotypes

slide-31
SLIDE 31

Sequence Diagram: Borrow Copy of a Book

BookBorrower libMem: LibraryMember theCopy:Copy theBook:Book borrow(theCopy)

  • kToBorrow

borrow borrow In a sequence diagram, 5me runs downwards

slide-32
SLIDE 32

Sequence Diagram: Change in Cornell Program

Cornellian

:MEngStudent

1 : getName() sequence numbers added to messages :PhDStudent 1.1 : name 2: <<create>> PhDStudent(name) 3: <<destroy>>

slide-33
SLIDE 33

Sequence Diagram: PainJng Mechanism

:Thread :Toolkit :ComponentPeer target:HelloWorld run run callbackLoop handleExpose paint

slide-34
SLIDE 34

Cornell University Compu1ng and Informa1on Science

CS 5150 So(ware Engineering

  • 16. Models for Program Design

End of Lecture