## Forrester System Dynamics Modelling of Software Development Processes

Software development processes are complex. In particular, these processes
• contain many intricate cause/effect dependencies, including feedback loops, and
• are time-dependent (dynamic).
The Forrester System Dynamics formalism allows for intuitive representation of dependencies between relevant quantities (levels and rates). Apart from giving qualitative insight, if relationships are sufficiently specified, these models also allow one to derive quantitative results -the dynamics of the process- through simulation. As such, Forrester System Dynamics models/simulations of Software processes are a useful tool for the analysis and subsequent increase of the efficiency of these processes. In this assignment, we want to build a simple model of the software development process. In particular, we are interested in the effect on the completion date of a project of adding new personnel sometime during the project. For that purpose, we will start modelling a simplified version (without new personnel arriving) and then complete the model adding the hiring of new personnel.

## No new personnel

Suppose we know (or have estimated) the size of the project requirements or initial amount of work to be completed. In this case, we have expressed the work to be completed in Function Points units (one could also use lines of code). The initial amount of work to be completed (requirements) if 500 FP. We are interested in the amount of work to be completed as a function of time. Note how software development should stop once the work_to_be_completed becomes zero. In Forrester System Dynamics style, the dynamics of work_to_be_completed is described by specifying its rate-of-change (transforming work_to_be_completed into work_completed (initially 0)). The rate-of-change of work_to_be_completed (also known as productivity) depends on:
• The nominal_productivity: the number of Function Points a single team member can implement in a day of work (PF/person-day). For this problem, nominal_productivity is 0.3 FP/day.
• The number of people N on the team. In this simple model, we assume N=10.
• As a first approximation, the rate-of-change is proportional to the number of people N on the development team. If one assumes every team-member communicates with every other team member (a clique), the amount of communication is proportional to N2. The proportionality factor is C_overhead (0.06 in our model). Communication is detrimental to productivity and will hence have a negative influence on the rate-of-change of work_to_be_completed.
Summarizing, the development rate (rate-of-change of work_to_be_completed) can be modelled as:
Note how the rate should drop to 0 once the work_to_be_completed becomes 0 (the project is finished). Produce the following:
1. A System Dynamics model for the above if N=5
2. Simulation results (simulation model: RungeKutta 4, time step = 1 day)
3. Plot, as a function of time:
• The development rate
• The work completed
• The work to be completed
4. How much time is required to complete the project ?
5. Find the team size N which minimizes the project's time-to-completion.
The C_overhead*N2 is obviously a naieve model. If 1-C_overhead*N2 becomes larger than one, the work_to_be_completed will increase rather than decrease ! In more realistic models, tables (constructed from measurements) are constructed to express relationships such as communication_overhead(N).

## New personnel

Extend the previous model to include the hiring of new personnel at some point during the project (possibly at the very beginning), as well as the overhead that the training of this personnel entails. For this purpose, we will distinguish between "Experienced Personnel" and "New Personnel" (as opposed to the single team size N before). It takes 20 days for a new employee to become Experienced, and for each new employee, 0.25 experienced employees are needed to train the new employee. Obviously, while training new employees, experienced employees are not productive. Suppose also that experienced personnel produces at 1.2 times the nominal productivity, whereas new personnel produces at 0.8 times nominal productivity. Produce the following for the above and discuss:
1. A System Dynamics model for the above
2. Compare the effect of adding 3 programmers and of adding 5 programmers to the project after 100 days (when it is found out the project is going to be late).
3. Simulation results (simulation model: RungeKutta 4, time step = 1 day)
4. Plot, as a function of time:
• The development rate
• The work completed
• The work to be completed
5. How much time is required to complete the project ?

## Hints

• For this assignment you can use a free version of the tool VenSim.
• Have a look at the examples included with the software. Some are quite close to this problem. Even Forrester's World Dynamics model is included !
• Use the IF/THEN/ELSE function to model discrete changes in for example rate values.
• Use the PULSE(time, height) function to model injecting new personnel.
• To model a delay D of a signal x, use an ODE dx/dt = -x/D (in the form of a System Dynamics model of course).
• The result of your analysis will (should) be the well known Brooks' Law (described in his seminal book The Mythical Man-Month).