Component Development Taciana Amorim Vanderlei [email protected].

31
Component Development Taciana Amorim Vanderlei [email protected]
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    214
  • download

    1

Transcript of Component Development Taciana Amorim Vanderlei [email protected].

Page 1: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component Development

Taciana Amorim Vanderlei

[email protected]

Page 2: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Contents

The methodology Problems of asynchrony Multithreading Learning from circuit design Living without implementation inheritance Nutshell classes Language support Caller encapsulation The enviroment The tools

Page 3: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

The methodology

Requires support for component-oriented programming: polymorphism modular encapsulation late binding and loading safety

Page 4: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Problems of asynchrony

Multicasting Event object recipients are themselves free to

post new events. The set of recipients could change while a

multicasting is in progress. Some of the recipients might raise exceptions

while handling received event objects and the multicast is in progress.

Page 5: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Multithreading

Concept of supporting multiple sequential activities concurrently over the same state space.

Problems: Conflits from concurrent writes; Deadlocks; Degradation of performance with synchronization; Prolonged locking of frequently shared resources; Propagation of exceptions across thread boundaries; Difficult to debug code that uses multiple threads and

complex interlocking patterns.

Page 6: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Multithreading

A concept that would help to reduce complexity in many such cases is transactional programming.

Application server technologies that are increasing availability of transactional infrastructure support for components: COM+ EJB CCM CLR

Page 7: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Learning from circuit design

Fully asynchronous circuits Best performance Complex to design

Synchronous circuits Synchronize all activities of component boundaries to clock

signals. Require asynchrounous communication at the boundary. Synchronous communication at the boundary requires

asynchronous circuit. Introdution of remote procedure calls in the software

Tendency to support synchronous communication, forcing the introdution of asynchronous computation.

Page 8: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Living without implementation inheritance Subclass a class introduces implementation

overhead and runtime overhead. COM-style aggregation helps to avoid the

performance implications of forwarding. The implementation cost can be hidden by using

various forms of automation. Generate the code of a forwarder´s class; Use a template mechanism.

Page 9: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Nutshell classes

It has the same interface as the object it is forwarding to, and all methods are implemented as plain forwards to the target object.

Nutshell classes are themselves abstract. Recently added to Java in the form of the

proxy. CLR offers a similar mechanism via its

RealProxy class.

Page 10: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Language support

The programming overhead is minimal and the runtime overhead in time and space is equal of implementation inheritance schemes.

Objective-C – support dynamic inheritance from an object.

Page 11: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Caller encapsulation

Need to encapsule the caller rather than the callee.

Caller encapsulation is put to good use in several places in the BlackBox component framework.

Page 12: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

The enviroment – selecting target framework A component object cannot function

outside a defined enviroment. A component object can be design to

operate in multiple such enviroments simutaneously.

Danger to investing heavily in solutions based on a single framework.

Page 13: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

The tools – selecting programming languages Requirements to component programming selecting

language: Polymorphism Late binding Encapsulation Safety Explicity state dependencies

Language paradigm level Object-oriented

Java and C++ Functional

Page 14: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component distribution and acquisition

Page 15: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Contents

Building what sells Product cataloging and description Component location and selection Superdistribution Intermediaries

Page 16: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Building what sells

In the past was a lack of business models. Slowly changing with the growth of

specialized markers of software components and intermediaries.

Software services are becoming increasingly popular.

Page 17: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Product cataloging and description

It is not clear how to specify a software component.

Component specification need to be placed in an architectural context that includes: Possible embedding in component framework; Platform assumptions; Requirements; Styles of composition.

Page 18: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component location and selection

How can component services be described to allow for efficient retrievel and hight

precision?

Ontolological approaches

Page 19: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component location and selection

KIF, developed at standford, proposes a standard (logic.standford.edu/kif).

Project called Reuse Center in Corinto, Italy (www.corinto.it).

Computer Industry Project (SCIP), project at Standford (www.standford.edu/group/scip).

Page 20: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Superdistribution

Pay-per-useSend a component to everyone who might at

all benefit. Works by encouraging users of a

component to send it to friends.

Page 21: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Intermediaries

Represent bundled interests of one side to the other.

Intermediary servicesQuality control Integration services across productsApplication service provider (APS)

Page 22: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component assembly

Page 23: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Contents

Systematic initialization and wiring Visual component assembly Compound documents to supersede visual

assembly Componente beyond graphical user interface

environmetns Managed and “self-guided” component

assembly End-user assembly Component evolution

Page 24: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Systematic initialization and wiring

Composition Selecting components and interconnecting

those using selected connectors. BML (bean markup language) is a

JavaBeans composition language.

Page 25: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Visual component assembly

One way of simplifying the assembly process.

JavaBeans and COM support general connection paradigms.

Page 26: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Compound documents to supersede visual assembly Documents are applications and document

editing is component (instance) assembly.

Integration of build and use enviroments, especially in the context of compound documents.Strong and produtive case for application

development.

Page 27: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Components beyond graphical user interface environments

Server-based solutions in particular have inspired many of the current components software approaches.

Server-side solutions: Sun´s EJB Microsoft´s COM+ Sun´s servlets Microsoft´s VB Microsoft .NET

Modern graphical user interfaces

Modern graphical user interfaces

Relative regularity of user interfaces

Relative regularity of user interfaces+ =

Reusable components valuable assets

Reusable components valuable assets

Page 28: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Managed and “self-guided” component assembly Managed assembly

Automated assembly component that implements the policies that govern the dynamic assembly of instances.

Self-guided assembly Similar as above, but uses rules that are carried by

the component instances themselves.

Page 29: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

End-user assembly

Enable end users to assemble custom solutions. Anders Morch termed this feature distinguished

three levels: Customization Integration Extension

Robert Slagter and Henri ter Hofte show an application with computer-suported collaboration. Groove Transceiver (www.groove.net)

Page 30: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Component evolution

Potential components increases with deferral of assembly => Fragility increases

Problems of version conflits Upgrading of operacional instances to newer versions

is of active research. COM – robust approach to supporting version

coexistence. Java does not have a special version control

mechanism.

Page 31: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br.

Questions?