软件工程第一次作业

一、四则运算

       这次的程序代码主要是完成小学四则运算。其中分为整数的运算和真分数的运算。使用的语言是JAVA。当程序运行起来,用户可以选择进行整数运算还是真分数运算。然后进行下面的步骤。选择题目的数量,答题,出结果和正确单。程序代码地址:https://git.coding.net/beijiafei/Arithmetic.git

 

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

  • 第一个问题:单元测试应该产生可重复、一致的结果

       第26页。这是我在第二章中单元测试那一环节看到的。在“好的单元测试标准”小节中出现了这个问题。虽然下面有了解释说“用随机数以增加测试的真实性,在一般的情况下不好”。但我还是有点不明白。我认为每一次的测试都会或多或少的有些偏差,不一定每次都是一样的结果。毕竟在一些著名的生物实验上的可重复、一致的结果也是在一定的误差范围之内的。所以不确定单元测试没有产生可重复、一致的结果就不是好的单元测试标准吗?

  • 第二个问题:判断按时交付的好坏使用平均值还是用标准方差

       在第51页。在第三章的个人能力的衡量和发展中,提到了软件开发的工作量和质量怎么衡量?这里有四个元素,其中第四个元素“是否按时交付?”,下面的论述让我产生疑问。根据我的经验,标准方差需要大量的数据才能得到一个相对来说比较安全的结果。但对于个别的数据就直接用标准方差来判断Al和Bob(Al和Bob是书中的例子)的好坏,这样做的判断依据有点让人不信服。虽然书上也有解释,但我觉得解释没有在这一方面上停留。仅仅通过少量的数据,来下定论。我觉得不是很好。

  • 第三个问题:goto的使用

       在第75页。在第四章代码设计规范中有关于goto的使用,原文是这样说的“函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto”。根据我的经验,自从在大一接触C开始,就被告知goto的坏处。在平常的代码或工程中最好不要用goto。如果只为了一图逻辑的清晰,不在乎代码的安全与稳定,是不是有点危险呢?

  • 第四个问题:当ERD用来处理动态的时候,会怎样?

       在第236页。在第十一章图形建模和分析方法小节中,讲述:“当处理静态的时候用ERD,当处理动态的时候可以使用DFD”,我有点好奇。当用ERD处理动态的时候,不知道会怎么样?或者说用DFD来处理静态的时候,会出现怎么样的结果?是否他们之间的关系会依然清晰明了?存在疑惑。有没有一个统一的方法去处理这些关系?

  • 第五个问题:关于修复BUG的思考

       在第250页。在第十一章开发阶段的日常管理阶段中,当BUG出现的时候,第一反应就是让出现BUG的那个人去处理,但是有没有想过,这个BUG会出现一直处理不好的情况,或者对这个人来说,这个BUG没办法去处理掉,就这样被打入“小强地狱”,也许不在“地狱”里的某个人正好遇见过这个情况,但他无法了解到“地狱”里那个BUG的情况,这样的单打独干去解决BUG也许会导致更大的BUG,让团队运营出现问题。另外“小强地狱”的规则是处于一个变动的状态,随情况的变化而变化。如此这番,怎能让一些大BUG被解决掉,可能有的人为了出去,特意处理掉一些小的BUG,把大BUG留下。这样的结果不是我们想看到的。

  • 第六个问题:成员的不配合

       也是在第十一章,我们所有的工作的顺利进行都是建立在在团员努力工作、相互合作的情况下,但如果到了项目的一个紧要关头,一个重要关节的团员出现了不好的状况,可能出现了矛盾,不积极工作,撂挑子不干了。这样的情况该怎样解决?开了他?但是目前的状况下,他是很重要的。很疑惑一些大型项目如果出现这个问题该怎样解决?在第九章中,关于项目经理的概述,让我对PM这个职位的作用感到疑惑。PM可能没法实时地关注项目的进展和里面每个人的工作情况,那么他是如何带领和项目里面的人去完成这个项目,项目组里面的人是否会听从PM的安排,如果出现了矛盾怎么办?是不是有一些规则来约定这些?

  • 第七个问题:用户和软件的完美

        第十二章,我们看到的例子都是产生Beta出来了,让用户去体验得到反馈。那为什么不在产品创作之初就询问用户的需求,考虑他们的问题,询问他们期望的界面、按键的要求,然后采用一个拥护较高的标准,这样可以减轻后期的处理。不知道我的想法对不对,但是对了,为什么很少见到项目会采用这种方法?如果错了,为什么?很是疑惑。在软件测试一章中还有一个疑问。看了这么多种类的测试,是不是在一个软件推向市场之前都会经历这些的测试。如果这样,需要多大的财力和精力。而且是否所有的“小强”都能通过这些测试找出来。很令人关心。市场上所有的软件都或多或少的存在着一些小毛病。有的不值一提,有的却严重影响用户的使用。如此大的差别,难道是这些测试方法不够全面,还是其他的原因?

三、基于企业或学校或组织内部的软件、游戏和手机应用的相关论述

  • 企业或学校或组织内部的软件

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

在校为大学生,主要是因为一些学习和一些其他工作的原因安装一些学校的软件。这些软件主要在学习和生活方面来帮助我们。

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

主要是通过老师和同学的相互传载

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

处理bug可以直接更新软件,或者直接使用插件。这些软件会自动向我们推送一些更新,解决掉一些不好的你现象,同时增加一些新的功能

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

通过他们的功能好坏,实用性,还有对用户的态度。

  • 游戏

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

对于游戏肯定是通过良好的体验,很棒的画面和他们内部的游戏设定(故事情节,关卡的设定……)来吸引用户的。他们的主要目的就是盈利。有的游戏也会赚取用户的现金。

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

自己如果感兴趣就通过网站来下载,或者是朋友之间的相互推荐

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

处理bug可以向上方提交。游戏也会日常更新来解决出现的问题。

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

游戏的体验,广告代言的影响。还有一些游戏主播的直播

  • 手机应用

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

如果自己需要相应的功能,恰好这个软件有,就自然的下载下来了。他们的主要目的就是盈利。有时也会赚取用户的现金。但大部分手机应用都是服务大众

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

自己如果感兴趣就通过网站来下载

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

如果有bug,接在相应的界面上提交错误。通过应用的更新来解决出现的问题。

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

功能的强弱和画面的优劣。用户通常会选择他们觉得舒服的应用来使用。还有明星广告的代言。一些活动。

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

        这些软件有的是必不可少的,有的是可以卸了再安装,安装了可以再次卸载的。不会影响用户的使用,全凭用户的喜好。所以软件经常会推出一些好玩的活动,来吸引用户。而硬件是必不可少的,不能随便的卸载。而且硬件用的时间久了,可能性能各方面会有所下降,但是软件就没有这一现象。我们缺少了软件,可能无所谓。但没了硬件,就无法运行了。所以我认为这可以说明软件的经常化,随意化,通用性。

 

posted @ 2018-03-22 20:48  贝加飞  阅读(177)  评论(2编辑  收藏  举报