bgylde 2012-06-06
1.架构设计能力,因掌握起来困难而显得珍贵。
2.六个经典困惑:
将系统划分模块,如何更合理?
大系统架构设计,如何起步?
总觉需求很糟糕,影响了架构设计!
非功能需求重要,但如何设计?
架构新手:缺乏指导,架构设计不知所措!
架构老手:缺乏总结,仍“怕”下个项目!
3.本书介绍的方法体系为ADMEMS,是“ArchiteturalDesignMethodhasbeenExtendedtoMethodSystem(架构设计方法已经扩展到方法体系)”由多个各具特点的方法组成的方法体系。
4.架构是需求驱动的,不是模型驱动的。
5.质疑意识,是架构师最宝贵的意识之一。1.错的一半是“金”,败的一半是"贝",错中求金,败中求贝。
2.关注约束,要趁早,必须把虚存管理裁剪掉,直接访问物理内存。
3.软件架构师应在需求分类,需求折中和需求变更的研究方向方面的专家。1.面对需求的四步法:
需求结构化
分析约束影响
确定关键质量
确定关键功能
2.大局观,关键需求决定架构,其余需求验证架构
3.架构失败的主要原因
遗漏至关重要的架构影响因素50%
不能驯服频繁变化的需求40%
不能覆盖架构各个方面30%
不能验证架构并作出调整40%
4.让架构师参与需求分析工作1.人之所以痛苦,数追求错误的东西
2.举例:亚马逊运行期质量:
可伸缩性:几乎没有上限
性能:强调速度,又强调吞吐量
易用性:最便捷的选择方式
安全性:数据安全
持续可用性:不停机
互操作性:公司中各系统的互操作
3.举例:亚马逊开发期质量:可扩展性1.胜兵先胜而求战,败兵先战而求胜——孙子兵法
2.人们常常使用战术,而忽略战略,战略要求从大局上把握整个架构与设计,架构错误的代价非常高——stephaneFaroult
3.和客户,不是讲纯技术,而是抓住客户关心的价值和担心的问题,并在一个小时之内清晰地勾画出产品的相应策略
4.当要设计的软件系统非常复杂时,直接设计实际架构往往有困难,要先进行概念架构的设计,把最关键的设计要素和交互机制确定下来。1.概念架构设计分为3个步骤
初步设计,基于关键功能
高层分割,对系统这个黑盒子进行高层切分子系统
考虑非功能需求1.初步设计只有在设计复杂性时才需要。2.初步设计不应该关注细节
1.复杂性是层次化的——《人月神话》2.高层分割很重要,不是概念架构的全部,除了切分决策之外,概念架构还包括技术选择,权衡策略等种类的决策。
1.非功能需求一般很笼统,但考虑非功能目标要趁早。
1.架构最重要的一点,就是它能吧难以处理的大问题分解成便于管理的小问题。
2.一流意味着寻找恰当的抽象,意味着通过新的途径合理利用有限的资源。
3.就划分子系统策略,可归纳为3种:(看不懂)
分层的细化
分区的引入
机制的提取
4.划分子系统的4个重要原则:
职责不同的单元划归不同子系统
通用性不同的单元划归不同子系统
需要不同开发技能的单元划归不同子系统
坚固工作量的相对均衡,进一步切分太大的子系统
5.协作决定接口,"分"是手段,"合"是目的,不能合在一起支持更高层次功能的模块,有何用?
6.设计模式是基础,要站在各个角度看软件架构。1.我认识一些架构师,他们的生活是失控的,因为架构天性范围宽广,涉及的人和工作量都非常多,一些架构师整天的和“项目干系人”开会,然后周末做实际的架构工作。
2.有能力的架构师,再加上聪明的管理策略就更好,让程序员参与到架构实践的工作中去。
3.重用测试是关键1.铃声下载门户将热门铃声复制到所有服务器上,将冷门的铃声分开存放。
1.架构师不能做四拍型决策者
决策时拍脑袋——就这么定了
指挥时拍胸脯——保证没问题
失误时拍大腿——我怎么没想到
追查时拍屁股——老子不干了
2.将过于笼统的目标实际场景化这本书并不适合我,思考高度不一样,也许等成为架构师或者是做企业软件才适合。
还是很努力的看完了。收获不多。