Notice: These are notes to myself. Accuracy is to the best of my knowledge. References are at the bottom of the page.
________________________________________________________________________
Selected Architecture definitions
________________________________________________________________________
Views – high level abstraction modeling.
Dynamic architecture – uses metadata change and resource management
Reference Models/Reference Architectures- system engineering model or business group models used to document a product line or domain.
Component Architecture- application and data separation
OO Architecture – utilizing OO technologies with emphasis on encapsulation and interfaces.
Layered Architecture- exactly what the name implies, most common architecture.
Enterprise Architecture – defines the roadmap and how the various models at different levels of the enterprise are related. Typically the business domain. Architecture that is used across a business/enterprise.
________________________________________________________________________
Architecture Frameworks – only
some support enterprise modeling
________________________________________________________________________
Zachman Framework [Zachman 1997] – IBM research, non-OO. This is a reference model comprising 36 architectural viewpoints. You pick the viewpoints on a per project basis.
DODAF (DoD Architecture Framework) – US DoD framework used to support war-fighting operations, business operations, and processes.
TOGAF (The Open Group Architecture Framework) – I believe this is the commerical world’s answer to design, evaluation, and building of architectures for enterprises. It uses the architecture development method (ADM).
Open Distributed Processing (ODP) [ISO 1996] – five viewpoint reference model (enterprise, information, computation, engineering, and technology). It supports OO architecture and component based architectures.
ISO Standards from ODP:
OSI – Open Systems Interconnection seven layer reference model for network
apps.
RM-ODP – ISO’s reference model for open distributed processing. There are five viewpoints. This model uses OO. Separation of concerns that divide the
business and logical functionality of the system from the distributed computing
and commerical technology decisions of the architecture. Used heavily in
Telcom industry.
Enterprise – managers and end users view
Information – database modeler view
Computational – application dev. engineer view, CORBA IDL
Engineering – operating system engineer view
Technology – network engineer works view
Four documents describe RM-ODP
X.901 – Overview
X.902 – Foundations
X.903 – Architecture
X.904 – Archtectural Semantics
Domain Analysis [Rogers 1997] – Transforms project specific requirements into more general domain requirements for families of systems. I believe this is the traditional approach to software.
IBM Rational’s 4+1 View Model [Kruchten 1995] – this is the unified process which has 4 viewpoints. Logical, implementation (component), process (runtime), and deployment. The 1 is the use cases. The RUP is your friend.
Use case view – one case per requirement. Scenerio is an instance of a use case.
Logical view – pkgs, classes, and relationships
Process view – control flows, concurrency.
Implementation view – similar to makefiles
Deployment view – links the app to the OS and use IDE debugger.
Note: Rose realtime and regular rose use the views differently because of the active objects school of thought.
FEAF – Federal Enterprise Architecture Framework. This is based on Zachman.
Level 1 – arch. drivers
Level 2 – business drivers and design drivers
Level 3 – use business, data, apps, and technology views
Level 4 – uses ZF and EAP
C4ISR Architecture Framework [1997] – specializes the Zachman Framework.
Command and Control, Computers, communications. Intelligence, Surveillance
and Reconnaissance. Use to communicate architectural plans thru common
viewpoints. Replaced by DODAF.
________________________________________________________________________
Design Patterns- more abstract
structures used in OO architectures
________________________________________________________________________
The Hillside group is a major contributor – http://hillside.net
A link to the pattern page:
http://hillside.net/patterns/patternslanguages.htm
Gamma Design Patterns (gang of 4) - Creational, Behavioral and Structural Patterns for
implementation level.
Buschmann Architecture Patterns – system level design patterns
CORBA Design Patterns – system level design patterns
Fowler Analysis Patterns – good for analysis
Java Design Patterns by Sun – for the Java developers.
MVC – model view controller which is as old as smalltalk.
Model – reusable component
View – how the data is show
Controller – processes for controlling the processing of the data
Java has a Type 1 and Type 2 MVC.
Struts is an Java Implementation of the MVC.
Interface – used everywhere in software architectures
…bookmark…other design patterns here.
________________________________________________________________________
Anti-Patterns : patterns in
software that are improved by refactoring and other means.
________________________________________________________________________
Stovepipe systems
Spaghetti code
Analysis Paralysis
References (plan to add continually to this collection):
[1] Malveau, Mowbray, “Software Architecture Bootcamp”, 2nd edition, Prentice Hall, 2004.
[2] Tang, Han, “A Comparative Analysis of Architecture Frameworks”, IEEE Computer Society, Asia-Pacific Software Engineering Conference, 2004.