Modularity and Dynamism - The tale of two sisters

Post on 06-May-2015

374 views 5 download

description

A short history of modularity and dynamism followed by a presentation of the iPOJO latest features.

Transcript of Modularity and Dynamism - The tale of two sisters

Modularity & Dynamism

A Tale of Two Sisters

Dr. Clement Escoffier

Time Travel

–R. Gauthier and S. Pont, Designing Systems Programs, 1970.

“Each task forms a separate, distinct program module. At implementation time each module

and its inputs and outputs are well-defined. At checkout time the integrity of the module is tested independently. Finally, the system is

maintained in modular fashion.”

–D. Parnas, On the Criteria to Be Used in Decomposing Systems into Modules, 1972.

“The major advancement in the area of modular programming has been the development of coding techniques and assemblers which (l) allow one module to be written with little knowledge of the code in another module, and !(2) allow modules to be reassembled and replaced without reassembly of the whole system.”

–R.S. Fabry, How to design a system in which modules can be changed on the fly, 1976.

If the module does manage permanent data structures which must be modified

and the system is one which is expected to continue operation throughout the

change, the problem is more difficult, but it can be solved. This paper discusses a

solution.

Modularity a (not that) simple idea

The trend…

Dependencies

Compatibility

Boot Sequence &

Stabilization

Reuse / Generic vs.

Performance

DynamismThe forgotten sister

Dynamism

(Asynchronous) Update

Event in the surrounding environment

Change in the application

context

Very specific and limited to

particular domains

Ubiquitous Computing

Machineto

Machine

Internetof

Things

Pervasive Environment

Application Servers

Set-top Box

Enterprise Server

(JavaEE)

Custom App

Servers

Enterprise Applications

Heavily Distributed

Managed by many

stakeholders

Mal leable Topology

Cloud, Mobile…

Ever-Changing Dynamic Resources

Disruptions

Dynamism breaks the simplest assumptions

if (service != null) {

service.serve();

}

Simplif ication of the development

model

Al l types of dynamism

Adaptable , Flexible and

Customizable

C omponents

Interfaces

Required

Provided

Dependency Injection

Lifecycle

Dynamic Availability

Dynamic Availability

X! X!

On the role of the Service RegistryRegistry

1 - Publication2 - Lookup,

Notifications, Selection

3 - Binding

The new super-powers

Constructor injection

public Component (

@Requires ApplicationConfiguration configuration, @Property(name="p",value="d") String prop, @Context BundleContext ctx) {

//…

}

Temporal => Timeout

Hold the line,back in a sec

@Configuration

@Configuration public class MyConfiguration { ! Instance businessA = instance() .named("A") .of(BusinessImpl.class) .with("name").setto("A"); }

Context-Sources

filter= “(version=${my.version})”

Stereotypes & Manipulator Modules

@Controller

@Component @Provides @Instantiate

Interceptors

iPOJO 2.x Roadmap

Manip@Runtime

Inheritance

New Manipulation Machine

Interceptor Chains Indy ?

Intra-Bundle Injection

End Of File