78
Ivano Malavolta Modern development paradigms

07 modern development

Embed Size (px)

Citation preview

Page 1: 07 modern development

Ivano Malavolta

Modern development paradigms

Page 2: 07 modern development

Roadmap

Software product-lines

Service-oriented architecture

Page 3: 07 modern development

Software product-lines

Page 4: 07 modern development

An Example

You are constructing software that supports a bank loan office There are 20 products in your product line An existing module calculates customer interest payment

–  Perfectly adequate for 19 of the products –  Needs 240 lines modification for Delaware

Page 5: 07 modern development

How to Manage the Modifications?

One strategy is to make another copy of the affected module and insert the necessary changes

–  Called “clone and own” –  Fast and easy –  Does not scale!

•  Suppose each of the 20 products has 1000 modules •  Potentially huge number of distinct versions of the product to maintain

A better strategy is to introduce a “variation point” in the module and manage the variation point with, e.g., a configuration parameter

–  Setting configuration parameter to “normal” will generate the 18 products as before

–  Setting the configuration parameter to “Delaware” will generate the new version specifically for Delaware

Page 6: 07 modern development

Product lines

A set of related products that have substantial commonality –  In general, the commonality exists at the architecture level

One potential ‘silver bullet’ of software engineering –  Power through reuse of

•  Engineering knowledge •  Existing product architectures, styles, patterns •  Pre-existing software components and connectors

6

Page 7: 07 modern development

7

Traditional Software Engineering

Business motivation for product lines

Page 8: 07 modern development

8

Traditional Software Engineering

Business motivation for product lines

Page 9: 07 modern development

Product-line-based engineering

Business motivation for product lines

Page 10: 07 modern development

The ROI of SPL

David M. Weiss and Chi Tau Robert Lai. 1999. Software Product-Line Engineering: A Family-Based Software Development Process. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.

Page 11: 07 modern development

SPL engineering

Page 12: 07 modern development

Conceptual framework of PLs

Image © Paolo Ciancarini

Page 13: 07 modern development

Assets DEF: artifacts that are representable with software and either compose a product or support the engineering process to create a product Reuse in general needs to be planned for being

–  Reusable: •  is fully documented •  is verified independently with high confidence

–  Usable: •  is adaptable and that is usable in a variety of situations

Design for reuse/use involves –  analysis to identify explicitly variations to anticipate adaptations –  design for adaptability, engineered a

priori to create assets for future developments

Page 14: 07 modern development

Examples of assets

•  requirements •  design specifications •  design models •  source code •  build files •  test plans and test cases •  user documentation •  repair manuals and installation guides •  project budgets, schedules, and work plans •  product calibration and configuration files •  data models and parts lists •  …

Page 15: 07 modern development

Capturing product line architectures

•  Common: features common to all products •  A: features specific to product A •  B: features specific to product B •  Product A = Common + A •  Product B = Common + B 15

B

A

B

Common

A

Common

A

Common

B

(a) (b) (c)

Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; (C) 2008 John Wiley & Sons, Inc. Reprinted with permission.

Page 16: 07 modern development

A product-line architecture

Definition A product-line architecture captures the architectures of many related products simultaneously

Generally employs explicit variation points in the architecture indicating where design decisions may diverge from product to product

16

Page 17: 07 modern development

“Lite” “Demo” “Pro”

A lunar lander product line

Page 18: 07 modern development

Product component table

Helps us decide whether creating a product line is viable or feasible

D

ata

Stor

e

Dat

a St

ore

Con

nect

or

Gam

e Lo

gic

Gam

e Lo

gic

Con

nect

or

Text

-bas

ed U

I

UI P

lug-

ins C

onne

ctor

Gra

phic

al U

I

Syst

em C

lock

Syst

em C

lock

Con

nect

or

Dem

o R

emin

der

Lite X X X X X X Demo X X X X X X X X X X

Pro X X X X X X

Page 19: 07 modern development

Group components into features

Not a mechanical process Attempt to identify (mostly) orthogonal features, or features that would be beneficial in different products

