`
dyllove98
  • 浏览: 1382752 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38342
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78660
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131830
社区版块
存档分类
最新评论

我读《软件架构设计》

阅读更多


      本人现已5年的工作经验,其中有1年的技术经理和2年的项目管理,个人也在管理和技术方面抉择过很久,不过我最终还是选择了做项目管理,而非走技术然后到架构师的路线.当然选择走项目管理主要是因为主要的是当前环境不太适合走技术,并不代表要放弃技术,并且我内心同样是向往走架构师的这条路线。所以我选择了读这本书


  比较遗憾的是本书只提供的3章的试读,不过虽然三章也要我学到了很多知识.


看完这本书的第一个主观感受:


      下载之后简单的花5分钟扫了一眼,感觉整体结构特别乱.有点看不下去的感觉,但是一想到书目中的几个"专家"的强力推荐, 越发觉得自己在本书的阅读方面有些问题,所以又仔仔细细的看了3遍...这才恍然大悟..原来本书中包含了这么多宝贵的知识. 如果你对软件架构设计感觉朦朦胧胧,这本书定能让你拨开云雾见青天。 

     

看完试读篇章我学到的知识和感悟


       1、软件架构的组成大体上分为2种大的方式和两种方式的交互


           组成派: 先不说概念,我直接用具体的实例进行讲解.

                  比如现在很火的 SSH架构, Spring 作为控制层,Struts2作为界面展示层,Hibernate作为数据存储层,他们每个都是一个组件,他们3个组件构成了SSH架构.

               

                  下面我们再来讲概念就比较容易理解了:简单的说就是整个架构应该是多个小组件(也可以理解成 模块|架构)整合而成,而每个小架构又有自己的软甲架构,就这样一直拆分成不能拆分的组件为止。 


                  这个派系关注的是“分割和交互” ,“分割”对上SSH 中的 分割成的3个组件,“交互”对应着3个模块之间的相互关系


                  所以说: 组件+交互 就构成了软件架构中的“组成派”


          决策派:关于对“决策派”这个概念的理解我花费了好长的时间。

               

                 所谓的决策其实就是 软件架构师的决策,而这个决策的出发点是成就受益人的利益,目的是为了最终做出决策.

                举个例子来说:在一个系统架构的设计过程中通常会有如下的问题:

                        模块如何划分。 

                        每个模块的职责为何。 

                        每个模块的接口如何定义。 

                        模块间采用何种交互机制。 

                        开发技术如何选型。 

                        如何满足约束和质量属性的需求。 

                        如何适应可能发生的变化。 

                        。。。

                这一系列的问题都需要架构师来进行决策适合进行实现.

                例如,你设计一个 C/S 系统时,是不是经历着这样一个“决策树”过程:……嗯,我决定采用 C/S 架构,系统包含 Client 和 Server;……嗯,我决定将 Server 分为三层;……嗯,我决定将 Server 的引擎层划分为 N 个模块;


                例如,你设计一个 B/S 系统时,可曾有过这样的“决策过程”:……嗯,我决定 B/S前端采用 JSP 技术;……嗯,具体到 Framework 我选 Struts;……


                架构师思考的出发点是成就受益人的利益,目的就是为了最终做出决策。在开始的时候,往往会有一些明显的途径,也会有一些隐含的途径。架构师要根据所掌握的信息,结合自身的知识、经验,尽可能找出所有的途径,思考哪条途径是最合适的。在这个过程中,有一些途径会很快被排除。排除一条途径的依据,首先是软件的价值,其次是软件的假设和前提。良好的实践是记录这些思考过程中被排除的途径,特别是对于经验不是特别丰富的架构师来说,这非常重要。


                需要特别提出的是,不要因为不精通某项技术而排除可行的途径。因为一般情况下,技术对软件价值的影响是次要的。比如,当你在JSF和struts之间摇摆的时候,把这个问题提出来讨论,是更好的做法。

   

                当然在实际的开发过程中 组成和决策是交织在一起的,2个结合起来才算完美

                简单的概括就是 :组成派和决策派无非是个叫法,它们只不过是所站的角度不同罢了,你在具体设计一个架构时都会有所体现的。 


      2、让我思路更清晰的一些概念比如软件企业应该如何培养人员:

 

           1、定期分析和掌握本公司的员工能力状况、人才结构状况; 

           2、员工专项技能的渐进提升(例如架构技能、设计重构技能);             

           3、研发骨干整体技能的跨越转型(例如高级工程师向架构师、系统工程师和技术经理的转型)。 


      3、概念架构设计


         这个我第一次听说到“概念架构设计”这个概念,作者把这个概念规划的很好.大体的意思就是 “关键需求进,概念架构出”的过程。


         我们接着拿刚才说到的 SSH框架的例子,系统架构师选择了SSH框架作为系统的架构,那么他为什么要选择SSH作为架构呢?他的设计思想是什么呢? 而这些问题所涉及的内容就是软件概念架构设计了..


         概念架构应该避免的一些错误思想:

 

               概念架构≠理想化架构   实际工作当中,单纯采用功能需求驱动的方式,未免太理想化了,会造成“概念架构  =  理想化架构”的错误。 

              概念架构≠细化架构   概念架构一级的设计更重视“找对路子”,它往往是战略而不是战术,它比较策略化而未必全面,它比较强调重点机制的确定而不一定非常完整。所以,概念架构≠细化架构。 


这本书的优点:


        本书介绍了整个结构设计工作中的基本概念,适合不懂架构设计概念的程序员进行概念学习

        本书的例子很丰富很简洁(第一章的例子:其他的没看到过),很容易让人理解

 

读这本书的一些经验:

 

       这本书要深读,读取一遍和读取3遍的感觉是完全不同的,读取第一遍的感觉,这本书就是在堆概念对于新手来说没有任何的实践价值,在读取第三遍的时候才发现本书的价值。。

       去这本书之前最好去搜索一下这本书的评价,看一下别人评价的重点,毕竟理论性为主实践为辅助的书籍肯定不能像小说那样去读,不然你一点收获都没有

 

个人感觉本书适合的人群: 

       工作2年以上对软件开发有自己的想法,参与过系统的设计并且个人的发展的目标是系统架构师.


挑骨头篇(当然只是个人感觉,和这本书给本人带来的价值来说下面面的缺点完全可以忽略.)


       1、作者的文笔不太行,有些生硬,刚开始读起来一点欲望和想象都没有,整个过程中都要比较费力的去思考作者是想表达什么意思.(本书例子还算可以)

    

       2、读这本书很累,在本次提供的5本试读的图书中这本书应该是读起来最累的一本,就拿《神一样的产品经理》和本书做比较吧,段落太紧密 + 上下段落缺少些承上启下的语句,例子字体居然比正文的颜色还突出, 在本书的图片配图上面不能有效的统一,图片的样式各种各样.天马行空。本书最少有5中不同风格的图片。


       3、有些段落标题和段落没有什么关系 。例如:"1.1.2  从程序员向架构师转型 "  这个段落里面的内容都是软件行业和软件公司的现状.需要读者自己发挥想象力来关联两者的关系,还有就是有很多段落看完了之后不知道作者要表什么意思?



总结:

      读了三遍之后才知道是我想要的....

      试读了其中的三章,有种意犹未尽的感觉,这个本书为我以后的软件架构设计做了很大的铺垫.  感谢作者.


---------------------------------

备注:入门新手需要什么样子的书呢?

下面这两本是我在学习敏捷开发的时候读过的2本书。我们希望的内容应该是这样的

如果想写实践类的数据 可以参考“硝烟中的Scrum and XP ”,如果想写时间指导类的数据 请参考“Scrum checkList”


 

5
1
分享到:
评论
1 楼 aijuans3 2012-07-21  
写的不错

相关推荐

    我读软件架构设计.rar

    NULL 博文链接:https://aijuans.iteye.com/blog/1602335

    架构实战 : 软件架构设计的过程

    本书从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如 何定义需求、创建逻辑架构、创建物理架构。在第10章“进阶”...

    《软件架构设计》读书笔记

    《软件架构设计》没找到电子版。这个笔记只记录了框架要点,仍感觉到对实践的准确总结。 望拥原版者不吝赐予。

    Microsoft.NET企业级应用架构设计(2nd).pdf

    适读人群 :适合软件架构师和想成为软件架构师的人阅读  1.软件架构是一个热点话题。本书通过.NET的架构来剖析架构设计,既具有代表性,也具有实用性。  2.上一版是同类书中的畅销品,累计印刷9553,译者陈黎夫在...

    嵌入式软硬件架构,值得一读

    有关嵌入式系统软硬件开发的经典书籍,原版,值得一读

    系统架构设计师 第四版 高清 带书签

    适读人群 :本书可作为系统架构设计师和系统分析师的工作手册,也可作为软件设计师、数据库系统工程师和网络工程师进一步发展的学习用书,还可作为计算机专业教师的教学参考书。 近十年4个版本的更新,专注软考系统...

    软件架构师应该知道的97件事-读书心得分享

    1. 客户需求重于个人简历 为客户考虑,针对业务做好一个项目,得到客户的认可、...架构设计时需要考虑性能问题。第一步走错了,将来将很难回头。 5. 分析客户需求背后的意义 a) 模块的制定要了解业务及问题的本质。

    《从零开始学架构》精华读书笔记

    《从零开始学架构》精华笔记 ...3)架构设计专题:包括高性能架构设计、高可用架构设计、可扩展架构设计,这些模式可以直接参考和应用;4) 架构设计实战,包括重构、开源方案引入、架构发展路径、互联网架构模板等

    软件架构场景实战 22 讲2022年

    开篇词 学好软件架构,先从场景入手.mp4 01 冷热分离:表数据量大读写缓慢如何优化?.mp4 05 读缓存:如何减少数据库读操作压力?.mp4 08 秒杀架构:设计秒杀架构必知必会的那些事.mp4 11 熔断:如何预防一个服务...

    高级软件架构师复习提纲

    //数据的有效性不再符合要求//网络或应用程序平台是不可靠的//其他应用程序要求使用不同结构的数据//网络带宽不能满足实时数据访问的性能要求//...一定的延迟//对数据的更改一般不会存在冲突//其他应用程序只要求读访问...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版) 决战大数据时代!IT技术人员不得不读! 计文柯 著

    《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》是国内一本系统分析... 无论你是Java程序员、Spring开发者,还是平台开发人员、系统架构师,抑或是对开源软件源代码着迷的代码狂人,都能从本书中受益。

    软件工程读后感.doc

    读《软件工程》有感 软件工程学,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的 学科,它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等 方面。下面是软件工程的现状: ...

    敏捷思维-架构设计中的方法学(1)从方法论看架构设计

    在读过此文后,这些疑惑就会得到解答。 在第一篇文章中,我们来了解标题中的一些词的含义。 方法学是什么? 敏捷是什么? 为什么讨论架构? 方法论 方法论的英文...

Global site tag (gtag.js) - Google Analytics