Availability Guide for Application Design
Designing Applications for Change
Availability Guide for Application Design—525637-004
10-6
Considering Portability Requirements
particularly at the more complex lower layers, is normally the task of specialized 
infrastructure subsystems that represent more compact porting challenges.
When implementing an application with a platform-specific version of a communication 
subsystem, the greatest possible portability problem arises from the semantics of 
asynchronous request mechanisms rather than the simple syntax of the API 
commands. The use of signaling, messaging, or input/output synchronization facilities 
specific to one environment for management of request availability or request 
completion might require substantial redesign for platforms where an alternative 
mechanism is needed. Therefore, direct access to the API should be localized in a 
subcomponent isolated from the application logic that processes the content of the 
received request.
Application Architecture
Application architecture must ensure the modularity of the application to maximize the 
maintainability and adaptability of the application’s functional logic and to fully exploit 
the architecture of the underlying platform. The architecture of an application has two 
dimensions:
•
Vertical
•
Horizontal
The vertical architecture refers to the internal layering of an executing unit. Because 
this is more closely related to engineering, it is considered in Application Engineering 
on page 10-10.
The horizontal dimension, the focus of this subsection, includes:
•
The execution units that can be distributed across the processing resources of the 
system
•
 The interprocess communication mechanisms by which the execution units 
synchronize
•
 The associated shared resource management that coordinates usage between 
concurrent executions of the application logic
The horizontal application architecture exploits the underlying platform architecture. It 
is therefore necessary to understand the basics of the major platform architectures and 
the requirements they place on developers.
Platform Architectures
There are three basic platform architectures:
•
Uniprocessor 
•
Symmetric multiprocessor
•
Clustered










