反模式读书笔记之实现主体架构(二)

1引言

有一名专业的规划师(Jack)说过,一名工程师的20%时间应该用于做规划。随着我们经验的增加,对这一论断的相信程度也在增加。通过规划来很好的组织工作,生产率和效率都会得到极大的提高。不幸的是很多公司机构都试图把过多的规划活动形式化。规划在由个人来推动和利用时最有效,时间管理专家的一个减少压力的关键要素就是通过规划让生活中的各项活动保持均衡。随着这种实践活动的成熟,时间国立系统的形式和使用方法越来越个人化了。

2实现主体架构

本反模式的特点是开发中的系统缺乏架构规范。一般负责项目的架构师都有以前系统

架构经验,因此认为文档是不必要的。这种过度的自行导致在影响到系统成功的关键区域中风险剧增。比如下面某些区域往往会缺失架构定义:

1)包括对语言和库的使用、编码标准、内存管理等在呢你的软件架构和规范。

2)包括客户端和服务器配置的硬件架构。

3)包括网络协议和设备的通信架构。

4)包括数据库和文件处理机制的持久性架构。

5)包括线程模型和信任系统集的应用安全架构。

6)系统管理架构。

3带来的后果

1)缺乏架构规划和规范:对软件、硬件、通信、持久性、安全和系统管理架构的定义不足。

2)由规模、领域知识、技术和复杂性导致的隐藏风险随着项目的进展暴露出来。

3)由于性能不足、过度复杂、需求理解错误、可用性问题和其他系统特性导致项目将要失败或系统不成功。例如;大约1/3的系统在开发和运行中会遇到严重的性能问题。

4)不了解新技术。

5)缺乏后备技术和应急计划。

4产生的原因

1)没有风险管理。

2)管理人员、架构师或开发人员过于自信。

3)依赖于过去的经验,而这些经验与现实在某些关键区域有区别。

4)由于系统设计活动中的缺口导致隐含的和未解决的架构问题。

5重构方案

重构方案要求以有组织的方式进行系统定义,并依赖于系统的多个视图。每个视图从一个系统利益相关者的角度对系统进行建模,这里的利益相关者可能是真实的也可能是假象的,可能是个体也可能是一群人的聚合。每个利益相关者负责一组搞优先级的问题,每个视图都代表了整个系统并回答了这个关键的问题。这些视图包括一些图、表和规范说明,被连接到一个保证一致性。一般而言,视图是轻量级的说明。架构文档的作用是交流架构决策和其他问题的解决方案。文档因该易于理解,维护成本低廉。

只有完整理解一个架构的人才能够成功定义实现它。不过,现实往往并不是这样,因为很多项目采用了一些没有被很好理解的新技术。因此,从头开始建立良好的架构是一个迭代式的过程,大家都应该认识到这一点。起初的参考架构应该具备可以在第一个产品的开发期间被实现的强大策略。然后,可以使用将来的参考架构版本以增量的方式精炼他,并使用第一个产品或新版本来驱动这个过程。

具体流程如图:

时间: 2024-09-17 03:36:07

反模式读书笔记之实现主体架构(二)的相关文章

反模式读书笔记之胖球(—)

1.胖球产生的原因: 胖球反模式本身是很简单,但可能由于疏忽,后期没加以控制,系统急于上线等等原因而出现了. 胖球反模式通过描述一个或几个类不断的膨胀,以至吞食掉整个面向对象架构.一般胖球的出现是由于一个类垄断了处理过程,而其他的类只是数据的封装体. 虽然OOA&D 提出了很久,但有些人的思维还停留在过程式的设计上,他们习惯把过程和数据分开,而不是OO中把融合了方法和数据的对象进行职责分割.胖球可能是需求分析不当的结果,也可能是系统不断演进,迭代,新功能和新人员的加入而使部分构件异常庞大而没有进

《javascript模式》读书笔记:容易踩中的那些坑

