Notes
Outline
Software Architecture – Definitions, Roles, and Analogies
John D. McGregor
Clemson University
Definition from SAP
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
ANSI/IEEE Std 1471-2000
the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
Building Architecture Analogy
Similarities
   Sense of aesthetics is present in both
Differences
   Physical laws don’t apply
   Software architecture still immature
Leonardo da Vinci – a basic principle
Leonardo da Vinci - observation
Leonardo da Vinci
At last a genuine Leonardo
FallingWater
Christopher Alexander
Grands Magasins du Bon Marche
Quality without a name
Realization hierarchy
Where do I start?
J2EE v. 1.4 architecture
Architecture as a blender of technologies
Block diagram
4+1 Views - Krutchen
Tactics – decomposition - 1
Tactics – decomposition - 2
Tactics – decomposition - 3
Reasoning - Latency attribute
Reasoning – statistical model
Architecture and People
Stakeholder – anyone having an interest in the architecture
Client
User
Designers
…
Influences on the architecture
Stakeholders
Developing Organization
Technical/Deployment environment
Background of architects
Architecture process
Understand the requirements
Create architectures that satisfy the requirements
Evaluate the trade-offs among the architectures
Select appropriate architecture
Repeat as requirements evolve
Architectural pattern
description of element and relation types and a set of constraints
Architectural style
Client/server – implies multiple clients seeking service from a resource
Reference model
Characteristic of the domain – in this case ecommerce
Reference architecture
Why architecture?
Communication among stakeholders
Early design decisions
Transferable abstraction of the system
Architectural Structures
Module structures
Which piece is responsible for what
Component-connector structures
how do the major pieces interact at runtime
Allocation structures
allocates pieces of the architecture to pieces of the external environment
Module structures
Layered example – OSI Protocol Stack
Component/Connector structures
Common Object Request Broker
Allocation structures
Thread architecture
Eclipse environment
Eclipse requirements
Edit multiple files
Select files
Bind files into a project
Build a project
See the individual attributes