Professional Documents
Culture Documents
FrankBuschmann SevenSecretsEveryArchitectShouldKnow PDF
FrankBuschmann SevenSecretsEveryArchitectShouldKnow PDF
Seven Secrets
Every Architect Should Know
Frank Buschmann
Siemens AG, Corporate Technology
Page 1 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
A challenging question!
Observation
Many architects have a sound knowledge in software engineering methods
and concrete design and programming technologies, both broad and deep
Yet time and again architectures and their realizations suffer from insufficient
quality, regarding modularization, interactions, or non-functional quality
Page 2 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Agenda
Be Minimalist
Page 3 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Secret One
Page 4 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
EAI
(SAP )
OPC SNMP Plant UI
Alarm
Client
Network
View
Diagnostic
Client
The two key questions are:
Northbound Gateway (s)
Communication Framework
Application Services
Common Services
Security
How well does it support
operators in their daily work?
License
Information Repository Archiving Services Operational and
Maintenance System
Configuration Common Trend Alarm Availability
Services Mgmt
& Activation Nam e Logging Logging
Color Time
Service
Application
Clients
Communication
Framework
developers in its use, realization,
test, maintenance and evolution?
Entities (Field
Service Category Devices , Network Communication
Elements )
Page 5 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Task-oriented design
Walking skeletons
User Sys Fault Logon Find User Web Portal Contact List Basic Comm.
interface Mgmt UI Mgmt UI Web UI Web UI Framework Web UI Web UI
Business Presence
logic Aggregator
Authenticatio
Common Authorization n and Domain Presence Buddy List Call Control
service Policy Engine Privilege Service Service Management and Media Service
Service
Client
System Fault Persistence
Infrastructure Event Push
Management Management Framework Service
Secret Two
Be Minimalist
Page 8 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
On minimalism
Page 9 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Maximalism
interface Iterator
{
boolean set_to_first_element();
boolean set_to_next_element();
boolean set_to_next_nth_element(in unsigned long n) raises(…);
boolean retrieve_element(out any element) raises(…);
boolean retrieve_element_set_to_next(out any element, out boolean more) raises(…);
boolean retrieve_next_n_elements
(in unsigned long n, out AnySequence result, out boolean more) raises(…);
boolean not_equal_retrieve_element_set_to_next(in Iterator test, out any element) raises(…);
void remove_element() raises(…);
boolean remove_element_set_to_next() raises(…);
boolean remove_next_n_elements(in unsigned long n, out unsigned long actual_number) raises(…);
boolean not_equal_remove_element_set_to_next(in Iterator test) raises(…);
void replace_element(in any element) raises(…);
boolean replace_element_set_to_next(in any element) raises(…);
boolean replace_next_n_elements
(in AnySequence elements, out unsigned long actual_number) raises(…);
boolean not_equal_replace_element_set_to_next(in Iterator test, in any element) raises(…);
boolean add_element_set_iterator(in any element) raises(…);
boolean add_n_elements_set_iterator
(in AnySequence elements, out unsigned long actual_number) raises(…);
void invalidate();
boolean is_valid();
boolean is_in_between();
boolean is_for(in Collection collector);
boolean is_const();
boolean is_equal(in Iterator test) raises(…);
Iterator clone();
void assign(in Iterator from_where) raises(…);
void destroy();
};
Page 10 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Minimalism
interface BindingIterator
{
boolean next_one(out Binding result);
boolean next_n(in unsigned long how_many, out BindingList result);
void destroy();
};
Page 11 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Secret Three
Page 12 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Information hiding
string
int
What are the implied application concepts
behind string and int?
What is their intended usage contract?
How can we ensure intention and contract are
visible and enforced?
Page 13 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
*Source: http://moscova.inria.fr/~levy/talks/10enslongo/enslongo.pdf
Page 14 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
For example …
Strings for keys and codes become types in their own right, for example
ISBNs, SQL statements, URLs
Recurring value groupings become whole objects, for example date,
address, access rights
Date ISBN
Page 15 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Expressive architecture
Pick SetPoint
Expressive designs are easier to Workpiece Calculation
understand, communicate, realize,
test, and review A (simplified) design for a telegram handler
in a factory automation system
Page 16 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Secret Four
Page 17 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
The most interesting thing is not actually the choice between A and B, but
the fact that there is a choice between A and B [Kevlin Henney]
Secret Five
Page 20 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
The architect’s main territory is between things, where they meet and
hurt: Interfaces, Interactions, Integration.
Complete, meaningful
Interfaces Role-specific, expressive, usable
Defined contract, stability
Secret Six
Page 23 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Page 24 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
85% of SW Lifecycle
costs are devoted to
maintenance
and evolution
Developers spend
50% of their time
in the process of
understanding code
Page 25 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Page 26 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
Secret Seven
Page 27 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
9 8
Business Logic Data Logic
Interceptors
Problem
Were not closed but
General data handling
called back “normal”
logic, e.g., copy, move,
application logic
needs application-
Application logic issued
specific extensions
nested calls to data logic
Solution
Effect
Interceptor framework in
Oscillating control flow
data handling logic;
between business logic
Self-contained
and data logic
interceptors provide local
Circular, uncontrollable,
extension logic
unstable call chains
Page 28 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
In Retrospect
Page 30 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
In retrospect
Communication to stakeholders
Key measures: explicit attention to their interests, making interests visible
and tangible, e.g., through walking skeletons or attention to uncertainty
Economic architecture
Key measure: strict adherence to KISS principle
Understanding that code matters
Key measure: explicit consideration of developer needs, early coding,
presence and participation in coding
Seek for feedback
Key measure: visibility and explicit attention to challenges, both known
and unknown
Page 31 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved
THE CRAFT OF SOFTWARE ARCHITECTURE
A departing thought
Page 32 The Craft of Software Architecture – Seven Secrets Every Architect Should Know © Frank Buschmann, all rights reserved