201771030117-祁甜 实验一 软件工程准备—<阅读《现代软件工程——构建之法》提出的三个问题>
| 项目 | 内容 |
|---|---|
| 课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
| 这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12369881.html |
| 我的课程学习目标 | 通过学习能够了解软件工程这门学科并且能够应用它进行简单的软件开发 |
| 这个作业在哪些方面帮助我实现学习目标 | 在学习时要带着问题去学习并且要及时地去解决它 |
一、初识软件工程
上个星期我们开始了新一学期的学习,这学期的课中有一门很重要的专业课叫做软件工程。从在课表上看见这门课时我就在想明明有软件工程这个专业我们为什么还要学习这门课,我们不是计算机科学与技术专业吗?在课堂上老师给我们推荐了邹欣老师的《现代软件工程——构建之法》,阅读之后我有大概解决了一些我的问题当然也出现了一些其他疑惑。
二、三个问题
问题一:为什么软件工程可以发展为一门独立的学科?
问题描述:邹欣老师在第一章1.2.2中阐述了计算机科学与软件工程的关系:
>
1、计算机科学可以分为偏理论的领域(如操作系统)和偏实践的领域(如软件工程);
2、计算机科学中与实践相关的部分,都和数据及其他学科发生关系,软件工程则和人的行为、现实社会的需求息息相关;
3、计算机理论的进展会帮助软件工程;软件工程的进展会帮助计算机科学家更有效地进行试验和探索。
根据以上可以看出软件工程是计算机科学的一个应用领域,为什么软件工程可以发展成为一个独立学科?
提出的原因:我们在学习中发现,软件工程和计算机其他专业学习的科目都差不多,所以我有时候挺疑惑各个专业之间到底有什么区别,特别是本软件工程专业的区别。查了很多资料有说领域不同的,有说软硬件不同的,回答都大同小异,还是有点搞不清楚。
**问题二:软件模块在新版本为什么会出现“退化”?**
问题描述:邹欣老师在第二章2.1.3中说明了回归测试:
> 在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那么这个模块就出现了一个“退步”( Regression),从正常工作的状态退化到不正常工作的状态。假如,在3.1.5 版本,模块A的编号为125的测试用例是通过了的,但是在新的版本3.1.6上,这个测试用例却失败了,这就是一个“倒退”( Regression )。工程师们应该在新版本上运行所有已通过的测试用例,以验证有没有“退化”情况发生,这个过程就是一个“RegressionTest”。
根据以上的描述,在新版本上要运行所有已通过的测试用例,如果出现了测试不通过则说明该模块出现了“退化”,我的问题是为什么在新版本上有些模块会出现“退化”?
提出的原因:根据邹欣老师在书上提到的当该模块的功能发生了正常变化会引起模块退化,还有以前版本的bug在新版本中出现了“复发”,我想知道还有没有其他原因会引起模块“退化”。
问题三:所有的测试用例都可以通过是不是就可以说这个模块是正确的了?
问题描述:邹欣老师在第二章2.1.2中说了:
>
单元测试应该在最基本的功能/参数上验证程序的正确性。单元测试应该测试程序中最基本的单元一如在 C++/C#/Java中的类,在此基础上,可以测试一些系统中最基本的功能点( 这些功能点由几个基本类组成)。从面向对象的设计原理出发,系统中最基本的功能点也应该由一个类及其方法来表现。单元测试要测试API中的每一个方法及每一个参数。
根据以上一个“好的”单元测试的标准,我想知道是不是在最基本的功能/参数上测试通过了,就说明这个模块是正确的?还是说要继续找测试用例进行下一步的测试。
提出的原因:我不理解的是为什么在最基本的功能/参数上验证程序的正确性,万一最基本的功能/参数通过了,但是还可能存在其他问题这个要怎么解决。
三、参考文献
邹欣.构建之法——现代软件工程:现代软件工程[M].人民邮电出版社,2014
四、小结
这是一门新的专业课,也是一个新的教学方式。因为疫情我们没有办法去学校所以在网上上课,我们也在慢慢适应。以往都是在学校的教学平台上提交作业,以写博客的形式提交作业还是第一次,所以排版比较乱不是很好。而且以往的作业都是写实验报告之类的,看书提出问题还是第一次。以往都是直接把书上的知识全盘接收,没有一个自己的思考所以感觉学习很枯燥。现在发现学习要善于发现问题,然后去思考到底为什么是这么样子的,尽信书不如无书。
201771030117-祁甜 实验一 软件工程准备—<阅读《现代软件工程——构建之法》提出的三个问题>的更多相关文章
- 201771030106-葛佳诚 实验一 软件工程准备-<初读《构建之法——现代软件工程》有问>
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 作业要求链接 https://www.cnblogs.com/nwnu-da ...
- 201771010135-杨蓉庆 实验一 软件工程准备—用Markdown写构建之法
项目 内容 软件工程 https://www.cnblogs.com/nwnu-daizh 博客园 https://www.cnblogs.com/nwnu-daizh/p/12369881.h ...
- 8th 对软件工程的理解(读构建之法有感)
对于任何一个学计算机的人来说,软件都不陌生,甚至于一个普通的朝九晚五的上班族,他的每日生活工作也都与软件有着密不可分的关系.然而,程序又是如何从一行行指尖留下的代码,机器存储的数据变成快捷高效的软件的 ...
- 软工个人阅读作业2 —— 构建之法与CI/CD
项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 阅读思考教材,调研软工工具 这个作业在哪个具体方面帮助我实 ...
- 201771010111-李瑞红 实验一 软件工程准备-<构建之法-现代软件工程-基础认识和理解>
|||||||| | :--
- 201771010105—达拉草 实验一 软件工程准备—<软件工程构建之法—初步了解和认识>
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 2021S软件工程——个人阅读作业2
2021S软件工程--个人阅读作业2 项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任建) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 了解并熟悉软件开发的具体流程, ...
- 201771030129-张琳 实验一软件工程准备—<阅读书之后的三个疑问>
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE/ 本次作业要求链接 https://www.cnblogs.com/nwnu ...
- 201771010128王玉兰实验一软件工程准备——<阅读《构建之法——现代软件工程》初步了解软件工程>
|||||||||||||| |:--|:--| |项目|内容| |软件工程|https://www.cnblogs.com/nwnu-daizh/| |作业要求在博客里|https://www.cn ...
随机推荐
- push和appendChild的区别
概述:绑定事件(push和appendChild用法相似:但是一个是控制数组,一个是控制元素节点)用法:1.数组1的更改后的长度 = 数组1.push();//用来控制数组,在数组最后面插入项,返回数 ...
- AJ学IOS 之微博项目实战(5)微博自定义搜索框searchBar
AJ分享,必须精品 一:效果 用UITextField简单定义一个搜索框 二:调用: 调用的代码,很简单,直接init就可以,以后加功能自己添加就行了. - (void)viewDidLoad { [ ...
- Git敏捷开发--reset和clean
reset 丢弃本地所有修改,强行和上游分支保持一致 git reset --hard HEAD 若仅丢弃某个文件的改动,利用checkout git checkout your_file clean ...
- 全平台阅读器 StartReader
前段时间在网上闲逛, 发现了一款全平台阅读器 StartReader, 用了一阵子感觉还不错,网址是: https://www.startreader.com/ 感觉这款阅读器是程序员的福音,it人员 ...
- 一道简单的SQL注入题
这是我真正意义上来说做的第一道SQL题目,感觉从这个题目里还是能学到好多东西的,这里记录一下这个题目的writeup和在其中学到的东西 link:https://www.ichunqiu.com/ba ...
- 架构师修炼之微服务部署 - Docker简介
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是 ...
- SpringMVC转发及重定向
基础环境搭建请参考SringMVC入门程序 1:springmvc-servlet.xml <?xml version="1.0" encoding="UTF-8& ...
- JavaScript表达式和运算符 —— 基础语法(4)
JavaScript基础语法(4) 运算符 运算符用于将一 个或者多个值变成结果值. 使用运算符的值称为操作数,运算符和操作数的组合称为表达式 JS中的运算符可以分成下面几类: 算术运算符 逻辑运算符 ...
- Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?
一.Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值. 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等.我相信,关于 ...
- 箭头函数的this指向问题-一看就懂
OK,对于箭头函数的this 用一句话概括:箭头函数中的this指向的是定义时的this,而不是执行时的this. 如果上面这句话听的是懂非懂或者完全不懂的,没关系,下面会有案例讲解. 举个栗子 来看 ...