Software Complexity Modeling

Description

There currently does not exist a comprehensive software complexity methodology that takes into considerations different dimensions of software applications, allowing software applications to grow unnecessarily complex as they mature. To assess the complexity of software, we strive to develop a model that considers different types of dimensions as foundational features.

Abstract:

There currently does not exist a comprehensive software complexity methodology that takes into considerations different dimensions of software applications, allowing software applications to grow unnecessarily complex as they mature. This software complexity may lead to drawbacks in reliability and maintainability as well as cost and scheduling. As the dependency on software increases, it becomes imperative that we assess the complexity of software in order to mitigate these shortcomings. To assess the complexity of software, we strive to develop a model that considers different types of dimensions as foundational features. Understanding how and why software is complex and providing an accurate score of a project’s complexity allows us to mitigate the future complexity of software. Our research leverages existing software complexity measurement methods in order to develop a novel quantitative model. To build our model, we leverage the analysis of open-source software projects from the Apache Software Foundation. Additionally, the use of the Apache’s project management system provides a representation of project flow issues in the form of tasks, features, defects, and improvements. By constructing a model that leverages these project indicators, we aim to provide a more accurate and quantifiable representation of the complexity of software applications. From a data intelligence perspective, this research allows us to gain valuable insight into data and metrics which were previously unavailable to earlier generations of software projects. As future dependency on software continues to grow, it is pivotal to identify the complexity of software projects, allowing us to build better software.