Systematic Software Reuse -...

34
1 Systematic Software Reuse It Isn’t What It Used to Be Martin Griss, PhD Principal Research Scientist Carnegie Mellon University, Silicon Valley Campus & Principal, Martin Griss Associates (C) - MARTIN GRISS - ICSR 2015

Transcript of Systematic Software Reuse -...

Page 1: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

1

Systematic Software Reuse It Isn’t What It Used to Be

Martin Griss, PhD Principal Research Scientist

Carnegie Mellon University, Silicon Valley Campus &

Principal, Martin Griss Associates

(C) - MARTIN GRISS - ICSR 2015

Page 2: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

2

Agenda

•  Background •  From Libraries to Factories •  Generative Reuse •  Agile Reuse •  Conclusions

(C) - MARTIN GRISS - ICSR 2015

Page 3: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

3

40 Years Evolving Reuse Practice • Software portability, LISP compilers, languages - U of Utah • HP Reuse libraries, corporate reuse program, process • Software Reuse: From Library to Factory • (Hybrid) Domain Specific Kits • UML 1.0 standards committee • Reuse advice to HP divisions & customers • RSEB: Software Reuse: Architecture, Process, & Organization for Business Success • FeatureRSEB, Product Lines • LogicLibrary, Flashline and TopCoder consulting • Reuse Comes in Several Flavors • Study of TopCoder crowdsourcing • Agile Reuse

(C) - MARTIN GRISS - ICSR 2015

Page 4: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

4

Systematic Software Reuse Component-oriented software engineering

A simple idea Use previously developed components, frameworks, other artifacts

... with complex execution ... New component & framework & generator technology & methods Architecture, process, organization, economics, cultural changes

... but with major benefits! AT&T, GTE, Ericsson, HP, IBM, NEC, Rolls-Royce, Toshiba, Volvo,… Significant cost and time reductions Improved agility

(C) - MARTIN GRISS - ICSR 2015

Page 5: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

5

Reuse Body of Knowledge Many books & conferences on reuse & related topics

–  Architecture, aspects, patterns, frameworks, components, product lines, generators, domain engineering, management, organization

(C) - MARTIN GRISS - ICSR 2015

Page 6: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

6

Many Reuse Technologies • Aspects • Patterns • Templates • Parameters • Components • Frameworks • Domain-specific languages • Generators • Services/SOA • Agents

• Library system(s) • Horizontal vs Vertical reuse • Domain Engineering • Variability Analysis • Reuse-oriented Architecture • Model-Driven Development • Product Line Engineering • Open Source/Corporate Source • Crowd Source

(C) - MARTIN GRISS - ICSR 2015

Page 7: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

7

Many Reuse Questions •  What kind of reuse should we do? •  What strategy of marketing, incentives for reuse? •  What is an appropriate organization model? •  Should we do full scale product line reuse? •  Should we do model-driven development •  Should we use generators and domain-specific languages •  What technologies and tools to focus on? •  How are assets and support funded? •  What kind of reuse pilots to do? •  How and when to scale up? •  How is reuse connected to other software initiatives: architecture,

SOA, process improvement, quality, metrics, open source, crowd source, …

(C) - MARTIN GRISS - ICSR 2015

Page 8: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

8

(Staged) Adoption of Reuse

Investment, experience, time

Reuse Benefits

No reuse

Reduced development time

Informal code salvaging

Planned black-box code reuse

Reduced maintenance costs

Broader coverage

Interoperability high reuse levels

Rapid custom product development business

Significant management support. Code, other workproducts

Architected reuse, process metrics

Pervasive domain- specific reuse

Improved time to market, costs, quality

(C) - MARTIN GRISS - ICSR 2015

Page 9: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

9

Reuse May Vary Across Organization

•  Ad hoc, random reuse

Platform, Services

Architecture, Frameworks

Components, Libraries

•  Strategic to company success

•  Powerful enablers and process enhancements

(C) - MARTIN GRISS - ICSR 2015

Page 10: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

10

Reuse “Flavors”

ad hoc reuse - NONE

1. Facilitated – Encourage, support, enable individual or team choice

2. Managed Reuse - Require, enforce, control participation, use of assets

3. Architected Reuse – Architect, domain engineer assets for reuse, domain

4. Reuse-Driven Business – Reuse central to all decisions

(C) - MARTIN GRISS - ICSR 2015

Page 11: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

11

Mixing Reuse Flavors Governa

nce/Process/  Roles/  To

ols  

Faciliated    Reuse  

Managed    Reuse  

Architected    Reuse  

Reuse  Driven  Business  

(C) - MARTIN GRISS - ICSR 2015

