1. 手册简介

需求验证的目标是尽可能的暴露问题,而不是证明无错。 -- 徐峰,《软件需求的最佳实践》

没有风险的软件早就被开发完了。

作为架构师,首先要面对的风险就是需求。既要关注功能需求,又要平衡互相矛盾的质量属性需求,还不能遗漏各方面的约束性需求...这,已经成为合格架构师必需的基本功。

接下来,3个真实故事都说明了这一点。">2. Pre-architecture的故事
3. Pre-architecture总论

全面认识需求,是生成出高质量软件所必须的“第一项修炼” -- 温昱,《软件架构设计》
Pre-architecture 阶段包括4个步骤,咱们先讲讲前两步。

* 第1步,需求结构化
* 第2步,分析约束影响">4. 需求结构化与分析约束影响

人们常常使用战术,而忽略了战略。战略要求从大局上把握整个架构与设计......架构错误的代价非常高。 -- Stephane Faroult, 《SQL语言艺术》

架构新手和有经验的架构师的区别之一,在于是否懂得,并能有效的进行概念架构设计。作为架构新手,尤其害怕碰到自己没有做过的系统:系统较大时,一点祭出“架构 = 模块 + 接口”的发布却不太奏效,架构新手就往往乱了阵脚。想法,有经验的架构师不会一上来就关注与如何定义“接口”,他们在大型架构设计的早期比较注重识别重大需求、特色需求、高风险需求,据此来设计概念架构。

另外,概念架构设计还是投标及售后工作的有力武器。金牌售前和普通售前的一个重要区别是,能否清晰的讲解概念架构,并借此说明 “客户关系的价值如何实现、担心的问题如何解决”。

接下来,通过两个发生在身边的故事,来一窥上述不同工作(架构设计、投标、售前)背后的幕后英雄--概念架构。">6. 概念架构的故事

顶级设计者在设计中并不是按部就班地采用自顶向下(或自底向上)的方法,而是着眼于权重更大的目标。这些目标通常是难点问题,设计者不能轻易地看出这些问题的解决方案。为了得到整个的设计方案,设计者必须先致力于难点的设计并消除其中的疑惑。 -- Robert L. Glass, 《软件工程的事实与谬误》

概念架构是大型系统架构设计成败的关键。">7. Conceptual Architecture总论

所谓鲁棒性分析时这样一种方法: 通过分析用例规约中的事件流,识别出实现用例规定的功能所需要的主要对象及其职责,形成以职责模型为主的初步设计 -- 温昱,《软件架构设计》

Conceptual Architecture阶段包含3个步骤:

第1步,初步设计。
第2步,高层分割。
第3步,考虑非功能需求。">8. 初步设计

分析与综合是思维方向相反的过程。一部是先分析后综合,没有分析就不能综合;没有综合的分析,也只有片面的分析。 -- 肖纪美,《梳理人、事、物的纠纷:问题分析方法》

“架构 = 模块 + 接口”的做法,其不足可概括为两点。

第一,忽视了多视图。“模块 + 接口”仅是逻辑架构设计视图的核心内容,而软件系统的架构设计还可能涉及开发视图、运行视图、物理视图、数据视图等多方面的考虑。

第二,忽略了概念架构设计。对规模较大的系统而言,都必须先根据重大风险(包含功能方面、质量方面、约束方面),有针对性的制定包括“高层分割”在内的设计决策,然后才是“模块 + 接口”一级的设计。

那么,如何对软件系统进行“高层分割”呢?这属于Conceptual Architecture阶段第2步的工作。也真是这一章要说的主题。">9. 高层分割

在我们当中,有不少人一厢情愿的认为:只要所开发出的系统完成了用户期待的功能,项目就算成功了,但这并不符合实际。 -- 温昱,《软件架构设计》

《软件架构设计》一书中指出,“其实任何作为复合整体的复杂事物都有可能有架构,比如一本书”。“非功能目标的考虑”在ADMEMS方法中不是一个阶段,而是一个贯穿环节。

我们接下来讨论的重点是贯穿案例 -- PASS系统概念架构设计的第3步,考虑非功能需求。">10. 考虑非功能需求

如果选择视图的工作没做好,或者以牺牲气体视图为代价,只注重一个视图,就会掩盖问题以及延误解决问题。 -- Grady Booch, 《UML用户指南》

从概念架构到细化架构,先设计概念架构,构思关键问题的解决策略;再进行细化架构的设计,以保证为开发提供足够的指导和限制...这符合人类解决问题的规律,因此被广泛采用。

但在实际中,细化架构设计还存在很多差强人意之处,甚至经常被忽视。">11. 细化架构的故事

