41
My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Embed Size (px)

Citation preview

Page 1: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

My First Jasmineii Project

eBusiness Solutions in Internet Time

Session Code: JG065SN

Page 2: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Abstract

This session features an honest look at the successes and lessons learned during the development process of our first Jasmine ii application. This session covers scheduling, cost estimation, UI language choices, development tools, data model growth, ODQL issues, and other relevant topics.This session provides an opportunity for developers and managers to learn form our experience, while also providing an opportunity for exchange on some of the real-world issues that arose during application development on a new platform.

Page 3: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Biography

Bill CrossVW International, Inc.

Bill Cross is a Senior Functional Analyst and Health Facility Planner for VW International, Inc.

As part of a career in medical facility design, Bill has acquired skills in dBase, Clipper (8 years), dbFast, and CA-Visual Objects (5 years) and has been following Jasmine since its prerelease stage.

Page 4: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Topics of Discussion

Project DescriptionBeginning

Requirements Approach

Lessons GUI Modeling Jasmine ii Observations and Tips Schedule

Summary

Page 5: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Project Description

PrototypeManage information from master planning

for medical facilitiesData included CAD files, photos,

narrative, medical workloadSupport future decision support processingUser uncertain of real desires

Page 6: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

How It Began

Scope ($) set more by available funding rather than requirements

Purpose stated as capturing and storing information for future use

Firm fixed price contract method with good client relationship

Personal experience in functional needs

Page 7: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Requirements

Adaptability to future analytical use was critical User was continually reengineering their

processes and the information being stored

Stable physical structure relationships, but also flexible (reengineered) organizational relationships

Give the client a scalable data repository to build on

Page 8: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Approach

Decision to model utilizing objects “Objects are the enabling technology for

adaptive business systems.” Taylor 1998 Control impact of changes (encapsulation) Closer fit to real world

Jasmine ii Pureness (minimize translation effort) Computational capability

LAN now but future move to intranet

Page 9: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Team Methodology

Functional analyst and modeler Development team for Java GUI and ODQL

(located remotely)Brainstorm kick-off session with:

Client principal users Master planning contractors (data

creators) Other subject matter experts

Periodic reviews

Page 10: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

GUI Lessons

Page 11: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Design Approach

Jasmine ii Business logic Data storage

GUI User interface only Minimal business logic

Page 12: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

User Interface - Java

Jasmine Object Database

App Shell

Printing

Charting

Data Storage

Client File Access

Object Creation Wizards

Java Proxy Objects

Business Logic

Explorer Navigation

Data Entry / Edit

Whip Drawings

Red arrows indicate write only, yellow indicates read & write, and thick black arrows indicate read only. Thin black lines indicate ability to call a sub-system with point indicating who was called.

Red shapes indicate data creation capability. Others are read access. Blue shapes indicate accessing local (client) systems.

Page 13: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

GUI Decisions

Considered several issues: Compatibility with Jasmine ii Future intent to move to Internet Flexibility in development Availability of programmers

Considered: Jasmine (v1.2), CA-Visual Objects (v2.0) Java, C++

Page 14: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

GUI Decision (Then and Now)

Java selected then Java proxy (TDI)

Today would choose CA-Visual Objects 2.5 as front-end tool Better framework for development Faster performance Strong(er?) Jasmine ii support COM support for plug-ins

Page 15: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Implications on Design

Maximum extent of business logic residing in Jasmine ii

GUI would have minimal business logic (and would reside on client machines)

Pick lists reside in Jasmine ii not in GUI Retrieval methods used a unique serial number

attribute GUI fetches collection of strings with serial

number at end Based on user choice, serial number is used to

fetch the object

Page 16: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Modeling Lessons

f loor

FloorNumber : StringOwningObject : buildingFloorToFloorHeight : DecimalZones : SetOf Object(spaceZone)Components : SetOf Object(roomAbstract)WorkSpaces : SetOf Object(spaceWrapper)Analy ses : SetOf Object(f loorAnaly sis)EngrFloorSy stems : SetOf Object(engrSy sFloor)

