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

我读《软件架构设计》

阅读更多


      本人现已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

    《我读软件架构设计》这个压缩包文件名为“我读软件架构设计.rar”,结合其标签“源码”和“工具”,我们可以推测这是一个关于软件架构设计的学习资料,其中可能包含源代码示例和辅助工具。虽然描述部分为空,但从...

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

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

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

    《硬件与软件架构》这本书很可能深入探讨了如何设计高效、可靠的嵌入式系统。书中可能涵盖了以下几个关键知识点: 1. **嵌入式系统基础**:介绍嵌入式系统的定义、分类和应用范围,包括实时性、低功耗、小型化等...

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

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

    软件架构与设计《架构师入门经典系列》

    在本文中,我们将深入探讨软件架构的重要性和设计原则,以及如何通过有效的架构设计提升软件系统的质量和可维护性。 软件架构是软件开发过程中的关键一步,它定义了系统的主要组成部分、它们之间的相互关系以及指导...

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

    在进行架构设计时,应充分考虑性能问题,因为一旦架构设计的初步阶段出错,未来可能会难以纠正。架构师必须深入分析客户需求,理解业务的核心,从而设计出既能满足当前需求又能适应未来变化的软件架构。在面对复杂性...

    WEB框架——REST原理(架构风格与基于网络的软件架构设计)

    **REST(Representational State Transfer,表述性状态转移)**是一种软件架构风格,广泛应用于Web服务的设计,特别是互联网应用程序。REST风格的架构强调简洁、高效和可扩展性,它基于HTTP协议,利用其固有的方法...

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

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

    软件架构文档模板

    它不仅限于介绍项目的背景信息,更重要的是说明文档本身的目的,比如它将如何帮助读者理解软件架构设计的关键要素。此外,还应列出不同类型的读者(例如项目经理、开发人员、测试工程师等),并明确指出他们应该重点...

    百度林仕鼎:架构设计与架构师(演讲稿)ppt

    存储是架构设计中的重要组成部分,演讲稿中提到了几种典型的存储模型,包括基于文件、对象和表的存储结构,以及不同的访问模式如实时读写、批量写实时读、流式读和范围查询。此外,演讲稿还深入探讨了存储的矛盾之处...

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

    架构设计是软件开发中的重要环节,它涉及如何将软件系统划分为各个组成部分,以及这些组成部分如何相互协作,以实现系统功能并满足非功能性需求。在《从零开始学架构》读书笔记中,总结了许多架构设计的关键知识点,...

    软件架构设计---软件架构文档化

    软件架构设计是软件开发过程中的核心环节,而软件架构文档化则是将架构设计思路和决策以文档的形式记录下来,方便团队成员沟通、理解和维护。本文主要探讨了软件架构文档的使用者、合理的编档规则、视图编档、跨视图...

    Microsoft.NET企业级应用架构设计 第二版PDF 高清

    《Microsoft .NET 企业级应用架构设计》第二版是一本深度探讨.NET平台下企业级系统构建的权威著作。这本书详细阐述了如何运用先进的设计原则和模式来构建高效、可维护且易于扩展的软件系统。作者深入浅出地讲解了...

Global site tag (gtag.js) - Google Analytics