D

ata

Stor

e

Dat

a St

ore

Con

nect

or

Gam

e Lo

gic

Gam

e Lo

gic

Con

nect

or

Text

-bas

ed U

I

UI P

lug-

ins C

onne

ctor

Gra

phic

al U

I

Syst

em C

lock

Syst

em C

lock

Con

nect

or

Dem

o R

emin

der

Lite X X X X X X Demo X X X X X X X X X X

Pro X X X X X X

Page 20: 07 modern development

Reconstitute products from features

Use technical and business knowledge to identify which combinations form feasible or marketable products that will be constructed

Cor

e El

emen

ts

Text

UI

Gra

phic

al U

I

Tim

e Li

mite

d

Lunar Lander Lite X X Lunar Lander Demo X X X

Lunar Lander Pro X X

Page 21: 07 modern development

How to represent variability?

1.  Integrated variability modeling –  variability concepts are introduced into existing modelling

languages or document templates

2.  Orthogonal variability modeling –  Ad-hoc models for variability representation

•  called feature models •  separated from architectural models •  reusable independently from the used ALs •  understandable by non-technical stakeholders

21

Page 22: 07 modern development

1 - Integrated variability modeling

Architectural models need to be diversified with information about variation points and features Not all ALs have good support for this

–  Exceptions include •  Koala •  xADL 2.0

–  These ALs have explicit support for capturing variation points

Page 23: 07 modern development

23

Page 24: 07 modern development

2 – Orthogonal variability modeling

The variability of the product line is treated as a first class product line artifact à the feature model

Note that commonalities are not represented here

Page 25: 07 modern development

Concepts

Variation point

–  a variable item and thus defines “what can vary” (without saying how it can vary)

Variant

–  a concrete variation –  is related to a variation point

Variability constraints

–  restrictions about the variability –  e.g.

•  to define permissible combinations of variants in an application •  to define that the selection of one variant requires or excludes the selection of another variant

Page 26: 07 modern development

Feature model in the automotive domain

Exemplar of Automotive Architecture with Variability. Kacper Bak , Marko Novakovic , Leonardo Passos. Technical report.

Page 27: 07 modern development

Product-line selection is the process of extracting a single product architecture (or smaller product line) from an architectural model that contains explicit points of variation ALs such as Koala and xADL 2.0 can do selection automatically with tools

Uses: product lines for feature selection

Page 28: 07 modern development

Products in a product line don’t have to exclusively capture alternatives

–  They can also capture variation over time

Uses: product lines for evolution

Page 29: 07 modern development

Uses: product lines for evolution

Page 30: 07 modern development

Uses: product lines for ‘what-if’ analysis

In addition to alternative products and different versions of the same product, product lines can capture different potential products

–  Selection can be used to quickly generate product architectures for potential products

–  These can be checked for certain properties or subjected to more rigorous analysis for feasibility or quality

–  Can also be used to generate new product ideas

30

Page 31: 07 modern development

Implementation issues

Important to partition implementations along variation-point boundaries

Common

File1.java

File2.java

File3.java

File4.java

A

B

Common

File1.java

File2.java

File3.java

File4.java

A

B

(a) (b)Bad Good

Page 32: 07 modern development

Implementation issues 2

Keeping evolving architectures and version-controlled source repositories (e.g., Git, SVN) in sync

Text-Based UIComponent

Graphical UIComponent

1.0

2.0

3.0 2.1

4.0 2.2

Text-basedEvolution

GraphicalFork

UI.java(as versioned in a software

configuration management system)

Page 33: 07 modern development

Unifying products with different heritage Often, the idea to create a product line emerges after several products have been implemented and commonality is noticed Strategies include

–  No product line •  It may be more expensive to create a product line or there may

not be enough commonality –  One master product

•  One product architecture becomes the basis for the product line

–  Hybrid •  A new product line architecture emerges out of many products •  Seems ideal but can be hard in practice

33

Page 34: 07 modern development

Product lines in their context

