Software is increasingly underpinning operations, products and services in organizations. This is especially true in the telco, airline, bank and defense sectors, as innovative technologies such as big data, IoT, cloud and NFVs are increasingly reducing the reliance on hardware for service on-boarding. This increased scope of software applications adds another dimension to software maintenance and modernization.
Software maintenance can be very challenging as often the people that created the original software have left the company. It has been estimated that there are more than 100 billion lines of code in deployed systems in the world today. As much as 80% of this code unstructured, has been updated many times and is not well documented. This makes these systems difficult, slow, and expensive to adapt to new business needs.
The organizations that most likely face such a stark software maintenance challenge are the ones that don’t have internal software governance toolsets, and depend mostly on third-party companies to maintain their custom-build software.
SPL Solution is an intelligent agile software governance platform that offers these organizations a toolset that their internal IT team can use to gain visibility and control over their legacy and outsourced software systems. If you are a service company, where software development is not your main business focus, and you are looking for an easy, fast and adaptable tool for your IT team to use to support on-going software development and maintenance activities, SPL Solution can fit your needs by:
- Auto- recovering the design structure of the existing software system to overcome the lack of documentation and visibility of legacy and outsourced software.
- Supporting the ongoing development by providing an effective requirement based traceability, intelligent software versioning and customization methods, and impact change analysis.
- Employing the recovered model to audit and analysis the software quality to identify unused and cloned code that has built up over time.
The software maintenance process starts with understanding the functionality and structure of the current code. A lack of understanding of software, caused by staff turnover, development outsourcing or ad hoc internal development, is a common maintenance challenge. Frequently there is poor or no code documentation which makes understanding the code more challenging. Industry estimates indicate that 50% of maintenance effort is related to software understanding and good documentation can reduce understanding effort by 20-30%.
SPL tool reverse engineers source code to create a multiple viewpoint model representation of the code. It is the first tool to include business requirements recovery. The viewpoint model provides complete, compact and comprehensive documentation of source code. Not only does the model aid understanding, but it can also be directly updated using the SPL editor. All the viewpoints are interconnected with special links, such that a change to one viewpoint (e.g. to add new or remove existing features) triggers equivalent changes in the other two viewpoints. To create a new software version, the model is updated by editing any or all of the views. The revised component and UML model viewpoints become the updated software design. The design determines which software elements can be reused and what new elements need to be created to realize the new requirements (or repair errors).
SPL tool supports the realization of the updated software system through governance capabilities that maximise the reuse of code and supports new code creation, integration, testing and deployment. The revised multiple viewpoint model provides comprehensive documentation from requirements to implementation (no additional documentation effort is required). Our clients have estimated SPL tool reduces maintenance effort by at least 25%: reduces the effort required to understand the current code and to design, develop, test, deploy and document the updated software code.
The target market for SPL tool is primarily enterprises and government organizations that create custom built software (either in-house or outsourced). It will also be attractive to software development companies who create custom built software. Start-up companies can also benefit from SPL tool.
- Software comprehension: Improved understanding by automatic creation of model-based documentation from source code. Documentation reduces on-going software maintenance effort.
- Requirements identification and traceability: the Feature Model identifies the requirements. The end-to-end traceability links connect each requirement to its associated software elements making software maintenance easier.
- Component Model: aids migration to micro-service/cloud development environment. Improves test coverage by identifying all components for systematic and extensive testing.
- Current and consistent system model: the model viewpoints are always synchronized due to the novel control links between viewpoints. When one viewpoint is changed the other viewpoints update automatically. Ensures viewpoints are up to date, accurate and a self-consistent representation of the software.
- Modification analysis: enables in-depth software pre-modification analysis. The impact on system features and the identification of the software elements affected, enables improved planning and change management.
- Quality assurance: identifies software policy violations, component coupling, dead code etc.
- Automatic configuration: all deployed products are automatically configured to ensure compatibility with the chosen implementation technology.
- Reusability analysis: identifies the % of assets that are reusable leading to more efficient production of different software versions
- Outsourcing ‘honest broker’: Enables enterprises and specialised software development companies to jointly understand the structure, functionality and the degree of component reusability in legacy code. Enables both parties to have an informed discussion on timescales and costs.
The main competitive advantages of SPL tool are:
- Complete, compact & comprehensive documentation (multiple viewpoint model provides better insight)
- More comprehensive traceability (between viewpoints and across the lifecycle)
- Reuse identified at the functional level (not at code package level)
- Full component “architecture” recovery (complete and more fine-grained)
- Improved model driven testing (improved component recovery ensures full component test coverage)
- Feature-based software versioning (software products defined by feature selection)
- Comprehensive automatic configuration of deployed product (from feature to technology specific deployment)