Software product line

{{Short description|Software engineering technique}}

Software product lines (SPLs), or software product line development, refers to software engineering methods, tools and techniques for creating a collection of similar software systems from a shared set of software assets using a common means of production.[http://www.sei.cmu.edu/productlines Software Product Lines] Carnegie Mellon Software Engineering Institute Web SiteCharles W. koushik,[http://www.softwareproductlines.com/introduction/introduction.html Introduction to Software Product Lines] {{webarchive|url=https://web.archive.org/web/20120204175123/http://www.softwareproductlines.com/introduction/introduction.html |date=2012-02-04 }}

The Carnegie Mellon Software Engineering Institute defines a software product line as "a set of software-intensive systems that share a common, managed set of features satisfying 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."[http://www.sei.cmu.edu/productlines Software Product Lines] Carnegie Mellon Software Engineering Institute Web Site

Description

Manufacturers have long employed analogous engineering techniques to create a product line of similar products using a common factory that assembles and configures parts designed to be reused across the product line. For example, automotive manufacturers can create unique variations of one car model using a single pool of carefully designed parts and a factory specifically designed to configure and assemble those parts.

The characteristic that distinguishes software product lines from previous efforts is predictive versus opportunistic software reuse. Rather than put general software components into a library in the hope that opportunities for reuse will arise, software product lines only call for software artifacts to be created when reuse is predicted in one or more products in a well defined product line.Charles W. Krueger, [http://www.methodsandtools.com/archive/archive.php?id=45 Introduction to the Emerging Practice of Software Product Line Development]

Recent advances in the software product line field have demonstrated that narrow and strategic application of these concepts can yield order of magnitude improvements in software engineering capability.{{Citation needed|date=September 2016}} The result is often a discontinuous jump in competitive business advantage{{Citation needed|date=September 2016}}, similar to that seen when manufacturers adopt mass production and mass customization paradigms.

Development

While early software product line methods at the genesis of the field provided the best software engineering improvement metrics seen in four decades, the latest generation of software product line methods and tools are exhibiting even greater improvements. New generation methods are extending benefits beyond product creation into maintenance and evolution, lowering the overall complexity of product line development, increasing the scalability of product line portfolios, and enabling organizations to make the transition to software product line practice with orders of magnitude less time, cost and effort.

Recently the concepts of software product lines have been extended to cover systems and software engineering holistically. This is reflected by the emergence of industry standard families like ISO 265xx on systems and software engineering practices for product lines.{{cite ISO standard|csnumber=69529|title=ISO 26550:2015 – Software and systems engineering — Reference model for product line engineering and management}}.

See also

References

{{Reflist}}