f loorSummary () : StringdepartmentFloorPlan(cDepartment : String) : areaCADPlanaddWorkSpace() : Booleanremov eWorkSpace() : BooleangetWorkSpace() : spaceWrapperf loorNumber() : Stringf loorToFloorHeight() : DecimaladdZone() : Booleanremov eZone() : BooleangetZone() : spaceZone

(from Floor Package)

PHYSICAL BUILDING PACKAGE

Want to hav e ability to input only top lev el numbers AND to input detail components and hav e things rolled up to top lev el.

Figure 13

SpaceAreaPackage

(f rom Phy sicalBuildingPackage)

HFPABaseObject

Alternativ es : SetOf Object(HFPABaseObject)Donor : HFPABaseObjectEntity Statuses : SetOf Object(entity Status)

currentEntity Status() : StringisExisting() : BooleancreateAlternativ e() : HFPABaseObjectcurrentEntity StatusObject() : entity Statusdonor() : HFPABaseObjectaddAlternativ e() : BooleangetAlternativ e() : HFPABaseObjectalternativ eList() : SetOf Stringremov eAlternativ e() : Boolean

(from BaseClasses Package)

spatialAssessment

Assessments : SetOf Object(analy sisAbstractClass)

addAssessment() : BooleangetAssessment() : analy sisAbstractClassassessmentList() : SetOf Stringremov eAssessment() : Boolean

(from Assessment Package)

spatialAnaly sis

Assessments : SetOf Object(spatialAssessment)

addAssessment()

(from Assessment Package)

phy sicalSpatialItem

WidthDimension : DecimalDepthDimension : DecimalHeightDimension : DecimalGSF : IntegerCADPlanSet : setOf CADProjects : SetOf Object(project)SolutionText : StringForceNSF : IntegerAnaly ses : SetOf Object(spatialAnaly sis)Assessments : SetOf Object(spatialAssessment)ConceptNarrativ e : String

calculateGSF() : Integergsf (iGSFValue : Integer) : IntegersolutionText() : StringaddProject() : Booleanremov eProject() : Booleanf indProjects() : SetOf Object(project)f indOngoingProjects() : SetOf Object(project)hasActiv eProjects() : BooleanprojectList() : SetOf StringdrawingList() : SetOf Stringgsf PerPerson() : Decimalnsf PerPerson() : DecimalcountOccupants() : Integerf orceNSF() : Integerdef aultCADPlan() : cadPlanDwforganizationList() : SetOf StringbuildingName() : StringdepartmentList() : SetOf StringaddAnaly sis() : BooleangetAnaly sis() : spatialAnaly sisremov eAnaly sis() : BooleanengineeringSummary () : StringarchitecturalSummary () : StringcalculateNSF() : Integernsf () : IntegerconceptNarrativ e() : Stringremov eAssessment() : BooleangetAssessment() : spatialAssessmentaddAssessment() : BooleanassessmentList() : SetOf Stringanaly sesList() : SetOf StringoccupantCapability () : IntegercountRooms() : IntegergetProject() : project

(from SpaceAreaPackage)

baseSerial

$ LastKey ID : StringKey ID : String

nextKey ID()key ID()newObject()getObject()getDisplay List()display Name()addAssignment()

(from BaseClasses Package)buildingSite

Installation : installationBuildings : SetOf Object(building)PlanSet : setOf CADSy stemEngrSite : engrSy sSiteOrgOwner : organizationalParty

buildingList() : SetOf Stringinstallation() : installationaddBuilding(newBuildings : building) : BooleangetBuilding(getBuildings : building) : buildingremov eBuilding(remov eBuildings : building) : BooleanplanSet() : setOf CADsy stemEngrSite(newSy stem : engrSy sSite) : engrSy sSiteorgOwner() : organizationalParty

