Software Product Lines



Similar documents
SPLConfig: Product Configuration in Software Product Line

Run-time Variability Issues in Software Product Lines

Family Evaluation Framework overview & introduction

A Framework for Software Product Line Engineering

An eclipse-based Feature Models toolchain

Software Architecture

today 1,700 special programming languages used to communicate in over 700 application areas.

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications

Tool Support for Software Variability Management and Product Derivation in Software Product Lines

Development of a Feature Modeling Tool using Microsoft DSL Tools.

Building a Flexible Software Factory Using Partial Domain Specific Models

A Variability Viewpoint for Enterprise Software Systems

JOURNAL OF OBJECT TECHNOLOGY

A Configuration Management Model for Software Product Line

Towards an automated testing framework to manage variability using the UML Testing Profile

Managing Variability in ALPR Software

Keywords: - Software Product Lines (SPLs), Product Line Engineering (PLE), Core Assets, Software Product Line Development.

Development/Maintenance/Reuse: Software Evolution in Product Lines

Managing Variability in Software Architectures 1 Felix Bachmann*

How to Configure a Configuration Management System An Approach Based on Feature Modeling

Chap 1. Introduction to Software Architecture

Mastering increasing product complexity with Collaborative Systems Engineering and PLM

Variability in Service-Oriented Systems: An Analysis of Existing Approaches

Software Engineering Reference Framework

Configuration Management

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

Generative Software Product Line Development using Variability-Aware Design Patterns

Introduction to software architecture

Toward Families of QVT DSL and Tool

Structuring Product-lines: A Layered Architectural Style

Plan-Driven Methodologies

Embedded Software Development with MPS

Product-Line Instantiation Guided By Subdomain Characterization: A Case Study

ONTOLOGY FOR MOBILE PHONE OPERATING SYSTEMS

Concern Driven Software Development

Professor, D.Sc. (Tech.) Eugene Kovshov MSTU «STANKIN», Moscow, Russia

SOMA, RUP and RMC: the right combination for Service Oriented Architecture

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Software Development in the Large!

Systematic Management of Variability in UML-based Software Product Lines

A Model-Driven Approach for Developing Self-Adaptive Pervasive Systems

Variation Management for Software Production Lines 1

Configuration Management in a Software Product Line

Service Oriented Architectures Using DoDAF1

RobbyDBMS A Case Study on Hardware/Software Product Line Engineering

Business-Driven Software Engineering Lecture 3 Foundations of Processes

A Modeling Language for Activity-Oriented Composition of Service-Oriented Software Systems

Managing Software Product Line

Applying 4+1 View Architecture with UML 2. White Paper

Introduction to OpenUP (Open Unified Process)

Model-Driven Development - From Frontend to Code

Developing SOA solutions using IBM SOA Foundation

Developing the Architectural Framework for SOA Adoption

Layered Configuration Management for Software Product Lines

Design Specification for IEEE Std 1471 Recommended Practice for Architectural Description IEEE Architecture Working Group 0 Motivation

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Architecture Description of <Architecture Name> for <System of Interest>

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Service Oriented Architecture 1 COMPILED BY BJ

Modeling Turnpike: a Model-Driven Framework for Domain-Specific Software Development *

Introduction to software architecture

Winery A Modeling Tool for TOSCA-based Cloud Applications

Jiří Šebek, Karel Richta. Department of Computer Science and Engineering Praha 2, Czech Republic

Guidelines for Developing a Product Line Production Plan

Component visualization methods for large legacy software in C/C++

How To Test A Factorial Service On A Soa Project

What is Automotive Software Engineering? What is Automotive Software Engineering? What is Automotive Software Engineering?

Extension of a SCA Editor and Deployment-Strategies for Software as a Service Applications

Supervision software for Intrusion detection, Fire detection and CCTV systems

Transcription:

Software Product Lines Software Product Line Engineering and Architectures Bodo Igler and Burkhardt Renz Institut für SoftwareArchitektur der Technischen Hochschule Mittelhessen Sommersemester 2015

Questions: How can you produce many different but related software products? (mass production) How can you do this, if you have to satisfy special customer requirements? (customization) if the products have to be cheap and good? (cost efficieny, quality) if you have to react quickly to changing requirements? (time to market) Answer: Adopt a Software Product Line Approach.

Introduction Examples Terminology Approach Commonality and Variability Motivation Commonality and Variability Analysis Features Putting Things Together Architecture The Big Picture Conclusion

Overview Introduction Examples Terminology Approach Commonality and Variability Motivation Commonality and Variability Analysis Features Putting Things Together Architecture The Big Picture Conclusion

Example Car Manufacturing Example Integrated Development Environment

Product Lines Mass Customization Platform mass production customization base of technologies other technologies use this base Product Line Family of products which share common features (commonalities).

Software Product Lines Software Platform set of software subsystems and interfaces common structure facilitates efficient development and production of derivative products comprises several artifacts code architecture requirements manuals test cases...

