Professional Documents
Culture Documents
FrankBuschmann SevenSecretsEveryArchitectShouldKnow - pdf-805789816 PDF
FrankBuschmann SevenSecretsEveryArchitectShouldKnow - pdf-805789816 PDF
FrankBuschmann SevenSecretsEveryArchitectShouldKnow - pdf-805789816 PDF
ARCHITECTURE
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
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
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Page 3
Be Minimalist
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Secret One
Page 4
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
OPC
Northbound Gateway
SNMP
Alarm
Client
Plant UI
Network
View
Diagnostic
Client
(s)
Communication Framework
Application Services
Information Repository
Configuration
& Activation
Archiving Services
Common
Nam e
Managed
Object
Report
Southbound Gateway
OPC
Operational and
Maintenance
Services
Alarm
Logging
Monitor &
Control
Audit Trail
Miscellaneous
Services
BACnet
Trend
Logging
Workflow
Common Services
License
Security
Availability
System
Mgmt
Tracing
Language
Color
Time
Alarm
Scripting
(s)
SNMP
Key
Service
Application
Clients
Communication
Framework
Service Category
Entities (Field
Devices , Network
Elements )
Communication
HLV
- 060608
- UB
. vsd
: NM
& CS
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Task-oriented design
Design software systems with explicit consideration of how they will be
used and how they can best support the work their users will be doing
[Larry Constantine]
Select essential user scenarios
Operational scenarios: user
tasks and workflows; including
their quality attributes
Developmental scenarios:
realization, adaptation, configuration, evolution,
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Walking skeletons
Goal of a task-driven architecture specification is to create a walking skeleton
A set of end-to-end slices through the system that correspond to architecturally
significant user tasks with users being end users and developers
Implemented in product quality: functionality with associated quality
User
interface
Prototype only
Assistant
Application
Application
Sys
Mgmt UI
Logon
Web UI
Fault
Mgmt UI
Find User
Web UI
Business
logic
Web Portal
Framework
Contact List
Web UI
Basic Comm.
Web UI
Buddy List
Management
Call Control
and Media Service
Presence
Aggregator
Common
service
Authorization
Policy Engine
Authenticatio
n and
Privilege
Service
Domain
Service
Infrastructure
System
Management
Fault
Management
Persistence
Framework
Runtime
environment
Database
Symphonia
Runtime Env.
SyMOM
Event Model
Messaging
Presence
Service
Client
Event Push
Service
Registr. Service /
Discovery
OEM Comp.
Container
(Servlet, Portlet,
Logging
EJB, OSGi)
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Secret Two
Be Minimalist
Page 8
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
On minimalism
The Craft of Software Architecture Seven Secrets Every Architect Should Know
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
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
ARCHITECTURE
Secret Three
Page 12
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Information hiding
string
int
Page 13
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Velocity was
represented as a 64 bit
float
A conversion into a 16
bit signed integer
caused an overflow
The current velocity of
Ariane 5 was too high
to be represented as a
16 bit integer
Error handling was
suppressed for
performance reasons
Damage 370 Mio. USD
*Source: http://moscova.inria.fr/~levy/talks/10enslongo/enslongo.pdf
Page 14
The Craft of Software Architecture Seven Secrets Every Architect Should Know
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
Page 15
ISBN
String isbn
String getDate()
Integer getDayInMonth()
Integer getMonth()
Integer getYear()
String asString()
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Expressive architecture
Visibility in a software architecture amounts to expressiveness
Components and their relationships
should be related by names that
reflect their nature
Components should have cohesive
responsibilities, contractual
interfaces and explicit relationships
By looking through the artifacts,
both the essence and detail
should be apparent
The network
Telegram
Receiver
passes telegrams to
passes
Telegram
commands to
Converter
applies
Telegram
Forwarder
passes
telegrams to
creates;
Command
Processor
executes
retrieves
results
Command
Page 16
The Craft of Software Architecture Seven Secrets Every Architect Should Know
Pick
Workpiece
Logging
Strategy
Logger
Log
Alarms
SetPoint
Calculation
ARCHITECTURE
Secret Four
Page 17
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Property
Class A
Property
Class B
Property
Class C
Network
Element
Abstract
Y Strategy
Abstract
Z Visitor
Concrete
X Strategy
Concrete
Y Strategy
Concrete
Z Visitor
Strategy for
algorithmic variation
Page 18
The Craft of Software Architecture Seven Secrets Every Architect Should Know
...
// Hard-coded instance configuration
switch (node->type()) {
case A:
node->add_property
(new Persistance(new Data_Visitor_A));
node->add_property
(new Network_Connectivity());
...
Frank Buschmann, all rights reserved
ARCHITECTURE
Drive
uncertainty
resolution
Decide
Page 19
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Secret Five
Page 20
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
The solution
1
2
Page 21
Tag management
did not include tag
removal
The Craft of Software Architecture Seven Secrets Every Architect Should Know
Tag removal
added without
interface
modification
ARCHITECTURE
Complete, meaningful
Role-specific, expressive, usable
Defined contract, stability
Interaction
Integration
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Secret Six
Page 23
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Page 24
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Developers spend
50% of their time
in the process of
understanding code
Koskinen, University of Jyvskyl, Finland
http://users.jyu.fi/~koskinen/smcosts.htm
Page 25
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Performance
Robustness
Maintainability
Page 26
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Secret Seven
Page 27
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
Business Logic
Solution
Interceptor framework in
data handling logic;
Self-contained
interceptors provide local
extension logic
Page 28
The Craft of Software Architecture Seven Secrets Every Architect Should Know
Data Logic
Actual use
Interceptors
Effect
Oscillating control flow
between business logic
and data logic
Circular, uncontrollable,
unstable call chains
Frank Buschmann, all rights reserved
ARCHITECTURE
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
In Retrospect
Page 30
The Craft of Software Architecture Seven Secrets Every Architect Should Know
ARCHITECTURE
In retrospect
The seven practices complement an architects knowledge,
technical experience, and design skills regarding
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
ARCHITECTURE
A departing thought
Page 32
The Craft of Software Architecture Seven Secrets Every Architect Should Know