Architectural Styles –  Can be general or domain-specific –  Provides general guidelines for diverse kinds of applications –  Focus on –ility development

Domain-specific software architectures –  Domain specific –  Includes elaborate domain model and specific reference

architecture

Product lines –  Explicit set of related products with common aspects

Style DSSA / Ref Arch Product Line

Page 35: 07 modern development

Example: lunar lander in Koala

•  No product line features yet

interface IDataStore{ void setAltitude(int altitudeInMeters); int getAltitude(); void setBurnRate(int newBurnRate); int getBurnRate(); ... }

Page 36: 07 modern development

Example: lunar lander PL in Koala

•  Switch construct routes calls to one of two potential data stores

•  ‘Diversity interface’ lets game logic component select callee from external config component

•  Same IDataStore interface ensures call compatibility

Page 37: 07 modern development

Example 2: SPL for robotics

L. Gherardi, “Variability modeling and resolution in component-based robotics systems,” PhD Thesis, 2013.

Page 38: 07 modern development

Example 2: SPL for robotics

L. Gherardi, “Variability modeling and resolution in component-based robotics systems,” PhD Thesis, 2013.

Page 39: 07 modern development

Open research challenges in variability modeling and analysis •  Variability modelling

–  Understanding tradeoffs between expressiveness and analyzability –  Interrelating variability with base models –  Handling large-scale variability models

•  Variability analysis –  Metrics for performance of solvers prediction –  Large-scale, realistic variability models for empirical studies

•  Product management –  Scope optimization –  Artifact-interrelations in multi-level product lines

Page 40: 07 modern development

Open research challenges in domain engineering •  Domain requirements engineering

–  Interrelation between scoping and requirements engineering –   Interrelation between requirements engineering and other

development activities –  Impact of requirements changes

•  Domain design –  Building resilient service-oriented product lines –  Delayed design decision and variability –  SPLE and cloud computing –  Variability in quality attributes

•  Domain realization –  Mapping of product line variability and software variability

Page 41: 07 modern development

Open research challenges in domain engineering 2 •  Quality assurance

–  Causes for failures –  Inter-model verification –  Empirical evidence –  Empowering additional quality assurance techniques during

domain engineering

Page 42: 07 modern development

Open research challenges in application engineering •  Application requirements engineering

–  ︎Eliciting application-specific requirements –  Handling application-specific deviations

•  Application design –  ︎Documentation of application design alternatives –  Impact of application-specific extensions

•  Application realization –  Framing application-specific programming –  Extended configuration mechanism –  Product line development environments

Page 43: 07 modern development

Open research challenges in application engineering •  Application quality assurance

–  Minimizing test redundancy –  Correct variability bindings –  Empowering additional quality assurance techniques –  Empirical evidence

•  Variability management in non-product-line settings •  Leveraging instantaneous feedback •  Open world assumption

–  Exploration of autonomic computing principles –  Reasoning in the presence of variability and uncertainty –  Human-in-the-loop adaptations –  Run-time quality assurance

Page 44: 07 modern development

Service-oriented architecture

Page 45: 07 modern development

Introduction to service orientation

Three individuals, each capable of providing a distinct service

Page 46: 07 modern development

Introduction to service orientation

A company that employs these three people can compose their capabilities to carry out its business

Page 47: 07 modern development

Services are collections of capabilities

Much like a human, an automated service can provide multiple capabilities Public capabilities are commonly expressed via a published service contract (much like a traditional API)

Page 48: 07 modern development

Service composition

A service composition is a coordinated aggregate of services The functional context of each service is agnostic to any business process à services can participate in multiple service compositions à reusability + testability

Page 49: 07 modern development

MASHUP When data and information from various sources integrated in order to provide new features and services on a single graphical interface

Data

Web services

RSS feed

Platform APIs Mashup

application

Single graphical interface

Basic example of service composition

Page 50: 07 modern development

Basic example of service composition

Page 51: 07 modern development

Services inventory Establishes a pool of services, many of which will be deliberately designed to be reused within multiple service compositions

