home search customers contact
 
   

 

Razer Technology Solutions, Inc.

332 Gordon Drive
Exton, PA 19341
610-524-7073

  Managing Market Chaos
Managing Market Chaos

by: Tom Anderson

Over the last decade, we have seen the technology market move through several continuous cycles
of growth. As Moore's law continues to unfold, hardware price-performance points improve. As they do,
the capability and capacity for software systems grows. The increase in processing power fuels the
software industry and sets the foundation for increased change.

As technology improves, business software systems must remain adaptable, flexible and extensible. Even in
relatively static technology stacks, such as legacy Cobol applications, adaptability, flexibility and extensibility
are all vital characteristics of systems that retain long life spans.

Little is certain, but life dictates, "the only constant is change". If the technology doesn't change, the
business elements of our software certainly will. We can take certain proactive steps that will help insulate
us from changes and also help us manage those same changes. Two things are certain: 1) we can not predict
change 2) we can not prevent change. Managing change may be best accomplished by first understanding
what causes those changes.

Market Chaos
Through out recent technology history, we've seen fantastic innovations. We've come from running the CP/M
operating system on a TRS-80 in 16kb of RAM to a spanking new Pentium 4, running at 1.6 Ghz on a motherboard
capable of hosting 1 GB of RAM. Talk about an order of magnitude! Give some thought to the following program...

5 Rem Sample Program
10 print "Hello World"
20 goto 10
30 end

It will run the same on either of those pieces of hardware. Despite all the new horsepower, simple constructs
like this will still work the same, right? So why do business software systems seem to change so frequently?
Obvisouly, there is a level of complexity in business that is not present in "Hello World". If we assume the business
complexity is a constant, then we are left with the technology itself. Changes in our hardware and software platform
are responsible for driving much of the constant change in our systems. Vendors are constantly changing their
products to offer us new capabilities and extending their platforms to take advantage of all those available CPU
cycles. We want more, better and faster software ---- constantly.

The key to managing change is to contain changing dimensions of you system behind well defined, managed
interfaces. By isolating the elements in your software interfaces that MAY change or are out of your direct
control, you can better manage the impact and scope that vendor changes will have on your systems.

By layering your system functions and creating well defined API's that you control, you can control not only
what happens when a vendor changes their software, but you can also minimize the impact to your systems
when you decide to change vendors. Historically, the software community has called this type of approach reuse.
A good reuse policy can help to effectively manage change We are suggesting that changing elements be
encapsulated even if they are not candidates for reuse.

Layering
Insulating yourself from changes in technology can be accomplished primarily by using healthy amounts of
abstraction and encapsulation to layer your business software systems.

Applications have followed multi-tier design concepts for several years now. This approach implies
that you have several layers in your application design. Even in legacy systems, data services and
application services have been separated from the presentation layer.

At each touch-point in an application structure, consider creating a well-defined layer that insulates your
application functions from the vendor software functions. The diagram below shows an example:

Within each layer, there may be additional layering to wrap vendor specific functions and applications within
your own API. Once vendor functions are encapsulated within an API you control, you've protected yourself
in a small way against changes by the vendor to their code libraries and provisioned for changing to a new
vendor in the future.

Managing Changes
The concept of creating well defined interfaces which wrap vendor specific code can also be laid overtop of
dynamic business elements. Your business units will have constantly changing requirements which need to be
managed. Creating an abstract interface into the software which defines those rules will protecet the consumers
of that interface from changes underneath. Additionally, you may represent the essence of the business rules
in the data repository.
By doing this, they become far more manageable. Very little business data should ever
be hard-coded within an application structure. Storing business data elements in the data repository means
that they are by nature dynamic and can change as the business changes.

In the model above, the business rules layer simply becomes an evaluation engine or API into the data repository.

Design Patterns
Abstraction, encapsulation and the creation well defined API's are hallmarks of good system design. Another way
of protecting against change is to fall back on a good design of the business, data and process elements that
make up a system. For example, have an Object Model or ER-Diagram built at a conceptual level, without a specific technology defined, allows system builders to re-use those designs on completely different technology platforms.

Many data engineering tools allow us to build data models using abstract data types, whose actual DDL definition
is not decided upon until a Physical data implementation is chosen. This allows us to define and solve the business
problems at hand and wait until fairly late in the design cycle to make technology choices; again insulating us
from change in the marketplace.

A good object oriented design, may be implemented over and over using various technology platforms. A good OID
(object interaction diagram) and Object Model may be used to conduct an implementation in Smalltalk, Eiffel or
Java. Without good abstract designs, you will be bound to the solution as it is implemented with the technology
you have chosen. Abstract designs permit people to understand the elements and solution to the business problems
without being encumbered by the technology.

J2EE
A very specific model of this architecture can be drawn using Sun's J2EE architecture. The diagram below shows
one possible example of this architecture:

You will notice several things in this diagram.

  1. Data is never directly accessed by any application layer functions. It is always accessed either through a
    view or by a stored procedure
  2. Data is never directly accessed from the presentation layer. It is always accessed through the data access
    and business rules layer. The business rules and data access provide a well defined API, behind which you
    can hide the specifics of technical implementation details. This can be easily implemented by using object
    oriented design patterns and creating a set of abstract java classes.
  3. Presentation data should be malleable and be able to be reformatted to the appropriate client. XML using
    XSL transformations gives us this capability

Summary
The inevitability of change will force to either spend time and money to keep pace or will inspire us to
innovate methods of protecting our substantial investments in software systems. Isolate the changing
aspects of your systems and encapsulate them well. This will give you the insulation you need to protect
your systems from "Market Chaos". Abstraction of business rules and vendor functions into a clearly
defined API will help protect our substantial investments in business software systems.


Here are some additional links to interesting articles on managing change in the software environment:

 



Corporate Press Releases (more)

- Software Articles
- x86 Hardware
- WebMaster Articles
- Recent Additions



Find Out About Our RFI Package. eMail: offerings@razertech.com


  home · services · about us · copyright · the eZine · contact · customer site
Copyright © Razer Technology Company 1999 - 2008. Legal Disclaimer Site Mod:1/2008.