45
Variability and Software Product Line Architecture University of São Paulo Institute of Mathematics and Computer Science Danillo Ferreira dos Reis Pedro Henrique Dias Valle SSC5944 – Software Architecture || 1 st Semester 2016

Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

  • Upload
    lamliem

  • View
    281

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability and Software Product Line Architecture

University of São Paulo Institute of Mathematics and Computer Science

Danillo Ferreira dos Reis

Pedro Henrique Dias Valle

SSC5944 – Software Architecture || 1st Semester 2016

Page 2: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Contents v  Introduction

v  Software Product Line (SPL)

v  Variability

v  Software Product Line Architecture (SPLA)

v  Example

v  Final Considerations

2

Page 3: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Introduction

Page 4: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Introduction

§  Increase of society and consumption

§  Henry Ford

§  Product Line

ü  Reduced prices

ü  Large scale production

4

Credits: https://goo.gl/zfLBXD

Credits: http://goo.gl/81ejh5 [Pohl et al. 2005]

Page 5: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Introduction

§  Example

5Nunes, I. O.; Linhas de Produto de Software. Laboratório de Engenharia de Software (LES), PUC-Rio. Accessed in 2016.

Page 6: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Introduction

§  Example

6

Windshield wiper: optional

A/C condenser: optional

Engine: 1.0, 1.6 or 2.0

Transmission: automatic or manual

Nunes, I. O.; Linhas de Produto de Software. Laboratório de Engenharia de Software (LES), PUC-Rio. Accessed in 2016.

Page 7: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Introduction

§  Enterprises

7

Page 8: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

§  Benefits

Introduction

ü  Decrease of delivery time

ü  Increase in quality

ü  Reduction of costs

ü  Reduction of time to market

ü  Increased productivity in large scale

8

[Pohl et al. 2005]

Page 9: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Software Product Line (SPL)

Page 10: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Definition

10

“Software product line engineering is a paradigm to develop software applications (software-intensive systems and so f tware products ) us ing p la t fo rms and mass customisation” [Pohl et. al, 2005].

“A software product line is 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” [Clements, Northrop, 2002].

Page 11: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Software Product Line

11

ü  Domain engineering:

ü  Application engineering

•  Commonality and variability in software product line

•  Development of applications derived from the platform established in the domain engineering

[Pohl et al. 2005]

Page 12: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Software Product Line

12

[Clements, Northrop, 2002]

Page 13: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Software Product Line

13

[Clements, Northrop, 2002]

Page 14: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Software Product Line

14

[Clements, Northrop, 2002]

Page 15: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPL

§  Software Product Line

15

[Clements, Northrop, 2002]

Page 16: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

Page 17: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

Variability of a software product line is variability that is modelled to enable the development of customized applications by reusing predefined, adjustable artefacts [Pohl et al. 2005].

17

§  Definition:

Page 18: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

18

§  Software product line are described by representations:

Variability

ü  Variability Point: Specific location where will have variabilities

ü  Variant: A set of possible alternatives variability

[Pohl et al. 2005]

Page 19: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

§  Example

The customers of a home automation system can decide on the language of the user interface before the system is installed. Moreover, for an additional charge, a multilingual version is offered that allows selecting the user’s favorite language at any time (e.g. by selecting a flag symbol on a touch screen) [Pohl et al. 2005].

Credits: http://startsollution.com.br/?navega=paginas_interna&id_pag=28&interna=102

19

[Pohl et al. 2005]

Page 20: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

20

§  Possibility to change or customize a system

Variability

Concepts of variability

Variability point and variants

Crespo, S; Linhas de Produto de Software. Laboratório de Engenharia de Software, Universidade Federal Fluminense (UFF). Acessed in 2016.

Page 21: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

§  The variability points can be presented in various levels of abstraction

ü  Architecture Description

ü  Documentation by Diagrams

ü  Source Code

ü  Compiled Code

21

[da Silva et al, 2011]

Page 22: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

§  Variability Management

ü  Identify Variabilities

ü  Introduce the Variability in the System

ü  Grouping Variants

ü  Including the System in a Variant

22

[da Silva et al, 2011]

Page 23: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

§  Feature Model

ü  Feature is a characteristic of the system visible to the final user

ü  Used to group a set of related requirements

ü  Overview of the main common characteristics and variables of a product line

ü  Feature-Oriented Domain Analysis (FODA)

23

[da Silva et al, 2011]

Page 24: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Variability

§  Feature Model

24

Credits: http://goo.gl/7Esd9o

Page 25: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Software Product Line Architecture (SPLA)

Page 26: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

26

