Software technologies are omnipresent in our lives today; few industries don’t rely on them in one way or another. Most develop, subcontract, and/or acquire significant amounts of software every year. But just as the technology is ubiquitous, so too is change: software must constantly evolve, or it is doomed to become obsolete. Software systems must be flexible, dynamic and able to evolve along with the needs of consumers; they must be built in a way that makes cost-effective change possible. This is a challenge since the systems tend to be large, highly complex built on top of other systems leading to large conglomerated systems of systems. In addition, the process of change requires a lot of people’s input and it’s risky, since unplanned and undisciplined changes in any software system of realistic size risk degrading the quality of the software, and producing unwanted or unexpected side effects. Consider the task to locate identify related artifacts via traceability relations; further suppose, your task is to navigate the concept graph shown above. Chances are one get lost. Or consider the inclusion diagram of a small WordPress activated website (diagram below in the left). There are about 650 files with about 1,000 relations. Understanding the code role of each file or modifying a plugin behavior is not a trivial task.
Finding ways to overcome these challenges is the SOCCER lab goal. Software changes should be carefully managed to be cost effective, avoid quality degradation and promote system longevity. In a nutshell, our goal is developing sophisticated tools for the effective planning, managing, and implementing of software changes. In our quest, we rely on many advanced techniques such as optimization and meta-heuristic approaches, machine learning and statistical methods, software analytic, natural language processing and information retrieval approaches.