zoukankan      html  css  js  c++  java
  • 阅读笔记

    阅读是获取知识的重要来源,这次寒假我购买了《构建之法》,已经阅读了前三章的内容,在此写下自己的阅读笔记。

      大二开始我也是正式分入了软件工程专业,跟大一时的计算机类不同,编程实现又快又简练的算法看上去确实很cool,但放在一个工程里就要考虑是否适用了。回顾大二上学期的测试情况,在完成大部分功能时,我并没有过多地使用大一时学来的“技巧”,老师也一再强调软件上最重要的是稳定性。书中给了更加系统的定义,结合上本书《从小工到专家》来看,二者都重点强调了“需求分析”,这里软件工程更像是一个服务行业,我们要按照顾客的需求去办事,因此,软件工程给我的印象是:用户需求的框架+朴实代码的填充。

      那么在写软件的时候一定要用傻瓜式的代码了么?显然不是,高级算法能极大地减少时间复杂度与空间复杂度,只是放在大型工程里,需要注意数据与其他模块的关联性。现在我们先讨论什么是“好软件”。一般情况下我们认为没有BUG的软件就是一个好软件,但显然一个没有任何bug的软件极难,甚至是不可能写出来,那么退而求其次,我们可以从多个方面去评估软件,书中列出了4个方面:用户满意度,可靠性,软件流程质量,可维护性。由于我们是按用户的需求去设计,因此有很多地方需要开发人员和用户去沟通协商,因此,我认为:好软件=技术+沟通。

      目前我们在学校完成的测试之类的,都是个人单独完成。确实,软件工程项目通常是一个开发团队去做,但不可因此忽略个人技术,这里就提到了一个重要的流程:单元测试。我个人对自己写的代码从来都是写完一个功能,随便写几个样例扔上去简单测试一下,至少书中那样详细的单元测试流程,我没有做到。但不可否认,这样的测试十分重要。闷头写完所有代码,测试最终结果时报错,当你回顾所有代码时你会感到非常头疼,倒不如一步一脚印慢慢走。这只是个人项目,如果放在开发团队上,每个人负责一个模块,自己的模块出了问题,也是很没面子的事情。此外,在开发项目上,还有一个回归测试,这个在我的理解看来,大概就是更新软件后出了bug,倒退到原来没出bug的情况。最后在流程上的重点,注释是关键,毫不夸张地说,现在让我去看之前写过的,没有注释的项目,若非时间短还有些印象,我要看懂也有些麻烦。注意一点,注释是写给别人看的,尽量写得简练一些。

      怎样成为一个合格软件工程师,最基础的技术功底一定要过硬,在通过阅读书籍和老师传授的经验之后,软件工程师要有一定的思想基础,我们是工程师,要讲究分析设计,而不是单纯的“码农”。先谈谈技术功底,衡量技术总归需要项目来看,一个软件开发的工作量和质量的衡量标准有4点:项目/任务大小;花费时间;质量如何;是否按时交付。分摊在个人身上的话,最直观的也就是完成时间了。以前我一直觉得,只要在最短时间内完成,就是最好的,但显然我考虑得少了,首先你要保证缺陷不要太多,“re-work”的时间是记入完成时间内的,同时“re-work”过多也从侧面上反应了开发者的技术不严谨,还有就是时间的测量方式,之前提到过软件上讲究稳定性,一个程序员是否有稳定且扎实的技术功底,要根据他完成工程时的时间方差来看。是的,除了直观的时间结果之外,还要通过方差来看看这个程序员是否“稳重”。

      在第三章的最后,书里提了一些很现实的东西,考级啊职业啊什么的。让我印象较深的还是“技术的反面”,想成为一个专业的程序员,我们不能一直犯低级错误,目前实现一些工程,作为大学生的我们尚且需要上网查资料,问题就在于是否产生了依赖性,要知道,我们最终的目的不是应付了事,而是把技术变成自己的。

  • 相关阅读:
    September 17th 2016 Week 38th Saturday
    【2016-09-16】UbuntuServer14.04或更高版本安装问题记录
    September 16th 2016 Week 38th Friday
    September 11th 2016 Week 38th Sunday
    September 12th 2016 Week 38th Monday
    September 10th 2016 Week 37th Saturday
    September 9th 2016 Week 37th Friday
    c++暂停
    八皇后问题
    ( 转转)Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
  • 原文地址:https://www.cnblogs.com/cdl-sunshine/p/14910454.html
Copyright © 2011-2022 走看看