The Festival Begins – Component Development High Level Architecture

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 Enterprise
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 Enterprise software with custom features in 3 months at a good budget at this time of the world financial crises.

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:

  1. Software Analyst conducted a meeting with the IT team in the Enterprise company
    and collected the requirements, and the selected software company
    showed them a wealthy component directory that enable them to search
    component by keyword, view features and select components according to
    functionality, price and rating.

  1. Software Team received the requirements documents in addition to the selected components.

  1. The project leader easily create a plan, adding integration time of components, and time to develop new components (if any).

  1. The project leader easily estimated cost plan, and the expected profit.

  1. The team splitted into two parts, one for the development of new components, and the other started in integration with current components

  1. The quality team ensures that solution is great

  1. Deployment package is created

  1. Software is delivered

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]--><!--[if !vml]--><!--[endif]-->

Figure 1: Nutshell Component Development (NCB) High Level Architecture

Now we have 3 levels of components communication as shown in the figure:

  1. InternalApplication Component Communication: this communication is created between components most probably in the same language, communicating to each others.

Some efforts have been done here like JMS for example in J2EE technology, Spring Seam and Java Beans.

  1. Outer Application Component Communication: this communication is created between components by other word big components (Applications) on the same machine.

  1. Distributed Application Component Communication: this communication is created between big big component (set of tightly coupled applications on the same machine) and other application on remote machine.

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