component technology. challenges facing the software industry today’s applications are large &...
TRANSCRIPT
Component Technology
Challenges Facing the Software Industry
Today’s applications are large & complex – time consuming to develop, difficult and costly to maintain and risky to extend with additional functionality
Applications are monolithic – consisting of a single binary file – prepackaged with wide range of features, most of which cannot be upgraded independently
Challenges Facing the Software Industry
Applications are not easily integrated – data & functionality of one application are not easily available to other applications, even if the applications are written in the same language and running on the same computer
Solution – Component Architecture
Solution lies in breaking the software into reusable “Components”
A Component is like a mini application, which comes as a binary bundle of code, that is compiled, linked and ready to use
Monolithic application is replaced with custom components that connect with each other at run-time to form an application
Solution – Component Architecture
For example, a component might be a spell checking feature sold by one vendor that can be plugged into several different word processing applications
Modifying or enhancing the application is a simple matter of replacing one of these constituent components with a new version
Application remain no more static entity, instead it evolves gracefully over time as new components replace older ones
Component Benefits Application Customisation
Component architecture lends itself to customisation as each component can be replaced with a different component that better meets the needs of the user
Helps evolution of application as new components replace the older ones
Component Benefits Rapid Application Development
Component architecture facilitates rapid application development, by choosing components from a component library and snap them together to build application
Component Benefits Distributed Components
With increasing bandwidth, the need for applications composed of parts spread over a network is going to increase
Component architecture simplifies the process of developing such distributed applications
Component Benefits Client/Server applications have already
taken first step towards a component architecture by splitting into two parts – client part and server part
Making a distributed application out of an existing application is easier, if it is made of components, as the application is already divided into functional parts that can be located remotely
Component Benefits The distributed application can
contain a component that has a sole purpose of communicating with a remotely located component, thereby rendering the application completely independent of where actual components are located
What makes Components so useful?
The advantages of using components result directly from their ability to dynamically plug into and unplug from an application
In order to achieve this capability, components must meet two requirements First, components must link dynamically Second, components must hide (or encapsulate)
the details of how they are implemented
What makes Components so useful?
Dynamic Linking The ultimate goal is to provide the facility to
replace the components in our application while the application is still running. Support for changing components at run time requires the ability to dynamically link components together
What makes Components so useful?
Encapsulation Encapsulation is a crucial condition for
dynamic linking To replace an old component in a system
with a new component, it is necessary that the new component must connect in the same manner as the old component or else atleast a recompile, if not a rewrite will have to be done
What makes Components so useful?
To achieve encapsulation, Components connect to each other through interfaces
Interface isolate implementation details of the component, thus changing a component has no effect on the rest of the application
How Things are Achieved? The Component Object Model (COM),
which is the underlying specification, meets all the requirements for component architecture
COM is a standard which specifies how to build components and how components talk to each other
COM Components Components written to COM specifications are
refered to as COM components
COM Components consist of executable code distributed either as dynamic linked libraries (DLLs) or as executables (EXEs)
COM Components COM components meet all the requirements
for a component architecture COM Component are fully language independent Can be shipped in binary form Can be upgraded without breaking old clients Can be transparently relocated on a network Announce their existence in a standard way using
COM’s publication scheme