Computer Systems & Architecture Lesson 5 10. Software Product Lines.

Slides:



Advertisements
Similar presentations
Introduction to Product Family Engineering. 11 Oct 2002 Ver 2.0 ©Copyright 2002 Vortex System Concepts 2 Product Family Engineering Overview Project Engineering.
Advertisements

Object-Oriented Application Frameworks Much of the cost and effort stems from the continuous re- discovery and re-invention of core concepts and components.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
World Heritage Periodic reporting Latin America and the Caribbean Carolina Castellanos / Mexico.
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
Strategic Management & Strategic Competitiveness
Object-Oriented Analysis and Design
Azad Madni Professor Director, SAE Program Viterbi School of Engineering Platform-based Engineering: Rapid, Risk-mitigated Development.
SE curriculum in CC2001 made by IEEE and ACM: Overview and Ideas for Our Work Katerina Zdravkova Institute of Informatics
DAIMIHenrik Bærbak Christensen1 Product Lines Architectural Reuse.
NJIT More GRASP Patterns Chapter 22 Applying UML and Patterns Craig Larman Prepared By: Krishnendu Banerjee.
1 Software Product Lines Re-using Architectural Assets - continued from CSSE CSSE 477 Software Architecture Week 7, Day 2, including Ch 14 in Bass’s.
SWE Introduction to Software Engineering
Software Product Lines
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Course Instructor: Aisha Azeem
Aligning Human Resources and Business Strategy
Software Product Line Engineering Andrew Burmester SE 4110 Section 2 4/14/11.
Product Line Approaches in Software Engineering April 29, 2013 Sophia Wu.
Software Product Line Architectures (SPLA) Nipun Shah
Architecture and Software Product Lines A software architecture represents a significant investment of time and effort, usually by senior talent. So it.
Domain-Specific Software Engineering Alex Adamec.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Software Architecture in Practice (3rd Ed) Introduction
SEI´S Software Product Line Tenets Linda M. Northrop Software Engineering Institute IEEE Software July/August 2002.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
Software Reuse Prof. Ian Sommerville
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
Institut Experimentelles Software Engineering Fraunhofer IESE Klaus Schmid Relating Product Line Adoption Mode and Transition Process.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
The Software Product Line Architectures
SYSE 802 John D. McGregor Module 8 Session 2 Platforms, Ecosystems, and Innovations.
T. Dawson, TASC 9/11/13 Use of a Technical Reference in NASA IV&V.
Computer Systems & Architecture Lesson Software Architecture in the Future.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
Role-Based Guide to the RUP Architect. 2 Mission of an Architect A software architect leads and coordinates technical activities and artifacts throughout.
CPSC 871 John D. McGregor Module 6 Session 3 System of Systems.
Chapter 5 ©2001 South-Western College Publishing Pamela S. Lewis Stephen H. Goodman Patricia M. Fandt Slides Prepared by Bruce R. Barringer University.
PREPARED BY: Hadeel El-Genedy SOFTWARE ARCHITECTURE COURSE PRE-MASTERS STUDIES COMPUTER SCIENCE DEPARTMENT CAIRO UNIVERSITY Software Product Line.
Introducing Software Product Lines (SPL) Silvio Romero de Lemos Meira Eduardo Santana de Almeida
Requirements as Usecases Capturing the REQUIREMENT ANALYSIS DESIGN IMPLEMENTATION TEST.
Object Oriented Analysis and Design using the UML CIS 520 Advanced Object-Oriented Design.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Quality Assurance in the Presence of Variability Kim Lauenroth, Andreas Metzger, Klaus Pohl Institute for Computer Science and Business Information Systems.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Basic Concepts and Definitions
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Basic Concepts Key Learning Points : The objectives of this chapter are as follows:  To provide an introduction to the basic Concepts of enterprise architectures,
CS223: Software Engineering Lecture 32: Software Maintenance.
Product Line Architecture. Systems Systems often come in families: basic, regular, professional, enterprise,… Can we share components? Is architecture.
Process 4 Hours.
Definitions Strategic Competitiveness
Distribution and components
Chapter 25: Architecture and Product Lines
Chapter 16 – Software Reuse
Product Lines.
Information Systems in Global Business Today
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture in Practice
Product Lines.
Chapter 16 – Software Reuse
CSSE 477 Software Architecture
John D. McGregor C15 – Variation in architecture
Presentation transcript:

Computer Systems & Architecture Lesson Software Product Lines

Objectives Describe why we need to reuse an existing architecture Explain that what makes software product lines work List the three things should be consider the architecture for product lines

