 |
|
|
By:
Dr.Thomas
J Mowbray
Chairman,
iCMG
|
There
are many active and successful schools
of software architecture thought.
Software architecture is a discipline
unified by principles, but divided
by terminology. The various architecture
schools can be viewed as different
branches of an evolutionary progression.
The Zachman Framework has evolved
from the traditional non-OO approaches.
ODP is an outgrowth from object-oriented
and distributed computing paradigms
that has achieved stability, multi-industry
acceptance, and formal standardization.
Both Zachman and ODP approaches have
enjoyed significant success in production-quality
software development. Domain analysis
has demonstrated its worth in defining
robust domain-specific software architectures
for reuse. The 4+1 View Model is an
approach undergoing development, in
parallel with the Unified Process.
All of the above can be described
as innovative software architecture
approaches. They are being applied
in practice, based upon various levels
of proven experience. Academic research
in software architecture is defining
a baseline for architecture knowledge
that resembles a lowest common denominator
of the above approaches. Fortunately,
the academic community has legitimized
the role of the software architect,
regardless of whether their guidance
is useful to innovative architects.
In our opinion, software architects
should have a working knowledge of the
innovative approaches, described above.
In addition, architects should utilize
one of the product-quality architecture
frameworks in daily practice. Component
architecture development is a challenging
area, requiring the best of stable conceptual
frameworks supporting sound architectural
judgment.
The Architecture Paradigm Shift
The nature of information system is
changing from localized departmental
application to large scale global and
dynamic systems. This trend is following
the change in business environments
towards globalization. The migration
from relatively static and local environments
to highly dynamic information technology
environments presents substantial challenges
to the software architect.
A majority of information technology
approaches are based upon a set of traditional
assumptions. In these assumptions the
system comprises a homogeneous set of
hardware and software which is known
at design time. A configuration is relatively
stable and is managed from a centralized
system management configuration. Communications
in traditional systems are relatively
predictable, synchronous and local.
If the state of the system is well known
at all times and the concept of time
is unified across all the activities,
another key assumption is that failures
in the system are relatively infrequent
and when failures do occur they are
monolithic. In other words, either the
system is up or the system is down.
When building distributed application
systems, most of the assumption are
reversed. In a distributed multi-organizational
system, it is fair to assume that the
hardware and software configuration
is heterogeneous. The configuration
is heterogeneous because different elements
of the system are purchased at different
time frames by different organizations
and many of the decisions were made
independently. Therefore you have a
variety of information technology in
a typical configuration. It is also
the case that hardware and software
configurations are evolving. Within
any organization there is turnover in
employees and evolution of business
processes. The architecture of the organization
impacts the architecture of the information
technology. As time progresses new systems
are installed, systems are moved, new
software is acquired, and so on. When
multiple organizations are involved,
these processes proceed relatively independently
and the architect must accommodate its
diverse evolving set of configurations.
In distributed systems, the assumption
is that there is remote processing at
multiple locations. Some of this remote
processing is on systems that were developed
independently and therefore have their
own autonomous concept of control flow.
This reverses the assumption of localized
and unified processing resources. In
distributed systems, there are some
interesting implications for the concepts
of stake and time. The stake of a distributed
system is often distributed itself.
The stake information may need to be
replicated in order to provide efficient
reliable access at multiple locations.
It is possible for the distributed stake
to become non-uniform in order to get
into error conditions where the replicated
stake does not have the desired integrity
and must be repaired.
The concept of time distributed systems
is effected by the physics of relativity
and chaos theory. Electrons are traveling
near the speed of light in distributed
communication systems. In any large
system there is a disparity between
the local concepts of time in that this
system can only have an accurate representation
of partial ordering of operations in
the distributed environment. The total
ordering of operations is not possible
because of the time speed and distances
between information process. In addition,
distributed communications can get quite
variable and complex. In a distributed
system there are various qualities of
service which communications systems
can provide. The communications can
vary by timeliness of delivery, the
through put, the levels of security
and vulnerability to attack, the reliability
of communications and other factors.
The communications architecture must
be explicit designed and planned in
order to account for the variability's
in services.
Finally, the distributed system has
a unique model of failure modes. In
any large distributed system there
are components failing all the time.
Messages are corrupted and lost processes
crash and systems fail. The kinds
of failures happen frequently and
the system must be architected to
accommodate for these error conditions.
In summary distributed processing
changes virtually of the traditional
system assumptions that are the basis
for most software engineering methodologies,
programming languages and notations.
What is needed to accommodate this
new level of system complexity are
three things. The first need for architects
is the ability to separate complex
concerns in particular it is important
to be able to separate the concerns
about business application functionality
from concerns about distributed system
complexity. Distributed computing
is a challenging and complex architectural
environment unto itself. If systems
are built with traditional assumptions,
the architects and developers are
likely to spend most of their time
combating the distributed nature of
real world applications. Problems
and challenges of distributed computing
have nothing to do fundamentally with
the business application functionality.
|