Software Product Line Engineering Software Product Line A software product line is a set of software-intensive systems sharing a common, managed set of features that satisfy needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. Software Product Line Engineering develop family of software applications apply mass customization use software platform Paul Clements, Linda Northrop

Overall Process Software Product Line Engineering = Domain Engineering produce the platform = requirements + design + implementation + test + Application Engineering produce a single product = requirements + design + implementation + test

Domain Engineering Results definition of commonality What is common to all products? definition of variability What is different? What is allowed to vary? How does it vary? How is it allowed to vary? platform = reusable artifacts (domain artifacts, skeleton ) During Each Step detail variability from previous step add if necessary internal variability

Application Engineering Results the product (application artifacts, skeleton + flesh ) feedback to domain engineering During Each Step bind variability of each domain artifact obtain application artifacts fill in templates implement interfaces provide configuration files...

Overview Introduction Examples Terminology Approach Commonality and Variability Motivation Commonality and Variability Analysis Features Putting Things Together Architecture The Big Picture Conclusion

Questions: How do I find the appropriate commonalities? How do I find the appropriate variability? Answer: Commonality and Variability Analysis. Question: How do I document commonalities and variability? Answer: Feature Model.

General Idea Input variants of one product = product family (Parnas 1976) Process 1 Commonality Analysis: find commonalities categorize commonalities 2 Variability Analysis: find special properties categorize special properties Output appropriate abstraction

Examples Example IDE Requirements Example Database Frontend

Terminology (Positive) Variability common degree of freedom Negative Variability a degree of freedom is violated under certain circumstances External Variability required by and/or visible to customer Internal Variability neither required by nor visible to customer

Terminology Variation Point something that varies, a degree of freedom e.g. color, payment method Variant potential property of something that varies e.g. red, green or credit card, cash Binding fix a variation point by specifying/instantiating a (legal) variant Binding Time e.g. design, coding, compilation, installation, run-time

Question: Why doesn t UML do the job? Answer: Standard UML shows one model. We have to show all relevant variations. Question: What can do the job? Answer: Feature Model.

Features Feature end-user visible characteristic of a system Composed Feature composition of sub-features Atomic Feature cannot be divided into sub-features

Feature Model Requirements A Feature Model is to represent all features to represent the relationships between features to distinguish between commonality and variability to be independent of implementation technology to be suitable during requirements engineering, design, code and test

Feature Model A Feature Model comprises set of features set of feature constraints, usually: type of composition: mandatory, optional, alternative, logical or any logical formula with features as atoms: feature 1 feature 2 feature 3,...

Feature Diagram Remark there are different feature diagram types there is no standard available yet feature diagrams can be connected to standard UML diagrams Typical Approach diagram = tree feature = node relationship = edge

Example Example orthogonal variability model (Pohl, Böckle, van der Linden et al) VP Intrusion Detection VP Security Package VP Door Locks V Camera Surveillance V V V V V V Motion Sensors Cullet Detection Basic Advanced Keypad requires_v_v Fingerprint Scanner requires_v_v

Overview Introduction Examples Terminology Approach Commonality and Variability Motivation Commonality and Variability Analysis Features Putting Things Together Architecture The Big Picture Conclusion

Adapt Functionality I Use the Template Method Pattern platform = application framework + base classes/interfaces variation points = (abstract) methods of base classes/interfaces bind variation points = provide specific method implementations binding time = compile-time example: MFC document-view architecture

Adapt Functionality II Use a Plug-In Architecture platform = framework + basic plug-ins variation points = extension points of basic plug-ins bind variation points = provide specific plug-ins binding time = run-time example: Eclipse 3.x based on OSGi

Adapt Domain Model Use a Domain Specific Language (DSL) platform = machine which understands DSL variation points = potential of DSL bind variation points = write specific DSL program binding time options machine = interpreter machine = code generator

Software Product Line Dimensions Composition Architecture Components System Life Cycle Development Evolution Deployment

Software Product Line Dimensions Views Business Architecture Process Organization

Advise Key Success Factors Product Scoping Architectural Choice Level of Generalization Communication between Domain and Application Engineering

What have we seen today? Terminology Software Product Line Commonality & Variability Feature Modelling Examples motivation for software product lines commonality & variability analysis at different levels feature modelling for product lines architecture hints for product lines

Related Concepts Related Concepts Software Architecture (OSGi, SOA,... ) Model Driven Engineering Software Factories... Challenges holistic approach manage variability in all artifacts find the right architecture...

Bibliography Czarnecki, Eisenecker: Generative Programming Addison-Wesley 2000. Greenfield, Short, Cook, Kent: Software Factories Wiley 2004. Kang, Cohen, Hess, Novak, Petersen: Feature-Oriented Domain Analysis SEI, Carnegie-Mellon University 1990. Parnas: On the Design and Development of Program Families. in: IEEE Transactions on Software Engineering, 2(1), 1976.