## 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 N
^{2}. 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:

rate = nominal_productivity*(1-C_overhead*N)*N

Note how the rate should drop to 0 once the
work_to_be_completed becomes 0 (the project is finished).
Produce the following:
- A System Dynamics model for the above if N=5
- Simulation results (simulation model: RungeKutta 4, time step = 1 day)
- Plot, as a function of time:
- The development rate
- The work completed
- The work to be completed

- How much time is required to complete the project ?
- Find the team size N which minimizes the project's time-to-completion.

The C_overhead*N^{2} is obviously a naieve model.
If 1-C_overhead*N^{2} 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:
- A System Dynamics model for the above
- 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).
- Simulation results (simulation model: RungeKutta 4, time step = 1 day)
- Plot, as a function of time:
- The development rate
- The work completed
- The work to be completed

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