A product-line architecture is an abstraction: it is a specification of the high level structures of a family of applications. These structures reveal complementary facets of an architecture (static structure, dynamic structure, etc… ) and contain elements like components, connections, data, processes [Bass et al, 1998].

§  Definition:

Page 27: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

27

§  A product-line architecture has to meet three fundamental requirements:

ü  It has to drive the architectural design of new applications in the product-line;

ü  It has to facilitate the reuse of components at the product-line level;

ü  It has to permit various analyses in order to assess the impact (cost, performance, etc… ) of specific requirements for the development of new applications in the product-line.

[Bass et al, 2012]

Page 28: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

28

§  A product line architect needs to consider three things that are unique to product line architectures:

ü  Identify variation points

ü  Support variation points

ü  Evaluate the architecture

[Bass et al, 2012]

Page 29: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

29

Variation Mechanisms §  Modifying code is undesirable

§  Three primary architectural variation mechanisms are following

ü  Inclusion or omission of elements

ü  Inclusion of a different number of replicated elements

ü  Selection of different versions of elements that have the same interface, but different behavioral or quality characteristics

[Bass et al, 2012]

Page 30: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

30

Variation Mechanisms §  Sophisticated techniques of variation mechanisms

ü  Extension points

ü  Reflection

ü  Overloading

[Bass et al, 2012]

Page 31: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

31

Variation Mechanisms §  The choice of variation mechanism affects product quality:

ü  The impact of the variation mechanism on quality, such as possible performance penalties or memory consumption

ü  The impact on the mechanism’s maintainability

[Bass et al, 2012]

Page 32: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

32

Variation Mechanisms §  Choosing the right variation mechanism affects numerous costs:

ü  The skill set required to implement, learn, and use the specific variation mechanism

ü  The one-time costs of building or acquiring the tools

ü  The recurring cost and time to exercise the variation mechanism

[Bass et al, 2012]

Page 33: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

33

Variation Mechanisms §  The documentation for a product line architecture differs from that of a

conventional architecture

§  The architecture documentation should also describe how its variation points are exercised

[Bass et al, 2012]

Page 34: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

34

Evaluation §  The architecture for a software product line should be evaluated for

fitness of purpose

§  Robustness and generality

§  To make sure it meets the specific behavioral and quality requirements of the product at hand

[Bass et al, 2012]

Page 35: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

35

What and How to Evaluate §  The focus of evaluation will be variations points

§  They offer sufficient flexibility to cover the product line’s intended scope

§  They allow products to be built quickly

§  They do not impose unacceptable runtime performance costs

[Bass et al, 2012]

Page 36: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

36

What and How to Evaluate §  Evaluation is scenario based

§  Different products in the product line may have different quality attribute requirements

§  The architecture will have to be evaluated for its ability to provide all required combinations

§  Try to elicit scenarios that capture the quality attributes required of family members

[Bass et al, 2012]

Page 37: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

37

When to Evaluate §  Instance or variation of the architecture

§  The evaluation artifacts will have potential reuse

§  Provide useful feedback to the product line architects and fuel architectural improvements

§  The product line architecture can be reevaluated

[Bass et al, 2012]

Page 38: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

SPLA

38

When to Evaluate §  The evaluation can determine how the architecture will have to be

modified to accommodate the new product

§  To determine architectural risks and to understand economic consequences

[Bass et al, 2012]

Page 39: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Example

Page 40: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

40

Example

Source: http://www.sei.cmu.edu/productlines/ppl/software_architecture_views.html

Page 41: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Final Considerations

Page 42: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

42

Considerations

§  SPL is a trend of how to produce software product lines, joining productivity, quality and reuse

§  A software product line architecture is an abstraction, in other words, it is a specification of the high level structures of a family of applications

§  SPLA can help to identify more than similarities and variations management. It can also help non technical issues must be addressed including how the organization adopts the model, structures itself and maintains its external interfaces

Page 43: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

References

Page 44: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

q  Bass, L., Clements, P., & Kazman, R. (2012). Software Architecture in Practice. Addison-Wesley Professional, 3rd edition.

q  Clements, Paul, and Linda Northrop. "Software product lines: practices and patterns." (2002).

q  Pohl, Klaus, Günter Böckle, and Frank J. van Der Linden. Software product line engineering: foundations, principles and techniques. Springer Science & Business Media, 2005.

q  da Silva, F. A. P., Neto, P. A. D. M. S., Garcia, V. C., & Muniz, P. F. . "Linhas de Produtos de Software: Uma tendência da indústria." (2011).

References

44

Page 45: Variability and Software Product Line Architecture - USP · Variability and Software Product Line Architecture ... § The architecture for a software ... Software Architecture in

Thank you!