软工作业

(因本人水平有限,所写内容如有不对,请多多包涵)

一、一个能自动生成小学四则运算题目的“软件”。(要求:除了整数以外,还要支持真分数的四则运算。)

由于本人能力有限,此次作业用c++来完成,也没有实现一个友好的用户界面。

[代码地址]

二、在一周之内快速看了《构建之法》,列出一些不懂的问题。

1)第二章的单元测试那一小节,书中说“如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块的,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案”。我大概知道了单元测试是用来做是什么的,也知道了单元测试的重要性,于是我满怀期待的往下看,可我发现自己看不懂了,单元测试要怎样做?我查资料后发现

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。比如对函数abs(),我们可以编写出以下几个测试用例:

  1. 输入正数,比如11.20.99,期待返回值与输入相同;
  2. 输入负数,比如-1-1.2-0.99,期待返回值与输入相反;
  3. 输入0,期待返回0
  4. 输入非数值类型,比如None[]{},期待抛出TypeError

把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。

但是测试模块又要咋样做呢?

2)49页中有一个”对通用的软件设计思想和软件工程思想的理解“的问题,下面有这样一句话“另一个工程师坚持做任何设计都要画UML图,这算思想么?”UML图是什么?设计的时候画UML图和思想有什么关系?百度百科中说“ (UML)又称统一建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。”看完这段话并没有让我有眼前一亮的感觉,对其和软件设计思想的关系还是不太明白。

3)171页的8.5节是功能的定位和优先级,这里介绍了杀手功能、外围功能、必须需求、辅助需求这些概念,并且通过他们得到了功能分析的四个象限。那就是说在第一象限的功能的优先级是最高的么?我在这一节中没有找到如何定义优先级或者优先级的划分相关的内容。网上搜索之后只找到一些需求优先级的确定方法。

4)313页中,对衡量软件工程的质量,提到了一个理论CMMI(Capability Maturity Model Integration,能力成熟度模型集成)并且下文提到运用CMMI模型管理项目,不仅降低了项目的成本,而且提高了项目的质量和安期完成率。还有能够提高其言的管理水平,降低企业的成本。为什么CMMI能做到这些呢?资料中显示“CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。”单个的短句子都懂,可连起来就有点知道为什么了。

5)366页中提到了SWOT分析框架,提到”产品在市场上和别人竞争,有很多因素要考虑,SWOT表格是一个简单有效的分析工具“。表格,无非就是一张表么,为什么会成为一个简单有效的工具呢?它是咋样去分析的?查找资料后发现“S (strengths)是优势、W (weaknesses)是劣势,O (opportunities)是机会、T (threats)是威胁。SWOT分析法,即态势分析,就是将与研究对象密切相关的各种主要内部优势、劣势和外部的机会和威胁等,通过调查列举出来,并依照矩阵形式排列,然后用系统分析的思想,把各种因素相互匹配起来加以分析,从中得出一系列相应的结论。”这个的重点在于SWOT分析,而不是表格。感觉使用“SWOT表格是一个简单有效的分析工具”这句话,在这里表达的不是很合适。

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

  • 1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
  • 2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
  • 3)这些软件是如何处理Bug的?又是如何更新新的版本的?
  • 4) 同一类型的软件之间是如何竞争的?
  • 列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?

手机应用:它是手机完善自身功能,提升用户体验的手段。现在随着手机的普及,手机应用的用户不断增加,这让手机应用的发展有了更多的机会。各种手机应用层出不穷,里面不乏有一些对我们很有用的应用。比如:微信,让我们出门在外拉近了与家人的距离;支付宝,它更改了我们的支付方式;高德地图,让我们不再害怕去一个陌生的地方会迷路!正因为这些软件对我有用,所以我成为了它们的用户。我认为它们这些软件的目的都是盈利,因为他们是商人。虽然它们有时候的目的不是我们的钱,而是我们的个人信息,但是我想个人信息也是我们的财产,在一定的情况下它就可以变成钱。

游戏软件:在百度百科中对游戏的定义是:一种基于物质需求满足之上的,在一种特定时间、空间范围内遵循某种特定规则的,追求精神需求满足的社会行为方式。而现在,我们一提到游戏这个词,第一时间想到的更多的是各种游戏应用。不论是手机游戏或者电脑游戏,它在虚拟的世界让人们获得精神上的满足感,想想如今很火的王者荣耀(一人单挑对面五人,拿到华丽的五杀,当那声Penta Kill想起,有谁不激动)、绝地求生(在100个人中成为最后的胜利者,那是每一个玩家的愿望)等游戏,都是这样。这些游戏本人也有玩,因为它确是给了我在现实世界所得不到的成就感。游戏的目的当然也是盈利。

企业或学校或某组织内部的软件:本人是一名在校学生,这种软件经常有接触。就拿学校的选课系统来说吧,它在一定程度上是带来了很多的便利;但是,不可否认的是,它存在着很多让人不爽的问题,比如:只有特定的校园网可以进行操作,每次选课都像打仗一样,那不叫选课,叫抢课!!因为同一个时间段访问人数过多,通常为了选课得等很久很久...虽然有这么多问题,虽然学校一直不升级系统,虽然很不情愿,但是我们还是得使用它。这就是企业或学校或某组织内部的软件,尽管它不好用,可我们没有其他选择。这些软件一般不存在盈利目的。(如果可以盈利,我想那些软件会好用很多)

