软件基础第二次作业

作业所属课程 https://edu.cnblogs.com/campus/zjlg/rjjc20
作业的目标 < 通读《构建之法》、提出三个疑问>
姓名-学号 < 张业奔 >-< 2018330301067 >

问题一:未来软件开发是否会因为 AI 等技术的发展,从而大大提升开发速度 ?

  • 出自第一章概论P9

    我们知道许多计算机硬件的能力大致以每两年提高一倍的速度发展,而软件开发的流程却没有这样的提速过程,开发成本也没有下降,为什么 ?

  • 证据、资料:
    去年年初,微软公司推出了一款名为 DeepCoder 的机器学习系统,同时宣称该系统具有自我编码的能力,这一举动又将人工智能的发展向前推进了一步。正如人工智能是建立在众多机器学习或深度学习方法之上一样,DeepCoder 创建的代码也是基于大量现有代码示例,研究人员通常会用这些代码进行系统的训练。

  • 观点、分析:
    随着人工智能技术的发展,编写程序也会像人工智能下围棋一样飞速发展,代替人类进行部分工作,比如编写软件,编写程序而人只需要编写人工智能的程序从而大大提高效率,并且降低开发成本。也许在不远的将来,程序能代替人类编写部分程序。

  • 提问原因:
    看到“软件开发的流程却没有这样的提速过程”,这一句话,于是想到之前人工智能写程序的新闻,从而产生了异议。

问题二:代码作者是否总是是对该代码进行单元测试的最佳人选 ?

  • 出自第二章个人技术和流程P25

    单元测试必须由最熟悉代码的人(程序的作者)来写。
    代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。

  • 证据、资料:
    在计算机编程中,单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。通常来说,程序员每修改一次程序就会进行最少一次单元测试,在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格书要求的工作目标,没有程序错误;虽然单元测试不是必须的,但也不坏,这牵涉到项目管理的政策决定。每个理想的测试案例独立于其它案例;为测试时隔离模块,经常使用stubs、mock[1]或fake等测试马甲程序。单元测试通常由软件开发人员编写,用于确保他们所写的代码符合软件需求和遵循开发目标。它的实施方式可以是非常手动的(透过纸笔),或者是做成构建自动化的一部分。

  • 观点、分析:
    我起初部分赞同这个观点,毕竟作者是最了解代码的,由作者写单元测试很好。但是,是不是有时候因为是自己写的,想法就已经局限在里面,没有意识到某些问题呢?是不是需要有其他人来进行测试?通过对单元测试定义的查阅,感觉作者说的很对。单元测试仅仅是证明了这些代码做了什么,并且测试是否运行正常。执行单元测试,就是测试是否这段代码的运行结果与我们预期效果一致。

  • 提问原因:
    看到这个观点,与我的经验产生了冲突,因为往往我们意识不到自己产生的错误。在编写软件并进行单元测试的过程中是否也会发生这种错误,从而使单元测试失去了其本身的意义。

问题三:如何平衡软件开发过程中质量与成本的关系 ?

  • 出自第十四章P304

    软件的开发过程有三个主要的特性:“好”、“快”、“便宜”。

  • 证据、资料:
    软件的开发过程有三个主要的特性:“好”、“快、“便宜”。通俗的理解是“软件在功能、成本、时间三方面满足利益相关者的需求”。前面提到功能方面的质量与具体的程序相关,那么软件工程方面的质量就与“快”、“便宜”比较相关。一个团队也许可以靠一些特殊的办法来提高程序的质量(例如在交付之前通宵加班,或者在软件发布后,长期加班修复用户提出的问题)但是软件工程的质量需要长期的过程来提高。

  • 观点、分析:
    在开发过程中,如何确保在开发进程快节省开发时间又能降低成本的前提下,软件的功能又好质量又高?我们该怎么来平衡质量、时间、金钱三者的关系,如何取得一个平衡点呢?是否只要实施 CMMI 理论的话,我们就能平衡好这三者的关系 ?那么如果一个看来很不容易实现的模块,实现不了预期的需求,但时间快到了,怎么办?是否只能牺牲其中一个或者两个部分来完成这一个项目。经过查阅资料,团队的做法往往是靠一些特殊的办法来提高程序的质量,例如加班或者后期更新。

  • 提问原因:
    经验告诉我们时间、金钱、质量往往难以平衡,那么在软件开发过程中如何平衡这三者的关系,在需要牺牲一部分的时候,往往先牺牲的是什么?

posted @ 2020-10-31 21:45  MrMz  阅读(167)  评论(0)    收藏  举报