Keywords: product software, software configuration management, product data management, customer relationship management, software delivery, deployment
Integrated Development and MaintenanceThe maintenance, release, and deployment of enterprise application software is a complex task for a software vendor. This complexity is caused by the enormous scale of the undertaking. There are many customers for the vendor to serve, which all might require their own version or variant of the application. Furthermore, the application itself will consist of many (software) components that depend on each other to function correctly. On top of that, these components will evolve over time to answer the changing needs of the customers. As a consequence, the release and deployment of these applications take a significant amount of effort and is a time consuming and error-prone process.To alleviate this problem we envision an intelligent software knowledge base (ISKB) that contains all facts about all artefacts together with their relevant attributes, relations and constraints. In this way, high-quality software configurations can be calculated automatically from a small set of key parameters. It also becomes possible to pose whatif questions about necessary or future upgrades of a customer's configuration. The ISKB can improve the software maintenance processes at both the customer and the software vendor sites.Exact Software (ES), a software manufacturer in the Netherlands serving 160,000 customers worldwide, has implemented an ISKB to manage and improve its software maintenance, release, and deployment processes. The ISKB implemented by ES has been implemented in its own product e-Synergy. In this paper we show that ES successfully supports its large customer base with an integrated product data management (PDM), software configuration management (SCM), and customer relationship management (CRM) system, thereby alleviating the process of software product maintenance. The paper describes how the processes of development, release, and deployment have been improved by integrating processes that were previously managed by utilizing different isolated systems. The paper also demonstrates how a central software knowledge base, containing all the relevant knowledge about software products, is implemented and used to support the processes of software maintenance. Finally, the paper describes four principles employed by ES to deal with general complexities in the software engineering discipline with respect to software maintenance.