Investigating the impact of developer productivity, task interdependence type and communication overhead in a multi-objective optimization approach for software project planning
Introduction
The success of a software project relies on delivering end-products on time, within budget and with all the required features and functionality. These goals can be realized only if the necessary planning, organizing, staffing, directing and control activities are carried out correctly by project managers. Furthermore, considering the ever-increasing size and complexity of modern-day software products, development companies face escalating pressure of having to provide software products sooner and cheaper than their competitors in order to remain viable. Therefore, a primary concern for software project managers is to make sure the right developers are selected while effectively balancing the duration and cost of a project, in order to prevent unnecessary cost and schedule overruns in subsequent stages of development and any overall reduction to the level of quality of the end-products. Consequently, it is important for software project managers to have support during resource allocation and scheduling activities through tools that will help them successfully select and arrange the most suitable (teams of) developers to guarantee the success of the software project, whilst satisfying both time and budgetary criteria simultaneously.
Human resource allocation and task scheduling in software development projects is a naturally complex and computationally-intensive process since multiple objectives need to be satisfied. For this reason, the problem is classed as a special case of the resource-constrained project scheduling problem (RCPSP), and therefore is considered to be an NP-hard problem, meaning that there is no algorithm known to be able to solve it in polynomial time [1], [2]. Project managers often struggle to use a manual approach because there are many different combinations to be examined. Thus, an exhaustive search to find the best solution will often prove inadequate and impractical, especially if they have a limited amount of time at their disposal. As a result, the majority of works view the problem as an operational research problem, where proposed solutions make use of techniques that carry out combinatorial optimization of various software criteria, such as cost, duration, or number of defects. Examples include mathematical modelling methods and computational intelligence techniques, where specialized algorithms are employed to locate optimal or near-optimal feasible solutions as a means of providing better and faster support to decision-makers. Several of these approaches emphasize that the allocation of developers and scheduling of tasks needs to take into account certain attributes of the available workforce, such as the capabilities and experience of developers in certain skills, as well as their cost.
There are, however, several other attributes that should also be addressed, the influence of which could allow project managers in the software industry to make more accurate staffing decisions and estimates during their planning activities earlier on in the project. Specifically, the proposed approach uniquely investigates the inclusion of productivity-related attributes concerning:
- •
the productivity rate of developers.
- •
the way in which productivity rates are combined within teams based on the type of work carried out (known as task interdependence type).
- •
the communication overhead that is incurred when developers work together and collaborate.
Including these attributes during planning activities is important, especially in cases where tasks are allowed to be undertaken by several developers whose efforts need to be combined to produce a task's output. Consequently, these attributes reflect on both the duration and cost of a software project, as well as the quality of the end-product.
The paper contributes to the existing research area in two ways. First, it adapts the RCPSP of human resource allocation and task scheduling in software development projects so as to include these overlooked productivity-related attributes. Second, it presents a novel attempt to solve the problem of minimizing the duration and cost of a software development project in its initial stage with the use of a multi-objective optimization incorporating the productivity-related attributes. In order to help achieve this, several objective and constraint functions are proposed to guide the generation of feasible and optimal solutions. Also, we attempt to include hard, realistic assumptions and constraints concerning the availability and suitability of developers that would normally affect the planning decisions of software project managers. The inclusion of these assumptions adds significantly to the complexity of the adapted RCPSP problem we attempt to solve, which makes it that much harder for the optimization process to find feasible and optimal solutions. We therefore employ several different variations of multi-objective genetic algorithms (MOGAs) to carry out the optimization and pose our first research question:
R1. How do different MOGAs perform in terms of generating (near-)optimal solutions with respect to our proposed approach to resource allocation and task scheduling?
Given the fact that as current technology capabilities are constantly improved, software systems progressively become larger. It is also important for our approach to be applicable for varying sizes of projects undertaken by varying sizes of development companies. Consequently, we examine the issue of scalability by setting our second research question:
R2. How do different MOGAs behave in terms of scalability as the number of tasks and developers increases in our proposed approach to resource allocation and task scheduling?
Furthermore, it is equally important to investigate the implications of the productivity-based attributes in practical software development settings. For this, several real-world projects were investigated. The ultimate goal is to provide an approach that accurately reflects both the manner with which these activities are carried out, and also the factors that may influence decisions taken by software project managers in an automated, efficient and less time-consuming way.
The remainder of the paper is structured as follows: Section 2 provides an overview of recent related attempts that also use optimization techniques to solve the problem of human resource allocation and task scheduling in software projects. Section 3 gives a formal description of our proposed adaption of the RCPSP, which considers task type interdependence, developer productivity and communication overhead. Section 4 presents the multi-objective optimization process adopted to solve the problem. Section 5 explains the experiments carried out to evaluate the proposed approach with regards to the research questions. Section 6 presents the results obtained and the quality indicators employed to help compare the MOGA variations. Section 7 discusses several observations made in real-world projects concerning the applicability of our approach. Section 8 examines potential threats to validity and how certain limitations were addressed. Lastly, Section 9 presents a synopsis with concluding remarks and possible future directions.
Section snippets
Related work
The majority of attempts to allocate developers and schedule tasks make use of optimization techniques, where the main goal is to maximize or minimize various software development objectives (most popular being cost and duration) through the use of mathematical modelling methods such as linear programming [3], [4], [5], constraint satisfaction [6], [7], queuing theory [8], [9], and statistical/probabilistic modelling [10], in addition to computational intelligence techniques like genetic
Description of adapted RCPSP
A software development project consists of a set of M tasks, which are determined by the project manager based on the activities from the different phases of software development that will be required. All tasks must be undertaken by at least one software developer employed by the development company. The project manager also determines the set of K professions whose associated skills will be required by the software project. Each task ti ∈ T is subsequently
Multi-objective optimization approach
The aim of our approach is to allocate human resources and schedule tasks so that the overall project duration and cost are minimized. We propose to solve our adaptation of the RCPSP by employing a multi-objective genetic algorithm as the optimization method that will generate near-optimal solutions. Genetic algorithms [39] are a type of evolutionary algorithm, which are widely used to solve search-based optimization problems by simulating the theory of natural evolution on a population of
RQ1: Performance of multi-objective genetic algorithms
The first research question investigates whether certain variations of MOGA are able to perform better with respect to locating (near-)optimal developer allocations and task schedules, in view of the increased optimization complexity that results from the addition of realistic assumptions and constraints in our productivity-related adaptation of the RCPSP. Therefore, to answer the first research question, we selected to compare four well-known variations of MOGAs, namely, the Non-dominated
Results and discussion
For each project instance, the four algorithms were run 100 times resulting in the generation of 100 Pareto fronts, each consisting of a number of non-dominated solutions in the objective space corresponding to developer allocations and task schedules. Subsequently, by combining the 100 Pareto fronts, we were able to extract an approximation Pareto front containing the best solutions each algorithm managed to locate for a project instance over its 100 runs. Then, by combining the approximation
Real-World observations and considerations
As part of our research, we also examined several software projects that were carried out by third-year university students during a project-oriented Software Engineering course spanning two semesters. The students possessed software development knowledge and skills at different levels of proficiency, and also had gained various practical experiences from their university coursework and, in some cases, industry employment. Groups of four to five students were required to develop a software
Construct validity
Threats to construct validity that may exist concern the assumptions and simplifications made regarding the software development process. In our case, the proposed approach does not take into account each developer's degree of dedication to the tasks that he or she is assigned to. Rather, the allocation of a developer is constrained to only one task for the whole duration of that task. However, on the one hand, taking this into account was not in the scope of the current work and, on the other
Conclusions
This paper addressed the problem of human resource allocation and task scheduling for software development, which is one of the most challenging planning activities faced by project managers as they attempt to minimize the cost and duration of the project. We adapted the traditional RCPSP to include productivity-related attributes, focusing on the fact that developers possessing different rates of productivity carry out tasks at different speeds. We have also established that the nature of the
References (57)
- et al.
A study of project scheduling optimization using tabu search algorithm
Eng Appl Artif Intell
(2008) - et al.
A systematic approach for resource allocation in software projects
Comput Ind Eng.
(2009) - et al.
Staffing a software project: a constraint satisfaction and optimization-based approach
Comput Oper Res.
(2008) - et al.
Time-line based model for software project scheduling with genetic algorithms
Inf Softw Technol
(2008) - et al.
Solving software project scheduling problems with ant colony optimization
Comput Oper Res.
(2013) - et al.
Fuzzy project scheduling system for software development
Fuzzy Set Syst.
(1994) - et al.
Software project management with GAs
Inform Sci.
(2007) - et al.
A knowledge-based evolutionary assistant to software development project scheduling
Expert Syst Appl.
(2011) - et al.
Hybridizing a multi-objective simulated annealing algorithm with a multi-objective evolutionary algorithm to solve a multi-objective project scheduling problem
Expert Syst Appl.
(2013) - et al.
The software project scheduling problem: a scalability analysis of multi-objective metaheuristics
Appl Soft Comput
(2014)