读《构建之法 现代软件工程(第二版)》

1、读后感:

   对于计算机相关专业的学生来说,我们学习了很多的专业课程,像编程语言、算法、数据结构、编译原理、软件工程等。但是我相信很多同学和我一样仍然对于我们现在学到的课程在之后有什么用心存疑惑。也就是说,大家都觉得理论和实践之间有着不可逾越的鸿沟。然而在读到邹欣老师的这本书《构建之法 现代软件工程(第二版)》的时候,我解决了我一直纠结的这个问题。

  因为作业要求,第一遍是快速阅读,虽然仍然对书里的一些内容有些疑问,但是仍然觉得这本书有很多特点:

  (1)文字+图画;很多专业书都有一个问题就是整本书都是字,虽然不乏内容优质的书但是很容易让读者在阅读的时候困倦疲惫,我一直接触到额计算机相关的书大部分也都是那样,所以邹欣老师新颖的编书模式很吸引我,也是我一个星期能读完这本书的原因之一。本书包含了很多有趣的图片,读者也可以通过这些图片加深对相关概念的理解。

  (2)理论+实践;本书介绍了软件工程的相关概念,如:软件工程、单元测试、软件开发流 程、敏捷开发、软件需求、用户体验、软件测试、质量保障等。然而在介绍这些基本概念的同时,邹欣老师也全面地诠释了它们在实际的研发工作中是如何表现的,它们又是如何与每个开发和测试人员息息相关的。在介绍这些概念的时候,邹欣老师经常举例,也使得大家更加的容易理解。

  (3)幽默+严谨;软件工程里面的概念比较的枯燥和单调,邹欣老师为了增强学生的兴趣,描述的语言十分幽默诙谐,比如书中用“阿超”、“国栋”、“小飞”、“小李”等角色之间的对话来揭示一个概念的本质,通过他们之间风趣的对话又加深了对相关概念的理解。同时有作为专业技术的指导书,邹欣老师在很多技术介绍时也都使用了数据,真实情况等分析,严谨而认真。

2、个人疑问:

  (1)我们在做一个软件对软件的质量应该有多高的要求?当我们的代码的规模很大时基本上不可能做到没有bug。很多软件在还未修复调试好的时候就发布使用,虽然基本功能都能完成,但是还是有很多bug,最后会导致修改一些bug成本太大,或者造成的影响太大。但是我们如果一味追求高质量,一直压着修复调试发布太晚也会造成不少的损失。我们应该如何把握好这之前的度,能够较为和平的维持双方关系?

  (2)在团队项目中,工作量如何分配?如果是一个专业成熟的团队,每个人技术都足够优秀,完全可以考虑小组成员平均分配,或者按照个人能力技术问题按比例分工。但是对于我们现在分工的团队,在我们小组分工的时候完全把握不到这个度,甚至都不清楚都需要做什么工作,个人能力的认知上可能也有缺陷。

  (3)关于bug与测试。从最开始接触计算机编程我们就明白不可能有人的程序编的毫无缺陷,bug是一直都会有的。但是怎么判断这些bug的重要程度?怎么确定对某个bug的修改不会影响其他功能?怎么分析这个bug对于整个程序的影响?有没有一种比单元测试更简单快捷的方式来保证所有单元的正确性?即使我们经过了足够的测试,还是不能保证在实际运行中不会出错,尤其是当开发面向对象的网站或者软件时候,因为使用对象的多样性会遇到很多问题 。那么在维护阶段出现bug有没有比打补丁更规范适用的方法?

  (4)我们除了写程序也要学会分析程序,在很多时候分析程序性能要比写程序更重要,书里面也很多介绍了代码模块的执行效率,着重优化耗时长内存大的部分,也因为我们需要优化一些基础代码然后有了数据结构和算法,但是很多时候你不会第一时间就想到一个合适的算法适合这个功能,如何根据测试结果思考一个合适的算法呢?

  (5)书中有一段对话很有意义,大概讲一个新人进入公司看到前辈写的一些程序觉得很垃圾想要推到重写,这时候一个老员工告诉他他现在看到的这些程序也是前辈刚进入公司的时候觉得程序很不好改写的结果,反而还没有原来的好用。我们在前人的基础上去使用这些软件但是不代表我们觉得他不好我们就有能力写的比他好,所以该如何正确对待别人的程序呢?可能有你觉得不好的地方,但是肯定也有你要学习的地方。

