Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

66
Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0 Fax: +49-231-97599-20 mail: [email protected] ttp://www.heeg.de Georg Heeg A Objektorientierte System Riedtlistr. 8006 Zuric Switzerlan Tel: +41-1-356 331 Fax: +41-1-356 331 Georg Heeg Objektorientierte Systeme Mühlenstr. 19 06366 Köthen Germany Tel: +49-3496-214 328 Fax: +49-3496-214 712

description

Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0 Fax: +49-231-97599-20. Georg Heeg Objektorientierte Systeme Mühlenstr. 19 06366 Köthen Germany Tel: +49-3496-214 328 Fax: +49-3496-214 712. Georg Heeg AG Objektorientierte Systeme - PowerPoint PPT Presentation

Transcript of Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Page 1: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Georg HeegObjektorientierte SystemeBaroper Str. 33744227 DortmundGermanyTel: +49-231-97599-0Fax: +49-231-97599-20

Email: [email protected]://www.heeg.de

Georg Heeg AGObjektorientierte Systeme

Riedtlistr. 88006 ZurichSwitzerland

Tel: +41-1-356 3311Fax: +41-1-356 3312

Georg HeegObjektorientierte Systeme

Mühlenstr. 1906366 Köthen

GermanyTel: +49-3496-214 328Fax: +49-3496-214 712

Page 2: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Georg Heeg

Porting and Gardening VisualWorks Applications to 5i

ESUG

Essen, 31 August 2001

Page 3: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 4: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

About Us...

• Founded 1987, headquarter in Dortmund,since 1996 in Zurich, since 1999 in Koethen/Anhalt

• Consulting- and training company in Smalltalk• Hotline support, maintenance, bug-fixes for VisualWorks

and visual Smalltalk• VM-laboratory for VisualWorks• Porting service of old VisualWorks applications to 5i• Technology-partner of

Corporate Mission: Make Sophisticated Projectsa Success for the Customer!

Page 5: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

VM-Laboratory for VisualWorks

• Since 1987 VM source code licensee of Xerox PARC, ParcPlace Systems, ParcPlace-Digitalk, ObjectShare, Cincom– PCS-Cadmus (MUNIX)– Atari Mega ST– OS/2– Sinix Z – SNI RM 200 - 600 Reliant Unix– MIPS-ABI– SGI Irix– RS/6000 AIX Power2 and Power PC– Compaq Tru64 Unix– Power-Mac – Mac OS X (in preparation)

Page 6: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Georg Heeg in Koethen

• Since 1999 in the Johann Sebastian Bach city• Qualified computer scientists in Saxony-

Anhalt• Hot specialty:

– Porting of VisualWorks applications to 5i– Enhancement of code quality of ported applications

• Customers in– Frankfurt/Main– Zurich– Munich– ...– I.e. no local customers

Page 7: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 8: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

22 Months Experience Porting to 5i

Page 9: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Goal

• A manageable application– Embedded in VisualWorks 5i concepts– Embedded in StORE– Ready for the next years

Page 10: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

The Main Steps Are

• Investigate the structure of the existing application

• Propose a set of name spaces • Investigate system changes • Reorganize application• Test the port

Page 11: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Other Activities

• Gardening– Cut off dry branches – Pull weeds

• Specific activities to move from Envy to StORE

Page 12: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 13: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

New Concepts in VisualWorks 5i

• Name Spaces • Shared Variables• Reference Bindings• StORE• XML• Runtime Packager• Microsoft SQL-Server/PostgresSQL• Parcel-Format• Byte-Codes

Page 14: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Example for a Name Space

Smalltalk defineNameSpace: #ENVYprivate: falseimports: '

private Smalltalk.*'

category: 'For ENVY'

Page 15: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Template to Define Name Spaces

Smalltalk.Heeg defineNameSpace: #NameOfPoolprivate: falseimports: '

OtherNameSpace.*private Smalltalk.*'

category: #'As yet unclassified'

Page 16: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Old and New Class Definitions

Magnitude subclass: #DateinstanceVariableNames:

'day year 'classVariableNames:

'DaysInMonthFirstDayOfMonthMonthNamesSecondsInDayWeekDayNames '

poolDictionaries: ''category:

'Magnitude-General'

Date classinstanceVariableNames: ''

Smalltalk.CoredefineClass: #Datesuperclass: #{Core.Magnitude}indexedType: #noneprivate: falseinstanceVariableNames:

'day year 'classInstanceVariableNames: ''imports: ''category: 'Magnitude-General'

Core.DatedefineSharedVariable:

#DaysInMonthprivate: falseconstant: falsecategory: 'As yet unclassified'initializer: nil

Page 17: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Template to Define Classes

Smalltalk.Heeg defineClass: #NameOfClasssuperclass: #{NameOfSuperclass}indexedType: #objectsprivate: falseinstanceVariableNames: 'instVarName1 instVarName2'classInstanceVariableNames: ''imports: ''category: #'As yet unclassified'

