Top Banner
Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004
29

Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Dec 14, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Software EngineeringImplementation

Lecture 3

ASPI8-4

Anders P. Ravn, Feb 2004

Page 2: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Overview• Summary – Documents, Domains

• Module Specification - Java1. Class, object (variable)

2. Generalization

3. Association

4. Dependency

5. Interface

6. Package

7. Active Class Task (thread)

Page 3: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Documents -51.1. Requirements SpecificationRequirements Specification

1.1 System Definition1.1 System Definition

1.2 Problem Domain Structure1.2 Problem Domain Structure

1.3 Application Domain Structure

1.3.1 Use Cases

1.3.2 Functions

1.3.3 Interfaces

1.4 Acceptance Test Specification

2. Architecture

2.1 Criteria

2.X Module Interfaces

2.T Integration Test Specification

Page 4: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Documents -6!

1. Requirements Specification

2. Architecture

3. Modules

4. Implementation

5. Test

Page 5: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Activities: application domain analysis

Usage

Functions

Systemdefinition

and ProblemDomainmodels

Interfaces

ApplicationDomainModel

andSoftware

Requirements

Page 6: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Design

Problem Domain Application Domain

Model

Model*

Use case Actor

InterfaceSystem

Page 7: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Class and Object

Class name

attributes

methods

Object: Class

1 *

Page 8: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java class class C {

public boolean b;

protected char c;

private byte i8; C cl;

public int method(int x, C y)

{if (b) return y.method(7,c1);

else return i8; }

public C(long count)

{if (count > 0)

c1=new C(count-1); }

}

Page 9: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java variables/objects

boolean b;

character c;

byte i8; short i16; int i32; long i64;

float ieee32f; double ieee64f;

C xx = new C(5);

int[] ia = new int[250];

C[] ca = new C[10];

ca[0] = new C(ia[249]);

Page 10: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java class class C {

public boolean b;

protected char c;

private byte i8; C cl;

public C(long count)

{if (count > 0)

c1=new C(count-1); }

public int method(int x, C y)

{if (b) return y.method(7,c1);

else return i8; }

}

Page 11: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Moduleclass M {

public bool b; ...

public int method(int x, C y)

{if(b)return ...;}

public M(boolean b)

{ super(); this.b = b;}

public M() {this(false);}

}; ...

M module1= new M(true), module2= new M();

Page 12: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Module Specification

abstract class MSpec {

public boolean b;

abstract int method(int x, C y);

}

Page 13: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Module Implementationclass M extends Mspec {

private byte i8; int i16; ...

public int method(int x, C y)

{if(b)return ...;}

public M(boolean b)

{ super(); this.b = b;}

public M() {this(false);}

};...

M module1= new M(true), module2= new M();

Page 14: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Generalization

Superclass

Subclass

Page 15: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java extends

class superclass {

...

};

class subclass extends superclass {

...

}

Page 16: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Cluster (package)

related classes

<<cluster>> name

Page 17: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java package

package driverspec; source1

abstract class DSpec{ ... };

...

source2

package drivers

import driverspec.*;

public class D extends DSpec {...};

...

Page 18: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Aggregation

the whole

the parts

[arity]

Page 19: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

aggregation – by inclusionabstract class WholeSpec {

protected P1 p1; P2 p2;

Ps[] p;

};

...

class Whole extends WholeSpec {

public Whole(int p_arity)

{p1= new P1(); p2= new P2();

p = new Ps[p_arity]; ...}

}

Page 20: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

aggregation – by referenceabstract class WholeSpec {

protected P1 p1; P2 p2;

Ps[] p;

};

...

class Whole extends WholeSpec {

public Whole(P1 p1, P2 p2, Ps[] p)

{this.p1= p1; this.p2= p2;

p = new Ps[p.length]; ...}

}

Page 21: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Association

[name]A B

[arity] [arity]

Page 22: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

association – by referenceclass ASpec {

protected B b;

};...

class A extends ASpec {

public A(B b) {this.b = b;}

public void setb(B b) {this.b = b;}

}...

A a; B b;

a = new A(nil); b = new B(a); a.setb(b);

Page 23: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Interface Class and Dependency

IRow

Image Hydraulics

use

<<interface>>IRow

userealise

Page 24: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Java interface

interface IRow {

// methods only !

}

class Image implements IRow {

...

}

IRow

Image

realize

Page 25: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Start and Parameters

class System {

public static final int MAX = 10;

public static int ACTUAL;

public static void main(String[] args)

{ int a = Integer.parseInt(args[0]);

if (a > MAX || a < 0) a = MAX;

ACTUAL = a;}

}

Page 26: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Exceptions

class BadData extends Exception {

BadData(String s)

{super(”Bad data”+s+”\n”);}

};

class Reader {

public void read(Data d) throws BadData

{ ... throw new BadData(”!!!”); ...}

}

Page 27: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Exception Handlers

public void someMethod()

{ Data x;

Reader r = new Reader();

try { r.read(x); ...

} catch (BadData b) { ...

...

} finally { ... }

}

Page 28: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

Maintaining Documentation

• Documentation comments

• Libraries

• Module test

• Applets

• API, Swing

Page 29: Software Engineering Implementation Lecture 3 ASPI8-4 Anders P. Ravn, Feb 2004.

C++ class C {

public boolean b;

protected char c;

private byte i8; C *cl;

public C(long count)

{if (count > 0)

c1=new C(count-1); }

public int method(int x, C *y)

{if (b) return y->method(7,c1);

else return i8; }

}