Page 86 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 86
Principles of Software Engineering
Notes
Prepare an architectural document for software.
4.4 Architecture Styles
An architectural style, sometimes called an architectural pattern, is a set of values a coarse
grained pattern that provides an abstract structure for a family of systems. An architectural
style improves partitioning and promotes design use again by providing solutions to frequently
recurring problems. You can believe of architecture styles and patterns as sets of principles that
shape an application. Garlan and Shaw define an architectural style as:
Family of systems in terms of a pattern of structural organization. More specifically, an architectural
style determines the vocabulary of components and connectors that can be used in instances of
that style, together with a set of constraints on how they can be combined. These can include
topological constraints on architectural descriptions (e.g., no cycles). Other constraints say, having
to do with execution semantics might also be part of the style definition.
An understanding of architectural styles provides several benefits. The most important benefit is that
they provide a common language. They also provide opportunities for conversations that are
technology agnostic. This facilitates a higher level of conversation that is inclusive of patterns and
principles, without getting into specifics. For example, by using architecture styles, you can talk
about client/server versus n-tier. Architectural styles can be organized by their key focus area.
The following Table 4.3 lists the major areas of focus and the corresponding architectural styles.
Table 4.3: Major Areas of Focus and the Corresponding
Architectural Styles
Category Architecture styles
Communication Service-Oriented Architecture (SOA), Message Bus
Deployment Client/Server, N-Tier, 3-Tier
Domain Domain Driven Design
Component-Based, Object-Oriented, Layered
Structure
Architecture
4.4.1 Client/Server Architectural Style
The client-server architectural (CSA) style is most common in enterprise systems, and is also
applied for integrating edge and enterprise systems. A “service” a discretely scoped business or
technical functionality, and is offered by a “service provider” or server to “service requestors” or
clients. Operationally, a service is defined by messages exchanged between clients and servers.
This architectural style can be viewed as a special case of the generic data oriented integration
architecture, as shown in Figure 4.5.
The request and responses are correlated with a client specific “correlation_id” field in the data
model. The QoS and are chosen to achieve the desired flow characteristics. For request and
reply topics, QoS are chosen to deliver all the data samples in the order they happened. Content
filtering is used on the response topic to receive only the responses intended for the requestor.
It is interesting and ironic to note that despite the hype, the vast majority of the implementations
of SOA rely on tightly-coupled technologies and design principles, resulting in tightly-coupled
SOA software. This runs counter to the promise of SOA, and can prove detrimental to its success
80 LOVELY PROFESSIONAL UNIVERSITY