component development taciana amorim vanderlei [email protected]
Post on 20-Dec-2015
214 views
TRANSCRIPT
![Page 2: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/14.jpg)
Component distribution and acquisition
![Page 15: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/22.jpg)
Component assembly
![Page 23: Component Development Taciana Amorim Vanderlei tav@cin.ufpe.br](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081519/56649d4a5503460f94a27c54/html5/thumbnails/31.jpg)
Questions?