Porting and Gardening VisualWorks Applications to 5i - PowerPoint PPT Presentation

1 / 68
About This Presentation
Title:

Porting and Gardening VisualWorks Applications to 5i

Description:

Hotline support, maintenance, bug-fixes for VisualWorks and visual Smalltalk ... Qualified computer scientists in Saxony-Anhalt. Hot specialty: ... – PowerPoint PPT presentation

Number of Views:32
Avg rating:3.0/5.0
Slides: 69
Provided by: andrea184
Category:

less

Transcript and Presenter's Notes

Title: Porting and Gardening VisualWorks Applications to 5i


1
Georg HeegObjektorientierte Systeme Baroper Str.
33744227 DortmundGermany Tel
49-231-97599-0 Fax 49-231-97599-20
Georg HeegObjektorientierte Systeme Mühlenstr.
1906366 KöthenGermany Tel 49-3496-214
328 Fax 49-3496-214 712
Georg Heeg AGObjektorientierte
Systeme Riedtlistr. 88006 ZurichSwitzerland Tel
41-1-356 3311 Fax 41-1-356 3312
Email georg_at_heeg.de http//www.heeg.de
2
Georg Heeg Porting and Gardening VisualWorks
Applications to 5i Smalltalk Solutions
Chicago, 10 April 2001
3
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

4
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!
5
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)

6
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

7
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

8
22 Months Experience Porting to 5i
9
Goal
  • A manageable application
  • Embedded in VisualWorks 5i concepts
  • Embedded in StORE
  • Ready for the next years

10
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

11
Other Activities
  • Gardening
  • Cut off dry branches
  • Pull weeds
  • Specific activities to move from Envy to StORE

12
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

13
New Concepts in VisualWorks 5i
  • Name Spaces
  • Shared Variables
  • Reference Bindings
  • StORE
  • XML
  • Runtime Packager
  • Microsoft SQL-Server/PostgresSQL
  • Parcel-Format
  • Byte-Codes

14
Example for a Name Space
  • Smalltalk defineNameSpace ENVY
  • private false
  • imports '
  • private Smalltalk.
  • '
  • category 'For ENVY'

15
Template to Define Name Spaces
  • Smalltalk.Heeg defineNameSpace NameOfPool
  • private false
  • imports '
  • OtherNameSpace.
  • private Smalltalk.
  • '
  • category 'As yet unclassified'

16
Old and New Class Definitions
Magnitude subclass Date instanceVariableNames
'day year ' classVariableNames
'DaysInMonth FirstDayOfMonth MonthNames S
econdsInDay WeekDayNames ' poolDictionaries
'' category 'Magnitude-General' Date
class instanceVariableNames ''
Smalltalk.Core defineClass Date superclass
Core.Magnitude indexedType none private
false instanceVariableNames 'day year
' classInstanceVariableNames '' imports
'' category 'Magnitude-General' Core.Date defi
neStatic DaysInMonth private false constant
false category 'As yet unclassified' initialize
r nil
17
Template to Define Classes
  • Smalltalk.Heeg defineClass NameOfClass
  • superclass NameOfSuperclass
  • indexedType objects
  • private false
  • instanceVariableNames 'instVarName1
    instVarName2'
  • classInstanceVariableNames ''
  • imports ''
  • category 'As yet unclassified'

18
Template to Define Shared Variables
  • Heeg.ExampleClass defineSharedVariable
    NameOfBinding
  • private false
  • constant false
  • category 'OOP'
  • initializer 'Array new 5'

19
Name-Spaces
  • Object
  • Collection
  • KeyedCollection
  • GeneralNameSpace
  • NameSpace
  • NameSpaceOfClass

20
References
  • Object ()
  • GeneralBindingReference
  • BindingReference
  • NameSpaceImport
  • GeneralNameSpaceImport
  • SpecificNameSpaceImport
  • QualifiedName
  • LiteralBindingReference

21
Creating a Reference
  • Core.Integer
  • (LiteralBindingReference pathString
    'Core.Integer') method thisContext method
  • (LiteralBindingReference simpleName Integer)
    method thisContext method
  • BindingReference simpleName Integer in Core
  • BindingReference pathString 'Core.Integer'

22
Bindings
  • Object ()
  • Magnitude ()
  • LookupKey ('key')
  • VariableBinding ('value' 'usage' 'category')
  • InitializedVariableBinding ('method')

23
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'

24
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

25
(No Transcript)
26
Pundles (Bundles und Packages)
  • Object
  • Store.DBObject
  • Store.DBRecord
  • Store.Record
  • Store.Pundle
  • Store.Bundle
  • Store.Package

27
Store.Pundle
  • blessingLevel
  • commentID
  • propertiesID
  • properties
  • commentStr

28
Store.Bundle
  • contents

29
(No Transcript)
30
Store.Package
  • namespaces
  • classes
  • metaclasses
  • methods
  • binFile
  • data

31
(No Transcript)
32
Versions of a Bundle
33
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

34
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

35
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

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

37
Check old application
  • Formal check of old application
  • Partitioning of old application

38
Formal check of old application
  • Consistency checks (Undeclared)
  • Standard metrics (SmallLint)

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

40
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

41
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 companys 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

42
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

43
Name Space Registration
  • Company name space under Root.Smalltalk
  • Registration in http//www.cincomsmalltalk.com808
    0/CincomSmalltalkWiki/VWNameSpaceReservations

44
Name-Spaces for Example Project
45
Imports
46
Test Name Spaces and Imports
47
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
  • Decisions
  • Not needed
  • Can be taken
  • All callers need to be changed
  • Has to be adapted
  • Use GH Change List

48
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

49
Porting Applications to 5i StORE
PackageApp 1
App1
App2
App3
PackageApp 2
App4
Package 3
PackageApp 4
as Parcel
Database
50
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

51
Tests
  • Test
  • Test
  • Test
  • Use
  • SUnit
  • WinRunner
  • Try the system

52
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

53
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

54
GH Change List
55
Substitutor
56
(No Transcript)
57
Suspicious Expressions
  • Smalltalk at MyGlobal ifAbsent nil
  • should be replaced by
  • Heeg.MyGlobal valueOrDo nil
  • Smalltalk at MyGlobal put nil
  • should be replaced by
  • Smalltalk.Heeg defineStatic MyGlobal private
    false constant false category Heeg
    Globals initializer nil

58
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

59
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
  • Cant 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

60
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

61
Contents
  • Georg Heeg - the company
  • Porting goals
  • Whats new in 5i?
  • Consequences for the development process
  • Migration process
  • Tools for the port
  • Coming from Envy
  • A new development process

62
Developers Blessing Levels
63
Project Management Blessing Levels
64
Customers Blessing Levels
65
Diagram
Blessing Level Process
66
Discussion
67
You can reach us
Georg Heeg georg_at_heeg.de Sales info_at_heeg.de
68
Georg HeegObjektorientierte Systeme Baroper Str.
33744227 DortmundGermany Tel
49-231-97599-0 Fax 49-231-97599-20
Georg HeegObjektorientierte Systeme Mühlenstr.
1906366 KöthenGermany Tel 49-3496-214
328 Fax 49-3496-214 712
Georg Heeg AGObjektorientierte
Systeme Riedtlistr. 88006 ZurichSwitzerland Tel
41-1-356 3311 Fax 41-1-356 3312
Email georg_at_heeg.de http//www.heeg.de
Write a Comment
User Comments (0)
About PowerShow.com