An Introduction
Martin Naedele
Industrial Software Systems
CHCRC.C2
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
“Get the feel” for the concept of component-based SWE
What are components?
What are components not?
What are components good for?
Know the terminology and the important acronyms
Know where the limits and problems are
Not
How do I do “X” with technology of vendor “Y”?
a programming course
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
4
5
6
7
Part
1
2
3
The challenges of SWE - how can component SW help?
What is component software?
Elements of a component infrastructure
Specific component models
Developing SW with components - some guidelines
Problems and research issues
Sources of further information
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
component
a piece of software, definition discussed later component-based software (CBS), aka component software, aka componentware
application built from components component-based development (CBD), aka component-based software engineering (CBSE)
the activity of building applications from components
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
The “software crisis” (1968) still exists:
SW is late
SW is buggy
SW is expensive
Component software yet another “silver bullet”?
NATO conf 1968
SW crisis
SW engineering components
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
SW is late
SW is buggy
SW is expensive
… because too often applications are created instead of constructed , requiring
re-invention
re-coding
re-testing
Also, applications are not adaptable to changes
Component-based software engineering can help because it focuses on reuse of
subsystems
infrastructure
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
components
Component
#1 construction application
Component
#4
Component
#2
Component
#1
Component
#2
Component
#3
Component
#4
Component
#3
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
application
Component
#1
Component
#2
Component
#3
Component
#4 update component
New
Component
#4
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Object orientation is not primarily concerned with reuse , but with appropriate domain/problem representation using the technological enablers
objects
classes
inheritance
polymorphism
[Wegener]
Experience has shown that the use of OO does not necessarily produce reusable SW
fragile base class problem
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Reuse of components should
improve productivity, speed up development
reduce risk
improve robustness, increase quality
generate additional income
Reuse has two forms reuse of a component in a different application reuse of an application of which parts have changed fast construction
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#› evolvability, extensibility
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Microsoft:
“Monolithic solutions won’t work
No one vendor or one team of programmers can move fast enough
Need to leverage others’ work and to build and ship smaller pieces incrementally
Need to evolve smaller pieces asynchronously without sacrificing the whole”
Gartner:
“Component-based development is an evolving best practice”
“By 2002, 70 percent of all new applications will be deployed using componentbased application building blocks.”
“... components can improve programmer productivity by 40 percent or more…”
“Through 2004, IS organizations that are mature in CBD methods and that use a model-driven or pattern-based application development framework containing a large inventory of business components have the potential to be 5 to 10 times more productive than those that do not.”
ABB
ABB Corporate Research
2000 ABB Corporate Research Ltd, Baden, Switzerland
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
The challenges of SWE - how can component SW help?
Reuse is the solution to many problems in SWE
CBD focuses on SW reuse
CBD tries to avoid re-creation of code
OO is a technology that facilitates creation of new code
(if necessary)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Structured Analysis
functional decomposition, hierarchy
Object Orientation
encapsulation of state and behavior
domain modeling
interactions
inheritance
Frameworks interfaces
domain-specific reusable infrastructure
Patterns
reuse of abstract mechanisms, experience
Component-based SW
???
Not really: 1968
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
… are a hot academic research and dispute topic: client-centered events self-contained usable in unanticipated contexts connectors reusable contracts independently deployable compositional encapsulated distributable provided interfaces visual programming binary quality of service required interfaces
COTS boundaries configurable
ABB
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
… are a hot marketing topic:
COM+
DCOM binary
EJB
Corba
ActiveX controls language independent
JavaBeans
COM platform independent
.NET
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#› builder tools
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Components
independently deployable SW entities with a certain functionality which
can be composed into larger systems by means of dynamically discoverable , immutable interfaces following standardized conventions .
Component-based software (CBS) consists of
connected components on multiple levels which also extensively use
services provided by the runtime infrastructure of the component model
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Component object, component instance: actual occurrence of a component in a running system
Component class : abstract template for the creation of component instances
Component: conceptual building block of a system, depending on context the term used for any of the above
Component model : conceptual and implementation framework for writing and working with components
languages, platforms
runtime infrastructure, functionality, and API
technical details of interface and distribution implementation
… more later
Examples: MS COM, Sun EJB, Corba ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Group of related methods that specifies a contract between user and provider of the interface
usually only syntax explicitly specified, semantics implicit
concept of a contract also includes
semantics
non-functional properties, quality of service
negotiation
once public, it must be immutable with respect to
functionality
syntax
semantics
implementation may change at any time IBar
A component may provide / implement several interfaces
IFoo
IFoo2
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
(Microsoft) Interface Definition Language
[ uuid(00112233-ABBA-ABBA-ABBA-BADBADBADBAD), object
] interface IAddressList {
HRESULT addAddress ([in] name, [in] address);
HRESULT deleteAddress ([in] name, [in] address);
}
language independent interface specification
can be compiled into language dependent code skeletons
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
“30 % of SW development effort is spent on infrastructure that adds no value”
Goal
Developer should concentrate fully on the application instead of spending time on reccurring side issues
Each commercial component model offers ready-made infrastructures for e.g.
transactions
distributed computing
persistence, DB access
security (access control) more later...
“The COM+ philosophy: The runtime does all the grungy stuff” [Microsoft]
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Performance oriented languages (C, C++)
Application development languages (Java, C#)
End-user languages/GUI builder (Visual Basic, visual programming, scripting)
Configuration (attribute based programming (ABP))
security rules, user roles
database names
distributed deployment
feature set/available subsystems
transaction requirements
… are set at installation time
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
An application server can be
- a Web Server,
- a Database Server
- a CORBA Server
- a TP-Monitor
…
Client Client
Application
Server
Imperative
Programming
...
Server
Component
Server
Component
Attribute Based
Programming
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Transaction
Security
Resources
...
Transaction
Security
Resources
...
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Here: EJB approach
Bean
Provider
A
Application
Assembler plugs beans together
Deployer puts beans into containers
Container
Provider
Server
Provider
Bean
Provider
B
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
System
Administrator configures and administrates enterprise environment
2000 ABB Corporate Research Ltd, Baden, Switzerland
[SUN]
ABB
Component-based system
focus is on interfaces between units
multiple instances of one component (class) in the running system
composition, bottom-up
System with subsystems
focus is on functional units
subsystem is singleton
structuring, top-down
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Depending on the point of view, components are units of
functionality
reusability
purchase/outsourcing
deployment
maintainability
quality management
documentation
…
When discussing CBSE it is important to ensure that everybody talks about the same aspect.
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
What is component-based software?
No clearly defined concept
No revolutionary technology
Most important features can be summarized as
interfaces
infrastructure
multi-level programming
CBSE is not really (only) about components
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
All commercial component models offer runtime infrastructure support to allow the developer to concentrate on the business logic
infrastructure = middleware
certain architectural patterns can be found in all component models Knowing these patterns will make it easier to understand a particular vendors component infrstructure
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
runtime component/memory management
service/component discovery (naming, broker)
transparent distributed computing
security (access control)
persistence, DB access
transactions
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
message queues
event handling
fault tolerance
error isolation
load balancing, pooling
WWW connectivity
data exchange over open protocols
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Naming
Service
Transaction
Service
Security
Service
Request/Reply
(HTTP,IIOP,
RMI, DCOM)
Communication
Publish/Subscribe
Message Queue
Eventing
Data
Streaming
Load balancing
- Multi-Process
- Multi-Thread
Lifecycle Management
State
Management
Web
Integration
DB
Connection
Pool
Legacy
Integration
Business Logic
(Components)
DB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Proxy , aka proxy-stub, aka stub-skeleton used for location transparency, distributed components, interprocess component access
Data packaging (marshalling) and transfer transparent for the user
„stub“ (local proxy) „skeleton“ (remote proxy) remote object client server
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Interface specification in
IDL
Part of CORBA, JavaIDL, or COM implementation
IDL Compiler
Client
Stub
Proxies Server
Skeleton
Programming language dependent source code to be compiled into client and server application
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
aka distributed computing
Goal Realization with proxy client server
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#› naming service/ broker
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Serialization used for storage or transmission
Allows object/compone nts to
“hibernate”
the component writes/reads itself to/from a stream
serialization is started using a specific interface of the component
ISerialize
IBar
ISerialize
IBar
IFoo2 serialization
IFoo2 deserialization
ISerialize
IBar
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
IFoo2
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Inheritance by delegation used for implementation reuse
components do not use implementation inheritance to avoid dependencies and anomalies
a call to a method of an interface of a component is passed on ( delegated ) to a different component that implements the actual functionality
IFoo delegation
IFoo
IFoo2
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Interception used to give the runtime infrastructure control over calls to a component’s interface, e.g. for
access control
instrumentation and logging
location transparency (see proxy)
...
Server process
Application client
IFoo
Security service
IFoo
Application
Server
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Dynamic connections , aka events used for communication between partners that are only known at runtime
follows publish-subscribe pattern
notification may be asynchronous <<Interface>>
MyEventListener myEventOccured() aSender aReceiver addMyEventListener (this) myEventOccurred(...) removeMyEventListener (this)
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Elements of a component infrastructure
What does it offer? How does it work?
All component models offer similar runtime infrastructure services, though under very different names
These services are implemented using certain architectural patterns
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Component model
Conceptual and implementation framework for writing and working with components
interface structure
interaction mechanisms
guidelines on implementation or
A vendor ’s approach towards writing components and providing infrastructure
Presented here:
Microsoft COM / ActiveX
Microsoft .NET
OPC
Sun EJB
Sun JavaBeans
Corba
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Not all component models have the same purpose
(D)COM, EJB, Corba:
distributed computing
infrastructure for multi-tier systems, integrated with middleware
components usually business objects
JavaBeans, ActiveX controls:
creation of GUIs
visual programming using builder tools
have design-time and run-time user-interface
have properties
communicate with events
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
General purpose component model
Basic technology behind multiple marketing names
COM, DCOM, COM+, ActiveX, OLE, Automation
History
developed in 1995
since W2K COM+ with enhanced infrastructure
since 7/00 future unclear because of .NET
Design goals
simplicity (of concept, not use!)
performance (zero sacrifice if used in process)
binary compatibility
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
infrastructure ‘COM runtime’ built in on Win OS
‘binary compatibility’, language independent
requires implementation of interface ‘IUnknown’
uses ‘GUIDs’ (globally unique IDs) to name interfaces etc
location independence (in-process, cross-process, crossmachine)
supports distributed computing with DCOM wire protocol
component deployment as DLL or EXE
programming languages HTML/ASP, VB and VC++
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
COM
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
transactions: MTS
message queues: MSMQ
database wrapping: OLE DB, ADO, ...
security functionality using WinOS
multi-user functionality using WinOS
broker/discovery: runtime + registry
multithreading
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ActiveX controls: GUI component model on top of COM
certain additional conventions
visual programming with builder tools, e.g. VB
properties and events
downloadable code (web scripting)
security issues! (no sandbox, codesigning only)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
very flexible
very low level programming necessary to use all features
high learning threshold
requires use of higher level support
ATL (active template libray): class template library with wizards
successful in the market
“… a market currently sized at $410 million dollars just for third party components. This number excludes Microsoft built components and is projected to grow at 65 percent a year, to approximately 3 billion dollars by 2001”
“Choose today from over 1,000 controls from hundreds of vendors”
[Giga Information Group]
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
recently announced (7/00)
not yet clear how much of it is only marketing
basic plumbing still COM
focus on ‘Web Services’
application integration using internet technology
new programming languages ASP+ and C#
C# very similar to Java
C++ deprecated
VB gets OO extensions
SOAP (simple object access protocol) replaces DCOM
XML-based
can get through firewalls
infrastructure called CLR (common language runtime)
includes language independent type system
all ‘runtime aware’ languages can use it ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
industry standard for communication between components in field devices, automation equipment and business applications (generic driver)
data access
historical data access
event & alarm handling
data model
set of interfaces for COM
server interfaces
callback interfaces
managed by OPC Foundation (www.opcfoundation.org)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Display
Application
Trend
Application
Report
Application
Software
Driver
Software
Driver
Software
Driver
Software
Driver
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Display
Application
OPC
Trend
Application
OPC
Report
Application
OPC
OPC
Software
Driver
OPC
Software
Driver
OPC
Software
Driver
OPC
Software
Driver
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Station PC
Client
Application
Client
Application
Variant A
Interbay Bus
Bay
Unit
Bay
Unit
OPC Server
Bus
Driver
Ethernet
Variant B
OPC Server
PC
Bus
Driver
Field Bus
Field
Unit
Field
Unit
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
component model for middle-tier applications (no GUI)
part of the Java 2 Platform, Enterprise Edition
History
EJB 1.0 (3/1998)
EJB 1.1 (1999)
EJB 2.0 currently in draft state
COM: full power to the programmer,
EJB: convenience for the programmer
Design goals
isolate the business logic developer from the infrastructure plumbing
vendor independence for middleware (infrastructure)
platform independence
scalability ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Overview: Java 2 Platform, Enterprise Edition
EJB enterprise java beans
JSP Java server pages
JMS Java messaging services
Servlets
JTA/JTS Java transaction
API/services
JavaIDL (Corba interface)
RMI remote method invocation)
JDBC Java database connectivity
JNDI Java naming and directory services
XML
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
infrastructure provided by component server/container
server/container available from middleware vendors
containers are specified/standardized
RMI/IIOP (Corba inter-ORB protocol) used for distribution
components deployed as compiled Java classes & resources in JAR (Java archive) format
two flavors
session beans (non-persistent), e.g. shopping cart
entity beans (persistent), e.g. bank account
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
EJB spec prescribes certain coding rules (naming and semantics) for components
EJBHome (home interface, lifecycle management by container)
EJBObject (remote interface, accessible for client)
Bean class (implementation of functionality)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Container/Server manage object lifetime, persistence, DB access (JDBC), security
transactions: JTS, JTA
message queues: JMS
database wrapping: JDBC
persistency (entity beans)
container managed
bean managed
security functionality built into container/server, JAAS
multi-user functionality built into container/server
broker/discovery: container/server + JNDI
multithreading
Corba interface built into container/server
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
One server may contain multiple containers low-level communications, load balancing, directory services
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#› transactions, access control, communication, lifecycle management, persistency
ABB
2000 ABB Corporate Research Ltd, Baden, Switzerland
transaction services not quite as mature as MS MTS
designed as server component technology
considered promissing for n-tier applications
“...
IDC believes that EJB is well on the way to becoming a de facto standard for heterogeneous, multiplatform environments"
[IDC, 4/1999]
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
component model for GUIs and client-side applications
visual programming with builder tools, e.g. JBuilder
properties and events (JDK 1.1 event model)
require (only) certain coding rules (design patterns)
some helper classes exist
interfaces for design time and run time
built on top of Java
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
interface and property lookup by builder tool
implicit: needs only class files, based on built-in introspection and “design patterns”
explicit: optionally BeanInfo class per component
automatic serialization support
deployed in JARs
property editors (also beans) and customizer
events can be adapted using automatically generated adapterscan be written manually w/o wizards
additional APIs: InfoBus, JAF; BeanContext
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
server-side component model
standard for distributed computing
defined by members of the Object Management Group (OMG)
History
started in 1991 (Corba 1.1)
current version: Corba 3 (1999)
Design goals
comprehensiveness
interoperability
infrastructure services as components
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
implemented by various vendors
central concept: ORB (object request broker)
provides location transparency
provides platform, language independence
wire protocol IIOP (Internet inter-ORB protocol)
interface definition in OMG IDL
bindings for many languages exist
produces proxy pattern
spezialized Corba
real-time CORBA,
minimal CORBA for embedded systems
fault-tolerant CORBA.
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Corba is based on the Object Management Architecture (OMA) reference model:
Non-standardized Vertical domain-specific application-specific interfaces interfaces
Application Objects Domain Objects
Horizontal facility interfaces
CORBAFacilities
Object Request Broker (ORB)
Transportation and
Communication
CORBAServices
General service interfaces
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Collection Service
Concurrency Service
Event Service
Externalization Service
Licensing Service
Life Cycle Service
Naming Service
Notification Service
Persistent Object Service
Property Service
Query Service
Relationship Service
Security Service
Time Service
Trading Object Service
Transaction Service
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
oldest distribution standard, mature
carefully designed architecture
incorporates middleware experts’ experience
OMG provides only specification, implementations must be bought from various vendors
contains all features, but is complex and slow
current trend: integration of Java and Corba (JavaCorba)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Idea: building SW systems like HW systems ...
Point: components are more than SW
IFoo
IBar
1 a1
2 a2
3 a3
4 a4
0
Vcc1
GND
0 b1
5
6 b2
7 b3
8 b4
IFoo2
… the rest of the analogy is often neglected:
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Knowledge about the pinout (interface methods) is not enough , also needed are specifications of
behavior
tolerances
dependencies
environmental requirements
application notes ABB
2000 ABB Corporate Research Ltd, Baden, Switzerland
[Meyer]
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
[Gartner]
Create components of appropriate scope
Make each component independent
Require minimum inputs
Check all inputs for validity
Design related components simultaneously
Adhere to one methodology and one component model
Validate the design early
get early feedback from potential (re)users
Maintain the documentation
Create and maintain an inventory
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Small enough to learn easily, but large enough to be worth learning reuse gain
wrapped (legacy) application
functional block
functional piece (e.g. control) reusability
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
[Gartner]
Inventory (something to reuse ...)
Catalog/repository & search
Reuse administrator and facilitator
A&D methodology incorporates reuse and design for reuse
Design standards ensure consistency
Measurement of reuse effectiveness
Quality assurance
Incentives to encourage reuse
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
[Gartner]
“Between 1999 and 2003 under 30 percent of first-generation corporate component investments will deliver the expected productivity improvements.”
Common component reuse mistakes:
Undefinded goals of reuse
Conflicts of purpose of components
Uncertain future (business & technology)
Inflexible components
Turf wars
Inadequate reuse infrastructure
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
“Through 2002, components will be available from a wide variety of sources in an immature and exploding market with no dominant leaders.” [Gartner]
“We expect the market [for prebuilt components] to grow from about $1.4 billion in
1997 to more than $8 billion in 2002” [Gartner]
SW-builder tool vendors
modeling tool vendors
open source community
component standard groups
component consortiums
books
web sites java.sun.com/beans/marketing.html
www.alphaworks.ibm.com
www.cbop.gr.jp
www.componentsource.com
www.developer.com
www.flashline.com
www.devtools.de
www.openavenue.com
www.pparadise.com
www.qbssoftware.com
www.sourceforge.com
www.theorycenter.com
www.xtras.com
...
ABB
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
- certification
- team structure
- SW development process
- configuration management
Project Management
Quality Management
Analysis
Design
Implementation
Testing
Components
Deployment
Analysis
Design
Implementation
Testing
Deployment
Application
Analysis
Design
design for customization/ variability
- wrapping
- specification/contracts
development methods
- notations
storage - frameworks
documentation
Implementation
Testing
assembly
- finding
- trusting
distribution
- glue code
Deployment
run-time infrastructures
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Are more than interface method definitions
How to specify?
interfaces
behavior (pre-/post conditions, invariants)
dependencies (required interfaces)
quality of service
???
How to test/verify component specifications?
How to document component specifications?
How to negotiate service levels between components at runtime?
How to automatically connect components in builder tools using their specification?
How to verifiy the correctness of a composite system?
...
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Design for reuse requires additional effort
What is the best level of reuse (component granularity)?
How can the benefit of reuse be measured?
Development and documentation of component usage patterns
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
are an enabling technology for CBSE
How to store components?
How to classify and describe components?
How to find components?
fast
different aspects
interfaces
functionality
component model
certification level
previous usage, trust
multiobjective optimization
negotiable requirements
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
Current approach requirements - analyse - design - implementation - test
CBSE approach must include
reuse component selection
component test
requirements reconciliation
component mining for reuse
CBSE must be supported by
modeling formalisms and tools
development tools
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
“Through at least 2002, most IS organizations will be unable to achieve anticipated CBD payback due to factors such as undefined goals, conflicts of purpose, inflexibility in component design, domain scope or turf wars, and inadequate reuse infrastructure ” [Gartner]
New mind-set: create -> construct
Allocate reuse management staff (repository, training)
Accept short term productivity reduction
Accept new business model: first use of a component designed for reuse may not recover production cost
More interdepartmental cooperation and trust necessary
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Imperative feature for component success
Have to establish framework for …?
legal aspects (licensing and warranties)
technical abilities
economic forces
Proven business case
Repositories, precise descriptions and search engines
Documentations and application support
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Is more complex than usually (DLL hell)
especially in dynamic environments
Dependencies and composition constraints have to be resolved almost automatically
consider systems comprising thousands of components
How to do safe exchange of components e.g. upgrade, without contractual specification and proof?
All of the issues above are prerequisite for uploading and downloading of components
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Requires trust and certification
complicated by large group of (small) vendors
‘mobile code security’ important
not user access control but code access control
current mechanisms
sandboxing: restricted functionality, restricted availability
codesigning: not necessarily suitable to establish trust
prove of problem origin
difficulty of persecution
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
real-time requirements
limited processing resources
higher reliability requirement
hot-swapping
non-mainstream OSes
definition of component (HW included?)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Contracts and documentation
Design for reuse
Repositories
Software development process
Organizational changes
Developing a component market
Versioning and configuration management
Security
Component models for embedded systems
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Ivar Jacobson, Martin Griss, Patrik Jonsson: Software Reuse :
Architecture, Process, and Organization for Business Success
(1997)
Desmond Francis D'Souza, Alan Cameron Wills: Objects,
Components, and Frameworks With Uml : The Catalysis Approach
(1998)
Clemens Szyperski: Component Software : Beyond Object-Oriented
Programming : (1998)
Peter Herzum and Oliver Sims: Business Component Factory : A
Comprehensive Overview of Component-Based Development for the Enterprise (1999)
Alan W. Brown: Large-Scale Component-Based Development (2000)
Betrand Meyer: Object-Oriented Software Construction , 2nd Edition
(2000)
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
IEEE Computer
IEEE Software
IEEE Internet Computing
IEEE Transactions on Software Engineering
IEEE Transactions on Computers
ACM Transactions on Programming Languages and Systems languages and programming systems.
ACM Transactions on Software Engineering and Methodology
ACM Transactions on Computer Systems
Software Development (www.sdmagazine.com)
MSDN Magazine (msdn.microsoft.com/msdnmag)
… all major SW development magazines
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Scientific
ACM Conference on Object-Oriented Programming, Systems, Languages, and
Applications (OOPSLA) (oopsla.acm.org)
International Workshop on Component-Based Software Engineering
(www.sei.cmu.edu/cbs/cbse2000/index.html)
International Workshop on Component-Oriented Programming (WCOP)
(ecoop2000.unice.fr)
IEEE Symposium on Engineering of Computer-Based
Systems (ECBS) (www.dcs.napier.ac.uk/ecbs)
Symposium on Generative and Component-Based Software Engineering (wwwstja.transit-online.de/gcse/)
Technology of Object-Oriented Languages and Systems (TOOLS) (www.toolsconferences.com)
International Conference on Software Engineering (ICSE)
International Workshop on Software Specification and Design (IWSSD)
(www.ics.uci.edu/IRUS/iwssd)
International Conference on Software Reuse (ICSR)
Trade
Component Computing (www.tieturi.fi/coco99)
Component Developer's and User's Forum (CDUF) (www.componentdevelopment.com) ABB
ABB Corporate Research
2000 ABB Corporate Research Ltd, Baden, Switzerland
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
http://www.cetus-links.org/
http://www.designbycontract.com/
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
Bertrand Meyer (Interactive Software Engineering; Monash University)
Eiffel, design-by-contract, trusted components
http://www.sd.monash.edu.au/~bertrand/
Clemens Szyperski (Oberon Microsystems; Microsoft; QUT)
Book: “Component Software”
http://www.research.microsoft.com/users/cszypers/
Jan Bosch (University of Karlskrona/Ronneby)
SW architecture, product lines
http://www.ipd.hk-r.se/bosch/
Heinz Schmidt (Monash University)
trusted components
http://www.csse.monash.edu.au/~hws/
Kurt Wallnau (SEI/CMU)
COTS-based systems
http://www.sei.cmu.edu/staff/kcw/
Oscar Nierstrasz (Uni Bern)
SW composition; coordination models
http://www.iam.unibe.ch/~oscar/
Oliver Sims
Business objects
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
Slides and content of this tutorial have partly been stolen from
Microsoft
Sun
OPC Foundation
OMG
O. Preiss, ABB CHCRC
C. Zeidler, ABB DECRC
various unidentifiable sources
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB
ABB Corporate Research
Industrial Software Systems, CHCRC.C2, Naedele /00-08-23 / ‹#›
2000 ABB Corporate Research Ltd, Baden, Switzerland
ABB