Application architectures

Diomidis Spinellis
Department of Management Science and Technology
Athens University of Economics and Business
Athens, Greece
dds@aueb.gr

Architectural Dimensions

Basic Design Principles

When designing a system's architecture we try to follow the principles outlined below.

Abstraction

Abstraction is achieved in the following areas:

Refinement

Stepwise refinement is a way to tame the details and complexity of the final design.

Modularity

A modular design minimises the system's complexity and thereby the development cost and the number of possible errors. A good design method should provide:

Cohesion

A design should bring closely together parts that exhibit a high measure of cohesion. We can distinguish the following ordered types of cohesion:
  1. coincidental cohesion
  2. logical cohesion
  3. temporal cohesion
  4. procedural cohesion
  5. communicational cohesion
  6. sequential cohesion
  7. functional cohesion

Coupling

On the other hand, a design should avoid coupling between parts. We can distinguish the following ordered types of coupling:
  1. data coupling
  2. stamp coupling (copy of a part)
  3. control coupling
  4. common coupling
  5. external coupling
  6. content coupling

A: System Structures

Important and noteworthy system structuring models include the following:

Centralized Repository

Examples

Data-Flow

Create Manual Page Index

Data flow diagram

Object-Oriented

A generalization relationship in the Tomcat servlet container

Generalization data flow diagram

Layered

The Windows NT implementation layers

Windows NT kernel structure

Hierarchies

Hierarchies

The NetBSD kernel source hierarchy

The NetBSD kernel source hierarchy

Control Models

Event-Driven Systems

System Manager

State Transition

TCP state transition diagram

TCP state transition diagram

B: Element Packaging Approaches

Elements can be packaged using the following approaches:

Module

Namespace

Object

Generic Implementation

Abstract Data Type

Examples

Library

Component

Process

Data Repository

C: Architectural Reuse

Reusing architectural designs is often more important than reusing code. Some commonly-used approaches are:

Framework

Code Wizard

Design Patterns

"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice."
- Christopher Alexander

Domain-Specific and Reference Architectures

D: Web Services Architecture

Web Service

Service oriented architecture

Web Services Architecture

Roles of Humans and Machines

Machines and humans interacting in WSA

Web Service Technologies

Technologies in the WSA stack

WSA Models

WSA model relationships

Message Oriented Model

ER diagram of the WSA Message Oriented Model

Important Definitions

Service Oriented Model

ER diagram of the WSA Service Oriented Model

Important Definitions

Resource Oriented Model

ER diagram of the WSA Resource Oriented Model

Important Definitions

Policy Model

ER diagram of the WSA Policy Model

Important Definitions

Management Model

ER diagram of the WSA Management Model

Important Definitions

Bibliography