Abstract

Inadequate use of project management techniques in software development can be traced to the lack of efficient education strategies for managers. Software development processes are complex and therefore it is hard to predict how changes made to some part of the process can affect the overall outcome of the process. Introducing change in the process is often time consuming and there is no assurance that the change implemented will result in an improvement. Simulation of software development process provides an easy way for managers to test the different configurations of the process and understand the effects of various policies. In this work, the users of the simulation can act as managers without caring about the risks of the failures of real software projects. This simulation is a learning-by-doing model where software developers and students can understand the concepts of software process and the underlying risk, and other decision making activities. This project aims at developing a software process simulation with an agent architecture, where the agents are the entities that mimic the real software developers within the simulation. The individual behavior of the agents is based on the statistical data collected over a period of time using Personal Software Process (PSP). Given the statistics collected, expected behavior of the individuals can be enacted over time during the scope of software development. The provision of having a user constantly monitoring the software development within the simulation is made. In this work, simulation processes can be changed during the model execution. The simulation accepts the feedback from the user after every period of time. The simulation interface displays the actual vs. planned matrix. Based on these matrices of comparison, the user can introduce any changes to the software process that he thinks might improve the overall development cycle of the project. Using agent directed simulation to mimic the software development process at the individual level also would enable us to introduce a new phase of software development without having to change the simulation code. This simulation would start with a given number of agents initialized by the user. At any point of time, the user may change the number of developers or assign developers on different phases of the software development depending on their performance and capabilities.