软件工程第一次作业

一:花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。将代码上传至coding.net,并将地址发布至自己的博客。

地址:https://coding.net/u/Fraster/p/test/git/commit/02a56049ec9f7e0ad3ae09e726526cb47a6ddcbb

二:在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。

1.书中说到,绝大部分软件都是由多人合作完成的,大家的工作相互之间存在依赖关系。软件的很多错误都来源于程序员对模块功能的误解,疏忽或不了解模块的变化。为了让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且同时也为了模块的质量能得到稳定的,量化的保证,单元测试是一个很有效的解决方案。但是,除了这个解决方案之外,还存在更优的解决方案吗?(第二章 单元测试)

2.在单元测试的基础上,就能够建立关于这一模块的回归测试。在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那么这个模块就出现了一个“退步”,从正常工作的状态退化到不正常工作的状态。假如,在3.1.5版本中,模块A的编号为125的测试用例是通过了的,但是在新的版本3.1.6上,这个测试用例却失败了,这就是一个“倒退”。工程师们应该在新版本上运行所有已通过的测试用例,以验证有没有“退化”情况发生,这个过程就是一个回归测试。那么,在回归测试时,它的核心是什么?(第二章 回归测试)

3.设计逻辑与思路的审查是代码复审中最核心,最有价值的部分。代码风格与重大缺陷的审查,虽然重要但简单而机械,可以通过软件自动检查,而设计逻辑与思路的审查,却是复杂而有深度的审查,需要有一定理论深度和编码经验的人才能完成,而且对新手尤为重要。新手是任何项目组不可避免的问题,但遗憾的是,许多项目经理的办法是,只将一些简单而少量的工作交给人数不多的那些老手来完成。这样的结果是,新手始终是新手,他们没有经过足够的锻炼,老手累死累活,无法指望新手给予分担工作。对于这个问题,解决的有效方法是什么?(第四章 代码复审)

4.在第五章的在团队模式中,还有一种模式叫作官僚模式,这种模式脱胎于大机构的组织构架,几个人报告给一个小头目,几个小头目报告给中头目,依次而上。这种模式在软件开发中会出问题。因为成员之间不光有技术方面的合作和领导,同时还混进了领导和被领导的关系。跨组织的合作就会变得比较困难,如何解决这个困难来更好的进行跨组织的合作?(第五章 官僚模式)

5.需求分析是软件开发的基础和前提,也是最终目标软件验收的标准,它可以避免或者尽早的剔除早期的错误。虽然在可行性研究阶段,我们也进行了用户需求的分析,但是只是粗略的进行了分析,很多的细节部分都被忽略了。通常我们在进行软件开发的过程中,往往由于需求分析的不足,而最终导致项目的失败。据统计,超过60%的失败项目都是由于项目需求分析不明确或错误造成的,那么怎么尽可能的减小需求分析时的不明确和错误?(第八章 需求分析)

三:软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。

1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?

2)这些软件是如何到你手里的(邮购,下载,互相拷贝)

3)这些软件是如何处理Bug的?又是如何更新新的版本的?

  1. 同一类型的软件之间是如何竞争的?

列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?

1.手机应用: 酷狗音乐
(1)手机应用商店推荐下载的音乐软件,可以听音乐,也可以听歌识曲等等;他们的目的是盈利;通过让用户下载歌曲,而且如果用户听歌次数多的话酷狗音乐会推荐你开通他们的听歌流量套餐月包,因此酷狗音乐是通过用户对音乐的下载量及用户办理的听歌套餐进行盈利的。
(2)手机应用商店推荐下载此音乐软件
(3)手机应用商店会提醒你将酷狗音乐更新到最新版本来增加用户体验和改善一些bug.
(4)手机应用商店中的音乐软件有好几种,不同的音乐软件会宣传自己软件的优点,还有比如你下载一些音乐软件,这款软件会给你一些福利等等。这些应用软件就是通过这种方法来竞争的。

2.游戏:王者荣耀
(1)这款游戏是腾讯公司出品的,我是通过腾讯QQ发的新闻和通知了解这个游戏的,这个游戏的目的也是以盈利为主的;王者荣耀是一款实时竞技类游戏,免费玩家和人民币玩家是有区别的,人民币玩家可以通过购买道具来很快的进行升级,获得更好的游戏体验,但是非人民币玩家只能通过很长的时间来进行升级。
(2)从手机游戏中心进行下载
(3)游戏软件会不定期提醒你进行更新以此来修复一些问题。
(4)游戏有很多种,不同的游戏会宣传自己的游戏的特点,而且如果你下载一款游戏,那款游戏就会赠送你一些金币和钻石和一些特权等等。这些游戏软件就是通过这些方法来进行竞争的。

3.工具软件:最美证件照
(1)身边的同学和朋友推荐给我的;这款工具软件的目标也是盈利,这款工具软件的作用是使你能够很方便的制作证件照,其中的有些功能是需要付费才能使用的,他们通过用户支付费用和下载量来进行盈利的。
(2)通过应用商店进行下载
(3)应用商店会不定期提醒你进行版本更新来修复和优化一些问题
(4)制作证件照的工具软件有好几种,他们会推出一些新的功能来吸引更多的用户,他们也是通过这个方法来进行竞争的。

4.列举你在使用上述软件时观察到的“特殊”现象
这些软件更新的速度非常快,而且很多更新都会引入一些新的功能。

5.它们和硬件有什么不同?
一般情况而言,软件的更新速度会远远的高于硬件的更新速度,相比较而言,硬件更新的时间间隔会更长一点。

6.这些能说明软件的某些本质特性么?
软件是逻辑实体,具有抽象性。软件=程序+数据+文档

posted @ 2017-04-23 18:49  Fraster  阅读(270)  评论(0编辑  收藏  举报