《构建之法:现代软件工程》读后感

比起一般的教学类书籍,这本书更像是一本传记小说,作者邹欣以自己或者说一些典型的软件工程师为例子,详细介绍了一个软件工程师的工作内容,全书给我的感觉就是以一种对话或者说讲故事的方式在告诉读者们,如何学好软件工程专业,以及如何成为一名优秀的软件工程师,如何开发出“足够好的”软件。

在全书开始的地方,就有一段话吸引了我的注意,哲学家的宗旨是:我思,故我在。科学家的宗旨是:我发现,故我在,工程师的宗旨是:我构建,故我在。一个工程师一定要时时刻刻把构建的思想贯彻在工作与学习中。接着书中提到衡量一个软件好坏的很大的一个标准就是软件存在的BUG的多少,BUG的多少可以直接衡量一个软件的开发效率、用户满意度。可靠性和可维护性。接着我读到了代码规范的重要性,代码规范可以分为两个部分,①代码风格规范,②代码设计规范。之后多次读到了分工与合作的重要性,因为软件的开发不是一个人的事情,一定懂得合作要有团队意识。

看了前面的一部分之后,我开始反思自己的学习,大一学了C和C++,暑期刚刚接触的java,可以说java我还停留在“HelloWorld”的阶段,看到后面对软件工程师的概述,我知道我差的太多了,我不承认我脑子笨,但是我承认我有时候的方法是不够灵活或者说是错误的,容易钻牛角尖,我渐渐意识到了合作和讨论的重要性,我要试着去和同学交流思想,当然绝不可能是抄袭代码。书中写了好多好多代码的规范性问题,我发现有好多是上学期老师一直在强调的,但是我并没有放在心上,只是一味的认为只要我程序可以运行,我可以交作业就ok了,但是我意识到这是错误的想法。当程序足够大或者说程序有好几个人共同完成,那么代码的可读性就变的非常关键,代码是一种语言,机器识别的时候只需要0101就可以了,但是人在看的时候是绝对无法完成这种转换的,所以代码的规范性就十分重要了。

后面讲到了代码复审,这个过程就是检查bug,优化算法的过程,我确实也会从头到尾检查代码是否有语法错误,直到我的程序可以正确运行,可以完成题目的要求,从来或者说我很少关注代码的长度和算法是否精简,书中提到,代码复审要反复检查代码的逻辑问题,算法优化问题。

有一个好的团队以及明确的开发流程绝对为你的项目井上添花。众所周知,需求分析绝对是软件工程的一个重要部分,只有更好的了解用户的需求才能做出用户所想要的东西,邹欣老师就给了我们关于获取用户需求的一些小技巧,对于我们来说也是非常的适用。还有关于软件的设计以及实现,其中包括了图形建模方法以及一些形式化的方法。对于一个好的软件产品来说,必不可少的就是用户体验。只有拥有良好的用户体验,它才能算得上是一个好的成功的产品,我们应更多的从用户方面考虑问题并进行情感设计。当然,软件工程还有一个重中之重的就是软件测试,除了一些基本的软件测试方法之外,还说到了一些似是而非的测试观念,让我对软件测试有了更加深刻的认识。

后面几章主要在讲一个软件工程的从业者要怎么做,讲了IT行业的创新,一个软件开发的全部过程,软件需求分析,软件设计和实现,用户体验,软件测试,质量保障,以及最后的稳定和发展阶段。最后一章很有力度,讲到了人、绩效和职业道德,全书的思想得到进一步升华,猪、鸡和鹦鹉的故事,萝卜与白菜的例子。深刻解析了不同的软件工程参与者的状态,刷新了我的认知。通过阅读这本书,我认识到自己懂的太少,而且又很懒,不愿意自己去尝试,不能严格要求自己,这本书告诉了我很多很多,确实是一本软件人必读书!

Java学习日报8.6的更多相关文章

  1. Java学习日报9.22

    /* * 信1905-2班 * 杨传伟 * 2020.9.22 * 20194074 * 账号密码默认 666666 */package atm; import java.util.*;public ...

  2. Java学习日报10.1

    学习内容一 ********************************** 代码 **********************************public class EnumTest ...

  3. Java学习日报7.8

    public class 定义要求文件名和类名保持一致,一个*.Java文件只允许有一个public class定义! 主方法是一切程序的起点, public static void main(Str ...

  4. Java学习日报10.2

    1 package random; 2 import java.util.*; 3 import java.math.*; 4 public class Com { 5 6 public static ...

  5. Java学习日报7.7

    今天进一步学习了eclipse软件,遇到了几次程序运行不成功的问题,检查之后运行成功!明天继续学习程序逻辑控制!

  6. Java学习日报9.30

    ********************************** double类型精度问题 ********************************** 1 package test; 2 ...

  7. Java学习日报 9.29

    package random;import java.util.*;import java.math.*;public class Com { public static void main(Stri ...

  8. Java学习日报8.5

    package student;import java.util.*;public class student { Scanner sc=new Scanner(System.in); private ...

  9. Java学习日报8.2

    package user;import java.util.*; public class User { private String kouling; private String u; priva ...

随机推荐

  1. js声明 对象,数组 的方法

    i={} 对象字面量 等同 i = new Object();i=[] 数组字面量 等同 i = new Array();

  2. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  3. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项的子项索引、删除子项的方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项: 获取子项索引 可通过index ...

  4. 使用pip安装的Python扩展模块是从哪里下载的?

    对于初学者才开始使用Python安装扩展模块时,发现只要输入扩展模块名就可以安装,无需先下载再安装,不免疑惑那些要安装的软件是在哪里下载的?是否可以从别的地方下载? 这个问题答案如下: pip安装第三 ...

  5. JAVA课堂作业(2019.10.14)

    一. (1)代码 package class20191014; import java.util.Scanner; public class ClassHomework { public static ...

  6. 百度前端技术学院-基础-day20-21

    第二十到第二十一天:让你和页面对话 task1 控制元素的显示及隐藏 实现以下功能: 当用户选择了 School 的单选框时,显示 School 的下拉选项,隐藏 Company 的下拉选项 当用户选 ...

  7. js原生方法promise的实现

    一会儿就要回家过年了,再来手写一个promise吧,要不等着下班真的煎熬... <!DOCTYPE html> <html lang="en"> <h ...

  8. idea2020.2.x/2020.3.x最新破解版方法教程无限永久重置插件激活码

    idea是一个java开发工件,相信我所有的朋友都用过.本教程教你做到完美,安全,永久.破解 idea2020.2.x和idea2020.3.x的所有版本绝对是100% 激活,支持Windows Ma ...

  9. 【题解】「CF363A」Soroban

    哎呀呀,咕值要掉光了,赶快水篇题解( solution 这题就是个纯模拟,首先我们根据输出样例看一下输出算盘的规则. 看数最大的 720 ,我们发现,输出的算盘张这样(之所以我不用代码框而用 \(\K ...

  10. Python 中的哈希表

    Python 中的哈希表:对字典的理解   有没有想过,Python中的字典为什么这么高效稳定.原因是他是建立在hash表上.了解Python中的hash表有助于更好的理解Python,因为Pytho ...