7. Big up front design Waterfall
analysis paralysis
UML
and
我是一个
软件架构师
I’m a software architect
Ivory Tower
PowerPoint Architect
Architecture Astronaut
8. PPT架构
Buzzword Bing
o
Single Sign-On
Corporate Data
Model
Enterprise Service Bus
9. “
架构师是
“业务技术战略家”
Architects are “business technology strategists”
26. Defer until the
Evolutionary Architecture
Emergent Design last responsible
YAGNI
and
moment
我是一个
“敏捷软件架构师”
I’m an agile software architect!
System Metaphor
Refactoring Spikes, stripes and tracers
27. 这是敏捷的软件架构吗?
Is this agile architecture?
即时贴
Sticky notes!
40. Cllsss
Caa s
Cla s
s
atorrs
or ato
llabborators
Coll l b
CCo aa or
o
esponsbiililtiiess
R sponsiib liit es
Re po ns ib itie
Res
类-责任-协作
Class-Responsibility-Collaboration
41. 边界、控制器和实体
Boundaries, controllers and entities
42. 基于组件的 发
Component-based development
Component A
Component B
Component C
upling
High cohe sion, low co
act,
des ign by contr
inciple
Liskov sub stitution pr
44. Rational 统一过程
Rational Unified Process (RUP)
Skills Inception Elaboration Construction Transition
Business Modelling
Requirements
Analysis & Design
Implementation
Test
Deployment
Configuration Management
Project Management
Environment
45. 要讲求实效
很多人不知道比较老的软件 发实践
Be pragmatic ... many people aren’t aware of older software development practices
46. 谁在讲授前敏捷时代的经典?
Who is teaching the classics of the pre-agile era?
Test-Driven Development
Systems Thinking
Extreme Programming
Continuous Delivery
Kanban
re
敏 ite
c tu
程 ch
过 e Ar
一 ar L
捷 al
统 So
f tw
M
on ted U
R ati -O
rien
n
er
Patt
基于组件的 发
48. esume
Curriculum Vitae / R
nterprise A rchitect
E date)
6-
A Big C ompany (200
men tation of an
des ign and imple
sp ons ible for the ML diagrams and
I
I have been re d rew some U
me r solution. I
ente rprise custo
wrote som e Java code.
)
o de please. :-
ob w riting more c
I w ould like a j
企业 架构与软 件架构不同
大 企业中的 e in a large en
terprise!
hitectur
e same as software arc
hite cture isn’t th
Enterprise arc
49. 软件 发不是接力赛
Software development is not a relay sport
Software
e
Architectur
Document
AaaS ... architecture as a service
50. 成功的软件交付不仅仅是实现细节
Successful software delivery is not an implementation detail!
52. 不负责任的软件架构师
The irresponsible software architect
Cross-site scripting attacks
possible; weak passwords
allowed; HTTP sessions
didn’t timeout; ...
Basic functionality errors;
No non-functional testing
little or no quality
(e.g. penetration testing or
assurance; rework required
load testing); ...
late in the project because
of assumptions; ...
No documentation; ...
这是一 个战略软件平台!
e platform!
This is a strategic softwar
53. 我们是作者还是软件架构师?
Are we authors or software architects?
55. 混乱
团队是否理解他们要构建什么?
应该如何构建?
Chaos ... does the team understand what they are building and how they are building it?
56. No defined structure,
inconsistent approaches,
big ball of mud,
spaghetti code, ...
混乱停!
团队是否理解他们要构建什么?
应该如何构建?
Chaos ... does the team understand what they are building and how they are building it?
Slow, insecure, unstable, unmaintainable,
hard to deploy, hard to change,
over time, over budget, ...
57. 对“太长,没看”的共同理解
Shared vision of TL; DR
Software
e
Architectur
Document
59. Common Services More Common Services Service A Service B Service C
3rd Party Interface
Presentation Layer Presentation Layer Presentation Layer Presentation
Presentation Layer (Master Pages)
(Service A Pages) (Service B Pages) (Service C Pages) Layer
Service Proxy Service Proxy Service Proxy Service Proxy Service Proxy
WCF Communications (SOAP, REST, TCP, MQ) Transport
Services Services Services
Services Implementation Services Implementation WCF Service
Implementation Implementation Implementation
Service
Contracts Contracts Contracts Contracts Contracts
Interface
Services Services Service A Service B Service C Business
Services Services Services Services
Services Services Services Layer
Data Data
Data Contracts Data Contracts Data Contracts Data Contracts Data Interface
Contract Contract
Data Data Data Data Data Data Service A Data Data Service C
Layer Layer Layer Layer Layer Layer Data Layer
Data Layer Layer Layer Data Layer
3rd Party
3rd Party Interface 3rd Party Interface
Interface
Common
Authentication Logging
Foundation
Data Management Data Access CRM Workflow Email
60. 我们可以把我们软件 发的过程可视化
We can visualise our software development process
我们已经忘记了如何可视化我们构建的软件
We’ve forgotten how to visualise the software that we’re building
65. 广度 ... 知道不同的方案和软件 发实践
Breadth ... awareness of different options and software development practices
通
才
化
的 优秀的 软件架构师是“建
筑师 ”
r builders
arch itects are maste
Good software
深度 ... 深厚的技术知识
Depth ... deep technical knowledge
专
才
66. 你会雇一个不会编码的架构师么?
Would you hire a software architect that wouldn’t code?
67. 软件架构师这个角色
需求和约束 技术选型 软件设计
Requirements and constraints Technology selection Software design
软件设计的评估 编码 软件设计的演化
Evaluation of software design Coding Evolution of software design
质量保证 教练和指导
Quality assurance Coaching and mentoring
68. ) Standard (
ntext containers Mac
ang le (co ) ro (
Wide ponents) clas
Telephoto (com ses
)
Abstract Specific
作为软件程序猿,代码是我们的主要面向对象
As developers, the code is our major focus
69. ) Standard (
ntext containers Mac
ang le (co ) ro (
Wide ponents) clas
Telephoto (com ses
)
Abstract Specific
有时你需要离代码远一点儿
Sometimes you need to step back from the code
70. Big Bank plc
Internet Banking System
1. Current Situation
We have an existing Internet Banking offering that allows customers to securely view
information about their bank accounts held with us via the web. Although we were one of the
first to market with such a product, the system itself is a number of years old now and a series
of problems has been identified during a consulting exercise that we recently initiated. In
summary:
• The system only provides customers with read-only access to information about their
bank accounts. This includes account balances, recent transactions and recent
statements.
• The information presented to customers is slightly out-of-date, because information from
the core banking system is exported to the website on a nightly basis.
• Transactional requests are not possible through the site, with customers instead sending
a secure message to the call centre with their request instead. This process is open to
abuse and fraud.
• The number of features supported by the offering is limited.
ext)
• The technology is no longer seen as “leading edge”, is hard to enhance and costly to
maintain. In addition, the technology has reached “end of life” and is no longer
proactively supported by the vendor.
(cont
• The system doesn’t meet current website accessibility standards.
In a recent survey, our Internet Banking system was perceived as poor in terms of the user
angle
experience and the level of information available through the website. With our competitors
now offering fully transactional systems, there is a risk that we will lose business.
Wide
2. Vision
The board have given us the go-ahead to initiate a project to replace the current Internet
Banking system, which will need to coincide with the corporate rebranding that will be taking
place in 12 weeks. The replacement system should:
• Provide customers with real-time access to information about their bank accounts.
• Provide customers with the ability to perform common transactions through the website.
This includes making payments, setting up standing orders, transferring money and so on.
• Provide customers with a rich user experience.
• Meet current website accessibility standards.
• Be developed using the new corporate website design guidelines.
任何问题都有多 解决方案
There are a number of solutions to any problem Standard (
container s)
ponents)
Telephoto (com
约束
原则
需求
Mac
ro (
clas
ses
)
71. Big Bank plc
Internet Banking System
1. Current Situation
We have an existing Internet Banking offering that allows customers to securely view
information about their bank accounts held with us via the web. Although we were one of the
first to market with such a product, the system itself is a number of years old now and a series
of problems has been identified during a consulting exercise that we recently initiated. In
summary:
• The system only provides customers with read-only access to information about their
bank accounts. This includes account balances, recent transactions and recent
statements.
• The information presented to customers is slightly out-of-date, because information from
the core banking system is exported to the website on a nightly basis.
• Transactional requests are not possible through the site, with customers instead sending
a secure message to the call centre with their request instead. This process is open to
abuse and fraud.
• The number of features supported by the offering is limited.
ext)
• The technology is no longer seen as “leading edge”, is hard to enhance and costly to
maintain. In addition, the technology has reached “end of life” and is no longer
proactively supported by the vendor.
(cont
• The system doesn’t meet current website accessibility standards.
In a recent survey, our Internet Banking system was perceived as poor in terms of the user
angle
experience and the level of information available through the website. With our competitors
now offering fully transactional systems, there is a risk that we will lose business.
Wide
2. Vision
The board have given us the go-ahead to initiate a project to replace the current Internet
Banking system, which will need to coincide with the corporate rebranding that will be taking
place in 12 weeks. The replacement system should:
• Provide customers with real-time access to information about their bank accounts.
• Provide customers with the ability to perform common transactions through the website.
This includes making payments, setting up standing orders, transferring money and so on.
• Provide customers with a rich user experience.
• Meet current website accessibility standards.
• Be developed using the new corporate website design guidelines.
任何问题都有多 解决方案
There are a number of solutions to any problem Standard (
container s)
ponents)
Telephoto (com
约束
原则
需求
Mac
ro (
clas
ses
)
75. 你会那样编码么?
Would you code it that way?
师”
师必须 是“建筑
架 构
是为 什么软件 ust be
这就 i tects m
re arch
why softwa
This is uilders
m aster b
76. Soft ware 地图
Ar chitecture Maps
D ocu ment 景点
Sights
旅 行 手册 历史和文化
lture
History and cu
idebook
avel Gu
Tr
实用信息
Practical inform
ation
77. 文档应该说清楚代码没有说的东西
Documentation should describe what the code doesn’t
浪费, 增加价值 文档应该说明意图,
少 并作为源代码的导引说明
dd value
waste, a
Reduce Use it to explain intent and act as a
guide to navigate the source code
81. Base your architecture on
requirements, travel light
and prove your architecture
with concrete experiments.
Scott Ambler
http://www.agilemodeling.com/essays/agileArchitecture.htm
82. Features and Services
Infrastructure
Services 实验
Experiments
原型或证明
Foundations
概念
t
of concep
Prototyp e or proof
A software system
90. 软件架构师角色
和软件设计流程
是不同的东西
The software architecture role and the process of designing software are different
91. 软件架构师这个角色
The software architecture role
混乱团队 ... 自组织团队
团队中的专职软件架构师 每个人都是软件架构师
Dedicated software architect
Everybody is a software architect
on a team
92. 软件设计流程
The software design process
Software
/// <summary>
/// Represents the behaviour behind the ...
e
Architectur
/// </summary>
public class SomeWizard : AbstractWizard
{
Document
private DomainObject _object;
private WizardPage _page;
... private WizardController _controller;
public SomeWizard()
{
}
...
}
大型前期设计 演化的架构
Big up front design Evolutionary architecture
The architecture evolves secondary to the
Requirements capture, analysis and
value created by early regular releases of
design complete before coding starts
working software
93. 刚刚 用
理解软件的重要结构元素
软件架构师这个角色
Understand the significant stru
The software ctural elements
of the software
architecture
role
识 并消 除 键风险
ks key ris
and mit igate the
Identify
为团队提供
坚实基础和
共同愿景
Provide fir
m foundat
a shared v ions and
ision for t
he team
/// <summary>
/// Represents the behaviour behind the ...
/// </summary>
Software
public class SomeWizard : AbstractWizard
{
Architecture 软件设计流程 private DomainObject _object;
private WizardPage _page;
Document
private WizardController _controller;
The software design process public SomeWizard()
{
}
...
}
94. 敏捷软件 发项目需要软件架构师么?
Do agile software development projects need software architecture?
需要
Yes
95. 敏捷软件 发对架构师来说是好东西吗?
Is agile software development a good thing for software architecture?
是的,
它可以制止大型前期设计和分析带来的瘫痪
Yes, it stops big design up front and analysis paralysis
96. 定义你的团队中的软件架构师角色
Define the software architecture role on your teams
97. 向软件架构中应用一些工艺
Apply some craftsmanship to software architecture
有效的草图和轻量级文档
Effective sketches and
lightweight documentation
可工作的 软件系统!
work!
e syst ems that
Softwar
98. 积 、主动,以身作则
Be proactive, take ownership and lead by example
99. 我们需要为明天培 软件架构师
We need to grow the software architects of tomorrow