<javascript模式>第2章 基本技巧 中,讲了一些在前段编程中的一些规范和建议,同时还有一些平常经常忽视且容易踩中的坑. 以下仅是部分内容的摘要和总结,以做备忘用,如有错漏,敬请指出.如需了解更多,可参阅原著,挺不错的书.   1 链式赋值的陷阱 function func(){ var innerVar = globalVar = 20; } func(); console.log(typeof globalVar); //输出结果为? 上面最后的输出结果是?相信不少人会毫不犹豫地说

《The C Programming Language》读书笔记总结 &amp;lt;一&amp;gt;.基础篇

写了这么多年的C代码,回过头来再看<The C Programming Language>这本书,作者Brian W. Kernighan和C语言之父Dennis M. Ritchie.感觉里面的知识和书的架构给人非常"合理"的感觉.怎么个合理法呢? 首先书中的代码,如else-if中使用binsearch函数介绍二分查找.atoi介绍字符串s转换为整数.计算器逆波兰表达式,都是实际中非常经典且常用的知识: 然后书中大部分的程序都是基于stdlib.h.string.h.c

《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair

        前面两篇文章介绍了淘宝的发展历程和Java时代的变迁:             <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源             <淘宝技术这十年>读书笔记 (二).Java时代的脱胎换骨和坚若磐石         马云说过"创新不是为了与对手竞争,而是跟明天竞争",所以这篇文章讲述淘宝的创新技术TFS和Tair及创新的产品.         该篇文章不仅仅对在读大学生非常有所帮助,因为你能从文章中看到很多你需要学

《UML及建模》读书笔记

<UML及建模>读书笔记     (一)面向对象技术概述   一.软件及其特性 软件是计算机系统的思维中枢,是软件产业的核心.作为信息技术的灵魂--计算机软件,在现代社会中起着极其重要的作用. 概念: 软件是计算机系统操作有关的程序.规程.规则及其文档和数据的统称. 程序是按事先设计的功能和性能要求执行的语句序列.数据是程序所处理信息的数据结构.文档是与程序开发.维护和使用相关的各种图文资料,如规范说明书.设计说明书.用户手册等. 软件由两部分组成:一是机器可执行的程序和有关的数据:二是与软件

服务的协作:服务间的消息传递——《微服务设计》读书笔记

很多开发者都表示他们基于HTTP的API是RESTful的.但是,如同Fielding在他的博客中所说,这些API可能并不都是RESTful的.Leonard Richardson为REST定义了一个成熟度模型,具体包含以下4个层次(摘自IBM): 第一个层次(Level 0)的 Web 服务只是使用 HTTP 作为传输方式,实际上只是远程方法调用(RPC)的一种具体形式.SOAP 和 XML-RPC 都属于此类. 第二个层次(Level 1)的 Web 服务引入了资源的概念.每个资源有对应的标

《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石

        马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各种技术描述清楚,而且过程中读起来非常有意思.         该读书笔记中参杂了很多原文的知识,因为我实在无法割舍,都挺有意思的:同时记录一些有用的知识,通过这本书能介绍些学过的知识或面试中可能出现的题目及作者所思,文章还是非常有趣的,希望对大家有所帮助! 一. Java时代 脱胎换骨    

Java与XSLT读书笔记(1)

笔记 <Java与XSLT>读书笔记 一,所有的XSLT处理器必须包括四个内置的模版规则,它们的优先级要低于任何其他规则,所以只要编写一个新的模版规则来匹配相同的式样,就可以覆盖它们.理解内置规则的最好方法就是架设它们总是位于后台,如果没有找到其他匹配一个节点的规则,就应用这些内置规则. <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template> <xsl:te

PHP-SOCKETS读书笔记

笔记 学习PHP2个月了,收获挺多.但是与别人不同的是,我更喜欢SOCKET.PHP在SOCKET这方面的文章太少了.所以决定写一系列PHP-SOCKET读书笔记.一直从最基本写到SOCKET_RAW.实例+心得.实例将会有端口转发(突破防火墙),动网类型EXP,端口扫描,PHP后门,发包型EXP框架.由于学习缘故,每周只能写一篇.现给出卷一.希望大家一起投入到PHP SHELL编程中来. 前言: PHP是世界上最流行的脚本语言之一.一直以来它在WEB编程中得到极广泛的应用.我想说的是PHP不仅