Managing variability with koala
This presentation is the property of its rightful owner.
Sponsored Links
1 / 47

Managing Variability with Koala PowerPoint PPT Presentation


  • 50 Views
  • Uploaded on
  • Presentation posted in: General

Managing Variability with Koala. Rob van Ommering Philips Research IPA Lentedagen 2005, April 1 st , 2005. 1 kB. Moore’s Law. 64 kB. 2 MB. Introducing my domain…. 1965. 1979. 2000. 1990. (1) Complexity. Price. (2) Diversity. Image. UTV. quality. Connectivity. Sound. 1394.

Download Presentation

Managing Variability with Koala

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Managing variability with koala

Managing Variability with Koala

Rob van Ommering

Philips Research

IPA Lentedagen 2005,

April 1st, 2005


Introducing my domain

1 kB

Moore’s Law

64 kB

2 MB

Introducing my domain…

1965

1979

2000

1990


1 complexity

(1) Complexity


2 diversity

Price

(2) Diversity

Image

UTV

quality

Connectivity

Sound

1394

AC3

100 Hz

P50

Dolby

Broadcasting

Standard

AP

US

Region

Eu

DTV

MTV

TiVo

Txt

menus

TVCR

EPG

Data

Processing

PTV

animation

HD

DVD

Storage

Device

3D

FTV

LCTV

VCR

User

Interface

Video Output Device


3 lead time

(3) Lead Time

Was:

  • Yearly cycle of product introduction

    • Christmas

    • World championship

      Is:

  • Decreasing to 6 or 3 months

    • Otherwise loose shelf space in shop


Related product families

STB

VCR

DVD

Audio

Related product families


Convergence

VCR

TVCR

TV

+

=

DVD

TV-DVD

TV

+

=

HD

Tivo

TV

+

=

STB

Digital TV

TV

+

=

Audio

Home Theater

TV

+

=

Convergence


Recent examples of convergence

PDA + GPS

GSM + DigCam

GPS + GSM

CD-RW, DVD, Card, TV

PDA + GSM + DigCam

Recent examples of convergence…


Summary

Summary…

Software Grows

Exponentially

(Moore’s Law)

Need more people...

Need more time...

Shorter lead time…

More product variation...

Market demands...


Managing variability with koala

Decomposition paradigm

Composition paradigm

Product

Family

Product

Population

Application

Domain

Product

Everything

A specific TV

TV, FTV, PTV

All CE Products

World

TV, VCR, DVD, ...

Separate productinformation from componentinformation


A product population is

A product population is:

- a set of products with many commonalities, - but also with many differences, - developed by different sub organizations, - each with its own time-line / lifecycle.

SingleProduct

ProductFamily

ProductPopulation

UnrelatedProducts

DecompositionDedicated components

CompositionCOTS


Koala is

CC

C1

C3

C2

Koala is…

- a component model - with an ADL - to build populations of - resource constrained products


Managing variability with koala

Koala

101


Component

Component

A Koala component is: - a unit of design/implementation - a unit of reuse

CTuner

Compare a Koala component to: - a Java or .Net class - a COM coclass

component CTuner

{

}

A component is described in CDL (Component Definition Language)


Provides interface

Provides Interface

A Koala interface is: - a unit of specification - a unit of binding

interface ITuner

{

void Tune(int freq);

}

p

CTuner

Compare a Koala interface to: - a Java or .Net interface - a COM interface

component CTuner

{

provides ITuner p;

}

An interface is described in IDL (Interface Definition Language)


Provides interface s

Provides Interfaces

interface IInit

{

void Init(void);

}

interface ITuner

{

void Tune(int freq);

}

i p

CTuner

A component may (and usually will) provide more than one interface.

component CTuner

{

provides

IInit i;

ITuner p;

}

An interface is a small set of functions that are semantically related.


Commonality and variation

Commonality and Variation

Commonality

Variation

ISearchTuner

ITuner

ITuner

IInit

IInit

CSearchTuner

CTuner

IVideo

IInit

CVideo

Components in the repository


Requires interfaces

Requires Interfaces

interface IInit

{

void Init(void);

}

interface ITuner

{

void Tune(int freq);

}

component CTuner

{

provides

IInit i;

ITuner p;

requires

IRtk r;

IMem m;

}

i p

CTuner

r m

Components access functions in their environment through explicit requires interfaces

interface IRtk

{

Sem CreateSem();

}

interface IMem

{

void *malloc(int size);

}


A product

A Product

Also a component!

CProduct

CApp

component CProduct

{

contains

component CApp app;

component CTuner tun;

component CRtk rtk;

component CMem mem;

connects

app.i = tun.i;

app.p = tun.p;

tun.r = rtk.r ;

tun.m = rtk.m;

}

CTuner

CMem

CRtk


