《构建之法》的读后感
2016-03-25 12:45
183 查看
开篇就讲到一个概念即:软件=程序+软件工程。
书中说到,程序指的是源程序,也就是基于数据结构上的实现算法,这是我们软件学生的基本功。程序员需要对代码不断编写,程序越来越庞大,就需要源代码管理。程序是要正确运行的,就需要软件测试。我们写的程序需要让别人的看得懂,就得运用程序理解。程序总会出现BUG,就需要软件维护。掌握一系列过程需要一个项目经理,称为项目管理。
所以,构建管理(数据结构+算法),源代码管理,软件测试,软件维护,项目管理,需求分析这些环节构成了软件工程。
我们在学校做一些小项目的时候,往往没有用到软件工程去进行开发,运营,维护。甚至有的不经过需求分析,就一边打代码一边构造需求,软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营,维护过程中。学习高软很难,难在哪里?我想有以下几点:1.软件复杂型,安卓开发项目中,定义了10个20个类我们都很好理解整个程序的运行过程,类与类之间的调用关系,但是一旦到了上百上千个类,模块之间的依赖几何级上升。2.不可见性,有些错误如JAVA运行时异常的BUG是很难调的。
现在的开发往往是很多人合作完成一款软件应用,不同的开发人员之间就存在依赖关系。我需要调用你写的代码模块,你也需要调用我写的代码模块,但是因为不了解模块的变化,模块没有达到高内聚低耦合造成了对其他模块的影响,往往会产生错误。在确定发布这个模块的时候,要经过完整的单元测试,为了达到事半功倍的效果,我们可以把规格说明说写得详细一些,详细到各项要求都可以表示为一个单元测试用例。
卡耐基梅隆有一套个人开发流程,很适用于我们做个人开发。接到项目之后我们可以按照以下几个步骤来进行,
估算时间--->需求分析--->生成设计文档--->设计复审--->代码规范--->具体设计--->编写代码--->代码复审--->代码测试--->记录用时--->测试报告--->计算工作量--->总结--->讨论改进。随着工作年限的增长,编码所占的比例会越来越小,因为开发不再是一味地编码,测试所占的比重会越来越高,保证质量要求。
那么,我们为什么要用软件工程呢?因为软件工程把开发,运营,维护的过程中的技术,做法,习惯和思想结合到一起(软件开发流程)提高了软件开发,运营,维护的效率。同时,运用软件工程,也减轻了我们的工作量,避免不必要的返工。
怎么提高技能?通过不断的努力,把那些低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。我们要精通低层次问题(int[] arr还是int arr[],ArrayList 还是 Array<T>),中层次问题(使用何种架构),高层次问题(效能优化。。。。。。).
书中说到,程序指的是源程序,也就是基于数据结构上的实现算法,这是我们软件学生的基本功。程序员需要对代码不断编写,程序越来越庞大,就需要源代码管理。程序是要正确运行的,就需要软件测试。我们写的程序需要让别人的看得懂,就得运用程序理解。程序总会出现BUG,就需要软件维护。掌握一系列过程需要一个项目经理,称为项目管理。
所以,构建管理(数据结构+算法),源代码管理,软件测试,软件维护,项目管理,需求分析这些环节构成了软件工程。
我们在学校做一些小项目的时候,往往没有用到软件工程去进行开发,运营,维护。甚至有的不经过需求分析,就一边打代码一边构造需求,软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营,维护过程中。学习高软很难,难在哪里?我想有以下几点:1.软件复杂型,安卓开发项目中,定义了10个20个类我们都很好理解整个程序的运行过程,类与类之间的调用关系,但是一旦到了上百上千个类,模块之间的依赖几何级上升。2.不可见性,有些错误如JAVA运行时异常的BUG是很难调的。
现在的开发往往是很多人合作完成一款软件应用,不同的开发人员之间就存在依赖关系。我需要调用你写的代码模块,你也需要调用我写的代码模块,但是因为不了解模块的变化,模块没有达到高内聚低耦合造成了对其他模块的影响,往往会产生错误。在确定发布这个模块的时候,要经过完整的单元测试,为了达到事半功倍的效果,我们可以把规格说明说写得详细一些,详细到各项要求都可以表示为一个单元测试用例。
卡耐基梅隆有一套个人开发流程,很适用于我们做个人开发。接到项目之后我们可以按照以下几个步骤来进行,
估算时间--->需求分析--->生成设计文档--->设计复审--->代码规范--->具体设计--->编写代码--->代码复审--->代码测试--->记录用时--->测试报告--->计算工作量--->总结--->讨论改进。随着工作年限的增长,编码所占的比例会越来越小,因为开发不再是一味地编码,测试所占的比重会越来越高,保证质量要求。
那么,我们为什么要用软件工程呢?因为软件工程把开发,运营,维护的过程中的技术,做法,习惯和思想结合到一起(软件开发流程)提高了软件开发,运营,维护的效率。同时,运用软件工程,也减轻了我们的工作量,避免不必要的返工。
怎么提高技能?通过不断的努力,把那些低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。我们要精通低层次问题(int[] arr还是int arr[],ArrayList 还是 Array<T>),中层次问题(使用何种架构),高层次问题(效能优化。。。。。。).
相关文章推荐
- 修改Android模拟器RAM大小方法
- 关键字 static
- 如何使用reCaptcha(2.0版本)来做网站验证码
- 深入理解Java的接口和抽象类
- 日志记录---log4j详解
- CentOS6.7+Python+Flask开发框架部署
- 用juniversalchardet解决爬虫乱码问题
- centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
- Xcode 调试之方法大全
- 《目送》读后感
- VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland 水题
- centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
- centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
- RGBD物体识别(4)--使用opencv3读取kinect数据
- java中最小生成树的实现
- maven 笔记
- 詩經神學國際論文1:日能習財武經
- C++作业2
- 移动联通电信运营商手机号段分配
- leetcode 234: Palindrome Linked List