分享

程序员必读之软件架构

 yzqhx 2016-02-27

总的来说这本书还不错,我在豆瓣笔记上说是程序员架构入门的最佳实践。本书最后的几个例子都充分证明这一点,做什么该如何做为何这么做是否必要这么做等等问题扩展开来谈。 
下面是kindle里的笔记。


你之所以时时在寻求跨界,其实是源自你假设了“存在界线”,这就如同全栈的含义其实是“没有栈”,而当有人信心满满地要“成为全栈工程师”时,他的眼里便又有个“这个栈”的存在。


架构师需要超越自己与别人的所见,因为你观察与架构的对象称为“系统”,你看到系统多少的真相,决定了你用怎样的影像去表现它,并进而推进与实现这种影像,亦即是架构。


所以架构中最难超越的并不是某个大师或前辈,而是你以及你为自己所作的设定。


你的软件系统有良好定义的结构吗? 团队里每个人都以一致的方式实现特性吗? 代码库的质量水平一致吗? 对于如何构建软件,团队有共同的愿景吗? 团队里每个人都得到了足够的技术指导吗? 有适当的技术领导力吗?


技术选择其实就是风险管理,当复杂度或不确定性高的时候降低风险,有利可图时再冒点险。所有的技术决策,在做出选择时都要把全部因素考虑在内,这些技术决策也需要评审和评估。这可能包括一个软件系统所有的主要结构单元,下至在开发过程中引入的库和框架。


不要把全部时间都用于编码


因为技术不是一个实现细节,你需要理解为自己的决定所做的取舍。


软件架构师应该写代码吗?我直截了当地回答:“理论上,是的。”更完整的答案可以在这本书里面找到。为什么?因为技术不是一个实现细节,你需要理解为自己的决定所做的取舍。


软件架构师被看作是首席设计师,是把项目的每件事凝聚在一起的人。


我们生活在“互联网时代”。除非我们这个行业发展到软件的构建方式和预测工程项目相同,否则团队中有人一直跟随技术的发展,有能力做出如何设计软件的正确决策,还是很重要的。


和其他可选技术相比,我们所选的是否最合适? 对该系统的设计和构建,还有哪些选择? 是否应该采用一种通用的架构模式? 我们是否明白所做决策的利弊? 我们照顾到了品质属性的需求吗? 如何证明这种架构行之有效?


作为领导,让团队保持积极是你的责任,你的角色在整个团队中不应被低估。


99.9%(“三个9”)的正常运行时间意味着留给计划维护、升级和意外故障的时间每天只有1分多钟。


编码标准和规范:“我们将采用内部的[Java|C#|其他]语言编码规范,这可以在我们公司wiki找到。” 自动化单元测试:“我们的目标是核心库的自动化单元测试达到80%的代码覆盖率,无论代码开发是先测试还是后测试。” 静态分析工具:“所有的生产和测试代码在提交到源代码管理之前,必须通过[Checkstyle|FxCop|其他]定义的规则。”


一天结束时,不论是否与性能、可伸缩性、可维护性、找到有合适经验的人的能力等方面相关,你做出的每一个技术决策都有权衡。


如果你不明白选择X技术而非Y的权衡,那就不应该做决策。设计软件系统的人要懂技术,这很重要。这就是为什么软件架构师应该是建造大师。


但如果要向别人解释系统如何工作,你会一来就说代码吗?


非正规的框线草图提供灵活性的代价就是一致性,因为你创造了你自己的标记,而不是使用UML等的标准。


忘了昂贵的工具吧。很多时候,你需要的只是一张白纸、挂图或白板,特别是当你有一组人想要以协作的方式承担设计过程。


代码会讲故事,但不会讲述完整的故事。


代码库也没有什么不同。尽管我们可以花很长一段时间绘图和描述每一段代码,但这样做真的价值不大。我们真正需要的是列出兴趣点,这样就能集中精力去理解软件的主要元素而无需陷入所有的细节。


把这个辅助文档当作一个指南,它应该给人们上手提供足够的信息,帮助他们加快探索的过程。


能讲述产品如何工作、如何演化。


系统实际上做什么是否清楚? 哪些特性、功能、用例、用户故事等对架构是重要的,原因是否清楚? 重要的用户是谁(角色、参与者、人物等)以及系统如何满足他们的需求是否清楚? 上述已用于塑造和定义架构是否清楚?


概括来说,架构就是结构和愿景,这个过程的关键在于理解重要设计决策。


敏捷和架构并不冲突。与其盲目听从别人的指点,软件团队更应剔除炒作,理解技术领导力的方式,在其独特的环境下量化所需的预先设计。


对于预先架构和设计,我的方法是要做到“恰如其分”。


在我看来,软件架构最大的问题是它在与软件行业每天创造的新事物竞争。


人们用于学习的时间和精力有限,但没时间通常不是团队不理解软件架构是什么的原因。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多