A nother product

Another Product

CProduct2

CApp2

Same!

CTuner

Different!

CMem2

CRtk2

Requires interfaces are variation points!


Compound component

Compound Component

The component model is recursive

CPlatform

CTuner

component CPlatform

{

provides

requires

contains

connects

}

CMem


Glue module

Glue Module

CTuner

Sometimes interfaces are not connected 1:1

component CXxx

{

contains

component CTuner tun;

component COs os;

module m;

connects

tun.m = m;

m = os.m;

}

We can then insert a glue module

COs

Examples:- interface mismatch- tracing / logging- special strategies


Code module

Code Module

We also use modules to implement a component

component C

{

provides

I1 p1; I2 p2; I3 p3;

requires

Ia ra; Ib rb; Ic rc;

contains

module m1, m2;

connects

p1 = m1;

p2 = m1;

p3 = m2;

m1 = ra;

m1 = rb;

m2 = rb;

m2 = rc;

}

There is no distinction between code and glue modules!


Implementing a module

Implementing a Module

Interface functions can be implemented in CDL…

component CProduct

{

….

connects

within m1

{

p1.f(x) = ra.g(2*x);

}

}

…or in the underlying implementation language (following the language binding conventions)


Diversity interface

Diversity Interface

interface IDiv

{

bool Fast;

int Color;

}

Component can be parameterized…

C

component C

{

requires IDiv div;

}

…to postpone certain decisions to product time


Switch

C2

C3

Switch

Also the binding decision can be postponed.

C1

component C

{

provides …

requires …

contains …

connects

switch div.Fast

in { c1.r }

out { c2.p } onfalse,

{ c3.p } ontrue;

}

A switch can be statically evaluated or converted into run-time code.


Diversity spreadsheet

C1

C2

C2

Diversity Spreadsheet

Parameters of subcomponents can be partially filled in…

… and partially diverted to parameters of the compound component


Optional interface

Optional Interface

Parameters of subcomponents can be partially filled in…

C

component C

{

provides …

requires

IX r optional;

}

… and partially diverted to parameters of the compound component


Sub typing and evolution

Sub-typing and evolution

IA

IB

IA

IB+

IC

IB+  IB

Koala subtypes interfacesbased on set inclusion offunctions

C

C’

C’  C

Provide more...

IB-  IB

Koala reports an error if anon-existing interface isbound…!

C

C’

C’  C

IA

IB-

IA

IB

IC

Require less…???


Reflection

Reflection

A component can observe whether interfaces are actually connected.

C1

This allows components to adapt themselves to their environment automatically.


My old digital camera

My old digital camera…

Dedicated

Dedicated

“Dedicated”


The one i wanted to buy

The one I wanted to buy…


The one i bought

The one I bought…

All general purpose components!


One snag though

But be careful!

One snag though…

Can do 110 Volts

and 220 Volts


Self configuring components

Self-configuring components

Components specify howmany resources they require

C1

C3

+

C1

This can be summed and provided tothe component that delivers theresources at the product level


Multi threading

Multi threading

Problem: many (>100) activities but few (<10) threads

Step 1: use message pumps created on virtual pump engines required through a diversity interface

C3

Different thread,

Synchronisation

required

CFireBrigade

Step 2: bind these to pump engines (a real dispatcher loop)

C2

Same thread,

No synchronisation required

C1


Threading analysis

Threading Analysis

Attribute interfaces witha symbolic thread label

a

b

b

*

a

b

c

*


Threading calculus

Threading calculus

a

a

*

*

a

X

X

a

b

*

a

*

X

X

a

c

*

*

a

X

O

a

d

*

a

*


Unification

Unification

q must besame as p

Thread labelsare unified

p

p

q

a

b

b

Prepared forcall on differentthreads, but calledon the same thread

a

b

c

C is a new thread,and cannot beequal to q

p

p

q


Managing variability with koala

Using

Koala


Our approach

Under a common architecture...

… executed in projects!

Architecture

Projects

Products

Subsystems

… a set of subsystems

is developed...

…with which products

can be built...

Our approach…


Domain vs application engineering

Domain vs application engineering

Products

Application

Architecture

Domain

Subsystems


Yawnoc s law

Eindhoven

Brugge

Hamburg

Briarcliff

Southampton

Wien

Sunnyvale

Knoxville

Bangalore

Singapore

Yawnoc’s Law

The structure of the organization should mirror the architecture of the software.

Surprisingly(?), the development managers agree, but the architects protest…

Source: David Weiss


In house versus 3 rd party

In-house versus 3rd party

Source-code

in MBytes


Leveraging architecture

Applications

Applications

OS

OS

Middleware

A/V platform

A/V platform

Applications

Middleware

Drivers

Leveraging & Architecture

?


Managing variability with koala

The

End


  • Login