Page 52: 07 modern development

SOA principles

1.  Standardized service contract 2.  Service loose coupling 3.  Service abstraction 4.  Service reusability 5.  Service autonomy 6.  Service statelessness 7.  Service discoverability 8.  Service composability

Page 53: 07 modern development

1 - Standardized service contract Services within the same service inventory are in compliance with the same contract design standards “contract first” approach

Page 54: 07 modern development

2 - Service loose coupling

Service contracts are decoupled from their surrounding environment The service contract be the sole means of accessing service logic and resources

Page 55: 07 modern development

3 - Service abstraction

Service contracts contain only essential information Information about services is limited to what is published in service contracts Consumers may be unaware that a service is composing others

Page 56: 07 modern development

4 - Service reusability Services contain and express agnostic logic Services can be positioned as reusable enterprise resources

Page 57: 07 modern development

5 - Service autonomy Services exercise a high level of control over their underlying runtime execution environment Reducing shared access to service resources and increasing physical isolation can raise a service's ability to function autonomously

Page 58: 07 modern development

6 - Service statelessness Services minimize resource consumption by deferring the management of state information when necessary State data management consumes system resources and can result in a significant resource burden when multiple instances of services are concurrently invoked

Page 59: 07 modern development

7 - Service discoverability Services are supplemented with communicative metadata by which they can be effectively discovered and interpreted It enables a wide range of project team members to effectively carry out the discovery process and not to limit it to those with technical expertise

Page 60: 07 modern development

8 - Service composability Services can be repurposed to solve multiple problems à  services must address agnostic or cross-cutting concerns

Notice that capabilities are composed within a service composition, not services

Page 61: 07 modern development

Summary

Page 62: 07 modern development

Service-oriented architecture

A means of developing distributed systems where the components are stand-alone services

Services may execute on different computers from different service providers

Standard protocols have been developed to support service communication and information exchange

Page 63: 07 modern development

Service-oriented architecture

Serviceregistry

Servicerequestor

Serviceprovider

Service

Find Publish

Bind (SOAP)(WSDL)

Page 64: 07 modern development

Benefits of SOA

•  Services can be provided locally or outsourced to external providers

•  Services are language-independent •  Investment in legacy systems can be preserved •  Inter-organisational computing is facilitated through

simplified information exchange

Page 65: 07 modern development

Key standards

•  SOAP –  A message exchange standard that supports service

communication

•  WSDL (Web Service Definition Language) –  To define a service interface and its bindings

•  WS-BPEL –  A standard for workflow languages used to define service

composition

Page 66: 07 modern development

Web service standards

Transport (HTTP, HTTPS, SMTP, ...)

Messaging (SOAP)

Service definition (UDDI, WSDL)

Process (WS-BPEL)

Support (WS-Security, WS-Addressing, ...)

XML technologies (XML, XSD, XSLT, ....)

Page 67: 07 modern development

RESTful web services

Current web services standards have been criticized as ‘heavyweight’ standards that are over-general and inefficient REST (REpresentational State Transfer) is an architectural style based on transferring representations of resources from a server to a client

–  This style underlies the web as a whole and is simpler than SOAP/WSDL for implementing web services

–  RESTFul services involve a lower overhead

We will have a seminar on REST in the next weeks

Page 68: 07 modern development

Example: in-car information system

1.  Provides drivers with information on weather, road traffic conditions, local information etc.

2.  It is linked to car radio so that information is delivered as a signal on a specific radio channel

3.  The car is equipped with GPS receiver to discover its position and, based on that position, the system accesses a range of information services

4.  Information may be delivered in the driver’s specified language

Page 69: 07 modern development

Example: in-car information system

User interface

Locator

Discovers carposition

Weatherinfo

Receives requestfrom user

Receiver

Receivesinformation stream

from services

Transmitter

Sends position andinformation request

to services

Radio

Translates digitalinfo stream toradio signal

In-car software system

Mobile Info Service

Facilitiesinfo

Translator

Roadlocator

