Increasingly, software products are designed to include many variants, collectively constituting a software product line (SPL). In mass consumption products, this software fl exibility has become necessary in order to achieve the mass customisation required to meet the needs of an ever more demanding market.
SPLs are common nowadays. Examples are ERPs; telecommunication services; office suites; e-business, e-learning and e-government services; Web services and open source software; among many others.
However, there is still a lack of tool support in the Application Engineering phase, which is the phase during which a product is assembled and configured from intermediary reusable components. Several companies that plan to adopt (or have already adopted) an SPL approach have confirmed the need for tools and services during the configuration phase.
The CALiPro project targets the improvement and automation of the configuration of an SPL by developing a set of innovative tools, services and methods to meet the needs of the collaborating companies.
The second year of the project was focused on the search for the best support for tools. Experimentations with SAT solver technology showed their limitations and SMT solver (SAT Modulo Theories) were considered. SMT solvers offer more expressivity than SAT solvers thanks to the embedded theory-specific solvers, yet they remain more efficient than more generic constraint-based solvers. After a survey of different SMT, STP a leading solver developed at the MIT. This solver was analysed through a 3 month internship at the CSAIL lab of MIT which is developing the solver. Based on this knowledge specific extensions were developed in order to support strings, which are used in TVL, the textual modelling language used to model SPL develpped at FUNDP.
Added Value for Business
During the last decade, SPL development methods have progressed enormously, and success stories are becoming more and more common. The advantage of these approaches is the ability to massively reuse components across the products of an SPL in a planned and systematic way. This makes it possible to:
- Reduce costs thanks to economies of scale;
- Reduce time-to-market;
- Improve the global quality of the software.