时间: 2024-12-15 01:42:49

读《构建之法 现代软件工程(第二版)》的相关文章

深入理解Java虚拟机到底是什么

摘自:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的

(1) 深入理解Java虚拟机到底是什么?

好文转载:http://blog.csdn.net/zhangjg_blog/article/details/20380971 什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的.但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了.在本文中,我会写下我对虚拟机的理解.因为能力所限,可能有些地方描述的不够欠当.如果你有不同的理解,欢迎交流. 我们都知道Java程序必须在虚拟机上运行.那么虚拟机到底是什么呢?先看网上搜索到

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

jvm--深入理解java虚拟机 精华总结(面试)(转)

深入理解java虚拟机 精华总结(面试)(转) 一.运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二. hotspot虚拟机对象 4 2.1 对象的创建 4 检查 4 分配内存 4 Init 4 2.2 对象的内存布局 4 2.3 对象的访问定位 4 使用句柄访问 4 使用直接指针访问 5 三. OutOfMemoryError 异常 5 3.1 Java堆溢出 5 3.2

深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

周志明的<深入理解Java虚拟机>很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉.但知识不得不学,于是天天看,反复看,就慢慢的理解了.我其实不想说这种硬磨的方法有多好,我甚至不推荐,我建议大家阅读这本书时,由浅入深,有舍有得,先从宏观去理解去阅读,再慢慢深入,有条不紊的看下去.具体来说,当你看书的某一部分时,先看这部分的章节名,了解这部分这一章在讲什么,然后再看某一章,我拿"类文件结构"这一章来说,我必须

读深入理解Java中的String(包括JVM)一文总结和提升

读深入理解Java中的String(包括JVM)一文总结和提升 摘要:String作为Java语言中的字符串模拟类,无论是实际的编程工作还是笔试面试过程,都需要我们都String类非常熟悉,对于String类的大部分字符串操作方法,都必须达到熟练运用的程度才行.但是,笔试和面试过程中,面试官往往喜欢问一些String特性相关的题目,来考察面试者对于String基础知识的掌握是否牢固.(本人尚未研读深入理解JVM这本书,分析JVM都是查看网上资料来分析的,若在接下来的内容有分析不到位的地方请见谅和

《深入理解Java虚拟机》:类加载的过程

<深入理解Java虚拟机>:类加载的过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 下面详细讲述类加载过程中每个阶段所做的工作. 加载 加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情: 1.通过一个类的全限定名来获取其定义的二进制字节流. 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构. 3.在Java堆中生成一

【深入理解Java虚拟机】类加载机制

本文内容来源于<深入理解Java虚拟机>一书,非常推荐大家去看一下这本书. 本系列其他文章: [深入理解Java虚拟机]Java内存区域模型.对象创建过程.常见OOM [深入理解Java虚拟机]垃圾回收机制 1.类加载机制概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在java中,类型的加载.连接和初始化过程都是在程序运行期间完成的,这种策略虽然会带来一些性能开销,但是却为jav

深入理解java虚拟机笔记(一)-java内存区域与内存溢出

1. 前言 这是深入理解java虚拟机一书的笔记,来自第二章.因为这本书讲的比较深奥,这是第二次看,需要记录一下笔记. 2. 运行时数据区域 java虚拟机所管理的内存分为以下几个区域. ps:图片来自网络 2.1 程序计数器 程序计数器是一块较小的内存空间,他可以看做是当前线程所执行字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选去下一条要执行的字节码指令,分之.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成. 这块内存是线程私有的内存. 如果线程在执行

《深入理解java虚拟机》:类的初始化

深入理解java虚拟机>:类的初始化 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中验证.准备.解析3个部分统称为连接.类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 加载.验证.准备.初始化和卸载这5个阶段的顺序时确定的,类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的