构建之法阅读笔记01

第一章:概论

为什么我们要反复的敲写、去学习已经存在的方法函数,为什么不能直接调用别人已经实现的算法来完成我们的项目呢,最初学习编程的时候我也有过这样的想法,但是通过本章的阅读学习我对这些问题有了深刻的认识。那就是软件=程序+软件工程,我们程序员用来安身立命的程序是别人能够看得懂,能够维护的程序,程序算法只是基础,我们要加上软件工程的相关知识做出一款款令用户满意的软件,切实的为用户带来方便,切实的给用户解决实际问题。一款看似简单的软件,其不但要有合理的软件架构、软件设计与实现、还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、连接参数等等,这些都是软件构建的过程。只有从基础的程序算法学习做起,才能够将功能做好,而要设计出开发出一款令用户满意的软件,还需要软件工程相关知识。我们必须要学好程序算法,打牢基础,这样才能够在以后的开发过程中避免出现低级错误,才能够做出真正的软件,而不是代码的累计体。

书中讲到软件的五个特殊性:

复杂性、不可见性、易变性、服从性、非连续性。软件工程涉及到方方面面,极其复杂的关系和知识,其是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上。之前我们所了解的软件就是可以实现某个功能的小东西,而现在我对软件有了重新的认识,软件包括太多太多。我过去做的软件存在太多太多问题,满意注重用户体验,存在很多bug,正如书中所言:bug的多少可以直接衡量一个软件的开发效率/用户满意度、可靠性、可维护性。其次我的代码健壮性太差太差,这些都是我以后要去学习去解决的问题。还记得老师说过,一款软件的好坏取决于用户量的多少,而好的用户体验,代码健壮性高的软件其用户量也一定会大。

软件一定是用来解决用户的需求,而不是凭空想象出来的,NABCD中,NEED即指需求。软件开发的流程也一定是有预计时间的,在这点上我之前做的不好,我从来不计算自己在做某一题某一项目所花费的时间,对自己的效率能力完全的没有概念,以后开发过程中应该尽量严格的掌握时间,不断的了解自己的开发效率。

第二章:个人技术和流程

程序模块化对于开发者来说非常的重要,因为一个庞大的项目有还能多人来完成,他们之间相互依赖,方法调用方法,这样必须要保证每个人的方法都必须是稳定的,质量有保证的,所以我们要学会单元测试。并且要写一段测试一段,而不能够等到最后再来测试,往往在软件开发后期发现的bug修复起来要花费更多的时间和精力。好的单元测试必须能够准确快速的保证该模块的基本功能的实现,并且尽量做到自己来做单元测试。要保证单元测试的独立性,可以认为狗仔数据,来保证单元测试提高到独立性和功能的基本实现。文中多次提到GitHub的使用管理,存放源程序和其他文档,到目前我还没有注册实现自己的GitHub,我应该重视GitHub的使用,这是自己的战利仓库。

第三章:软件工程师的成长

1. 积累软件开发知识,提高技术技能。这一点我深有体会,在开发web项目中,我们使用的是eclipse软件,这款软件我没有汉化,所以导致很多问题的出现,在前期一个项目要配置的东西,导入的jar包,配置tomcat等都是对这款软件的认识,后来我发现一款设计前端非常好用的软件 sublime,其做前端页面的美工等非常的快捷实用,不需要eclipse那样繁琐运行慢等问题,对开发平台的熟练掌握也是软件工程师的成长,我应该尝试着去了解去使用更多的开发软件,这样我就可以在做项目的某一部分选择最适合的软件来进行开发。

2. 积累问题领域的知识和经验,博客园对于it人士来说是发表自己文档,问题解决办法等场所,我时常会在里边寻求出现问题的解决方法,这样也不断的积累对问题的认识,对问题的解决。

3. 对通用的软件设计思想和软件工程思想的理解。

4. 提升职业技能,这些技能很重要,但是在大学里边学习的还是少之又少,希望以后在企业可以得到锻炼和培养。

5. 实际成果

对工作效率和质量的评估,人月这个词汇可以有效的评估程序员的工作效率。

原文地址:https://www.cnblogs.com/zjl-0217/p/11019609.html