(from SiteRelatedPackage)

category Code

Category Code : StringCategory Label : String

category Code() : Stringcategory Label() : String

buildingAnaly sis

Architectural : StringInf rastructure : StringSite : StringOv erall : StringOwningObject : buildingPicture : mediaCF::Bitmap

buildingProf ile

Summary : StringOwningObject : building

engrSy sBuilding

OwningObject : building

owningObject()

(from engineeringBuilding

building

YearBuilt : IntegerFunctionalUse : StringUsingOrganizations : SetOf Object(organizationalParty )PrincipalOrganization : organizationalPartyTotalOccupants : IntegerOrigCost : f y PriceQuoteComponents : SetOf Object(f loor)OwningObject : installationEngineeringSy stem : engrSy sBuildingAnaly ses : SetOf Object(buildingAnaly sis)BuildingProf ile : buildingProf ileBuildingSite : SetOf Object(buildingSite)Category Code : category CodeBOD : DateFOD : DateBuildingNumber : String

calcComponents(test1 : building, test2 : f loor) : BooleanbuildingAnaly sisReport() : StringreplacementCost() : IntegercalcNSFServ ice() : Integergsf Av gAge() : Integery earBuilt() : Integerf unctionalUse() : StringprincipalOrganization() : organizationalPartytotalOccupants() : IntegerorigCost() : f y PriceQuotebuildingProf ile() : buildingProf ilebuildingSite() : buildingSitecategory Code() : category CodeaddUsingOrganization() : Booleanremov eUsingOrganization() : BooleangetUsingOrganization() : organizationalPartygetAnaly sis() : buildingAnaly sisusingOrganizationList() : SetOf StringengineeringSy stems() : engrSy sBuildingconditionRating() : DecimalconditionStatus() : StringconditionIcon() : mediaCF::BitmapbuildingNumber() : String

Page 17: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Modeling Design Tools

Object International’s Playground (free) with Coad’s book (OOA)

Moved to Rational Rose 98iLooked at TogetherJ (www.oi.com) Used Visio for designing screensWord for documentation (Cut and paste)

Page 18: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Playground Model

Page 19: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Rose Model (Colored)

f loor

FloorNumber : StringOwningObject : buildingFloorToFloorHeight : DecimalZones : SetOf Object(spaceZone)Components : SetOf Object(roomAbstract)WorkSpaces : SetOf Object(spaceWrapper)Analy ses : SetOf Object(f loorAnaly sis)EngrFloorSy stems : SetOf Object(engrSy sFloor)

f loorSummary () : StringdepartmentFloorPlan(cDepartment : String) : areaCADPlanaddWorkSpace() : Booleanremov eWorkSpace() : BooleangetWorkSpace() : spaceWrapperf loorNumber() : Stringf loorToFloorHeight() : DecimaladdZone() : Booleanremov eZone() : BooleangetZone() : spaceZone

(from Floor Package)

PHYSICAL BUILDING PACKAGE

Want to hav e ability to input only top lev el numbers AND to input detail components and hav e things rolled up to top lev el.

Figure 13

SpaceAreaPackage

(f rom Phy sicalBuildingPackage)

HFPABaseObject

Alternativ es : SetOf Object(HFPABaseObject)Donor : HFPABaseObjectEntity Statuses : SetOf Object(entity Status)

currentEntity Status() : StringisExisting() : BooleancreateAlternativ e() : HFPABaseObjectcurrentEntity StatusObject() : entity Statusdonor() : HFPABaseObjectaddAlternativ e() : BooleangetAlternativ e() : HFPABaseObjectalternativ eList() : SetOf Stringremov eAlternativ e() : Boolean

(from BaseClasses Package)

spatialAssessment

Assessments : SetOf Object(analy sisAbstractClass)

addAssessment() : BooleangetAssessment() : analy sisAbstractClassassessmentList() : SetOf Stringremov eAssessment() : Boolean

(from Assessment Package)

spatialAnaly sis

Assessments : SetOf Object(spatialAssessment)

addAssessment()

(from Assessment Package)

phy sicalSpatialItem

WidthDimension : DecimalDepthDimension : DecimalHeightDimension : DecimalGSF : IntegerCADPlanSet : setOf CADProjects : SetOf Object(project)SolutionText : StringForceNSF : IntegerAnaly ses : SetOf Object(spatialAnaly sis)Assessments : SetOf Object(spatialAssessment)ConceptNarrativ e : String

calculateGSF() : Integergsf (iGSFValue : Integer) : IntegersolutionText() : StringaddProject() : Booleanremov eProject() : Booleanf indProjects() : SetOf Object(project)f indOngoingProjects() : SetOf Object(project)hasActiv eProjects() : BooleanprojectList() : SetOf StringdrawingList() : SetOf Stringgsf PerPerson() : Decimalnsf PerPerson() : DecimalcountOccupants() : Integerf orceNSF() : Integerdef aultCADPlan() : cadPlanDwforganizationList() : SetOf StringbuildingName() : StringdepartmentList() : SetOf StringaddAnaly sis() : BooleangetAnaly sis() : spatialAnaly sisremov eAnaly sis() : BooleanengineeringSummary () : StringarchitecturalSummary () : StringcalculateNSF() : Integernsf () : IntegerconceptNarrativ e() : Stringremov eAssessment() : BooleangetAssessment() : spatialAssessmentaddAssessment() : BooleanassessmentList() : SetOf Stringanaly sesList() : SetOf StringoccupantCapability () : IntegercountRooms() : IntegergetProject() : project

(from SpaceAreaPackage)

baseSerial

$ LastKey ID : StringKey ID : String

nextKey ID()key ID()newObject()getObject()getDisplay List()display Name()addAssignment()

(from BaseClasses Package)buildingSite

Installation : installationBuildings : SetOf Object(building)PlanSet : setOf CADSy stemEngrSite : engrSy sSiteOrgOwner : organizationalParty

buildingList() : SetOf Stringinstallation() : installationaddBuilding(newBuildings : building) : BooleangetBuilding(getBuildings : building) : buildingremov eBuilding(remov eBuildings : building) : BooleanplanSet() : setOf CADsy stemEngrSite(newSy stem : engrSy sSite) : engrSy sSiteorgOwner() : organizationalParty

(from SiteRelatedPackage)

category Code

Category Code : StringCategory Label : String

category Code() : Stringcategory Label() : String

buildingAnaly sis

Architectural : StringInf rastructure : StringSite : StringOv erall : StringOwningObject : buildingPicture : mediaCF::Bitmap

buildingProf ile

Summary : StringOwningObject : building

engrSy sBuilding

OwningObject : building

owningObject()

(from engineeringBuilding

building

YearBuilt : IntegerFunctionalUse : StringUsingOrganizations : SetOf Object(organizationalParty )PrincipalOrganization : organizationalPartyTotalOccupants : IntegerOrigCost : f y PriceQuoteComponents : SetOf Object(f loor)OwningObject : installationEngineeringSy stem : engrSy sBuildingAnaly ses : SetOf Object(buildingAnaly sis)BuildingProf ile : buildingProf ileBuildingSite : SetOf Object(buildingSite)Category Code : category CodeBOD : DateFOD : DateBuildingNumber : String

calcComponents(test1 : building, test2 : f loor) : BooleanbuildingAnaly sisReport() : StringreplacementCost() : IntegercalcNSFServ ice() : Integergsf Av gAge() : Integery earBuilt() : Integerf unctionalUse() : StringprincipalOrganization() : organizationalPartytotalOccupants() : IntegerorigCost() : f y PriceQuotebuildingProf ile() : buildingProf ilebuildingSite() : buildingSitecategory Code() : category CodeaddUsingOrganization() : Booleanremov eUsingOrganization() : BooleangetUsingOrganization() : organizationalPartygetAnaly sis() : buildingAnaly sisusingOrganizationList() : SetOf StringengineeringSy stems() : engrSy sBuildingconditionRating() : DecimalconditionStatus() : StringconditionIcon() : mediaCF::BitmapbuildingNumber() : String

Page 20: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Tool Lessons (Modeling)

Playground good for learning basic object concepts (quick to make small designs)

Rose worked well… VB script provides extensibility Web publisher supports communication Generating hardcopy can be frustrating

Version control between Rose models can be difficult Rose includes visual differencing tool

Page 21: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Tool Lessons (screens)

Visio worked well… Tip - Use the layer capability in Visio if creating

windows with tabs. Able to do all aspects of design (include

pasting sample pictures) Cut and paste into Word presented no

surprises!A better method may have been to use

same screen design tool used by the Java developers

Page 22: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Unload and Load

Use of Excel to rapidly create test data for Load & Unload into Jasmine ii

Formatting tips: OIDs are bracketed < > Characters are in quotes “” Date is: date “1999-12-31-AD” Reference is:

<ClassFamily::ClassName::OID>> Collection is: { <object ref>, <object ref>, … } Boolean: FALSE or TRUE NIL

Page 23: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Excel Layout

Table 1: Excel spreadsheet showing creation of data for pasting into unload file

oid KeyID MEPRSRefCode DMISID RefOID DMIS OID<1025> 1 <VWIrose::meprsRefCode::1025> <VWIrose::dmisid::1733> 1025 1733<1026> 2 <VWIrose::meprsRefCode::1028> <VWIrose::dmisid::1733> 1028 1733

Table 2: Same excel file as above but showing the formulas for building the data

oid KeyID MEPRSRefCode DMISID RefOID DMIS OID"<"&TEXT(B101+1024,0)&">"

1 "<VWIrose::meprsRefCode::"&G101&">"

"<VWIrose::dmisid::"&H101&">"

1025 1733

"<"&TEXT(B102+1024,0)&">"

2 "<VWIrose::meprsRefCode::"&G102&">"

"<VWIrose::dmisid::"&H102&">"

1028 1733

Page 24: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Unload File Tip

When pasting data into the file be sure to edit the number of records

Jasmine/unload_format_1.0.0"VWIrose","startFYTimePoint",4,1,0,0,0,0,120,"====== CLASS startFYTimePoint ==== fromTimeReference Package =====""VWIrose","timerClass""oid","DateTP","TimeTP"<1025>,date"1900-10-1-AD","00:00:00"<1026>,date"1901-10-1-AD","00:00:00"

Figure 1: Sample of unload output for textual data

Page 25: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Unload Sequence

Create sample object in Jasmine studioPerform unload of interested and referenced

classes with -s and -d flagsMimic the attribute layout in Excel using

extra columns to easily reference specific OIDs

Always start with OID <1025>Copy layout to another worksheet and

export that to a CSV (comma delimited) file.

Page 26: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Sequence continued...

Cut and paste from the CSV into the unload file, being sure to edit the number of records.

Delete the classes from within Jasmine studio

Perform load using the -d and -s flagsCheck

Page 27: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Schedule

Originally 261 calendar days Requirements Development - OOA Architecture - OOD Stage 1 thru 3

– Database entry screens– Output and Analysis– Data load

Product release

Page 28: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Revised Schedule

Revised to 349 calendar days Requirements Development Iterations #1 - 5 covering different subject

areas– Analysis and design fell behind– Iterations allowed design and coding to

overlap Number of iterations reduced to 3 Data load and Installation

Page 29: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Schedule Comparisons

Task Original LatestOOA 9 daysOOD 28 days 13 monthsScreen Design 17 days 2 monthsScreen Coding 8 days 520 hoursODQL 24 days 700 hoursData –Deployment

39 days ?

Page 30: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Scheduling Tools

Resource: Steve McConnell’s book and

www.Construx.com/survivalguide MS Project templates for

development

Page 31: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Schedule Lessons

Schedule too optimisticModeling is slow (took over 15 months).

Estimated to be about 85% completeBrainstorm session allowed for total of 4

days over 2 separate weeks. Recommend 5 days each.

Modeling team was remote from programmers. Not sufficient allowance for communication of concepts (either through documentation and/or meetings).

Page 32: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Management Lessons

Regardless of any subject matter knowledge, client/user involvement and commitment must be secured.

Cost estimate was too optimistic (even for a prototype). Requirements development should be executed separately based upon a time+ method.

Final estimate was $350,000 versus original of $125,000 ($70.00 hourly rates).

Page 33: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Session Summary

Object modeling presents numerous advantages

However, performing the analysis and design requires extended effort before coding begins

Capable tools are critical to successVisual Objects v2.5 has some definite

development advantages over Java

Page 34: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Tools

Playground. Object International, Inc. (Object modeling tool -free as a learning tool) www.OI.com

Rational Rose 98i, Rational Inc. , UML Modeler ~$2,000, www.rational.com

Rational Integration Kit, CA, On the Jasmine ii Beta CD, www.cai.com

ODQL Cleaner, Cleans the ODQL generated by the integration kit so it will compile in Jasmine (truncates the description text) (Visual Objects app. free), www.Hungry-Hippo.com

Jasmine Comparer, Compares two Jasmine models (loaded as separate class families) and prints exception report (Visual Objects app. free), www.Hungry-Hippo.com

Page 35: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Tools continued . . .

Jasmine Workbench, Infopike Inc., GUI utility for CODQLIE, library and class family management (free on partner CD of Jasmine) www.Infopike.com

Software Cost Estimator, (free) www.Construx.com Would Have Liked

Requisite Pro, Rational Inc., Requirements documentation manager, $$$, www.rational.com

Version control for ODQL (via internet)

Page 36: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN
Page 37: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Bibliography

Object Models Strategies, Patterns, & Applications, 1997 Coad, Peter ISBN 0-13-840117-9

Object Technology, A Manager’s Guide, 1998, Taylor, David ISBN 0-201-30994-7

Business Engineering with Object Technology, 1995, Taylor, David ISBN 0-471-04521-7

Software Project Survival Guide. 1998. McConnell, Steve ISBN 1-57231-621-7

The Rational Unified Process, An Introduction. 1999 Kruchten, Philippe ISBN 0-201-60459-0

Page 38: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Bibliography continued . . .

The Jasmine Object Database, 1999, Khoshafian, Setrag ISBN 1-55860-494-4

Visual Modeling with Rational Rose and UML. 1998. Quatrani, Terry ISBN 0-201-31016-3

UML Distilled, 1997, Fowler, Martin ISBN 0-201-32563-2 Analysis Patterns Reusable Object Models, 1997, Fowler,

Martin ISBN 0-201-89542-0 Dynamics of Software Development, 1995, McCarthy, Jim

ISBN 1-55615-823-8

Page 39: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Bibliography continued . . .

Object-Oriented Modeling and Design for Database Applications. 1998. Blaha, Michael ISBN 0-13-123829-9

The Data Model Resource Book, 1997, Silverston, Len ISBN 0-471-15364-8

Java Modeling in Color with UML, 1999, Coad, Peter ISBN 0-13-011510-X

The Data Modeling Handbook, 1994, Reingruber ISBN 0-471-05290-6

The Encyclopedia for Jasmine vol 1. 1998. Straley, Stephen ISBN1-890726-09-5

Page 40: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Questions & Answers

Page 41: My First Jasmine ii Project eBusiness Solutions in Internet Time Session Code: JG065SN

Session Evaluation Form

... please place it in the basket at the back of the room.

After completing your session evaluation form ...