软件工程第一次作业(1)

题目一:代码地址 https://coding.net/u/Uaesq/p/123/git
题目二:在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。
1.怎样才算是一个好的单元测试呢?(第二章P25)书中表示应准确快速保证程序基本模块的正确性。
并说出了验证单元测试的一系列标准,有几条不是要清楚如:
单元测试应该在最基本的功能/参数上验证程序的正确性。要测试最基本的单元,测试最基本的方法,但是我觉得测试一个项目应该看待它的整体功能,单单只是
基本的功能无误不能完全反映出该项目整体是无误的,可能基本功能之间的联系出问题也会使整个项目泡汤。
单元测试过后,机器状态保持不变。我自己的理解是测试后数据库会产生一些临时文件,而我们不需要这些东西,不过对“Teardown阶段”有些不太懂,不知道具
体在哪一时期什么时候删除最合适。仅仅是在最后测试完删除吗,感觉如果中途测试其中一些,如果产生的临时文件影响之后的测试会有很大麻烦。
2.敏捷开发不是很懂。(第六章P104)看了敏捷开发的原则后感觉敏捷开发就是为了更高效率更高质量的完成一个项目,难道这样的方法就一定是完美的吗?就像书
中所说,一群狗熊级的程序员天天写代码不知道找问题,就算今天遇到的问题也不解决,明天又去掰另一个棒子,连一天天的任务都不清楚感觉会离冲刺越来越远。
3.软件开发是一门工程还是一门艺术还是一门手艺?(第三章P55)
其实对于这门专业我觉得是以很伟大的专业,但是就像书上说的如果是一门工程那就要收很多规矩,但是就像前面所说一个团队的成员要收很多规矩,也要被约束,但
我更想把它当作一门艺术,诗歌可以,软件工程也可以。不过要有一些自由的空间才能更好的发挥自己。所以我现在对约束的程度产生了很大的疑惑。
4.(第八章P153)获取用户需求的A/B测试不是很懂,决定两种不同的UI进行调查,在技术上实现A/B测试,手机数据,分析数据,形成结论,感觉与这个名字没有什么关系啊,而且感
觉这不就是普通的调查吗?
5.盲目信任“专业人士”扮演的角色。(第十四章P296)
对于此观点我很同意,但是以大学生的角度,我们学的还是太少,班里有很强代码能力的人不是很多,“专业人士”在学校里应该指的是老师了,难道我们不应该挺老实的吗?
感觉水平差的学生做的任务量就不会要多,所以影响用改也不是很大吧?
题目三:软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。
1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
3)这些软件是如何处理Bug的?又是如何更新新的版本的?
4) 同一类型的软件之间是如何竞争的?
1.qq:
1)通过广告传播以及朋友之间的分享来让我使用软件。是盈利。他们通过q币,会员充值等来赚钱不只是现金。
2)应用商店下载。
3)通过更新和用户发现。通过让用户下载更新包来更新新的版本。
4)通过更强大的软件体验和对用户的吸引和创新。
2.支付宝
1)它致力于提供“简单、安全、快速”的支付解决方案,吸引用户。是盈利。包括网购担保交易、网络支付、转账、信用卡还款、手机充值、水电煤缴费、个人理财等不只是现金。
2)应用商店下载。
3)通过更新来处理Bug。通过让用户下载更新包来更新新的版本。
4)支付宝的产品定位是支付操作及周边电商金融衍生行为的工具型应用,实名与信用体系让用户很放心。
3.360安全卫士
1)通过广告传播以及朋友之间的分享来让我使用软件。不只是盈利。靠帮别人做广告,不如在自己官方上打上浏览器的广告,那就是做广告,安装流量赚钱,360软件上还有杀毒软件广告,也可以赚钱,还比如和别人做活动也赚钱。
2)应用商店下载。
3)通过更新和用户发现。通过让用户下载更新包来更新新的版本。
4)漏洞补丁扫描更精准,更新更及时,为各类突发漏洞提供及时有效的解决方案,更有利竞争。
4.列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
更新很频繁,卸载很难卸载干净。
软件安装到硬件上,软件有破损是可以从新下载修理等等,而硬件很难修理最好换新的。
硬件是计算机的躯体。软件是计算机的灵魂。

posted @ 2017-04-22 21:26  胡萝卜xu  阅读(133)  评论(0编辑  收藏  举报