660 likes | 671 Vues
Georg Heeg AG offers expert services in porting and gardening VisualWorks applications to 5i. With over 22 months of experience, our team ensures a seamless transition to optimize and enhance code quality. We provide innovative solutions, including name spaces, shared variables, reference bindings, and more. Our meticulous process involves investigating existing structures, proposing name space sets, system changes, reorganizing applications, and thorough testing. Trust us for a successful transition to VisualWorks 5i!
E N D
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@heeg.de http://www.heeg.de
Georg HeegPorting and Gardening VisualWorks Applications to 5i ESUG Essen, 31 August 2001
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
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!
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)
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
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
Goal • A manageable application • Embedded in VisualWorks 5i concepts • Embedded in StORE • Ready for the next years
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
Other Activities • Gardening • Cut off dry branches • Pull weeds • Specific activities to move from Envy to StORE
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
New Concepts in VisualWorks 5i • Name Spaces • Shared Variables • Reference Bindings • StORE • XML • Runtime Packager • Microsoft SQL-Server/PostgresSQL • Parcel-Format • Byte-Codes
Example for a Name Space Smalltalk defineNameSpace: #ENVY private: false imports: ' private Smalltalk.* ' category: 'For ENVY'
Template to Define Name Spaces Smalltalk.Heeg defineNameSpace: #NameOfPool private: false imports: ' OtherNameSpace.* private Smalltalk.* ' category: #'As yet unclassified'
Old and New Class Definitions Magnitude subclass: #Date instanceVariableNames: 'day year ' classVariableNames: 'DaysInMonth FirstDayOfMonth MonthNames SecondsInDay 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 defineSharedVariable: #DaysInMonth private: false constant: false category: 'As yet unclassified' initializer: nil
Template to Define Classes Smalltalk.Heeg defineClass: #NameOfClass superclass: #{NameOfSuperclass} indexedType: #objects private: false instanceVariableNames: 'instVarName1 instVarName2' classInstanceVariableNames: '' imports: '' category: #'As yet unclassified'
Template to Define Shared Variables Heeg.ExampleClass defineSharedVariable: #NameOfBinding private: false constant: false category: 'OOP' initializer: 'Array new: 5'
Name-Spaces Object Collection KeyedCollection GeneralNameSpace NameSpace NameSpaceOfClass
References Object () GeneralBindingReference BindingReference NameSpaceImport GeneralNameSpaceImport SpecificNameSpaceImport QualifiedName LiteralBindingReference
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'
Bindings Object () Magnitude () LookupKey ('key') VariableBinding ('value' 'usage' 'category') InitializedVariableBinding ('method')
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']
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
Pundles (Bundles und Packages) Object Store.DBObject Store.DBRecord Store.Record Store.Pundle Store.Bundle Store.Package
Store.Pundle • blessingLevel • commentID • propertiesID • properties • commentStr
Store.Bundle • contents
Store.Package • namespaces • classes • metaclasses • methods • binFile • data
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
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
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
Migration process • Check old application • Build customer specific 5i base • Test • Port applications • Test
Check old application • Formal check of old application • Partitioning of old application
Formal check of old application • Consistency checks (Undeclared) • Standard metrics (SmallLint)
Partitioning of Old Application • Changed system methods • Additional methods in system classes • Shrink wrap components • Modules • Determine a sequence of modules
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
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
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
Name SpaceRegistration • Company name space under Root.Smalltalk • Registration in http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/VW+NameSpace+Reservations
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
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
Filesystem Porting Applications to 5i StORE PackageApp 1 App1 App2 App3 PackageApp 2 App4 Package 3 PackageApp 4 as Parcel Database
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