总的来说,“架构”一词涵盖了软件架构的所有方面,这些方面紧紧的缠绕在一起,决定如何将之分割成部分和主题显得相当主观。既然如此,就必须引入“架构视点”作为讨论、归纳和理解大型系统架构的手段 -- Peter Herzum, 《Business Component Factory》

架构设计是一门解决复杂问题的实践艺术。于是,以分而治之为思想核心的多视图方法必不可少。

接下来主要介绍支持细化架构设计的整体思路--多视图方法。">12. 细化架构总论

一流是每个程序设计人员向往并为之奋斗却又无法具体说出的、难以达到的境界,一流的软件非常简明。它灵活而清晰,能通过创造性的机制解决复杂的问题,这些机制语义丰富,可应用于其他可能完全无关的问题,一流意味着寻求恰当的抽象,意味着通过新的途径合理利用有限的资源。 -- Grady Booch,《面向对象项目的解决方案》

划分子系统、定义接口......,这些典型工作都是属于逻辑架构设计的范畴。

接下来,我们主要说说5视图方法中逻辑架构视图的设计:

先从划分子系统的3种必用手段讲起
随后,纠正“我的接口我做主”这种错误认识,代之以“协作决定接口”的正确理解
而且,接下来将解析逻辑架构设计的整体思维套路,解决架构师郁闷已久的“多视图方法只讲做什么、不讲怎么做”的问题
最后,总结逻辑架构设计的10条经验要点。">13. 逻辑架构

多重软件架构视图之所以必不可少,是因为各类涉众(用户、客户、开发人员、测试人员、维护人员、内部操作人员、其他人员)需要从各自角度理解和使用架构。 -- Barry Boechm

架构要涵盖的内容和决策太多了,超过了人脑“一蹴而就”的能力范围,因此采用“分而治之”的办法从不同视角分别设计;同时,这样也为对软件架构的理解、交流和归档提供了方便。

接下来会介绍物理架构、运行架构、开发架构作为软件架构的不同视图,它们分别关注不同的方面、针对不同的目标和用途。">14. 物理架构、运行架构、开发架构

针对不同的领域,由于信息资源类型及其存在的状态不同,信息资源整合的需求存在较大差异。 -- 彭洁,《信息资源整合技术》

确定数据分布方案是数据架构设计的难点。越是大系统,数据分布越关键。因此,一线架构师迫切须要建立数据分布策略的大局观。

我们接下来结合案例,讲讲如何运行数据分布的6种具体策略。">15. 数据架构的难点:数据分布

那么非功能需求方面常见的问题是什么呢?......很多《需求规格说明书》中,会通过一个名为“设计原则”的小节来说明非功能需求,列出诸如高可靠性、高可用性、高扩展性等要求。但是很多开发人员根本不去看它,因为这样的定性描述是没有判断标准的,因此这种信息传递是无效的。 -- 徐峰, 《软件需求最佳实践》">16. 困扰已久的非功能问题

质量属性很难定义,但它们经常可以区分产品是只完成了其应该完成的任务呢,还是使客户感到满意。 ......优秀的软件产品反映了这些竞争性质量属性的优化平衡。 -- Karl E.Wiegers, 《软件需求(第二版)》

作为决策者,架构师的工作影响着项目的成败,乃至公司的发展。我们须谨记:千万不要做“四拍”型的决策者。

决策时拍脑袋--就这么定了
指挥时拍胸脯--保证没问题
失误时拍大腿--我怎么没想到
追查时拍屁股--老子不干了
架构设计实践中,面对非功能需求目标时是最容易犯“拍脑袋”这个经典错误的。接下来介绍非功能目标的设计思维及其实践要领。">17. 非功能目标的设计环节

很少有需求文档能够以一种可测试的细节捕获系统所有的质量需求,现实情况是设计师通常不得不填补空白并协调冲突。 -- Len Bass, 《软件架构实践(第2版)》

核心竞争力是什么?答案是:能力的稀缺性。

接下来介绍的目标-场景-决策表方法,可以帮助架构师快速建立非功能目标的设计思维,更理性的应对架构师普遍感到棘手的非功能支持问题,提升自己的核心竞争力。">18. “目标-场景-决策”表
东风

1. 手册简介

架构设计能力,因为掌握起来而显得珍贵。期望用这本手册来概括一线架构师经常面对的实践困惑,并给出ADMEMS方法的应对之策。

1.1. 一线架构师:6个经典困惑

一线架构师经常面对的实践困惑,可以用下面的图来概括。其中,涉及了“4个实际问题的困惑”,以及“两个职业发展的困惑”。

1.2. 4个核心主张

画龙须点睛

