1 / 66

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

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

agonzalez
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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@heeg.de http://www.heeg.de

  2. Georg HeegPorting and Gardening VisualWorks Applications to 5i ESUG Essen, 31 August 2001

  3. 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

  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 • What’s 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 • What’s 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 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

  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. Pundles (Bundles und Packages) Object Store.DBObject Store.DBRecord Store.Record Store.Pundle Store.Bundle Store.Package

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

  27. Store.Bundle • contents

  28. Store.Package • namespaces • classes • metaclasses • methods • binFile • data

  29. Versions of a Bundle

  30. 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

  31. 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

  32. 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

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

  34. Check old application • Formal check of old application • Partitioning of old application

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

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

  37. 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

  38. 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

  39. 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

  40. Name SpaceRegistration • Company name space under Root.Smalltalk • Registration in http://www.cincomsmalltalk.com:8080/CincomSmalltalkWiki/VW+NameSpace+Reservations

  41. Name-Spaces for Example Project

  42. Imports

  43. Test Name Spaces and Imports

  44. 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

  45. 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

  46. Filesystem Porting Applications to 5i StORE PackageApp 1 App1 App2 App3 PackageApp 2 App4 Package 3 PackageApp 4 as Parcel Database

  47. 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

More Related