OSSEM: an infrastructure for continuous software evolution management
2017-02-14T01:57:59Z (GMT) by
According to the laws of software evolution, software structure tends to degrade over time and cause future evolution to be even more difficult. Managing software evolution right from initial design through its evolution stages is important to ensure the final software product maintains its architectural integrity. Placing precise and timely software evolution information in the hands of the domain experts will allow accurate project and risk management while at the same time establishing clear accountabilities and guidelines. Current Software Evolution Management (SEM) infrastructures based on Software Configuration Management (SCM) lack product knowledge and deeper semantic understanding thus making it harder to effectively apply software metrics and feedback control systems that truly reflect the product and process needs. The disconnection of product knowledge in SCM prevents software practitioners from continually working with the logical design models through the implementation phases thus leads to widening software design and implementation gaps. Software process and product views should be closely linked in order to better manage and improve software quality. A SEM infrastructure is proposed that leverages the current state of SCM, incorporating application domain knowledge, a rich data model and a coherent process model that can be used to preserve the architectural integrity of the evolving software. My solution is Object-oriented Software Semantic Evolution Management (OSSEM), a SEM model and infrastructure with integral support for continuous modelling, applying software measurements and customisable feedback control systems to facilitate early detection of software design erosion. The infrastructure promotes extensibility by supporting custom metadata to define additional semantic artefacts, metrics policies to inject custom measurements and change policies to monitor quality attributes. I believe OSSEM unifies the software process and product perspectives; allows for more tacit knowledge to be made explicit and managed; empowers teams to be more context-aware during software maintenance or evolution activities; and overall provides guidance and governance to minimise software erosion in evolving systems.