Page 12: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

12

Agenda

•  Background •  From Libraries to Factories •  Generative reuse •  Agile reuse •  Conclusions

(C) - MARTIN GRISS - ICSR 2015

Page 13: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

13

From LEGO “components” to “kits”

(C) - MARTIN GRISS – ICSR 2015

Page 14: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

14

(Hybrid) Domain-Specific “Kit” Combine compatible asset types

P!

C2!B1!

A3!

P!

I!

C1! D1!

I!

Components Framework Glue Tools Procedures

(C) - MARTIN GRISS – ICSR 2015

Page 15: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

15

Business Models

Customer

& User

Requirements

Standards

Technology Trends

Existing Systems

Existing

Components

Application

System

Component System

Application Family Engineering

Layered System

Component System Engineering

ApplicationSystem Engineering

RSEB

(C) - MARTIN GRISS - ICSR 2015

Page 16: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

16

•  A set of products sharing common set of requirements (or features), with significant variability

•  Feature = product characteristic users, customers & developers use in describing/distinguishing members of product-line.

Product Lines

Product 1 Product 2b

Product 2a

Product 3c

Product 3a

Product 3b

Product 4b

Product 4a

Product 4c

Product 4d

High end Market

Mid-market/ SOHO

Personal

time

(C) - MARTIN GRISS - ICSR 2015

Page 17: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

17

Expressing Variability

Components have Variation Points where they can be customized with variants using various mechanisms

VP1

variant Component

VP1

variant

Component

«variation point»

«bind» {VP1=variant}

Operation() ...

A b

….

VP1

...

Component

Variation Points

(C) - MARTIN GRISS - ICSR 2015

Page 18: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

18

RSEB Product Line Engineering

Applications

Domain Experts

Layered Architecture

Component System Engineering

Application Family Engineering

Business Model •  Business processes

Component Systems

Ranking/Prioritizing - Business use cases - Application use cases - Component systems

Existing Applications

• Standards • Technology trends • Application priorities • Customer trends

• Business priorities • Application roadmap

Exemplers

Domain Model •  Feature Model •  Domain Architecture

Candidate Components

Reengineering

Domain Analysis

(C) - MARTIN GRISS - ICSR 2015

Page 19: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

19

Developing for Application Family Domain-specific, architected, product-line

Domain Engineering Application

Engineering

Provide: Develop For Reuse

• scope domain • variability • architecture • components & frameworks • DSL & generators

Utilize: Develop With Reuse • match to domain • delta analysis • select, adapt, integrate

(C) - MARTIN GRISS - ICSR 2015

Page 20: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

20 © 1996, 1997,1998 Hewlett-Packard & Rational Software Corporation

Software Reuse - X.75

Announce- ments

Variable P.I.N.

Decision

Time of Day

Routing

Day of Week

Routing

Date of Year

Routing

Holiday Schedule

Re-route if busy

Called off-hook

Caller off-hook

800- number

action

entry

PTP conference

voice video

type

individual

called caller

billing

POTS ISDN T1

line quality

PABX

exchange

Phone Service

Route Call

Play dial tone

Announce- ment

input

pulse tone

Dialing mode

Mandatory Vp-feature, use time_bound

Variant feature

Optional Vp-

feature

Optional feature

Legend

Optional feature

Vp- feature (XOR)

Vp-feature , use time bound (OR)

Composed of

Feature Model For Telecom FeatuRSEB

Combine RSEB, FODA, UML

(C) - MARTIN GRISS - ICSR 2015

Page 21: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

21

FeatuRSEB

(C) - MARTIN GRISS - ICSR 2015

Page 22: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

22

Agenda

•  Background •  From Libraries to Factories •  Generative reuse •  Agile reuse •  Conclusions

(C) - MARTIN GRISS - ICSR 2015

Page 23: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

23

Generative Approaches •  Built-in to Language

•  C/C++ macros, LISP macros, C++ templates, Java Generics, …

•  General Purpose Macro Preprocessor •  GPM, STAGE2, M4, Basset Frames (NETRON), XVCL, VCL, ..

•  Extensible Languages •  LISP, BALM/MBALM, Algol-68, EL1, …

•  Domain Specific Languages/Kits •  Via YACC, MetaLISP, BALM ,,,. (e.g., PictureBALM), Visual

Programming kit, OO Instrument Kits)

•  Model-driven Generators •  GenVOCA; MetaCASE; OMG MDA (UML for PSM/PIM), … •  Aspects, …

(C) - MARTIN GRISS - ICSR 2015

Page 24: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

24

XVCL Specifications Version 2.10

