一、此次作业用C++实现了小学生简单四则运算,主要包括的功能有(生成用户要求的题目数量、判断正误、提示正确答案、结束时统计作答正确的次数并最后给予分数),倒计时功能查阅资料但为完全实现(代码中已注释)代码地址:https://git.coding.net/xhx1207317661/Arithmetic.git
二、在一周之内,快速看完《构建之法》整部教材,我有以下五个不懂的问题:
问题一:在《构建之法》第二章中第一节中(p26 2.1.2)提到”单元测试的独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。”之后阿超对小飞的解释:100%的代码覆盖率并不等同于100%的正确性!何为“代码覆盖率”?代码覆盖率可以体现什么?后来通过阅读书籍和查阅资料得知代码覆盖率对于“应该写但是没有写的代码”无能为力。例如代码申请了内存或其他资源,但并没有释放。比如代码中并没有处理错误情况。就像没有处理和文件、网络相关的一些异常情况,例如文件不存在、权限有问题。此外,代码覆盖率可以体现代码质量、为功能测试关注点提供情报、估计修改已有代码所需的时间等等。更深层次的认识和影响还要通过不断的学习、查阅资料、实践得知。
问题二:在《构建之法》第五章中第一节中(P96 5.2)中提到各种团队模式,如何理解这些模式适用于什么类型的代码开发?如果选择错误的模式会造成什么样的影响?
问题三:在《构建之法》第八章中第三节中提到一款成功的软件是建立在成功的需求分析上,而获取正确的需求却是比较困难的,我觉得我们普遍的认识是:用户知道需求是什么,我们所要做的就是和他们交谈从他们那里得到他们的需求,只要问用户系统的目标特征,什么是要实现的就可以了,但是实际上需求获取并不是想象的这样简单,我们应该如何实现一个切合用户的需求分析?
问题四:在《构建之法》第十三章中第三节中(P298 13.2.2)中提到“错误报告”的缺陷:收到的报告有可能白白浪费时间,对于这种报告维护人员应该如何正确的处理“错误报告”?
问题五:在《构建之法》第十六章中第一节中(P347 16.1)中提到整个社会对于创新都很感兴趣,但是目前我们如何区别认识”创新意识”和“迷思”?课本中对于“迷思”做了具体的分类,我们应该如何正确对待“创新意识”呢?希望在不断的认知和学习中可以得到答案。
三、选取三种软件,并分析它们的特点
问题:
- 1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
- 2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
- 3)这些软件是如何处理Bug的?又是如何更新新的版本的?
- 4) 同一类型的软件之间是如何竞争的?
- 列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
工具软件:有道词典
- 1)查英语单词很方便,软件里的基本功能都是免费的,目的并不是为了赚取用户现金,只有一些相关推荐和广告;
- 2)手机直接下载;
- 3)通过用户反馈来修复软件bug;进入APP时提示有新版本,如优化了界面或者修复某某bug等等;
- 4) 免费提供英语学习及复习资料,不断优化界面;
- 软件产品是以程序和文档的形式存在,通过在计算机上运行来体现他的作用,而硬件是看得见、摸得着的物理部件或设备。软件存在缺陷时可以通过修补漏洞或者修复bug解决,硬件则是实体,不方便修复。
手机应用:QQ
- 1)QQ覆盖用户广泛,聊天交友日常生活必备;QQ一部分目的是为了盈利,一部分目的是为了占据市场;
- 2)手机预装;
- 3)测试人员发现bug后开发人员修改完后测试人员再次进行测试直至bug处理完毕;进入APP时提示有新版本,进入后“关于QQ”里有也有“有新版本”的选项;
- 4) 通过本身影响力,便捷性,功能全面且完善;
- 软件产品是以程序和文档的形式存在,通过在计算机上运行来体现他的作用,而硬件是看得见、摸得着的物理部件或设备。软件存在缺陷时可以通过修补漏洞或者修复bug解决,硬件则是实体,不方便修复。(同上)
系统软件:Windows 10
- 1)基本普及大众,一部分是以盈利为目的,一部分是为了打开移动市场;
- 2)电脑预装系统;
- 3)通过用户bug反馈,更新Windows Defender中会有提示,系统需要更新;
- 4) 基本已经普及大众,系统稳定,用户数量庞大;
- 软件产品是以程序和文档的形式存在,通过在计算机上运行来体现他的作用,而硬件是看得见、摸得着的物理部件或设备。软件存在缺陷时可以通过修补漏洞或者修复bug解决,硬件则是实体,不方便修复。(同上)