The Story:
Once upon a time, in a shinny day, green land views are amazing, and the
birds are singing an Enterprise Company’s CEO went to work; the
is operating at multiple locations world wide. The IT manager requested
to develop ASAP a software solution that will replace the current less
featured solution that handles projects and Company’s tasks worldwide,
because the current solution made them loose a lot of great deals and
opportunities.
The CEO accepted the idea and orders the IT manger to contact a software
company to handle the issue in 3 months which is obviously a
challenging job to develop
The IT manager remembered that he had just add an Entrepreneur who started
a fresh company that claims that it offers a new innovative software
development methodology based on component development. The IT manager
contacted the entrepreneur and after conducting a series of meetings
and checking the company’s success stories and achievements, they
signed the contract and the job began.
The innovative company composed a team of software engineers and the
project started, and this was the process of the development:
Show what you have in your pocket:
That’s
our story and that’s our dream we will be working to achieve, as we
just are still giving abstract information about what we are targeting,
and what we will be working together to achieve, so the story just
clarifies our goal, so let’s start.
Don’t re-invent the wheel:
As
the Component Based Development isn’t a new topic, and a lot of efforts
have been done in this area before, so we will go quickly on the
current efforts and start from this point.
General:
Others:
Change the way you are looking toCBD:
As we mentioned the current efforts in the area, there are a lot of details that best described by how we are looking to the Nutshell Component Development NCD.
<!--[if gte vml 1]>
<!--[endif]-->
Figure 1: Nutshell Component Development (NCB) High Level Architecture
Now we have 3 levels of components communication as shown in the figure:
Some efforts have been done here like JMS for example in J2EE technology, Spring Seam and Java Beans.
Examples of this are obviously web services and SOA.
N.B. This communication will encounter security, scaling, and other issues related to distributed environments.
Our goal:
To be able to use a tool that assembles a set of re-usable components,
and by a WYSIWYG tool or using a declarative language you start
creating flow of actions that matches your requirements, moving on
every use case in the design documents, and create a corresponding flow.
Now after we take a high level look on the architecture, we need to classify components into three types:
1.Data Access Components
a.Examples: Entity Beans in J2EE EJB Technology and Spring Database Access Layer
2.UI Components
a.Examples: ASP.Net Controls and JSF Controls
3.Model Components
a.Examples: Session Beans in J2EE EJB Technology
4.Integration Components
a.Glue components, most of time those will be custom made, but some efforts are being done in this area.
To summarize, those components represents the Model View Controller Model (MVC),
Finally:
Next
article we will start to work on every layer, we will start with the
Internal Application Component Communication and we will have a case
study on that.
I
will be waiting to your valuable comments on the current article, and I
will be glad to hear what your expectations about Internal Application
Component Layer are? what features you would like it have?
http://splitfitglue.blogspot.com/2009/01/festival-begins-component-development.html
Ayman Emam, Software Engineer