软件工程网络15个人阅读作业2(201521123084 林正晟)
本周作业
通读《构建之法》后所提的五个问题:
首先说一点,由于我的书是不知道从哪里搞来的,所以原本在书本最后的“给任课老师和助教的建议”被提前到了书本的前面几页
很有可能是盗版书。。。所以在本篇作业当中,页码会有偏差,一切以标题为准。
Q1: 1.2 软件工程是什么(第一章“概论”)P22
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护的上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工程设计和用户界面设计。
以上是书中原文对软件工程的解释。
讲实话,如果没学这本书,我不会想到软件工程有包含这么多知识点。我最先开始,认为这门课可能就是教一教我们如何去开发一个软件,然后就是无穷无尽的打代码。但上完两堂课后,我发现我错了,这门课并不是要让你真正的去无尽的编程,而是想让看这本书的人去学会软件开发流程的思想。"软件 = 程序 + 软件工程",这本书,从基本概念到职业规划,从瀑布模型到敏捷开发,从软件测试到质量保证,从代码规范到用户体验,只要是软件开发会涉及的方面,这本书都涉及到了。但是我一直都有一个疑问,那就是软件工程为什么需要掌握这么多思想?这对以后的实际软件开发会带来多少的好处?
Q2: 2.1.2 好的单元测试的标准(第二章“个人技术和流程”)P41
单元测试应该覆盖所有代码路径
单元测试应覆盖所测单元的所有代码路径,包括错误处理路径。为了保证代码覆盖率,单元测试必须测试公开的和私有的函数和方法。…………100%的代码覆盖率并不等同于100%的正确性!
对于我这种代码白痴,我想提的第一个问题:什么是代码覆盖率?(。。。)
第二个问题:100%的代码覆盖率并不等同100%的正确性,那么要怎么样才能保证100%的正确性?
Q3: 4.1 代码规范 (第四章“两人合作”)P74
“代码规范”可以分为两个部分:
1.代码风格规范,主要是文字上的规定,看似表面文章,实际上非常重要。
2.代码设计规范,牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。
我可以明白代码规范在软件开发当中是十分重要的,但我想问:
- 代码的规范性,国内国际每个公司都一样吗?
- 有的规则太多,如何做到全部检查出来?
Q4: 4.5.2 为什么要结对编程?(第四章“两人合作”)P89
每人在各自独立设计、实现软件的过程中不免要犯这样那样的错误。在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少很多,程序的厨师质量就会高很多,这样会省下很多以后修改、测试的时间。具体地说,结对编程有如下的好处:
1.在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。
2.对开发人员自身来说,结对工程能带来更多的信心,高质量的产出能带来更高的满足感。
3.在企业管理层次上,结对编程能更有效地交流,相互学习和传递经验,分享知识,能更好的应对人员流动。总之,如果运用得当,结对编程可以取得更高的投入产出比(Return of Investment)
其实,书中的原文已经将结对编程的好处说得十分清楚了,我也明白作者的意思。但我觉得,作者的想法一切都是理想化的。如果将结对编程放在我们现实的学习中,结对编程真的会对我们造成很大的益处吗?
- 如果两个编程经验都不多的同学结了对子,是不是就等于这一对垮了呢?
- 如果是“一神带一坑”,这个编程能力较高的同学,会不会觉得这种方式拖累了他的软件开发过程?
- 如果两者出现分歧,并且谁都只认同自己的看法时,结对编程是不是就没什么优点可言了?
Q5: 8.2 软件产品的利益相关者(第八章“需求分析”)P180
软件开发不可能一次性满足所有利益相关者的要求,但是我们一定要让相关角色在这个阶段有机会提出他们的需求和意见。同时,要弄清楚“他们想要从软件中得到什么”。
我们做软件开发,最终的目的,就是将软件交付给用户。而用户的体验好坏,直接决定了我们软件的成功或者失败。因此,用户需求确实是我们需要了解的大头。
- 所以我们应该如何去获取用户对软件的体验?
- 我们应该如何改进和维护软件的功能来贴近用户的需求?
- 用户究竟是对前端界面的感受更强,还是对软件的功能?