lanlanna~  

软件工程第一次作业

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

 

https://git.coding.net/maquanlan/project_1.git

 

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

1.       第一章中作者主要讲了软件工程的概论,提到软件开发过程中的难题,其中有一条是服从性,是说“软件不能独立存在,它总是要运行在硬件上面”,我能理解对于一整套系统来说,不管是软件还是硬件,都不能独立存在,我的疑虑是一个软件是如何服从系统中其他组成部分的要求,服从用户的要求、行业系统的要求,和硬件相结合从而产生一个系统所要达到的效果?

 

2.  第二章中,好的单元测试标准中有一条是独立性,是说单元测试的运行,通过,失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性,可是,一个软件程序中,各个模块是互相依赖的,如果一个模块在单元测试中需要有其他模块的辅助才能完成测试的话,如何保证单元测试的独立性呢?书中说到在这种情况下可以人为的构造数据,以保证单元测试的独立性,可是如何能保证辅助模块会产生人为构造数据所产生的效果呢?

 

3.  关于回归测试,感觉自己不是很理解,书中作者举例说一个模块的测试用例通过了,可是在新的版本上,这个模块的测试用例却失败了,这就是一个倒退,那我是不是可以理解为,一个程序在经过单元测试这一必要环节后,还必须经过回归测试?而且在程序进入正常使用的阶段,如果有新的版本出现,是不是还要做回归测试?在这之前是否还要做单元测试呢?

 

 

4.  第四章中,作者说到结对编程时说到,如果我们每时每刻都处在代码复审的状态,那不是更好么?还解释说极限编程就是这一思想的提现,可是在我查过资料后,才知道基于敏捷的核心思想和价值目标,极限编程要求项目团队遵循13个核心实践,结对编程只是其中一项而已,可在我个人看来,结对编程有时候还不如个人独自编程,因为如果以个人为单位时,每个人的投入力度普遍要比结对编程时的大,而且这种模式是在不违背团队合作的情况下存在的,也就是说,就算以个人为单位,团队合作的效应还是存在,一个人有问题,大家都来帮助,这样的效率肯定要比结对编程时高,而且结对编程对于两个合作者的默契程度,性格契合度都有很高很高的要求,再者,能够达到结对编程要求的两个人,之前肯定要经历一段很长时间的磨合期,如此费事又费力且有可能达不到预期效果的编程模式,是如何获得大部分团队的青睐呢?

 

5.  在第五章中,读到TSP原则时,我想到前面的PSP原则,虽然这些原则都是以几乎接近完美的标准要求一个个人和一个团队,但是它们之间又有什么联系么?是不是在TSP原则下严格要求的团队里的个体都是符合PSP原则的?或者在TSP原则下严格要求的团队里的个体,PSP原则就变成了一种硬性要求?

 

6.  在第六章中,作者在总结敏捷是否很特别时,再一次提到极限编程,在书的第124页上半页的表格中,作者写的很详细,根据我的理解,极限编程就是在各项工作开始之前做好它的准备工作,并且要严格要求标准,在各项工作开始之后,尽最大努力,还有后续的工作中,都要本着敏捷的根本,做到最好,在我的理解下,我觉得敏捷流程和极限编程都是讲究最高效率,可又觉得有所不妥,我的问题是,敏捷流程的观念和极限编程的观念有什么不同么?或者它们有什么包含和被包含的关系?

 

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

手机应用(微信),WORD等办公软件,各类网游

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

 

关于软件开发者如何说服我成为他们的用户,我觉得不管是手机应用(微信),Word等办公软件,还是各类网游,都是迎合了我的某种需求,就像微信,是一款很便利的社交软件,比起打电话,微信的语音功能更加便利,Word等办公软件,是因为在日常生活或者学习的时候,我必须要用到它,至于各类网游软件,是迎合了我要娱乐的需求。在我看来,现在大部分软件都是以营利为目的,就像微信,就是为了赚取用户现金,也有些是给大众提供一个平台,间接性的赚取用户现金,比如淘宝,另外也有不为营利,只为给大众提供办公便利的软件,就像各类办公软件。

 

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

 

我所用的许多软件都是下载(例如微信、各类网游)或者互相拷贝得来的(比如各类办公软件),在我看来,如果不是因为工作要求或者其他目的,大多数人不会邮购的方式。

 

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

 

我觉得不管是手机应用(微信),WORD等办公软件,各类网游,修复BUG的方法大致相同,一般都是通过第三方平台进行修复,或者通过运行过程中出现的问题找到相应的修复方法,在看了构建之法后,我认为也有在回归测试时,发现问题然后修复的,至于版本更新,我觉得可以通过用户的反馈来进行更新升级。

 

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

 

我觉得同一类型的软件,是通过各方面的创新进行竞争,例如微信和QQ,有很多功能都不一样,正是这些不同的有创新性的功能,让它们彼此之间有了竞争。

posted on 2018-03-23 20:26  lanlanna~  阅读(126)  评论(0编辑  收藏  举报