软件工程第一次作业补充

  • 1、花20分钟写一个能自动生成小学四则运算题目的“软件”。

https://coding.net/u/ljn1500802079/p/Four-arithmetic-operations556/git/blob/master/1.c

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

  • (1)关于学者总结的五条软件特殊性,

“人们比较容易理解连续的系统:增加输入,就能看到相应输出的增加。但是许多软件系统却没有这样的特性”

我查阅了资料:非连续性顾名思义就是不连续的,可是如果软件系统能否实现非连续性?我们一直以来所遇到的应该都是系统的连续性,可具体体现在哪里?既然很多软件系统没有这样的特性,那么非连续性是指什么?可否有具体的例子来说明?

  • (2)交响乐团模式是否比爵士乐模式有优势?

“ 强调个性化的表述,强有力的互动,对变化的内容有创意的回应。”

Individual expression,emphatic interaction,and creative response to shifting contents.”

以上是我在看书时评论家归纳迈尔斯·戴维斯关于这两种模式特点的评价

这句话是否意味着我们接受两种模式的并存?

我在看到软件团队模式时,交响乐团模式和爵士乐模式在很多方面都是对立的,交响乐团是有谱演奏,很靠谱,但爵士乐却是无谱演奏;同样前者有指挥而后者没有。那是否可以说在我们建立团队模式时,应该偏重于交响乐模式而不是爵士乐模式?

  • (3)具体代码部分(第四章 两人合作 4.4.3代码复审的核查表)

书上列出来的六条问题也是我所想了解的。

我在书上(74页)看到关于具体代码部分的是:

“有没有对错误进行处理?对于调用的外部函数,是否检查了返回值和处理了异常?”

“参数传递有无错误?字符串的长度是字节的长度还是字符(可能是单双字节)的长度,是以0开始计数还是以1开始计数?”

“边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出现死循环?”

“有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足?”

“对各种资源的利用,是在哪里申请?在哪里释放的?有无可能存在资源泄露(内存、文件、各种GUI资源、数据库访问的连接、等等)?有没有优化的空间?”

“数据结构中有没有用不到的元素”

也许我们对于代码能够掌握熟练,但是一些深入的理论思考却不能够到达一定的深度。并且这些问题也是日常生活中经常遇到的,因此我希望能有所解惑。

  • (4)如何理解竞争性需求分析?

书上说很多需求并不是用户提出来的,而是技术的突破让产品团队看到了可以让用户做到以前不敢想、不敢做的事情,可是我们往往是意识不到自己的需求,那么在实践中,我们怎样去理解竞争性需求分析?

  • (5)最后一个问题是基于个人的:想请教老师,对于我们这种初学者,究竟如何才能最大化的开拓思维及发展自己的能力?在看完《构建之法》后,我开拓了眼界,很多代码清单也是一种练习,可是无论如何,我自己却不能建立自己的思想,我的动手能力很差,也没有写过真正的软件,究竟怎么样才是正确的学习方法?希望老师能引导我们、提出建议。

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

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

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

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

  • 4) 同一类型的软件之间是如何竞争的?

  • (一)、游戏:王者荣耀

  • 1):最初接触这款游戏是因为它所模仿的游戏(LOL),手游版更方便于玩耍操作,并且制作画面精美,再加上这款游戏很流行,所以最终成为他们的用户。他们的目标是盈利,因为游戏里东西(装备、皮肤)都必须是通过现金来获得。目标除了赚取用户现金,还有一部分是打广告。

  • 2):通过手机里自带的应用商店下载。

  • 3):在这款游戏遇到Bug的时候,一般都会停服进行维护,在这期间用户是登录不了游戏的。同时在更新版本时,会增加一些新的英雄、皮肤,还有新的地图模板,界面背景及背景音乐都会有所更新。当更新完成后用户再次登录游戏,就会有游戏补偿(游戏金币、钻石,皮肤体验卡)等。

  • 4):通过精美制作游戏界面和背景吸引眼球,并且不断完善游戏种类,增加了很多新颖的东西(如英雄、皮肤),还有游戏模式,加上它所带的语音功能,组队功能,可以实现聊天这个功能以及与朋友们一起。因此越来越受欢迎。



  • (二)、手机应用:微博

  • 1):这款软件是因为朋友推荐,并且可以随时了解新闻、娱乐动态等。目标是盈利。他们的目标是赚取用户的网络金钱,同时也是一种咨询平台,具有随时随地观看新闻、查看时事热点、娱乐、星座等功能。

  • 2):通过手机应用商店下载。

  • 3):微博在遇到Bug时,会有专门的微博客服进行反映,并且由专业技术人员来维修,通过不断的测试最终完成对Bug的处理。微博更新新版本,一般都是改变排版、增加新的模块。

  • 4):同类型软件之间,都是通过增加内容来进行的。众所周知,微博是用来提供用户所关注的新闻、娱乐、星座、咨询等,并且用户使用时的舒适度也是很大的一个原因。只有不断地为用户提供所需要的内容才能在竞争中突出。

  • 三)、手机应用:有道词典

  • 1): 因为学习需要,不能随时带着厚重的字典查单词,因此选择有道词典,内存不大,方便快速地查询。他们的目标是扩大自己的使用量,让更多用户安全放心使用这款应用,最后再达到盈利的目的,通过网络赚取现金。

  • 2) :通过手机里自带的应用商店下载

  • 3) :通过实时监测和追踪以及用户反馈,发现bug然后更新维护。

  • 4) :通过不断加固自己的使用质量以及提供更多知识供读者查阅,解决学习需求等,并且有道词典适用的人群也是很多的,无论是上班族、学生、教师、白领都需要有道词典。



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

    • 1、大型软件会有超过几百万的源代码,体现了其复杂性。

    • 2、软件是可以通过编程、汇编语言等实现的。

    • 3、硬件是实体,看得见摸得着,对于硬件我们不需要有任何想象,但软件并非实体,它是基于硬件的一种技术,这也体现了软件的不可见性,以及复杂性。

    • 4、软件是不能独立存在的,它总是要运行在硬件上面,体现了它的服从性。

posted @ 2017-04-20 20:06  刘佳娜TiAmo  阅读(132)  评论(1编辑  收藏  举报