软件工程第一次作业

 软件工程第一次作业

 

一.自我介绍

自我介绍,我是青海大学计算机科学与应用系大二的一名学生。希望在学完这门课程之后:1.能完成期末大作业;2.在学完这门课程后,能够独立或小组配合做出一些简单的系统,循序渐进,在今后通过不断地积累与学习,能根据实际需求做出一些复杂的系统;3.可以能学会设计制作一个符合标准的APP。理想情况是周一至周五每天花1-1.5小时时间来学习这门课程,周六周天每天能花2-3个小时用来学习这门课程。

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

 

能自动生成小学四则运算题目,用户可根据自己的需求选择进行何种运算。支持判断对错,成绩的累加。具体程序;

https://coding.net/u/tian-xin/p/sizeyuansuan/git/blob/master/tian.cpp?public=true

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

1.对于作业“在一周之内快速看完《构建之法》,列出你不懂的5-10个问题”,有以下建议,大家根据要求修改这个作业。

a.在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文

b.列出一些事例或资料,支持你的提问 

c.说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?

例如:我看了这一段文字 (引用文字),有这个问题 (提出问题);我查了资料,有这些说法(引用说法);根据我的实践,我得到这些经验(描述自己的经验);但是我还是不太懂,我的困惑是(说明困惑);或者我反对作者的观点(提出作者的观点,自己的观点,以及理由)。

 

问题一:为什么要用代码覆盖?在软件测试时应该注意哪些关键点?(第2章 个人技术和流程)

 

我在读书中27页的时候,书中提到“100%的代码覆盖率并不等同于100%的正确性”。通过读这部分内容后知道了在软件测试中有很种不同的测试方法,其中代码覆盖测试是衡量测试质量的一个重要指标,而且进一步的软件的覆盖包括所有分支、正常路径和错误路径、有效的输入和输出情况等多个部分,我查阅资料后知道了如果仅覆盖了代码的一小部分并不能代表软件的质量,但如果测试覆盖到了软件的绝大部分代码则对质量有些信心。所以代码的覆盖测试只能作为判断软件质量的一部分指标不能代表全部,但除此之外测试时还应该注意哪些关键点?

 

问题二:瀑布模型具体哪些可用的范围?(第5章 团队和流程)

 

我在读第五章 团队和流程 这一章的时候,从书93、94页看到“温斯顿指出,要让产品成功,最好要把这个模型走两边,先有一个模拟版本,在此基础上收集...”。在看完这部分后不是十分理解,通过查相关资料后知道了关于瀑布模型的一些资料:瀑布模型主要强调文档的作用,并且要求每个阶段都要仔细验证,用户只有等到整个开发项目的末期才能见到产品的成果耗费时间长已经不太适合用于现代项目开发;瀑布模型的缺点是:1.各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。2.由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。3.通过过多的强制完成日期和里程碑来跟踪各个项目阶段。4.瀑布模型的突出缺点是不适应用户需求的变化。而原型模型实现客户或未来的用户与系统的交互,用户或客户对原型进行评价从而可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。既然这样那瀑布模型哪些具体可用的范围?

 

问题三:怎样才能做到在满足用户需求的同时,使团队中求同存异,不造成资源浪费?

 

.在看到96页的代码复审的时候,查了有关资料“反复审查是为了确保质量,保证不出现更多的错误和异常,软件复审就是以对质量保证为目的的。软件复审包括了对需求文档、详细设计、数据库设计、功能设计、编码功能实现及质量、错误跟踪等的审查,以避免使用过程中出现更多的差错”。但是开发团队中的每个人都有自己的想法,是不是会产生一些矛盾或者因为想法不同而导致功能不同,虽然最终可能都满足顾客的需要,但是思考的方向却不一样,是不是会造成团队内部一次次的修改,一次次的改变,从而资源浪费呢?那么怎样才能做到在满足用户需求的同时,使团队中求同存异,不造成资源浪费?

 

 

 

问题三:开发一个项目时,想好了需求分析后,第一步就是设计好用户界面吗?还是主要进行代码的编写?(第12章 用户体验)

 

我在读书第12章235页到时看到这样一句话“考虑用户体验的各种角度,认知阻力,用户体验的衡量标准,要从用户的角度去思考问题,需要有“同理心”,要有理解用户的处境,心理,动机的能力”。作为软件的开发人员在软件开发时对用户的的需求做仔细分析很重要,同时从用户的角度考虑问题则是软件的第一次使用和软件的好用度很重要,但是这样的话作为软件开发人员开发项目时通过需求分析后的第一步就是设计用户界面还是进行代码的编写这二者之间是有先后顺序还是根本就没有顺序之分?

 

 

问题四:在软件测试中什么是冒烟测试?为什么要采用?(第13章 软件测试中间部分)

 

我在读到时候在第13章中的258页、260中间这部分读到有一个“专有名词”叫“冒烟测试(Smoke Tesk)”,通过读书知道这是“一种基本验证测试,而且据说是从硬件设计行业流传过来的说法”。查资料后发现冒烟测试从操作上是一个随机的测试,操作对象通常是核心业务模块要是发现多数功能走不下去(20%),那么这个冒烟测试就算是结束了,但是冒烟测试一般不用参照测试用例那么为什么还要采用“冒烟测试”呢?

 

 

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

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

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

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

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

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

1..企业或学校或某组织内部的软件

(1)企业或者学校或某组织内部的这些软件,一方面这些软件通常能带来一些便利,比如:“励志君”是任课教师要求学生下载的一款软件,它不仅能进行刷脸签到,还能进行文件共享,和问题反馈。给老师和学生都带来了便利。老师能够快速进行点名,学生能及时看到老师上传的课件,同时也能快速上传老师布置的作业。对课堂中不明白的地方及时跟老师进行反馈。所以,别人会下载这些软件;另一方面因为需求。因此会下载并成为他们的客户。

通常这些软件是免费的所以他们的目的并非盈利,只是为了给他人带来一些便利,是工作效率更高;

(2)这些软件通常是从应用商店里下载;

(3)这些软件通常可以进行用户反馈,根据用户的反馈,处理bug。

(4)看哪个软件更能满足用户的需求,更人性化,使用更加方便。

2.游戏

(1)游戏类软件通常会在前期做足宣传工作,比如:分享到微信、qq等,会有一些利益。因为大力的宣传有些人会下载这些软件。再通过这些玩家的宣传,就有了更多的玩家。这些软件是以盈利为目的。收取玩家的现金。

(2)下载或者其他人的分享;

(3)通过玩家反馈不断更新处理bug;

(4)哪款游戏更能给玩家带来乐趣,哪款游戏就更受欢迎;

3.手机应用

(1)手机应用类的软件多种多样,比如最常见的微信、qq。开发者以视频或者升级的聊天方式来吸引别人。微博、头条等是以能够及时掌握最新消息吸引别人。还有一些软件是利用人们的好奇心吸引别人。这些软件部分是非盈利的。

(2)这些软件是通过别人推荐,或者自己的需求下载的。

(3)通过不断更新去处理bug。

(4)哪个软件更能满足用户更多的需求,使用起来更加人性化更加简单快捷,占用的内存更少,那款的下载量就跟多。

 

posted @ 2018-03-24 11:00  素颜(田)  阅读(179)  评论(1编辑  收藏  举报