How to use AI for Software Development Effort Estimation?

Software development involves a number of interrelated factors which affect development effort and productivity. Since many of these relationships are not well understood, accurate estimation of software development time and effort is a difficult problem. The most significant activity in software development is to develop projects within confined time and budget. As accuracy plays a vital role for software system, prediction of effort estimation is one of the critical tasks required for developing software.

Aritificial Intelligence

AI for Software Development

Decision making under uncertainty is a critical problem in the field of software engineering. Predicting the software quality or the cost or effort requires high level expertise. AI based predictor models, on the other hand, are useful decision making tools that learn from past projects’ data. Effort estimation is crucial for the control, quality and success of any software development project and it became even more crucial in software development where stakeholders are from different background and interest and there is a huge cultural, linguistic and temporal difference involved between them.

 

Software Effort estimation techniques fall under the categories of Expert judgment, Algorithmic estimation and Machine Learning. Most estimation models in use or proposed in the literature are based on regression techniques. But, Artificial Intelligence techniques such as artificial neural network (ANN) and case based reasoning have higher potential in creating development effort estimation models. Artificial neural network can provide accurate estimates when there are complex relationships between variables and where the input data is distorted by high noise levels while case based reasoning solves problems by adapting solutions from old problems similar to the current problem. Performance of back propagation artificial neural networks in estimating software development effort and the case based reasoning for development estimation are remarkable.

ANNs are successful in accurately estimating project effort in a large dataset of project data which is likely to have contained considerably high noise typically occurs in project data. The dataset must meet the requirements of sufficient observations for adequate training. The intuitive expectation is that estimation errors will increase as the level of noise in the dataset is increased. The conclusion thus is a conditional affirmation that artificial intelligence models are capable of providing adequate estimation models. Their performance is to a large degree dependent on the data on which they are trained, and the extent to which suitable project data is available will determine the extent to which adequate effort estimation models can be developed.

Performance of different AI algorithms to make an intelligent application for the purpose of predicting cost and time should be evaluated in terms of accuracy, memory used, search time, build time and error rate. This approach helps in the reduction of effort estimation for the efficient development of software. We can build an effort estimation model to predict the effort prior to projects’ development lifecycle. We have to collect process, product and resource metrics from past projects together with the effort values distributed among software life cycle phases, i.e. analysis & test, design & development. We have to use the clustering approach to form consistent project groups and Support Vector Regression to predict the effort.

Moreover, the comparisons of different AI techniques need to be done to decide which AI method is more suitable in which situation. Validated results would confirm the benefits of using AI methods in real life problems. We can attain predicting highly reliable values for future projects. Results would confirm that AI methods gives more accurate effort estimation as compared to the traditional methods of effort estimation.

Tharindu Buddhika Adhikari

Senior Engineer - Specialist, EIM Practice, Virtusa. In his six years of experience in Information Technology, Tharindu has been instrumental in conceptualizing, designing, implementing, and maintaining large scale enterprise solutions across different platforms. He specializes in artificial intelligence, data warehousing, data mining, and big data. He is a council member of the Sri Lanka Association for Artificial Intelligence and an active member of IEEE. He was honored in the e-Swabhimani award ceremony under the e-Government & Institutions category by ICTA, Sri Lanka. His team also won the inaugural MOTOROLA Enterprise Mobility Application Software Development competition. Prior to Virtusa, he worked with Lanka Bell, developing next-generation networks (NGN) and 4G long term evaluation (LTE) billing systems and administrated their business intelligence tools. During his initial career days, he developed face and fingerprint recognition systems with Data Management Systems Ltd., for the Sri Lankan government. He also co-founded Neurotechnology’s first offshore development center in Sri Lanka. He holds a B.Sc. in Electrical and Information Engineering from the University of Ruhuna and is currently pursuing his M.Sc. in Artificial Intelligence from the University of Moratuwa.

More Posts