Software architecture concerns itself with guiding construction of
software systems by breaking a large construction effortthe entire
software system to be builtinto a set of smaller projects. Each
individual should know what they are tasked with. Ideally, each individual
should also know where to go to get answers to virtually any question
they have concerning the system.
What
is Software Architecture?
Software architecture addresses this goal by systematically breaking a
software system into smaller pieces. Each piece's content is defined by
the rules governing its construction and the rules governing how it may
interact with other pieces. This organization of a large problem by breaking
it into a set of smaller problems can be expressed by four principals:
- The partitions
into which all of a system's components can be classified.
- For each partition, a set of rules that govern the design of that
partition.
- A set of rules that govern the interactions between partitions.
- A set of guidelines governing the methods, processes, and artifacts
used by the extended development team.
The first three principals specify constraints on the software (code)
itself. This enables the modular construction of software with a minimum
of interdependency between modules (pieces of software).
The fourth principal helps to bind a system's construction to those
who will use, benefit from, or otherwise own the system. At the same
time, these methods, processes, and artifacts should minimize the resources
needed to construct the system.
The partitions and rules that express an architecture provide each
member of a development team with a manageable description of construction
guidelines. Most developers will be concerned with a single partition
or two partitions that share an interface. By knowing the rules that
govern that partition (or those two partitions), including the rules
of interface to other partitions, the developer can determine who to
contact with any particular concern. But only if the software architecture
makes use of all four of these architectural principals.
UI
Architecture
UI architecture specifies the rules governing the architectural partition
for human-machine interface. Architecture need not involve a single
level of partitioning. User interface architecture provides a set of
partitions into which the human-machine interface's implementation can
be subdivided. UI architecture also provides the rules for the content
of these partitions (of the human-machine interface partition) as well
as the rules that govern the interaction of these partitions with each
other. Finally, user interface architecture provides the rules that
govern interaction of the human-machine interface partition with the
rest of the system architecture.
The ETP Architecture
Many user interface architectures are possible. The
ETP architecture discusses one user interface architecture, its
benefits, and how it is used to bind HCI methods to a system architecture.
©2002, 2003 John M. Artim