10.1 Overview A software architecture represents a significant investment of time and effort, usually by senior talent. So it is natural to want to maximize the return on this investment by re-using an architecture across multiple systems. Architecturally mature organizations tend to treat their architectures as valuable intellectual property and look for ways in which that property can be leveraged to produce additional revenue and reduce costs.

When an organization is producing multiple similar systems and re-using the same architecture, it enjoys substantial benefits that include reduced cost of construction and reduced time to market.

This is the lure of the software product line, defined as –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.

10.2 What makes software product lines work? The essence o a software product line is the disciplined, strategic re-use of assets in producing a family of products. What makes product lines succeed to spectacularly from the vendor or developer’s point of view is that the commonalities shared by the products can be exploited through re-use to achieve production economics. The potential for re-use is broad and far-ranging, including: –Requirements

–Architectural design –Elements –Modeling and analysis –Testing –Project planning –Process, methods and tools –People –Exemplar systems –Defect elimination

10.3 Scoping The scope of the product line defines what systems are in it, and what systems are out. Put less bluntly, a product line’s scope is a statement about what systems an organization is willing to build as part of its line and what systems it is not willing to build.

Of all of the assets in a core asset repository, the software architecture plays the most central role. The essence of building a successful software product line is discriminating between what is expected to remain constant across all family members and what is expected to vary. Products in a software product line exist simultaneously and may vary in terms of their behavior, quality attributes, platform, network, physical configuration, middleware, scale factors and so on Architectures for product lines

A product line architect needs to consider three things: Identifying variation points Supporting variation points Evaluating the architecture for product line suitability

Identifying variation is an ongoing activity. Because of the many ways a product can vary, variants can be identified at virtually any time during the development process. Some variations are identified during product line requirements elicitation; others, during architecture design; and still others, during implementation. Variations may also be identified during implementation of the second products as well. Identifying variation points

In a conventional architecture, the mechanism for achieving different instances almost always comes down to modifying the code. But in a software product line, architectural support for variation can take many forms: Inclusion or omission of elements. Inclusion of a different number of replicated elements. Selection of versions of elements that have the same interface but different behavioral or quality attribute characteristics. Supporting variation points

These mechanisms produce wholesale changes at the architectural level. Other mechanisms can be introduced that change aspects of a particular element. More sophisticated techniques include the following: –In object-oriented systems, specializing or generalizing particular classes can achieve variation. –Building extension points into element’s implementation. –Variation can be accomplished by introducing build- time parameters to an element, a subsystem, or a collection of subsystems, whereby a product is configured by setting a collection of values.

- Reflection is the ability of a program to manipulate data on itself or its execution environment or state. -overloading is a means of re-using a named functionality to operate on different types.

Like any other, the architecture for a software product line should be evaluated for fitness of purpose. In fact, given the number of systems that will rely on it, evaluation takes on an even more important role for a product line architecture. Evaluating a product line architecture

-What and how to evaluate. The evaluation will have to focus on the variation points to make sure they are appropriate, that they offer sufficient flexibility to cover the product line’s intended scope. -When to evaluate. An evaluation should be performed on an instance or variation of the architecture that will be used to build one or more products in the product line.

10.5 What makes software product lines difficult? It takes a certain maturity in the developing organization to successfully field a product line. Technology is not the only barrier to this; organization, process and business issues are equally vital to master to fully reap the benefits of the software product line approach. The Software Engineering Institute has identified twenty-nine issues or ‘practice areas’ that affect an organization’s success in fielding a software product line.

Most of these practice areas are applied during single-system development as well, but take on a new dimension in a product line context. Two examples are architecture definition and configuration management. Architecture definition needs to emphasize variation points in a software product line. Configuration management is each product is the result of binding a large number of variations.

Getting an organization to adopt the product line approach is in many regards like any other technology insertion problem. How to solve it depends on the organization’s culture and context. Top-down adoption comes when a manager decrees that the organization will use the approach. Adoption strategies

Bottom-up adoption happens when designers and developers working at the product level realize that they are needlessly duplicating each other’s work and begin to share resources and develop generic core assets. Orthogonal to the issue of in which direction the technology will grow is the question of how the product line itself grows. Here there are two primary models. Proactive model Reactive model

Creating products and evolving a product line An organization that has a product line will have an architecture and a collection of elements associated with it. From time to time, the organization will create a new number of the product line that will have features both in common with and different from those of other members. One problem associated with a product line is managing its evolution.

As time passes, the product line-or, in particular, the set of core assets from which products are built – must evolve. That evolution will be driven by both sources which are: –External sources –Internal sources

Organizational structure An asset base on which products depend, but which has its own evolutionary path, requires an organization to decide how to manage both it and product development. Jan Bosch has studied product line organizational models and has identified four types: 1.Development department 2.Business units 3.Domain engineering unit 4.Hierarchical domain engineering units.