在介绍具体方法之前,先阐述4个核心主张。

  • 方法体系 是大趋势
  • 质疑驱动 的架构设计
  • 多阶段 方法
  • 内置最佳实践 的方法

这4个核心主张可帮助读者领会ADMEMS方法之精神。

1.2.1. 方法体系是大趋势

单一方法已经无法解决复杂的业务需求,一线 架构师真正需要的是覆盖“需请进,架构出”全过程的实践指导。

只有综合了不同方法优点的“方法体系”才能堪此重任。

ADMEMS是“Architectural Design Method has been Extended Method System”的缩写。ADMEMS并不是单一方法,而是由多个各具特点的方法组成的方法体系。

ADMEMS 是“Architectural Design Method has been Extended to Method System(将架构设计方法扩展到方法体系)”的缩写。

1.2.2. 质疑驱动的架构设计

毫无疑问, 架构设计是需求驱动的,而不是模型驱动的。

但需求驱动的说法,不太传神——当你很清楚需求却依然设计不出 架构时就足以 说明“需求驱动的架构设计”的总结还“缺点儿什么”。

架构设计是一门艺术,你不可能把“一桶需求”倒进某台神奇的机器然后等着架构设计自动被“加工生产”完毕,因此“需求驱动的架构设计 ”给架构师的启发不够。

缺点儿什么呢? 答案是,缺“人的因素 ”、“ 架构师的因素 ”!

接下来将不断阐述 架构设计实际上是个“质疑驱动的过程 ”:

需求,被 架构师的大脑(而不是自动),有节奏地引入到架构设计的一波接一波的思维活动中。

例如,作为架构师,当你的架构设计进行到一半时,你可以明显感觉到:这个架构设计中间成果,还需要“我”进一步通过“质疑”引入更多“质量属性”以及“特殊功能场景”来驱动后续的架构设计工作的开展。

在保留“需求驱动的 架构设计”所有正确内涵的同时,“质疑驱动的架构设计” 告诉架构师:你的头脑,才是架构设计全过程的真正驱动力

质疑意识,是 架构师最宝贵的意识之一。

至于有的专家提倡的“用例驱动的 架构设计 ”这种观点,则有严重缺陷,3句话足以揭示这一点:

  • 需求=功能+质量+约束
  • 用例是功能需求实际上的标准
  • 用例涉及、但不涵盖非功能需求

1.2.3. 多阶段还是多视图?

架构设计的多视图方法很重要,但是,架构设计方法首先当时多阶段的,其次才是多视图的。

一句话,先做后做--这叫阶段(Phase),齐头并进--这叫视图(View)。

任何好的方法(不局限于软件领域),都必须以时间为轴来组织,因为这样才最利于指导实践。

架构设计只需要多视图方法,看上去很美,其实并不足够。实际上,大量一线架构师早已感觉到多视图方法的“不足够”。例如,想想投标:

  • 一方面,投标时,需要提供和讲解《方案建议书》,其中涉及架构的内容。
  • 另一方面,团队并行开发是,需要《架构设计文档》提供多方涉众使用。
  • 但是,投标时将的“架构”和并行开发时做为基础的“架构”在同一个抽象层次上吗?绝不可能。前者叫“概念架构 ”,后者叫“细化架构 ”。
  • 如果投标失败,细化架构根本没有必要做了。
  • 结论,概念架构设计和细化架构设计,是两个架构阶段,不是两个架构视图。

1.2.4. 内置最佳实践

方法不应该是个空框框,应融入最佳实践经验。相信业界很多专家都正朝着这个方向迈进。

ADMEMS方法融入了哪些实践?

  • 逻辑架构设计的10条经验
  • 质疑驱动的逻辑架构设计的整体思路
  • 基于鲁棒图进行初步设计的10条经验
  • ADMEMS矩阵方法
  • 约束的4大类型
  • ...

1.3. ADMEMS方法体系:3个阶段,一个贯穿

作为方法体系,ADMEMS方法通过3个阶段和一个贯穿,来覆盖“需求进,架构出 ”的架构设计完整工作内容。

上面的图基本上说明“3个阶段 ”在整个方法体系中的位置。具体而言:

  • 预备架构(Pre-architecture)阶段(简称PA阶段)
    • 最大误区:架构师是技术人员不必懂需求
    • 实践要点:摒弃“需求列表”方式,简历二维需求观
    • 思维工具:ADMEMS矩阵等
  • 概念架构(Conceptual Architecture)阶段(简称CA阶段)
    • 最大误区:概念架构 = 理想架构
    • 实践要点:重大需求塑造概念架构
    • 思维工具:鲁棒图、目标-场景-决策表等
  • 细化架构(Refined Architecture)阶段(简称RA阶段)
    • 最大误区:架构 = 模块 + 接口
    • 实践要点:贴近实践的5视图法
    • 思维工具:包图、包-接口图、灰盒包图、时序图、目标-场景-决策表等

