Forrester System Dynamics Modelling of Software Development Processes

Software development processes are complex. In particular, these processes 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: 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:
  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:
  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:
  5. How much time is required to complete the project ?