XML-based Variant Configuration Language (XVCL) Copyright (C) 2001-2002 National University of Singapore XVCL concept and language definition Copyright (C) 2001-2002, National University of Singapore and Netron Inc.

6

The SPC becomes a root of an x-framework. During x-frame processing, the XVCL processor interprets the XVCL commands contained in the SPC, traverses an x-framework, performs adaptation by executing XVCL commands embedded in x-frames, and emits code components for a specific system, a member of the product line.

2.1 Defining the processing flow

XVCL processor starts processing with an SPC. XVCL commands in the SPC, and in each subsequently <adapt>ed x-frame, are processed in the sequence they appear in the x-frame. Whenever the processor encounters an <adapt> command in the currently processed x-frame, processing of the current x-frame is suspended and the processor will start processing the <adapt>ed x-frame. Once processing of the <adapt>ed x-frame is completed, the processor resumes processing of the current x-frame. When the XVCL processor reaches the end of the SPC - the processing is completed. Figures 1a and 1b illustrate an x-framework and the processing flow.

xx--frame Bframe BBBB beforeBBB before

<adapt D /><adapt D />BBBBBB

<adapt E /><adapt E />BBB afterBBB after

xx--frame Dframe DDDDDDD

xx--frame Cframe CCCC beforeCCC before

<adapt E /><adapt E />CCCCCC

<adapt F /><adapt F />CCC afterCCC after

xx--frame Aframe AAAA beforeAAA before

<adapt B /><adapt B />AAAAAA

<adapt C /><adapt C />AAA afterAAA after

xx--frame Eframe EEEEEEE

xx--frame Fframe FFFFFFF

Figure 1a. An x-framework (B, C, D, E and F) and SPC (A)

A

F E D

C B XVCL Processor

AAA before BBB before DDD BBB EEE BBB after AAA CCC before EEE CCCFFF CCC after AAA after

B assembles B,D & E

C assembles C,E & F

A is the specification x - frame (SPC)

Order of Assembly= (ABDBEBACECFCA)

Start End

Legend adapt X- frame traversal path

8

2

3

4 5 6

7

1

9 10 11

12 13 14 15

16

17 18

Figure 1b. Processing an x-framework

XVCL/Bassett Frame Generator •  XML-based generator •  Template-based DSL •  Easy to layer onto existing software •  Manage commonality and variability •  Weaves code fragments (“aspects”) •  Used for code reuse and product lines

(C) - MARTIN GRISS - ICSR 2015

Page 25: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

25

Aspect-Oriented MDD AOP, SOP, FOP, XVCL

Component

Component Component

Component Component

Withdraw Money Cashier Interface

Dispenser

Account Withdraw Deposit Money

Deposit

Slot

(C) - MARTIN GRISS - ICSR 2015

Page 26: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

26

OMG/UML Model Driven Architecture

independent models to produce platform-specific models using mappings. Within the system development lifecycleprocess, the MDA applies platform-independent models and platform-specific models to sustain and leverage investmentsin requirements, technologies, and the lifecycle that bridges the gap between them as they independently change. Suchan approach generally leads to long-term flexibility of implementations, integration, maintenance, testing and simulationas well as portability, interoperability and reusability. The MDA emerged from the efforts of the OMG and its constituentmembers to culminate in 2000. Currently, MDA 1.0 is proliferating in the industry.

The OMG has various Technology Committees (TCs) for providing standardization guidance and recommendations. VariousDomain Technology Committees (DTCs) focus on vertical markets such as Healthcare, Finance, Telecommunications,Manufacturing, Transportation, and so forth to capture standard domain-specific models that form the foundation forplatform-independent models. Various Platform Technology Committees (PTCs) focus on horizontal technologies such asWeb Services to capture standard technology-specific models that form the foundation for platform-specific models. Andthe OMG has an Architecture Board (AB) that oversees the standardization in order to ensure coherence and consistencyof the standards.

Foundation

Figure 2 shows the foundational concepts of what generally constitutes the MDA.

Figure 2: Foundational Concepts of the MDA

Systems, Models, and Model-Driven Approaches

A system (or physical system) is a collection of elements organized together for a specific purpose. A model of a system isa description or specification of the system and its environment for a specific purpose, which may be presentedgraphically and textually. A model-driven approach focus on models to work with systems, including understating,designing, constructing, deploying, operating, maintaining, and modifying them. Figure 2, relative to Figure 1, shows thatthe MDA’s model-driven approach corresponds to problem solving.

Platforms, Applications, and Implementations

