Software Product Lines Re-using Architectural Assets - continued from CSSE 375 CSSE 477 Software Architecture Week 7, Day 2, including Ch 14 in Bass’s book 1 Today – How’s the Security project going? Tonight – turn in arch doc changes, sec 3 - 5 How’s the research paper going? Product Lines: Chapter 14 in SA (Bass et al’s book) Coming up – Thursday Work on Security project Friday Show & tell / turn-in security project Linda Northrop and Len Bass flank Henk Obbink of Philips Research Laboratories at a 2002 conference on software product lines. http://www.sei.cmu.edu/news-at-sei/features/2002/4q02/feature-2-4q02.htm . 2 And, for extra credit… • Go to this tonight, email me a paragraph describing what you learned, and it will replace any missing daily quiz grade for CSSE 477: Beckman Coulter Software Development Tech Symposium The Union Heritage Room on Thursday, October 20th 5:00- Welcome and Introductions 5:15- Concurrent Software Development with Bob Burger Why concurrent software is important, what makes it difficult, what concurrency models make it easier, and how we have used these models at Beckman Coulter over the past decade to make robust systems. 6:15- Open Panel Discussion Refreshments will be served 7:00- Domain-specific Programming Languages for Automation with Mike Ashley Scientists and medical laboratory pathologists want to automate their routine work and do so with languages that match how they think. This talk will survey different languages we have developed to automate tasks and give some detail on how these languages were implemented. 8:00- Closing Comments 3 - from CSSE 375 - SA Ch 14 – Software Product Lines Review from CSSE 375 discussion: What is a software product line? (p. 353) 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. In the product line manager’s view, it should go like this: Develop product 1 1-Spl Develop product 2 2-Spl Develop core product CORE Develop product 3 3-Spl =4 “load lines” that are better than 3! 4 SA Ch 14 – Software Product Lines From the SEI: Software product lines are emerging as a viable and important development paradigm allowing companies to realize order-ofmagnitude improvements in time to market, cost, productivity, quality, and other business drivers. Software product line engineering can also enable rapid market entry and flexible response, and provide a capability for mass customization. How do you implement processes that make software product lines a dependable, low-risk high-payoff practice? Combines business and technical approaches to achieve success. 5 SA Ch 14 – Software Product Lines From the SEI: Benefits Product lines can help organizations overcome the problems caused by resource shortages. Organizations of all types and sizes have discovered that a product line strategy, when skillfully implemented, can produce many benefits—and ultimately give the organizations a competitive edge. Example organizational benefits include: • • • • • • Improved productivity by as much as 10x Increased quality by as much as 10x Decreased cost by as much as 60% Decreased labor needs by as much as 87% Decreased time to market (to field, to launch) by as much as 98% Ability to move into new markets in months, not years 6 SA Ch 14 – Software Product Lines From the SEI: You can “acquire” a product line capability – like the military does: 7 SA Ch 14 – Software Product Lines From the SEI: What’s product line work look like to a developer? 8 SA Ch 14 – Software Product Lines - from CSSE 375 - How do you do an architecture for a product line (pp. 360+), cntd? Supporting variation points – 1. Inclusion or omission of elements 2. Inclusion of a different number of replicated elements 3. Selection of versions of elements that have the same interface but different behavioral or quality attribute characteristics Supporting these variations can cause: a. b. c. d. e. In OO systems, specializing or generalizing of classes Building extension points Introducing build-time parameters A need for reflective programs, which analyze their data & situation Overloading of types (good and bad) 9 SA Ch 14 – Software Product Lines - from CSSE 375 - How do you do an architecture for a product line (pp. 360+), cntd? Evaluating a product line architecture – What and how to evaluate – focus on variation points When to evaluate – when you think you need separate products with architectural variations, or when a new product is proposed which seems significantly different So, this product line stuff can be a great efficiency or a real problem! Which of these belong on the same “production line”? 10 SA Ch 14 – Software Product Lines What makes software product lines work? Skill in predicting the future! (Or making it happen.) 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 hopes 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. 11 SA Ch 14 – Software Product Lines - from CSSE 375 - Commonalities are a key (pp. 355-6)? Commonalities in: Requirements Architectural design Software elements Modeling and analysis Testing Project planning Processes, methods and tools People Exemplar systems Defect elimination “Scoping” determines what systems are in and out (pp 357-8). Narrow vs. broad scope… 12 SA Ch 14 – Software Product Lines Details – Ingredients in making product lines work well: 1. Software asset inputs: a collection of software assets – such as requirements, source code components, test cases, architecture, and documentation – that can be configured and composed in different ways to create all of the products in a product line. Each of the assets has a well defined role within a common architecture for the product line. To accommodate variation among the products, some of the assets may be optional and some of the assets may have internal variation points that can be configured in different ways to provide different behavior. 13 SA Ch 14 – Software Product Lines Details - Ingredients in making product lines work well: 2. Decision model and product decisions: The decision model describes optional and variable features for the products in the product line. Each product in the product line is uniquely defined by its product decisions choices for each of the optional and variable features in the decision model. 14 SA Ch 14 – Software Product Lines Details - Ingredients in making product lines work well: 3. Production mechanism and process: the means for composing and configuring products from the software asset inputs. Product decisions are used during production to determine which software asset inputs to use and how to configure the variation points within those assets. 15 SA Ch 14 – Software Product Lines Details - Ingredients in making product lines work well: 4. Software product outputs: the collection of all products that can be produced for the product line. The scope of the product line is determined by the set of software product outputs that can be produced from the software assets and decision model. 16 SA Ch 14 – Software Product Lines - from CSSE 375 - What makes software product lines so difficult (pp. 363+)? Need a mature organization Need an architecture definition Need configuration management Need a conscious decision to adopt an architecture (See Ch 15) May need to make use of external sources May need different use of internal sources (e.g., supplying each other) Probably need to reorganize, need business units to work together 17 SA Ch 14 – Software Product Lines A great case history – Celsius Tech Bass Ch 15 - See separate slide set on the course web site! - 18 SA Ch 14 – Software Product Lines And a framework of best practices! See http://www.sei.cmu.edu/productlines/frame_report/index.html. As a sample follow-up activity, please read the section of this document on configuration management! 19