Page 18: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Template to Define Shared Variables

Heeg.ExampleClass defineSharedVariable: #NameOfBindingprivate: falseconstant: falsecategory: 'OOP'initializer: 'Array new: 5'

Page 19: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Name-Spaces

Object Collection

KeyedCollectionGeneralNameSpace

NameSpaceNameSpaceOfClass

Page 20: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

References

Object ()GeneralBindingReference

BindingReference NameSpaceImport

GeneralNameSpaceImport SpecificNameSpaceImport

QualifiedName LiteralBindingReference

Page 21: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Creating a Reference

#{Core.Integer} (LiteralBindingReference pathString:

'Core.Integer') method: thisContext method(LiteralBindingReference simpleName: #Integer)

method: thisContext method

BindingReference simpleName: #Integer in: CoreBindingReference pathString: 'Core.Integer'

Page 22: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Bindings

Object ()Magnitude ()

LookupKey ('key')

VariableBinding ('value' 'usage' 'category')

InitializedVariableBinding ('method')

Page 23: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Using a Reference

#{Core.Integer} binding#{Core.Integer} value#{Heeg.TestClass.MyStatic} binding value: 27#{Heeg.TestClass.MyStatic} isDefined#{Heeg.TestClass.MyStatic} bindingOrNil#{Heeg.TestClass.MyStatic} valueOrDo: [nil]#{Heeg.MyGlobal} ifDefinedDo: ['Hurra'] elseDo:

['Ooo']

Page 24: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

StORE

• StORE organizes Smalltalk sources in– Bundles and– Packages

• StORE stores versions of bundles and packages in Oracle, SQL-Server, PostgresSQL

• StORE is an optimistic team tool

Page 25: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0
Page 26: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Pundles (Bundles und Packages)

ObjectStore.DBObject

Store.DBRecordStore.Record

Store.PundleStore.BundleStore.Package

Page 27: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Store.Pundle

• blessingLevel• commentID• propertiesID• properties• commentStr

Page 28: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Store.Bundle

• contents

Page 29: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0
Page 30: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Store.Package

• namespaces• classes• metaclasses• methods• binFile• data

Page 31: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0
Page 32: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Versions of a Bundle

Page 33: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 34: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Consequences for theSoftware Development Process

• Name spaces allow a clear scope of names• Bundles and packages allow organization and

overview over the sources of a system and other applications

Page 35: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 36: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Migration process

• Check old application• Build customer specific 5i base• Test• Port applications• Test

Page 37: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Check old application

• Formal check of old application• Partitioning of old application

Page 38: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Formal check of old application

• Consistency checks (Undeclared)• Standard metrics (SmallLint)

Page 39: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Partitioning of Old Application

• Changed system methods• Additional methods in system classes• Shrink wrap components • Modules • Determine a sequence of modules

Page 40: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Build Customer Specific 5i Base

• Preparation of VisualWorks 5i base image• Defining the name tree • Critical investigation of system changes • Integration of system changes into 5i

base image• Test the system

Page 41: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Preparation of VisualWorks 5i Base Image

• Start with VisualWorks 5i.3 distribution• Load parcel StORE for Oracle (or another database)• Prepare database according to description

– Require help from your company’s DBA

• Load parcels DLLCC and LensRuntime– These are weak prerequisites for BOSS which is a prerequisite

for StORE

• Move all definitions from As yet unclassified to a new package called Base NameSpaces and Statics– Move As yet unclassified out of bundle VisualWorks Base – Put Base NameSpaces and Statics into bundle VisualWorks

Base

Page 42: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Pubishing the base

• Log in the database as “special” user like BaseSystem• Publish everything (no need for binary) with blessing

level “Released”– Bundle Base VisualWorks– Bundle StoreBase– All other packages

• Load all other parcels you need for the base– UIPainter requires almost all of Advanced Tools

• Publish them, possibly binary, with blessing level “Released”

• Save the image and use it as your base for any further development

Page 43: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Name Space Registration

• Company name space under Root.Smalltalk– Registration in

http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/VW+NameSpace+Reservations

Page 44: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Name-Spaces for Example Project

Smalltalk

•Company Registered Top Level domain

–Base Common classes for the company

–Tools Common tools for the company

–Project1 Top domain for Project1

•Base Common classes for the project

•Import Import specific classes

•Client –Base Common classes for all clients –Client1 Client 1 specific classes –Client2 Client 2 specific classes

•Server Server specific classes

Page 45: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Imports

Smalltalk

•Company Registered Top Level domain

–Base Common classes for the company

–Tools Common tools for the company

–Project1 Top domain for Project1

•Base Common classes for the project

•Import Import specific classes

•Client –Base Common classes for all clients –Client1 Client 1 specific classes –Client2 Client 2 specific classes

•Server Server specific classes

Page 46: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Test Name Spaces and Imports

Smalltalk

•Company

–Base Common classes for the company

•Tests Private name space for tests

–Tools Common tools for the company

•Tests Private name space for tests

–Project1

•XProgramming

•SUnit SUnit classes

Page 47: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Critical Investigation of System Changes

• Process– FileOut all classes of the old base image– Remove all methods with same code as new image– Compare the others class by class, method by

method to a new image

• Decisions1. Not needed2. Can be taken3. All callers need to be changed4. Has to be adapted

• Use GH Change List

Page 48: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Build an image with all changes needed

• Cover all system changes• Move changes needed for a specific

applications into that application– Was almost impossible with Envy

• Build a new base image• Test it

– Write unit tests– Use the image for standard work

• Organize what you have done in packages and bundles

• Publish everything (possibly binary)• Save the image as new corporate base

Page 49: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

PackageApp 1

PackageApp 2

Package 3

PackageApp 4

Porting Applications to 5i StORE

App1App

2App3App

4

DatabaseFilesystem

as Parcel

Page 50: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Observe and Weed

• Observe the process of reading .st files with the change list– Weed out what is not needed– Cut dry branches

• Rename• Move to appropriate name spaces• Move into appropriate parcels and

packages

Page 51: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Tests

• Test• Test• Test• Use

– SUnit– WinRunner– …

• Try the system

Page 52: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 53: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

GH-Tools

• GH-ChangeList (enhanced Change List)– Load directly into Name Spaces– Load directly into Parcels und Packages– Create Name Spaces, Parcels and Packages– Substitute global names– Find suspicious methods

• GH-UndeclaredBrowser– Show methods referencing a VariableBinding in

name space Undeclared– Easy finding of defining name spaces– Easy adding of fully qualified names

Page 54: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

GH Change List

Page 55: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Substitutor

Page 56: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0
Page 57: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Suspicious Expressions

Smalltalk at: #MyGlobal ifAbsent: [nil]should be replaced by:

#{Heeg.MyGlobal} valueOrDo: [nil]

Smalltalk at: #MyGlobal put: nilshould be replaced by :

Smalltalk.Heeg defineSharedVariable: #MyGlobal

private: falseconstant: falsecategory: ‘Heeg Globals‘initializer: nil

Page 58: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 59: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Specific Activities to Move From Envy to Store

• StORE bridge or .st files?– Bridge advantages

• Automatic transfer of application structures• Best suited from ENVY 5i to StORE

– Can‘t use the Store Bridge• For system changes• Coming from VisualWorks 2.5.x

– Better not to use the bridge• If you feel you should observe the methods and

classes coming in

Page 60: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Additional Observations

• Moving classes to the right name spaces can be done after loading

• Often Envy based applications use Envy specific methods– Make sure you treat these methods like

system changes

Page 61: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Contents

• Georg Heeg - the company• Porting goals• What’s new in 5i?• Consequences for the development

process• Migration process• Tools for the port• Coming from Envy• A new development process

Page 62: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Blessing-Level Meaning Is set by

Broken This component contains errors which were Projecttesterdetected in a test.

Work in Progress Developer saves her/his work to the data b ase Developer but the component has known defects.

Development „Normal“ state for a component in development. Developer

Integration Ready Compoment is ready from the developers point of , Developer of the component, view. Highest level a developer can set. Unit tests have been run successfully.

Integrated MergeTool has integrated this component. MergeTool

Merged This component is the result of a merge process Merge-Tool

Tested All Tests by Project tester were successful. Project tester

Internal Release Test version for the user Project Manager

Released Version is in production. Project Management

Patch Solves a production problem. Step outside the Supportteam normal development process, is only applied to Released Software!

Blessing Levels

Page 63: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

EntwicklungsabteilungEntwicklungsabteilung

Blessing Level Process

Integrated

Tested

Internal Release

Released

Test D

Beteiligte Entwickler

Error Report

(+)(+)

(-)(-)User DepartmentUser Department

(-)(-) (+)(+)

PLPL

Production

IntegratorIntegrator

Work in Progress

(-)(-) (+)(+)

ER.

Broken

Test C

Test A

Publish and/or set blessing level

Only change blassing level

IntegrationReady

Merged

Development

Page 64: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Discussion

Page 65: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

You can reach us

Georg Heeg: [email protected]

Sales: [email protected]

Page 66: Georg Heeg Objektorientierte Systeme Baroper Str. 337 44227 Dortmund Germany Tel: +49-231-97599-0

Georg HeegObjektorientierte SystemeBaroper Str. 33744227 DortmundGermanyTel: +49-231-97599-0Fax: +49-231-97599-20

Email: [email protected]://www.heeg.de

Georg Heeg AGObjektorientierte Systeme

Riedtlistr. 88006 ZurichSwitzerland

Tel: +41-1-356 3311Fax: +41-1-356 3312

Georg HeegObjektorientierte Systeme

Mühlenstr. 1906366 Köthen

GermanyTel: +49-3496-214 328Fax: +49-3496-214 712