Appendix A: Organization Chart Achmea 72
APPENDIX A: ORGANIZATION CHART ACHMEA
Appendix B: Organization Chart Achmea Active 73
APPENDIX B: ORGANIZATION CHART ACHMEA ACTIVE
Figure B-1: Organization Chart Achmea Active
Active
CTO
Central Technology Office
F&C Finance & Control
Secretariaat
CS Customer Services
SDMC System Development &
Appendix C: Organization Chart Achmea SDMC 74
APPENDIX C: ORGANIZATION CHART ACHMEA SDMC
Appendix D: System Architecture of IRIS 75
APPENDIX D: SYSTEM ARCHITECTURE OF IRIS
Appendix E: Data Model of IRIS 76
APPENDIX E: DATA MODEL OF IRIS
Appendix F: Connection Models 77
APPENDIX F: CONNECTION MODELS
The GAST tool, written in Clean, has been connected to a dll version of the ‘Actuarieel Formuluarium’. The connection is realized by using the clean model named Calldll (see Figure F-1).
Figure F-1: Connection GAST and AF – Implementation Module
First of all a file, called ‘Actuarieel’, is imported in the Calldll model. This file consists of the name of the dll (mpaform) on the first line. The second line of the file consists of the action needed to start the dll (ACTBER). The actber in Figure F-1 is defined to generate an input statement (idata) and an output statement (udata). The idata is used to put data into the system. The udata is needed to store the output that is presented by the ‘Actuarieel Formularium’.
To import this implementation module in the testing models (Figure F-3) a so-called
Appendix F: Connection Models 78
Figure F-2: Connection GAST and AF – Definition Module
The actber will be used when testing the different functions. As shown in Figure F-3 (same code is shown in Figure 6-5) the idata will first be given to the ‘Actuarieel Formularium’. The idata consists of all the input parameters (58 input parameters in total). The ‘Actuarieel
Formularium’ presents the results, which will be stored in udata. The udata can be compared to the results calculated by the models of the functions that use the same input values.
Figure F-3: Testing the Function with GAST
More information about the working of GAST and Clean can be found in the articles written by Koopman et al. (2002), Plasmeijer and van Eekelen (version 2.0), Koopman and
Appendix G: Testing Vormcodes with GAST 79
APPENDIX G: TESTING VORMCODES WITH GAST
This part describes all the seven steps that must be realized to test a certain vormcode in the ‘Actuarieel Formularium’ with the GAST tool. As example, vormcode 100 will be used.
Description Vormcode:
The functions 100-1, 100-2, 100-3 and 100-4 are presented in Figure G-1. Based on this figure, the different output parameters can be calculated. Chapter 6 describes the different phases and output parameters in more detail.
Type Phase Vormcode Output 1 2 3 4 5 6 7 90 100 NK 100-1 100-2 100-4 100-4 100-1 100-2 NSK 100-1 100-4 NRK LF 100-1 100-2 100-4 100-4 100-1 100-2 BF 100-3 100-3 RF-1 RF-2
Figure G-1: Vormcode 100 – Pension of Old Age
The figure presents a matrix which shows which function must be used to calculate a certain output parameter in a certain situation. For example, the output variable NK for phase one (insurer pays the premiums) can be calculated by using function 100-1.
Step 1: Define input parameters
Appendix G: Testing Vormcodes with GAST 80
Figure G-2: Input Parameters – Implementation Module
Appendix G: Testing Vormcodes with GAST 81 parameter OpslToekAdminK three different types are defined to use the input value as
integer, real and string when needed.
To import this module in other modules a so-called definition module must be made (see Figure G-3). These definition modules must be made every time a module needs to be imported in another module. This means that every module needs a definition module, with exception of the test module that represents the actual input values and the different test cases (see step 6).
Appendix G: Testing Vormcodes with GAST 82
Step 2: Making models of general calculations
The second step is making models of general calculations that can be used in the modules presenting the functions. The first model presents all durations (see Figure G-4 for an example) and the second model present different chances (see Figure G-5 for an example).
Figure G-4: Duration Model
Appendix G: Testing Vormcodes with GAST 83
Step 3: Making models of the different functions
The third step is making models of each function described. In Chapter 6 an example has been given of function 100-1 (see Figure 6-2).
Step 4: Making models of each output parameter
The fourth step is making for each output parameter a different model. By doing this it is possible to test each output parameter separately when necessary. In Chapter 6 an example of the output parameter NK has been given (see Figure 6-3).
Step 5: Making the connection module
Appendix G: Testing Vormcodes with GAST 84
Step 6: Making the test module
The sixth step is making the test module. This module consists of the actual values that can be put in the input parameters and the different tests. Figure G-6 and G-7 shows a part of the testing module.
Figure G-6: Test Module – Input Values
Appendix G: Testing Vormcodes with GAST 85
Figure G-7: Test Module – Test Code
Figure G-7 shows the properties for testing the ‘Actuarieel Formularium’. The property ‘propNettoKoopsom’ can be defined in two different ways. The first one generates the input and output values, but when an error occurs the test stops. The second one only show the input values, but the test stops when 10 errors occur, as defined by Start. With the function Start 900 test cases will be inputted into the ‘Actuarieel Formularium’. Only one of the properties can be defined in the test module. This means that you must change one type in another when you want to test differently.
Appendix G: Testing Vormcodes with GAST 86
Figure G-8: Test Property to compare NK
An example of the output program is shown in Figure G-9. The first value is the output value NK generated by the Clean model. The second value between the quotes is the output value NK generated by the ‘Actuarieel Formularium’. As can be seen in the figure, the values do not match in this situation. The tests can only be run after the final step (step 7) is realized.
Appendix G: Testing Vormcodes with GAST 87
Step 7: Making project to run the tests
The final step is making a project in the Clean system, so the tests can be executed
automatically by GAST. The project must have the same name as the test module. When the project is made, some options must be changed. First of all the application options must be set as follows:
- Maximum Heap Size: 1750M - Stack Size: 100M
- Next Heap Size Factor: 16 - Initial Heap Size: 200K
When the project is used for regression testing the application options are different:
- Maximum Heap Size: 300M - Stack Size: 10M
- Next Heap Size Factor: 16 - Initial Heap Size: 200K
Appendix G: Testing Vormcodes with GAST 88
89
APPENDIX H: EXAMPLES TEST RESULTS
This part will give examples of two different faults that have been found during the tests done with GAST. The examples of the faults that have been found will be shown in tables that consist of the relevant input parameters, the output values generated by the ‘Actuarieel
Formularium’ (AF) and the output values generated by GAST. Ages and durations consists of a ‘,’. The value before ‘,’ means years and the value after ‘,’ means months.
Interpolation
Seven functions show differences between the values generated by the ‘Actuarieel Formularium’ and the values generated by GAST when interpolation is needed. For each function some examples of faults are generated and shown in a table.
- Function 650-1: This function uses interpolation on the input parameters ‘Lft1eVerz’,
‘EindLftUitk’ and ‘WachttijdTotIngUitk’. The differences in this function will only be generated when the input parameter ‘Lft1eVerz’ consists of years and months.
EindLftUitk 75,0 75,0 75,0 75,0 75,0 75,0 Lft1eVerz 50,1 50,3 50,5 50,7 50,9 50,11 WachttijdTotIngUitk 2,0 2,0 2,0 2,0 2,0 2,0 AODuur 2,0 2,0 2,0 2,0 2,0 2,0 Gesl1eVerz 1 1 1 1 1 1 RekenRente 3 3 3 3 3 3 Regl_indv_code 1 1 1 1 1 1 Correctie_factor 3 3 3 3 3 3 Input values Beroepsklasse_factor 2 2 2 2 2 2 Values AF 1,28862 1,29920 1,30845 1,31637 1,32296 1,32822 Output
Appendix G: Testing Vormcodes with GAST 90 - Function 650-2: The differences within this function will only be generated when the
input parameter ‘Lft1eVerz’ consists of years and months.
EindLftUitk 75,0 75,0 75,0 75,0 75,0 75,0 Lft1eVerz 50,1 50,3 50,5 50,7 50,9 50,11 WachttijdTotIngUitk 2,0 2,0 2,0 2,0 2,0 2,0 AODuur 2,0 2,0 2,0 2,0 2,0 2,0 Gesl1eVerz 1 1 1 1 1 1 Input values RekenRente 3 3 3 3 3 3 Values AF 11,33978 11,30653 11,26930 11,22811 11,18295 11,13382 Output
values Values GAST 11,33433 11,29313 11,25194 11,21075 11,16956 11,12837
- Function 653-1: The differences within this function will only be generated when the
input parameter ‘Lft1eVerz’ consists of years and months.
EindLftUitk 75,0 75,0 75,0 75,0 75,0 75,0 Lft1eVerz 50,1 50,3 50,5 50,7 50,9 50,11 WachttijdTotIngUitk 2,0 2,0 2,0 2,0 2,0 2,0 AODuur 2,0 2,0 2,0 2,0 2,0 2,0 Gesl1eVerz 1 1 1 1 1 1 RekenRente 3 3 3 3 3 3 Regl_indv_code 1 1 1 1 1 1 Correctie_factor 3 3 3 3 3 3 Input values Beroepsklasse_factor 2 2 2 2 2 2 Values AF 1,25642 1,26614 1,27483 1,28249 1,28914 1,29475 Output
Appendix G: Testing Vormcodes with GAST 91 - Function 653-2: The differences within this function will only be generated when the
input parameter ‘Lft1eVerz’ consists of years and months.
EindLftUitk 75,0 75,0 75,0 75,0 75,0 75,0 Lft1eVerz 50,1 50,3 50,5 50,7 50,9 50,11 WachttijdTotIngUitk 2,0 2,0 2,0 2,0 2,0 2,0 AODuur 2,0 2,0 2,0 2,0 2,0 2,0 Gesl1eVerz 1 1 1 1 1 1 Input values RekenRente 3 3 3 3 3 3 Values AF 11,07419 11,03970 11,00206 10,96129 10,91737 10,87032 Output
values Values GAST 11,06988 11,02910 10,98832 10,94755 10,90677 10,86600
- Function 102-3: The differences within this function will only be generated when the
values of the input parameters are the following:
‘Lft1eVerz’ < 26,0
‘Lft2eVerz’ < 27,0
Months within ‘EindLftFinanc’ = 2 or 6
RekenRente 3 3 3 3 3 3 EindLftFinanc 62,2 62,2 62,2 62,6 62,6 62,6 Gesl1eVerz 1 1 1 1 1 1 Gesl2eVerz 2 2 2 2 2 2 Lft1eVerz 25,3 25,5 25,3 25,0 25,0 25,8 Input values Lft2eVerz 25,0 25,8 25,11 25,6 25,0 25,11 Values AF 21,98975 21,93225 21,98975 22,16700 22,16700 21,93900 Output
Appendix G: Testing Vormcodes with GAST 92 - Function 110-3: The differences within this function will only be generated when the
input parameter ‘EindLftFinanc’ consists of years and months. When the input parameter ‘Lft1eVerz’ also consists of years and months the amount of faults will increase. Gesl1eVerz 1 1 1 1 1 1 RekenRente 3 3 3 3 3 3 Lft1eVerz 50,0 50,0 50,0 30,0 30,0 30,1 Input values EindLftFinanc 62,5 62,7 62,9 62,7 62,10 62,1 Values AF 10,22600 10,33300 10,44000 20,71100 20,79700 20,50575 Output
values Values GAST 10,22500 10,33200 10,43900 20,71000 20,79600 20,50567
- Function 120-2: The differences within this function will only be generated when the
values of the input parameters are the following:
‘Gesl1eVerz’ = 2 ‘Lft1eVerz’ < 26,0 Months of ‘Lft1eVerz’ <> 0 Months of ‘EindLftUitk’ = 2 RekenRente 3 3 3 3 3 3 Gesl1eVerz 2 2 2 2 2 2 Gesl2eVerz 1 1 1 1 1 1 Lft1eVerz 20,1 20,6 21,5 21,7 24,9 25,11 Lft2eVerz 30,0 30,0 30,0 30,0 30,0 30,0 StijgRente 2 2 2 2 2 2 Input values EindLftUitk 75,2 75,2 75,2 75,2 75,2 75,2 Values AF 40,82850 40,58100 40,03483 39,93517 38,00825 37,28475 Output
Appendix G: Testing Vormcodes with GAST 93
Function 100-3
The results generated by the ‘Actuarieel Formularium’ differs from the results generated by GAST. It is not clear what the cause of the differences is. In the table below some examples are given. Gesl1eVerz 1 1 1 2 2 2 RekenRente 3 3 3 3 3 3 Lft1eVerz 20,0 30,0 40,0 50,0 60,0 30,0 Input values EindLftFinanc 62,0 62,0 62,0 62,0 62,0 62,0 Values AF 23,54400 20,18200 15,68300 9,89400 1,93000 20,34000 Output