Often the evolution of a business critical software system leads to a
product-line architecture (PLA). A PLA is an architecture for a family
of software products sharing similar structure and functionality.
Usually a PLA consists of a product platform and a set of components,
to be reused in several independently distributed products. A PLA aims
at flexibility, trying to provide support for individual products without
losing its generality.
A PLA has many benefits. It promotes software reuse by allowing several
products to share both code and design. This in turn leads to shortened
time-to-market, without sacrificing the quality of the products.
In fact, the quality of the products is improved as the platform matures.
Product development process becomes less risky and more systematic and
predictable: the process (together with the applied methods and tools)
becomes reusable, too. PLAs often allow fast prototyping, making it
possible to develop very quickly high-quality prototypes, to be evaluated
by customers. Product development personnel acquire a company-specific
software culture, making it easy to exchange personnel from one product
project to another.
However, the design of a PLA is hard. Often a PLA is a result of a long,
untraceable evolution rather than the outcome of a systematic, conscious
design process. In such a case the platform becomes easily corrupted and
poorly maintainable, as the architectural principles are not clearly understood.
On the other hand, there is relatively little knowledge about the design
process for a PLA. Besides certain general guidelines for PLA design,
methods have been proposed to assess software architectures from the point
of view of flexibility.
The general purpose of the project is to increase the understanding of the
significance of software architectures as a means to rationalize software
production. In particular, the project studies product-line architectures
from an industrial perspective, providing practically motivated methodological
support for PLAs. A central aim of the project is to transfer knowledge about
real, practical PLAs from industry to academia, and knowledge about existing
methodological support for PLAs from academia to the industry. To achieve its
aims, the project has the following subgoals:
- Mapping out, improving and applying existing methods for domain analysis and PLA feasibility study (including cost estimation techniques)
- Mapping out, improving and applying existing methods for PLA design and documentation
- Mapping out, improving and applying existing methods for PLA assessment
- Mapping out, improving and applying existing methods for PLA reuse
The work will be carried out in close co-operation with the participating
industrial partners. Each industrial partner provides a case study consisting
of either an existing PLA or a requirement specification for a PLA. In the former
case the project produces an evaluation of the PLA, in the latter case the
project produces a design rationale according to the requirements.
The project is roughly divided into three phases. In the first phase,
existing methodological support for PLAs is surveyed and presented in a
systematic way. In the second phase, case studies given by industrial partners
are elaborated using the found methods. In the third phase, the results and
experiences are synthesized into a PLA handbook.
ARCHIMEDES is a 3-year project (2001-2004) funded by TEKES (National Technology Agency)
and several Finnish industrial partners (Ionific, Ingenix, Profit and Almare).