How to create a software development project model?
The book chapter Modeling and Simulation in Complex Project Management authored by Sergey Suslov and Dmitry Katalevsky describes project management models.
In this chapter, they tackle a very common problem that seems simple at first glance but is actually more complicated: a software company needs to develop about 500,000 lines of source code and 3 new trainees are hired every month. After reaching a certain experience limit, these trainees become developers.
Based on this business logic, two models were created using different approaches. The first used system dynamics modeling, while the second employed discrete-event modeling.
In the diagrams below, we can see this illustrated.
A distinctive feature of AnyLogic is the availability of a complete set of tools for building models based on three main simulation modeling paradigms: the previously mentioned system dynamics and discrete-event approaches, and finally agent-based modeling.
Benefits of agent-based modeling
Agent-based modeling (ABM) is the most recent major simulation method. In the past, ABM was limited in practical applications by the state of computer hardware, but as technology is continuously evolving, this situation is rapidly changing. Increasing competition in the simulation services market is driving demand for tools and solutions that make simulations more effective and efficient.
Let’s look at an example of a project management simulation showing the main benefits of ABM compared to models created using system dynamics and discrete event approaches.
The main subjects of agent-based models are undoubtedly agents – entities that can have behavior, memory, and their own set of required characteristics. Why can this feature be so useful in the development of a simulation model?
In the software development model both experienced developers and trainees participate in product development. The behavior and labor productivity of these two groups of agents (“populations”) are different. Here, the agent-based approach plays on our side in favor of accuracy because each type of agent can have its own statechart and behavior.
In the first statechart illustrated below, developers have three states: Developing (when they write code), AnsweringTraineeQuestions (when they take part in the educational process of their less experienced colleagues), and Communicating (a kind of idle state, when developers are not working on the project directly, but are involved in discussions with colleagues regarding it).
Agents move through these states according to a given set of transition rules, for example, one developer can randomly send a message to another in order to discuss the current state of development. After a random amount of time, they should return to work.
Agents contain some logic and variables while at the same time complex mathematical formulas are not used to set the agent’s behavior. The configuration process is straightforward – who is the mentor, how experienced is the trainee, how often they have questions, and so on.
Besides the more obvious factor, the experience of employees, the agent-based approach allows many subtleties to be considered. For example, each trainee can be assigned to a mentor, who is ready to lend a helping hand at the drop of a hat, which is also important. Agents can communicate using a message system inside a statechart. In this way, a fairly common situation can be simulated when a trainee needs help, and their mentor should temporarily stop development to participate in the learning process.
At some point, the company may encounter a large number of new employees, and group training in this case would be the most rational and natural solution. The agent-based approach allows individual agents to interact with entire populations. This factor indicates the scalability of the solution.
You can get acquainted with the agent-based approach to the software development process dynamics by running the model in AnyLogic Cloud or take a look at it below.
Conclusion
ABM is the most explicit approach that allows you to avoid abstraction by "programming" the logic of agents' behavior in detail. In contrast to system dynamics, there is almost no need to use formulas with this method. The use of the agent-based approach also made it possible to set different behaviors for both of the groups – developers and trainees, using statecharts.
All agents are unique, as they contain many internal variables, on which their state depends. By taking advantage of this, we assigned each individual trainee to a different mentor, resulting in greater realism than other approaches, and therefore more accurate modeling results.
The flexibility in agent configuration provided by the agent-based approach makes it possible to model the development of both small and large projects with equal accuracy. The larger the project, the more labor is required. Thus, scalability is an essential part of modeling and the relationship between agents enables this to be achieved successfully.
You can learn more about ABM and its practical applications in the video from a workshop on Agent-Based Modeling: Consumer Choice Model.
Subscribe to our monthly newsletter so we can bring our latest blog posts directly to your inbox.