3个阶段之间的先后顺序是有极大实际意义,否则就不能称其为“阶段”了。

  • 试想,在PA阶段对需求理解不全面(例如遗漏了需求)、不深入(例如没有发现“高性能”和“可扩展”是两个存在矛盾的质量属性),后续设计怎会合理?
  • 试想,CA阶段的概念架构设计成果没有反应系统的特点就“冲”去做RA设计,是不是比如会造成更多的设计返工?

1个贯穿 ”,指的是对非功能目标的考虑。

1.3.1. Pre-architecture阶段:ADMEMS矩阵方法

PA阶段的使命,可以概况为一句话:全面理解需求,从而把握需求特点,进而确定架构设计驱动力 。 其中,ADMEMS矩阵居于方法的核心。

1.3.2. Conceptual Architecture阶段:重大需求塑造做概念架构

概念 架构 ≠ 理想化架构 。所以,必须考虑包括功能、质量、约束在内的所有方面的需求。下图是推荐的概念架构设计的步骤。

1.3.3. Refined Architecture阶段:落地的5视图方法

细化 架构是相对于概念架构而言的。 细化架构阶段的总体方法为5视图方法

许多架构师,言架构必谈OO。在他们的思想里面,认为OO方法已经完整覆盖了架构设计的所有方法和技巧。这种看法,是相当片面的。

OO方法已涵盖架构设计的全部,那么5视图方法 所涉及的逻辑架构物理架构开发架构运行架构数据架构 ,都应受到OO方法的指导,然而并不是这样。

上面图中说提到的物理架构、开发架构、运行架构和数据架构者4个架构视图,分别是面对节点、面对文件、面对控制流和面向Table(或文件)的 -- 也就是说,一般认为这4个架构摄图主要的思维并非OO思维。

另一方面,即使是逻辑架构的设计,也未必是以OO方法为指导的。应该将逻辑架构设计总结为 “面向职责” 更贴近本质。

1.3.4 持续关注非功能需求:“目标-场景-决策”表方法

非功能需求不可能是“速决战”,连编码都会影响到性能等非功能属性,更何况概念 架构设计和细化架构设计。

ADMEMS方法应对非功能需求的思维工具,目标-场景-决策表 可以将架构师的思维可视化出来。

1.4. 如何解决“6大困惑”

那么,如何运用本书解决之前提到的“6个困惑”呢?

如果,你是一个已经有一定实践经验的 架构师,希望更加合理地对系统进行模块切分,请关注“第三部分 Refined Architecture阶段 ”。你将了解到,划分子系统的4大原则。

  • 职责分离 原则
  • 通用专用分离 原则
  • 技能分离 原则
  • 工作量均衡 原则

如果,你是一个已经有一定实践经验的 架构师,希望更加合理地对系统进行模块切分,请关注“第三部分 Refined Architecture阶段 ”。你将了解到,划分子系统的4大原则。

  • 职责分离 原则
  • 通用专用分离 原则
  • 技能分离 原则
  • 工作量均衡 原则

下一节:所谓的“开始就是结局”,要达到什么样的结局取决于什么样的开始,结局就是开始的地方。 -- T.S 艾略特,《四个四重奏》

需求验证的目标是尽可能的暴露问题,而不是证明无错。 -- 徐峰,《软件需求的最佳实践》

没有风险的软件早就被开发完了。

作为架构师,首先要面对的风险就是需求。既要关注功能需求,又要平衡互相矛盾的质量属性需求,还不能遗漏各方面的约束性需求...这,已经成为合格架构师必需的基本功。

接下来,3个真实故事都说明了这一点。
加载中...

天下网标王茂名网站优化代理湘潭网站优化优选企业网站推广关键词排名优化为什么我的网站一直优化不上网络营销网站优化待遇文登网站优化代理商北京网站改版优化阳江关键词网站优化马山网站优化南平网站优化合肥衡水网站优化哪家好网站排名优化软件云速捷牛x贵州标准网站优化价格表网站页面布局优化淮北市网站优化陕西什么是网站优化孝感网站优化方法泰安济南网站优化公司哪个好公司网站优化推广方案滁州网站快速优化网站优化去哪里xyz结尾的网站好优化吗宝鸡网站建设优化优化网站排名的步骤长垣网站seo优化五华区网站优化开发优化一个网站多少钱如何申请网站优化工作配人网站搜索引擎的优化方案罗湖站长网站优化网站香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化