手机应用和游戏都是自己找资源去下载,这些软件有背后的运营商会去修复BUG,把新的版本发布在网络上。他们同类软件之间的竞争,我认为更多的是从用户体验方面来竞争,只有你的软件比其他软件的用户体验更好,用户才会去使用。学校的软件我们不需要付出什么就可以使用,它的维护应该是学校的技术人员在做,而更新我认为要等学校领导也觉着软件太不好用了,才会去找外面的软件公司来帮忙更新。这种软件的竞争应该是性价比方面。特殊现象的话,同一个软件在手机上可以用运行,在电脑上通过一些其他的软件也可以运行。而手机的硬件设备,给电脑用不了,这就是它们的不同。这些说明软件的运行需要一定的环境,并且软件是不可见的。

原文地址:https://www.cnblogs.com/hdyss/p/8627889.html

时间: 2024-08-28 01:23:32

软工作业的相关文章

软工作业: (2)硬币游戏—— 代码分析与改进

软工作业: (2)硬币游戏-- 代码分析与改进 一.作业要求 1.Python 程序阅读理解 2.学习Python 编码风格指南中译版(Google SOC)(http://blog.csdn.net/damotiansheng/article/details/43867175),改进Python程序 3.设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 注:参考http://www.cnblogs.c

第二次软工作业

1.必做: 两人组成一队,进行结对编程,从第一次软件工程作业中选出一人的作业作为这次作业的基础设计一个图形界面(GUI)的四则运算应用程序,可以是PC桌面的图形界面程序.网页程序或者手机程序设计的应用程序可以完成加法.减法.乘法.除法运算应用程序可以完成真分数的四则运算. 基本版面如下: 回答真确时的版面: 回答错误的版面 2.选做: 1.逐步扩展功能和可以支持的表达式类型,最后希望能支持下面类型的题目 (最多10个运算符,括号的数量不限制): 25 - 3 * 4 - 2 / 2 + 89 =

第0次软工作业

第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 我最开始有选择计算机相关专业的念头的时候是高二的时候,我们学校开了一门学习VB语言编程的选修课,当时我觉得写程序很有意思,然后再加上我很喜欢打游戏,以后想从事游戏制作方面的工作,所以就萌生了学习软件工程这个专业的念头.当时我订的目标是北工大的软件工程专业.后来高考的时候成绩考冒了,分数正好够北航高工,听说在里面也可以学习软件工程,我就选择了北航高工,经过大一一年的了解,我发现计算机科学与技术这个专业比

第一次软工作业 个人项目 词频统计

1.预计完成时间: 在一开始的时候,我并不认为这项作业的完成难度有多大.因为觉得这个程序主要的部分就是三块码,读入当前目录下的所有内容,统计单词和排序,但是我对于C++和C#两种语言都不熟悉,所以准备先用两天来熟悉语言(后来发现这个决定是错误的..至少 不应该用这么长的时间).在程序的具体模块中,我划分了四个模块: 主函数:处理整个流程,包括读入目录中的所有内容和对于所执行模式的判断,预计用时1小时. 分割函数:将文件中的单词分割出来.由于有三种模式,预计用时3小时. 计数函数:统计频率,作为统

软工作业2:硬币游戏——代码的分析与改进

目的: Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 参考:地铁口钱箱 作业步骤: step 1: fork 老师的仓库 +硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到自己的码云仓库. step2:clone 到本

软工作业9.19

首先下载必备的软件: 一:安装git 调试git并进行用户名的配置: 二:安装python 设置环境变量: 另外,为了python能够运行我们的程序,还要下载相应的第三方插件 三:fork仓库 四:在python进行软件修改,修改具体效果如图所示,注释里我标明了自己的修改思路, 在这里我大概解释一下: 我的想法是:既然人数4:1时能够实现长期循环,而取钱和放钱的值以及其多取少放的规则使其相对来说不好限定, 所以我从人数方面着手,当放钱人>=4时,才可以有一人能够取钱 我还将阀值Threshold

[SakuraiYo][软工作业(2)]硬币游戏—— 代码分析与改进

作业目标 Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 参考:地铁口钱箱 截至日期:作业布置一周内 作业过程 step 1: fork 老师的仓库 +硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到你的码云仓库. st

软工作业1

基本信息: 姓名:刘轶伦 学号:1425052007 班级:信管141 兴趣爱好:看书,看新闻,音乐 个人编程能力:曾学习过C++程序语言,编写过一些简单.常用的代码,较长的代码大约20行左右. 码云注册流程: 账号:[email protected] 注册经过:首先进入码云地址,点击"加入码云"进入注册入口,按要求填写自己常用的邮箱(QQ邮箱)作为账号,设计昵称(自己的姓名)和个性地址以便于辨识,并按要求设置了密码,点击提交按钮,接着我收到了一篇邮件,点击邮件中的网址激活账号,完成了

软工作业1:单词统计

刚刚发布的文章,竟然没!有!了! 凌晨两点要重新写一份也是伤啊…… 1.预计时间 构思1小时 查找资料3小时 编写代码4小时 改进3小时 2.实际上... 构思很快,很快就决定用面向过程去写了…… 基本没花多少时间就结束了 查找资料:真的是找了好久好久好久...都要疯了...这都是些什么东西... 前前后后总共找了大约4小时 编写代码:好久不变代码了,手生.而且基本就没写过C++的东西,导致的结果就是编写起来真的很慢,第一次是很简单的程序,大约5小时 第一次优化:第一次优化用了8小时 第二系优化