Software Architecture and the UML
Grady Booch
Architecting a dog house
Can be built by one person Requires Minimal modeling Simple process Simple tools
Architecting a house
Built most efficiently and timely by a team Requires Modeling Well-defined process Power tools
Architecting a high rise
Early architecture
Progress
- Limited knowledge of theory
Modern architecture
Progress
- Advances in materials - Advances in analysis
Scale
- 5 times the span of the Pantheon - 3 times the height of Cheops
Modeling a house
Movements in civil architecture
Bronze age/Egyptian (Imhotep) Grecian/Roman (Vitruvius)
Progress
- Imitation of previous efforts - Learning from failure - Integration of other forces - Experimentation
Byzantine/Romanesque
Gothic Baroque
Mannerism (Michelangelo, Palladio) Engineering/Rational/National/Romantic
Art noveau
Modern movement (Wright, LeCorbusier)
Kinds of civil architecture
Community
Neufert Architects Data The Handbook of Building Types
- houses, flats and apartments, gardens, education, hospitals, religion
Commerce
- shops and stores, restaurants, hotels, office buildings, banks, airports
Industry
- industrial buildings, laboratories, farm buildings
Leisure
- sport, theaters and cinemas, museums
Forces in civil architecture
Load
Kinds of loads
- Dead loads - Live loads - Dynamic loads
Compression
Tension
Avoiding failure
- Safety factors - Redundancy - Equilibrium
Load
Any time you depart from established practice, make ten times the effort, ten times the investigation. Especially on a very large project.
- LeMessuier
Brand, How Buildings Learn
Shearing layers of change
Space plan Services
Stuff
Structure Skin Site
Walker Royce
Dimensions of software complexity
Higher technical complexity
- Embedded, real-time, distributed, fault-tolerant - Custom, unprecedented, architecture reengineering - High performance
An average software project: - 5-10 people - 10-15 month duration - 3-5 external interfaces - Some unknowns & risks Defense Weapon System National Air Traffic Control System
Telecom Switch Commercial Embedded Compiler Automotive Software CASE Tool
Lower management complexity
- Small scale - Informal - Single stakeholder - Products
Large-Scale Organization/Entity Simulation
Small Scientific Simulation IS Application Distributed Objects (Order Entry)
Higher management complexity
- Large scale - Contractual - Many stake holders - Projects
Enterprise IS (Family of IS Applications)
Defense MIS System
IS Application GUI/RDB (Order Entry)
Business Spreadsheet
Lower technical complexity
- Mostly 4GL, or component-based - Application reengineering - Interactive performance
Forces in Software
Functionality Cost Capacity Availability Compatibility Fail safe Fault tolerance
Performance Technology churn
Throughput Resilience
The challenge over the next 20 years will not be speed or cost or performance; it will be a question of complexity.
Bill Raduchel, Chief Strategy Officer, Sun Microsystems
Our enemy is complexity, and its our goal to kill it.
Jan Baan
Wojtek Kozaczynski
The domain of architecting
The what
Architecture Qualities Architecture Satisfies
The why
System Features S/W Requirements System Quality Attributes Technology Follows Defines
Architecture Representation
Constrain
The who
Produces
The how
Architect Skills Stakeholders
Process
Defines role
Organization
Philippe Kruchten
We all know that ...
Architecture and design are the same thing Architecture and infrastructure are the same thing <my favorite technology> is the architecture A good architecture is the work of a single architect Architecture is flat, one blueprint is enough
Architecture is just structure
System architecture precedes software architecture Architecture cannot be measured and validated Architecture is a Science Architecture is an Art
Merriam Websters Collegiate Dictionary 10th edition
Architecture defined (again)
Architecture n (1555) 1: the art of science of building, specifically, the art or practice of designing and building structures and esp. habitable ones 2 a: formation or construction as or as if as the result of conscious act <the ~ of the garden> b: a unifying or coherent form or structure <the novel lacks ~>
Architecture defined (yet again)
Mary Shaw, CMU Grady Booch, Philippe Kruchten, Rich Reitman Kurt Bittner, Rational
Software architecture encompasses the set of significant decisions about the organization of a software system
- selection of the structural elements and their interfaces by which a system is composed - behavior as specified in collaborations among those elements - composition of these structural and behavioral elements into larger subsystem - architectural style that guides this organization
Architecture defined (continued)
Software architecture also involves
usage functionality performance resilience reuse comprehensibility economic and technology constraints and tradeoffs - aesthetic concerns
Mary Shaw, CMU Grady Booch, Philippe Kruchten, Rich Reitman Kurt Bittner, Rational
Mary Shaw, CMU
Architectural style
An architecture style defines a family of systems in terms of a pattern of structural organization. An architectural style defines
- a vocabulary of components and connector types - a set of constraints on how they can be combined - one or more semantic models that specify how a systems overall properties can be determined from the properties of its parts
Architecture metamodel
Softw are Architecture is part of System arch itectu re is repre sente d by Architecture De sign Proces s Softw are Architecture De scription is made of relate s to Architecture Style guide ha s Arch itectu ra l style Architectural v iew is made of ha s constra ins is a produces Logical v ie w Proce ss v iew Implementation v ie w De ployme nt v iew Us e c ase v iew Softw are Architects are actors in
ha s
is a Architectural Pa ttern
Form
Connec tion
de picts
Compone nt sa tisfies constra ins Re quire ments
Constra ints
Architectural Blueprint
Models
Models are the language of designer, in many disciplines
Models are representations of the system to-be-built or as-built
Models are vehicle for communications with various stakeholders Visual models, blueprints Scale Models allow reasoning about some characteristic of the real system
Many stakeholders, many views
Architecture is many things to many different interested parties
end-user customer project manager system engineer developer architect maintainer other developers
Multidimensional reality
Multiple stakeholders
multiple views, multiple blueprints
Architectural view
An architectural view is a simplified description (an abstraction) of a system from a particular perspective or vantage point, covering particular concerns, and omitting entities that are not relevant to this perspective
Architecturally significant elements
Not all design is architecture Main business classes
Important mechanisms
Processors and processes Layers and subsystems Architectural views = slices through models
Characteristics of a Good Architecture
Resilient Simple Approachable Clear separation of concerns
Balanced distribution of responsibilities
Balances economic and technology constraints
Representing System Architecture
Logical View
End-user Functionality
Implementation View
Programmers Software management
Use Case View Process View
System integrators Performance Scalability Throughput
Deployment View
System engineering System topology Delivery, installation Communication
Conceptual
Physical
Relation Between Views
Logical view Component view
Process view
Deployment view
How many views?
Simplified models to fit the context Not all systems require all views:
- Single processor: drop deployment view - Single process: drop process view - Very Small program: drop implementation view
Adding views:
- Data view, security view
The Value of the UML
Is an open standard Supports the entire software development lifecycle Supports diverse applications areas
Is based on experience and needs of the user community
Supported by many tools
Creating the UML
UML 1.3
OMG Acceptance, Nov 1997
Final submission to OMG, Sep 97 public feedback First submission to OMG, Jan 97
UML 1.1 UML 1.0 UML 0.9
UML partners
Web - June 96
OOPSLA 95
Unified Method 0.8
Other methods
Booch method
OMT
OOSE
UML Partners
Rational Software Corporation Hewlett-Packard I-Logix
IBM
ICON Computing Intellicorp MCI Systemhouse Microsoft ObjecTime Oracle
Platinum Technology
Taskon Texas Instruments/Sterling Software Unisys
Contributions to the UML
Meyer
Before and after conditions
Harel
Statecharts
Gamma, et al
Frameworks and patterns,
Booch
Booch method
HP Fusion
Operation descriptions and message numbering
Rumbaugh
OMT
Embley
Singleton classes and high-level view
Jacobson
OOSE
Wirfs-Brock
Responsibilities
Shlaer - Mellor
Object lifecycles
Odell
Classification
Overview of the UML
The UML is a language for
visualizing specifying constructing documenting
the artifacts of a software-intensive system
Overview of the UML
Modeling elements Relationships Extensibility Mechanisms Diagrams
Modeling Elements
Structural elements
- class, interface, collaboration, use case, active class, component, node
Behavioral elements
- interaction, state machine
Grouping elements
- package, subsystem
Other elements
- note
Relationships
Dependency Association Generalization Realization
Extensibility Mechanisms
Stereotype Tagged value
Constraint
Models, Views, and Diagrams
A model is a complete description of a system from a particular perspective
Use Case Use Case Diagrams Sequence Diagrams Diagrams Use Case Use Case Diagrams Use Case Diagrams Diagrams State State Diagrams Class Diagrams Diagrams
State State Diagrams Object Diagrams Diagrams
Scenario Scenario Diagrams Collaboration Diagrams Diagrams
Models
State State Diagrams Component Diagrams Diagrams
Scenario Scenario Diagrams Statechart Diagrams Diagrams
Component Component Diagrams Deployment Diagrams
Activity Diagrams
Diagrams
Diagrams
A diagram is a view into a model
- Presented from the aspect of a particular stakeholder - Provides a partial representation of the system - Is semantically consistent with other views
In the UML, there are nine standard diagrams
- Static views: use case, class, object, component, deployment - Dynamic views: sequence, collaboration, statechart, activity
Use Case Diagram
Captures system functionality as seen by users
Use Case Diagram
Captures system functionality as seen by users
Built in early stages of development
Purpose
Specify the context of a system Capture the requirements of a system Validate a systems architecture Drive implementation and generate test cases
Developed by analysts and domain experts
Class Diagram
Captures the vocabulary of a system
Class Diagram
Captures the vocabulary of a system Built and refined throughout development Purpose
- Name and model concepts in the system - Specify collaborations - Specify logical database schemas
Developed by analysts, designers, and implementers
Object Diagram
Captures instances and links
Object Diagram
Shows instances and links Built during analysis and design Purpose
- Illustrate data/object structures - Specify snapshots
Developed by analysts, designers, and implementers
Component Diagram
Captures the physical structure of the implementation
Component Diagram
Captures the physical structure of the implementation
Built as part of architectural specification
Purpose
- Organize source code - Construct an executable release - Specify a physical database
Developed by architects and programmers
Deployment Diagram
Captures the topology of a systems hardware
Deployment Diagram
Captures the topology of a systems hardware
Built as part of architectural specification
Purpose
- Specify the distribution of components - Identify performance bottlenecks
Developed by architects, networking engineers, and system engineers
Sequence Diagram
Captures dynamic behavior (time-oriented)
Sequence Diagram
Captures dynamic behavior (time-oriented) Purpose
- Model flow of control - Illustrate typical scenarios
Collaboration Diagram
Captures dynamic behavior (messageoriented)
Collaboration Diagram
Captures dynamic behavior (messageoriented)
Purpose
- Model flow of control - Illustrate coordination of object structure and control
Statechart Diagram
Captures dynamic behavior (eventoriented)
Statechart Diagram
Captures dynamic behavior (eventoriented)
Purpose
- Model object lifecycle - Model reactive objects (user interfaces, devices, etc.)
Activity Diagram
Captures dynamic behavior (activity-oriented)
Activity Diagram
Captures dynamic behavior (activity-oriented) Purpose
- Model business workflows - Model operations
Architecture and the UML
Design View
Classes, interfaces, collaborations
Implementation View
Use cases
Components
Use Case View Process View Deployment View
Active classes
Nodes
Organization Package, subsystem
Dynamics Interaction State machine
Software engineering process
A set of partially ordered steps intended to reach a goal. In software engineering the goal is to build a software product or to enhance an existing one.
Architectural process
- Sequence of activities that lead to the production of architectural artifacts:
A software architecture description An architectural prototype
Rational Unified Process
Iterative Architecture-centric Use-case driven Risk confronting
Focus over time
Discovery Invention Implementation
Focus
Key concepts
Phase, Iterations Process Workflows
- Activity, steps
When does architecture happen?
What does happen?
Artifacts
- models - reports, documents
What is produced?
Worker: Architect
Who does it?
Lifecycle Phases
Inception Elaboration Construction Transition
time
Inception
Define the scope of the project and develop business case
Elaboration
Construction Transition
Plan project, specify features, and baseline the architecture
Build the product Transition the product to its users
Major Milestones
Inception Elaboration Construction Transition
time
Vision
Baseline Architecture
Initial Capability
Product Release
Phases and Iterations
Inception Elaboration Construction Transition
Prelim Iteration
...
Arch Iteration
...
Dev Iteration
Dev Iteration
...
Trans Iteration
...
Release
Release
Release
Release
Release
Release
Release
Release
An iteration is a sequence of activities with an established plan and evaluation criteria, resulting in an executable release
Architecture-Centric
Models are vehicles for visualizing, specifying, constructing, and documenting architecture
The Unified Process prescribes the successive refinement of an executable architecture
Inception
time
Elaboration
Construction
Transition
Architecture
Unified Process structure
Phases Process Workflows
Business Modeling Requirements Analysis & Design Implementation Test Deployment
Inception Elaboration Construction Transition
Supporting Workflows
Configuration Mgmt Management Environment
Preliminary Iteration(s) Iter. #1 Iter. #2 Iter. #n Iter. Iter. #n+1 #n+2 Iter. #m Iter. #m+1
Iterations
Architecture and Iterations
Use case Model
Design Model
Implementation Model
Deployment Model
Test Model
Content
Architectural design
Identify, select, and validate architecturally significant elements
Not everything is architecture
Main business classes Important mechanisms Processors and processes Layers and subsystems Interfaces
Produce a Software Architecture Documen
Architectural design workflow
Select scenarios: criticality and risk Identify main classes and their responsibility Distribute behavior on classes Structure in subsystems, layers, define interfaces Implement architectural prototype Derive tests from use cases Evaluate architecture
Iterate
Implementation view Deployment view Process view Use case view
Logical view
Define distribution and concurrency
Sources of architecture
Method Theft Intuition Theft
Method Intuition
Classical system
Unprecedented system
Patterns
A pattern is a solution to a problem in a context
A pattern codifies specific knowledge collected from experience in a domain
All well-structured systems are full of patterns
- Idioms - Design patterns - Architectural patterns
daVinci
Mechanisms
Screws Keys Rivets Brakes Pipes Valves
Bearings
Pins, axles, shafts Couplings Ropes, belts, and chains Friction wheels Toothed wheels Flywheels
Springs
Cranks and rods Cams Pulleys Engaging gears
Levers and connecting rods
Click wheels and gears Ratchets
Design Patterns Gamma et al
Design patterns
Creational patterns
- Abstract factory - Prototype
Structural patterns
- Adapter - Bridge - Proxy
Behavioral patterns
- Chain of responsibility - Mediator - Visitor
Mechanisms are the soul of an architecture
Modeling a design pattern
Modeling a design pattern (cont.)
Modeling a design pattern (cont.)
Architectural patterns
Distributed Event-driven
Software Architecture Shaw and Garlan Buschmann et al A System of Patterns Buschman et al Booch
Layered MVC
Frame-based
Batch Pipes and filters Repository-centric Blackboard
IR-centric
Subsumption Disposable
Interpreter
Rule-based
Real-Life Object-oriented Systems Soren Lauesen
Complex business system
Logical application architecture
Graphical User Interface
Graphical User Interface Business Object Model
Graphical User Interface Business Object Model
Relational Database
Relational Database
Relational Database
Physical application architecture
Thinner client, thicker server
Client A
Application Business Object Services Business Object Engine
Client B
Application DCOM CORBA Beans ADO/R
Client C
WWW Browser
COM Business Object Server MTS
Beans ETS
Web HTML Server CGI
ASP
Java
Business Object Services Business Object Engine
Business Object Services Business Object Engine
Relational Database Server(s)
The Second Wave Paul Dreyfus, Netscape
Complex Internet system
Client Dynamic HTML, JavaScript, Java plug-ins, source code enhancements
Server
Java, C, C++, JavaScript, CGI
Application Server
Java, C, C++, JavaBeans, CORBA, DCOM
Fulfillment System
Financial System
Inventory System
RDBMS Server
Native languages
Who are the architects?
Experience
- software development - domain
Pro-active, goal oriented Leadership, authority Architecture team
- balance
Architect
Not just a top level designer
Need to ensure feasibility
Not the project manager
But joined at the hip
Not a technology expert
Purpose of the system, fit,
Not a lone scientist
Communicator
Software architecture team charter
Defining the architecture of the software Maintaining the architectural integrity of the software Assessing technical risks related to the software design Proposing the order and contents of the successive iterations Consulting services Assisting marketing for future product definition Facilitating communications between project teams
Architecture is making decisions
The life of a software architect is a long (and sometimes painful) succession of suboptimal decisions made partly in the dark.
Futures
ADL: Architecture Description Languages
- UML, UniCon, LILEAnna, P++, LEAP, Wright, Rapid
Standardization of concepts
- IEEE Working Group on Architecture - INCOSE Working Group on System Architecture
Systematic capture of architectural patterns
References (Architecture)
Len Bass, Paul Clements & Rick Kazman, Software Architecture in Practice, Addison-Wesley, 1998. Frank Buschmann, Rgine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stahl, Pattern-Oriented Software Architecture - A System of Patterns, Wiley and Sons, 1996. Christine Hofmeister, Robert Nord, Dilip Soni, Applied Software Architecture, Addison-Wesley 1999. Eric Gamma, John Vlissides, Richard Helm, Ralph Johnson, Design Patterns, Addison-Wesley 1995. Philippe Kruchten, The 4+1 View Model of Architecture, IEEE Software, 12 (6), November 1995, IEEE.
http://www.rational.com/support/techpapers/ieee/
Eberhardt Rechtin, Systems Architecting: Creating and Building Complex Systems, Englewood Cliffs NJ, Prentice-Hall, 1991.
References (Architecture)
Eberhardt Rechtin & Mark Maier, The Art of System Architecting, CRC Press, 1997.
Recommended Practice for Architectural Description, Draft 2.0 of IEEE P1471, May 1998
http://www.pithecanthropus.com/~awg/
Mary Shaw, and David Garlan, Software Architecture Perspectives on an Emerging Discipline, Upper Saddle River, NJ, Prentice-Hall, 1996. Bernard I. Witt, F. Terry Baker, and Everett W. Merritt, Software Architecture and DesignPrinciples, Models, and Methods, New York NY, Van Nostrand Reinhold, 1995. The World-wide Institute of Software Architects
http://www.wwisa.org
References (UML)
Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language User Guide, Addison-Wesley, 1999.
References (Process)
Barry Boehm, A spiral model of software development and enhancement, IEEE Computer, May 1998. Barry Boehm, Anchoring the software process, IEEE Software, July 1996. Grady Booch, Object Solutions, Addison-Wesley, 1995. Philippe Kruchten, A Rational Development Process, CrossTalk, July 1996.
http://www.rational.com/support/techpapers/devprcs/
Philippe Kruchten, The Rational Unified Process - An Introduction, Addison-Wesley, 1999. Rational Unified Process 5.0, Rational, Cupertino, CA, 1998
Walker Royce, Software Project Management: a Unified Framework, Addison-Wesley, 1998
The Software Program Managers Network
http://www.spmn.com