The SEI helps advance software engineering principles and practices and serves as a national resource in software engineering, computer security, and process improvement. The SEI works closely with defense and government organizations, industry, and academia to continually improve software-intensive systems. Its core purpose is to help organizations improve their software engineering capabilities and develop or acquire the right software, defect free, within budget and on time, every time.

Adopting Software Product Lines

Product line adoption involves moving from some form of developing software-intensive systems with a single-system mentality to developing them as a software product line. A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. The adoption objective is to

have a core asset base, supportive processes, and organizational structures

develop products from that asset base in a way that achieves business goals

institute mechanisms to improve and extend the software product line adoption effort as long as it makes sense

The information necessary for successful software product line adoption is captured in three bodies of work.

The Framework for Software Product Line Practice describes essential activities and practice areas that form a conceptual framework for software product line practice. Core asset development, product development using the core assets, and management define the triad of essential activities necessary for fielding of a product line. A practice area is a body of work or a collection of activities that an organization must master to successfully carry out the essential work of a product line.

Goals of the framework include identifying the foundational concepts underlying software product lines and providing guidance to an organization about how to move to a product line approach for software. Launching and Institutionalizing is an example of a practice area specific to adopting software product lines.

Software Product Lines: Practices and Patterns extends the framework practice areas by introducing patterns to describe how the practice areas can be orchestrated to meet software product line goals and organizational situations. Patterns give common product line problem/solution pairs in which the problems are product line work to be done and the solutions are the group of practice areas to apply in concert to accomplish the work. Software Product Lines: Practices and Patterns provides a collection of 12 patterns to characterize common product line contexts and problem/solution pairs.

The Software Product Line Adoption Roadmap develops a variant of the factory pattern called the adoption factory pattern. The adoption factory pattern provides a generic roadmap to guide a manageable, phased product line adoption strategy. It can be used as a generic product line adoption roadmap for any organization attempting a product line approach for the first time or as the basis for an adoption model for a phased software product line or product line adoption plan.