A platform is a set of technologies, including functionality provided through interfaces and usage patterns. Platforms maybe generic (such as object oriented or batch processing), technology specific (such as the Java platform), or vendorspecific (such as the Microsoft .NET platform). A platform model describes a platform, including its parts and the servicesit provides. A pervasive service is a service that is available in a wide range of platforms. For example, file services,security services, and so forth. An application refers to some functionality provided by a system. A system is a collectionof applications supported by a collection of platforms. An implementation is a specification that contains all of theinformation for construing and putting a system into operation. For example, a storefront system may be a collection ofJava programs that provide financial transaction applications supported by the Java platform, which is described by theJVM Specification platform model.

Figure 2, relative to Figure 1, shows that a platform corresponds to an environment, a system and its applicationscorresponds to a solution, and an implementation corresponds to an implementation model.

Architecture, Viewpoints, Views, and Models

The architecture of a system involves what elements make up the system and how they work together to provide the

Understanding the Model Driven Architecture (MDA) http://www.methodsandtools.com/archive/archive.php?id=5

3 of 5 4/16/13 3:03 PM

•  Use UML + <<stereotypes>> + OCL •  Create

•  Problem Independent Model (PIM)

•  Generate •  Problem Specific Model (PSM)

•  Transformation rules

(C) - MARTIN GRISS - ICSR 2015

Page 27: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

27

Agenda

•  Background •  From Libraries to Factories •  Generative reuse •  Agile reuse •  Conclusions

(C) - MARTIN GRISS - ICSR 2015

Page 28: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

28

22Does Scale Really Matter?: ULS Systems Seven Years Later

Linda Northrop: May 24, 2013© 2013 Carnegie Mellon University

Approaches to Software Development

The Engineering Perspective The Agile Perspective

Agile in the Enterprise Plan-driven vs Agile vs Hybrid

•  Conventional plan-driven process –  Large teams –  Standardized models, architecture,

documents and process

•  Feature-oriented agile process –  Small teams –  Rapid development –  Customer-oriented release and evolution –  Expertise and tacit knowledge –  Emergent architecture

•  Hybrid approaches –  Address scale, reuse, architecture

Requ. Spec.

Arch. Design

Implement Test

Deploy

(C) - MARTIN GRISS - ICSR 2015

Page 29: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

29

Approaches to “Agile” Reuse Oxymoron? - YAGNI

Incremental Feature-Oriented Reuse •  Leverage agile feature/story cards, SCRUM backlog •  Feed incremental Feature-Oriented Domain

Engineering (FODA, FeatuRSEB) Leverage Management of Technical Debt

•  Technical Debt accumulates with deferred decisions and work, coding shortcuts

•  Incrementally pay off debt by re-factoring, re-engineering, re-architecting

•  Economic/metrics models to help make decisions Domain Specific Languages

•  Various levels of model-driven development (C) - MARTIN GRISS - ICSR 2015

Page 30: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

30

Manage Technical Debt

Story Points

Iteration

Learning

Refactor Refactor

Velocity

Technical Debt

Burn Down

New ���Requirement

New ���Requirement Reuse

(C) - MARTIN GRISS - ICSR 2015

Page 31: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

31

(New) Sourcing Models

• Open Source • Varying community and process

management

• Corporate Source • Foster open source “style”

in companies

• Crowd Source • Deliberate engagement

of community

1

2

3

4

Contribution

Code

Project leadership

Testing

Internal QA

Working practices

SPGF

(C) - MARTIN GRISS - ICSR 2015

Page 32: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

32

Agenda

•  Background •  From Libraries to Factories •  Generative reuse •  Agile reuse •  Conclusions

(C) - MARTIN GRISS - ICSR 2015

Page 33: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

33

Assess Reuse Readiness 1. Business goals that motivate reuse

–  Time, cost, quality, integration, agility, standards, … –  Urgency, importance, champion …

2. Domain(s) readiness for reuse –  Stability and variability, standards –  Obvious, pervasive product line

3. Organizational readiness –  Culture, process maturity, autonomy, standards –  Conflicting initiatives, prior history, technology shifts,

4. Reuse experience –  Current stage or flavor of (systematic) reuse –  Reuse level, technology use, library use

(C) - MARTIN GRISS - ICSR 2015

Page 34: Systematic Software Reuse - KITicsr2015.ipd.kit.edu/fileadmin/user_upload/icsr/griss-icsr-2015... · Systematic Software Reuse Component-oriented software engineering A simple idea

34

Conclusions •  Software reuse approaches keep evolving •  Assess reuse readiness before selecting

reuse goal and flavors •  Identify opportunities for small DSL/MDD,

generators and product-lines •  More work on agile reuse,

SEMAT/reuse, open source/crowd source

(C) - MARTIN GRISS - ICSR 2015