Software is now essential in every aspect of our lives. From morning till night, it helps us carry out our daily tasks at home, at work and everywhere. Software must evolve fast, however it ages and can quickly become obsolete, so it needs to be updated and maintained on a regular basis.
But evolving software systems is not an easy task. Software is considered among the most complex artefacts ever created by human beings. Software systems like Netflix or Amazon are made up of millions of lines of code, and just as many lines for configuration, documentation, testing, production, etc. Code changes are frequent and follow a complex process that often lead to cost or delivery time overruns. Our research team aims to improve software maintainability, evolution and quality while minimizing costs and improving developer productivity.
Software Development Process
The following figure shows a simplified version of the software development process.
It starts with a developer writing a piece of code or modifying an existing one. A preliminary check is then performed using an early warning system. If all goes well, a code review team inspects the code to identify any implementation or design errors/anomalies. If no problems are detected, the application will be built from the source code generally after running a continuous integration (CI) tool.
However, if a problem occurs at any stage, the developer must go back to the drawing board and pass the code through the sanity checks. To better manage this complex process, the use of high-performance, intelligent tools and techniques is crucial in efficiently making the required software changes.
This can be achieved through artificial intelligence and data analytics techniques to support the volatile software lifecycle, while adopting customized methods to manage and reduce the growing complexity of these software systems. The ultimate goal of our research team is to develop intelligent, efficient tools to boost developers’ productivity and reduce software maintenance costs, which typically account for over 70% of the total budget.
Conclusion
It is important to follow best software design and implementation practices in order to avoid any possible failures and side effects that can hinder software maintenance and evolution. It’s also important to continually modernize and improve software development environments, and offer user-friendly, reliable and practical tools to facilitate the tasks of development teams.