Version Control 101 – The SimCorp Way Dyalog User Conference 2007 Lars Stampe Villadsen, SimCorp A/S (Denmark) Agenda • Company presentation (short ) • Low level parts • Implementation • Show some code 2 Business Idea SimCorp offers integrated software solutions to financial service providers supporting their activities worldwide on the financial markets. Our solutions are firmly based on our high quality standards and our insight into financial theory, methods and practices. 3 SimCorp Dimension era SimCorp History 2007 2003 2000 1999 1998 1997 SimCorp sells IT2 SimCorp Dimension TMS2000 full STP product IT2 acquired to substitute TRACTS TMS2000 most important product Sale of Actuarial department 1996 1995 Official launch of TMS2000 First TMS2000 implementations TMS2000 development intensified 10 Years Revenue Development EURm 160 140 Customised software 120 100 80 1991 1990 1985 Getting Focused Risk management modules Financial analytics and library Building society systems Money market systems Pricing models for derivatives Treasury systems 60 40 20 0 1996 4 1998 2000 2002 2004 2006 The low level parts SimCorp Dimension consists of (Version 4.2): 37.000+ APL functions 150.000+ APL structures Defining tables, forms, menus ect. 2.200+ files (exe’s / dll’s / reports / manuals / 2 WS…) Is developed by (Version 4.2): 170+ Developers 5 The low level parts cont. Contents: – We need to know what an application version consists off – i.e. identify the functions (easiest), the database tables, the forms, the menu’s the WS, the exe’s, the dll’s and alike. 6 The low level parts cont. We need version control: 7 The low level parts cont. Each of the 180.000+ elements (or objects as we call them) is version controlled separately i.e. they are assigned a version number. Total deltas y = 18864x - 2E+07 1900000 1800000 1700000 1600000 1500000 The SimCorp Dimension repository holds more than 1.800.000 deltas. 1400000 1300000 1200000 1100000 8 sep-07 jul-07 maj-07 mar-07 jan-07 nov-06 sep-06 jul-06 maj-06 mar-06 jan-06 nov-05 sep-05 jul-05 maj-05 mar-05 jan-05 1000000 The low level parts cont. Each version of an element (delta) must be assigned to an application version. A version of an element can be assigned to more than one application version. (Each version must be assigned to a change request registered in our Change Management System) 9 The low level parts cont. Object ID/Name 0 convChk_Appl Object type 10 Consultant 70.1.2 Object version PH Incident no. 20041214.439132 timestamp 227654 Deduced program version 0 3.6 SP1 Delete mark status Incident header 2 Check before 4886 Patch no Object name How it is implemented (infrastructure) 4.2 4.1 4.0 Release Test 11 Shipped version How it is implemented (infrastructure) cont. Release test and Shipped version periods progFilesDir v237 v238 v238.1.1 12 How it is implemented (infrastructure) cont. All develop and CR tasks completed (and no dependencies) All test tasks completed (and no dependencies) All quality control jobs have run without findings (both test and technical) 13 Registered (-9) Ready for test (-1) Every 10 min Approved (1) Once a Day Released (2) Mornings when succesfull How it is implemented (infrastructure) cont. Released to customers Start of changes Approved Versions Test and Public Versions Registered 14 Ready for test Approved Released Repository/Patch Version Show some code… Enough Said… Lets look at some CODE. 15