Chapter 2. Architecture 11
Developers have different skills and levels of experience. When you start on a
new project (or even a maintenance project), depending on how your
organization structures and staffs new projects, you can end up with a project
team of mixed levels of experience and technical skills. You might have a few
good J2EE developers, but the back-end system that you need to integrate with,
was (or is being) developed using CICS / COBOL. Usually, it will be a case of the
application and processing layers being developed in one language and tool set
other than the back-end system transactions. You then have developers sitting
on different sides of the fence, talking different languages to describe their
interfaces.
For example, lets say the Java developer needs to send a field that represents
an amount to the back-end system. Typically the Java developer will use a Java
type such as BigDecimal to represent the amount and will define the same
amount field in a COBOL copy book as a S9(13)V99 COMP-3 field. Translating
from a Java BigDecimal type to a COBOL S9(13)V99 COMP-3 type is not an easy
task. The challenge for developers here is really how to create a request that
meets the contract definition of the EIS (a request record) and how to parse the
response from the EIS (a response record) into an object or component that the
application or business process can handle. At the same time, you must consider
how you will connect to the back-end system. In addition, you should consider
quality-of-service issues such as transaction management, security, and
connection pooling.
Fortunately, specifications and technologies exist that help with back-end
integration requirements. However, using technologies or development tool sets
alone just for the sake of solving back-end integration challenges might not
adhere to your organization’s IT standards and principles. In addition, it probably
will not meet the expectations of your business unit or customers in the long run.
There are many issues to consider before you start plugging in the available
technology options. Some of the issues are known, and some you will probably
discover as you start unit and integration testing with back-end transactions. For
example, have you thought about what impact versioning will have on your
applications and business processes when you start re-factoring the interfaces of
your back-end transactions? In reality, business requirements do change,
sometimes as late as the testing phase. If you are on the critical-path of a project
and you need to change back-end transactions, then you want to have a
back-end integration solution that can handle these type of changes with minimal
impact.