Software Re-Creation From Legacy to Component Arie van Deursen Software Duplication Programs “Dit programma is grotendeels een kopie van het XY progamma ABCD123.” Subsystems CICS and BATCH functionality Functions & Computations Entire systems 09-09-1999 CMG / ESTEC 2 Function Duplication Example When is a year a leap year ? Two (small) 100.000 LOC systems contained 8 different computations! return( (year%4 == 0 && year%100 != 0) || year%400 == 0 ) 09-09-1999 CMG / ESTEC IF YY = 92 OR 96 MOVE 29 TO MD(2) END-IF 3 Component Software Technology Process Abstraction Selection Specialization Integration Create reusable assets Support Reuse Manage Kent Beck: Say it once! 09-09-1999 AND ONLY ONCE! CMG / ESTEC 4 Financial Products Loan, swap, future, FRA, … Introduce innovative products Bank’s backoffice hard to adapt Describe products at high level Generate (COBOL) code At MeesPierson, with CAP Gemini 09-09-1999 CMG / ESTEC 5 Domain-Specific Languages Component Libarary Product Specification • Legacy Calls • Cobol Routines DSL Compiler • VSAM data • CICS screens • ... 09-09-1999 CMG / ESTEC 6 Domain Engineering Identify potential reusable assets Domain Engineering Domain = family of systems 3 legacy + 3 future Economy of scope Organizational learning 09-09-1999 CMG / ESTEC Application System Engineering 7 Organizational Domain Modeling (ODM) Plan Domain Model Domain stakeholders domain boundary decisions examples counter-examples domain experts reverse engineer legacy systems lexicon of terms commonality variability 09-09-1999 CMG / ESTEC Engineer Asset Base scope architect implement 8 Reverse Engineering Tools Legacy Sources Fact Extractor Hypertext documentation Repository • Abstract • Combine • Filter 09-09-1999 Object Model Visualization CMG / ESTEC 9 Large classes Method nrs Field names Small classes 09-09-1999 CMG / ESTEC 10 Summary Components: Abstraction Selection Specialization Integration Domain Engineering: Comonality Variability Economy of Scope Family of systems Domain-Specific Languages Program Understanding Tools 09-09-1999 CMG / ESTEC 11 In Conclusion CBD: essential for producing quality software Recommended Reading Meyer: Object-Oriented Software Construction Brooks: The Mythical Man Month Jacobson, et. al.: Software Reuse Quote from Alan Kay: To be a good software engineer, you need the ability to feel pain 09-09-1999 CMG / ESTEC 12 Questions? Component-Based Development: Keywords Object-Oriented Application Framework Hot Spots Design Pattern Java Object Request Brokers, CORBA, DCOM Software Architecture Unified Modeling Language N-Tier Systems 09-09-1999 CMG / ESTEC 14