Most embedded software in the consumer electronics is generally developed through derivation from legacy software. Many new projects are derived from preexisting ones, through modification of functionality, optimization of performance and application new features. Particularly in the digital AV (audio & video) domain, the rise of 'digital convergence' has lead to a need for the functionality of products to be integrated and unified across different products. In this situation, a product line approach might be more efficient and effective rather than a product-oriented approach. The characteristics of this environment make the product line approach ideal for the digital AV domain. In this paper, we present our experience of designing product line architecture as a common, reference architecture in the digital AV domain. We describe our development process with application on a case project. We also show concrete principles and guidelines to design and build a software product line in consideration of the characteristics of the digital AV domain. We developed guidelines with our experience and domain knowledge in the digital AV domain mainly focused on reusability, maintainability and flexibility. We believe that concrete design principles and guidelines can significantly enhance those attributes in the productization. As a case study, we describe how to find, extract and develop core assets of the product family against our process and guidelines. We found candidates of architecture and core assets, and then extracted target architecture via re-engineering. With the analysis information and domain knowledge of legacy system, we developed a reference architecture with commonality and variability of the target domain. We used the term 'software platform' for the reference architecture and set of core assets as an implementation of software product line. We evaluated the platform against the guidelines as a design guideline itself and quality attribute as well.
[1]
Jaejoon Lee,et al.
Concepts and Guidelines of Feature Modeling for Product Line Software Engineering
,
2002,
ICSR.
[2]
Jan Bosch,et al.
Design and use of software architectures - adopting and evolving a product-line approach
,
2000
.
[3]
Harald C. Gall,et al.
Recovery of Architectural Structure: A Case Study
,
1998,
ESPRIT ARES Workshop.
[4]
Jaejoon Lee,et al.
Feature-Oriented Re-engineering of Legacy Systems into Product Line Assets - a Case Study
,
2005,
SPLC.
[5]
Paul Clements,et al.
Software architecture in practice
,
1999,
SEI series in software engineering.
[6]
Barbara Paech,et al.
Component-based product line engineering with UML
,
2001,
Addison Wesley object technology series.
[7]
Paul Clements,et al.
Software product lines - practices and patterns
,
2001,
SEI series in software engineering.
[8]
Jean-Francois Girard,et al.
Transitioning legacy assets to a product line architecture
,
1999,
ESEC/FSE-7.
[9]
Claudio Riva,et al.
Architectural Evolution of Legacy Product Families
,
2001,
PFE.
[10]
Rick Kazman,et al.
Evaluating Software Architectures: Methods and Case Studies
,
2001
.
[11]
Jan Bosch,et al.
Evolution of Software Product Families
,
2000,
IW-SAPF.
[12]
Evans,et al.
Domain-driven design
,
2003
.