Trafficinfo

Collates information

Road traffic info

commandgps coord

gpscoord gps coordgps coord

LanguageinfoInfo

stream

Service discovery

Finds availableservices

Page 70: 07 modern development

Advantage of SOA for this application

It is not necessary to decide when the system is programmed or deployed what service provider should be used or what specific services should be accessed

–  As the car moves around, the in-car software uses the service discovery service to find the most appropriate information service and binds to that

–  Because of the use of a translation service, it can move across borders and therefore make local information available to people who don’t speak the local language

Page 71: 07 modern development

Services as reusable components

•  A service can be defined as: –  A loosely-coupled, reusable software component that

encapsulates discrete functionality which may be distributed and programmatically accessed.

–  A web service is a service that is accessed using standard Internet and XML-based protocols

Services are independent

–  Services do not have a ‘requires’ interface –  Services rely on message-based communication with messages

expressed in XML

SOA VS

component-based systems

Page 72: 07 modern development

WSDL: Web Service Description Language The service interface can be defined in a service description expressed in WSDL (Web Service Description Language)

•  The WSDL specification defines –  what operations the service supports –  the format of the messages that are sent and received by the

service –  how the service is accessed

•  the binding between the abstract interface and the concrete set of protocols

–  where the service is located •  This is usually expressed as a URI (Universal Resource Identifier)

Page 73: 07 modern development

Organization of a WSDL specification

Intro

Abstract interface

Concreteimplementation

WSDL service definition

XML namespace declarations

Type declarationsInterface declarationsMessage declarations

Binding declarationsEndpoint declarations

Page 74: 07 modern development

Part of a WSDL description for a web service

Define some of the types used. Assume that the namespace prefixes ‘ws’ refers to the namespace URI for XML schemas and the namespace prefix associated with this definition is weathns. <types>

<xs: schema targetNameSpace = “http://.../weathns” xmlns: weathns = “http://…/weathns” > <xs:element name = “PlaceAndDate” type = “pdrec” /> <xs:element name = “MaxMinTemp” type = “mmtrec” /> <xs: element name = “InDataFault” type = “errmess” /> <xs: complexType name = “pdrec” <xs: sequence> <xs:element name = “town” type = “xs:string”/> <xs:element name = “country” type = “xs:string”/> <xs:element name = “day” type = “xs:date” /> </xs:complexType> Definitions of MaxMinType and InDataFault here

</schema> </types>

Page 75: 07 modern development

Part of a WSDL description for a web service

Now define the interface and its operations. In this case, there is only a single operation to return maximum and minimum temperatures. <interface name = “weatherInfo” >

<operation name = “getMaxMinTemps” pattern = “wsdlns: in-out”> <input messageLabel = “In” element = “weathns: PlaceAndDate” /> <output messageLabel = “Out” element = “weathns:MaxMinTemp” /> <outfault messageLabel = “Out” element = “weathns:InDataFault” />

</operation> </interface>

Page 76: 07 modern development

What this lecture means to you?

•  Software product lines exploit the commonalities of a family of systems and systematically handle their variations

•  Commonality is a property shared by all applications of the family –  e.g., all mobile phones allow users to make calls

•  Product line applications may differ in terms of features, functional and quality requirements they fulfill –  e.g., some tablet computers may include mobile broadband connectivity,

others not

•  Service-oriented software engineering is based on the notion that

programs can be constructed by composing independent services which encapsulate reusable functionality

•  Service interfaces can be defined in WSDL –  A WSDL specification includes a definition of the interface types and operations, the

binding protocol used by the service and the service location

Page 77: 07 modern development

References

Andreas Metzger and Klaus Pohl. 2014. Software product l ine engineering and variabil ity management: achievements and challenges. In Proceedings of the on Future of Software Engineering (FOSE 2014). ACM, New York, NY, USA, 70-84.

Page 78: 07 modern development

Contact Ivano Malavolta |

Post-doc researcher Gran Sasso Science Institute

iivanoo

[email protected]

www.ivanomalavolta.com