《构建之法》读后感

        开篇讲到一个概念即:软件=程序+软件工程。
        书中说到,程序指的是源程序,也就是基于数据结构上的实现算法,这是咱们软件学生的基本功。程序员须要对代码不断编写,程序愈来愈庞大,就须要源代码管理。程序是要正确运行的,就须要软件测试。咱们写的程序须要让别人的看得懂,就得运用程序理解。程序总会出现BUG,就须要软件维护。掌握一系列过程须要一个项目经理,称为项目管理。
        因此,构建管理(数据结构+算法),源代码管理,软件测试,软件维护,项目管理,需求分析这些环节构成了软件工程。
        咱们在学校作一些小项目的时候,每每没有用到软件工程去进行开发,运营,维护。甚至有的不通过需求分析,就一边打代码一边构造需求,软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营,维护过程当中。
       
       我的技术和流程
        如今的开发每每是不少人合做完成一款软件应用,不一样的开发人员之间就存在依赖关系。我须要调用你写的代码模块,你也须要调用我写的代码模块,可是由于不了解模块的变化,模块没有达到高内聚低耦合形成了对其余模块的影响,每每会产生错误。在肯定发布这个模块的时候,要通过完整的单元测试,为了达到事半功倍的效果,咱们能够把规格说明说写得详细一些,详细到各项要求均可以表示为一个单元测试用例。
       卡耐基梅隆有一套我的开发流程,很适用于咱们作我的开发。接到项目以后咱们能够按照如下几个步骤来进行,
       估算时间--->需求分析--->生成设计文档--->设计复审--->代码规范--->具体设计--->编写代码--->代码复审--->代码测试--->记录用时--->测试报告--->计算工做量--->总结--->讨论改进。随着工做年限的增加,编码所占的比例会愈来愈小,由于开发再也不是一味地编码,测试所占的比重会愈来愈高,保证质量要求。
 
       软件工程师的成长
       那么,咱们为何要用软件工程呢?由于软件工程把开发,运营,维护的过程当中的技术,作法,习惯和思想结合到一块儿(软件开发流程)提升了软件开发,运营,维护的效率。同时,运用软件工程,也减轻了咱们的工做量,避免没必要要的返工。
      怎么提升技能?经过不断的努力,把那些低层次的问题都解决了,变成不用通过大脑的自动操做,而后才有时间和脑力来解决较高层次的问题。咱们要精通低层次问题(int[] arr仍是int arr[],ArrayList 仍是 Array<T>),中层次问题(使用何种架构),高层次问题(效能优化。。。。。。).
 
      两人合做
      如今的开发已经不多是单独完成的,最少也是两我的了。咱们写代码不只仅要让机器了解,更要让别人看得懂,让你的队友看得懂。这就须要代码规范。代码规范分为代码风格规范和代码设计规范。代码风格规范包括:缩进,行宽,{}的位置,分行,命名,大小写。其中我认为比较重要的有:每一个语句只定义一个变量,作一个操做。即使IF和ELSE语句只有一句,也使用{}。在变量名中加入下划线表示做用域,如m_iAge。
       代码设计规范不光是程序书写的问题了,并且牵涉到程序设计,模块之间的关系,设计模式等等。
       一个函数只作一件事。
       按照public,protected,private顺序来讲明类中的成员。
       在小型软件开发过程当中,有一种模式叫作结对编程,在这种模式下,一对程序员一块儿完成设计,代码,测试,文档工做,因为每一个工做都被两双眼睛看过,程序的初始质量取决于各方面水平较高的那一位程序员,在整个开发过程当中不断地进行着潜移默化的复审。
 
       团队和流程
        什么是团队?团队有一致的集体目标,团队要一块儿完成这个目标。团队成员有各自的分工,互相依赖合做,共同完成任务。刚开始创业时,一些程序员聚在一块儿想写出好的程序,一拥而上一块儿解决问题,这是最简单的模式(一窝蜂模式)。逐渐地,团队就会过渡到如下模式。
        主治医师模式:有一位首席程序员,负责处理主要模块的设计和编码,其余成员从各类角度支持他的工做。
        社区模式:有一些志愿者参与本身感兴趣的项目,不拿报酬,如linux社区。
        业余剧团模式:这样的团队在每个项目中,不一样的人会挑不一样的角色。在下一个项目中,这些人也许会完成换成另一个角色。团队有个老大指挥一切。
        功能团队模式:具有不一样能力的同事们平等协做,共同完成一个功能。
        一块儿作软件,总要有一些开发方法,好比:
        谢了再改模式:不须要太多的知识,直接上手写代码,一直改,直到发布。
        瀑布模型:单向不可逆,最终产品直到最后才出来。按照需求分析-编码测试-发布一步步走下来。力求一次完成。
        RUP统一过程:在大的尺度上像瀑布模型,在每一个阶段内像迭代模型。初始阶段:分析系统大概的构成,和什么样的外部实体打交道,大体的成本和预算是多少。细化阶段:编制项目计划,确认主要的功能,性能。构造阶段:把全部的功能集测试并发布为Beta版。交付阶段:基于用户的反馈,不断进行修改。
相关文章
相关标签/搜索