1、读后感:

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

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

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

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

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

2、个人疑问:

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

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

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

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

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