BUAA软件工程个人博客作业
软件工程个人博客作业
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
| 这个作业的要求在哪里 | 个人博客作业 |
| 我在这个课程的目标 | 团队完成好的软件,并对自己作出规划 |
| 这个作业在哪个具体方面帮助我实现目标 | 阅读教材并对软件工程作出思考 |
| 参考文章和博客 | 维基百科,linux中国 |
1、快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。
问题1:
2.1.1用VSTS写单元测试
注意在单元测试中,VSTS自动为你生成了测试的骨架,但是你还是要做不少事情,最起码要把那些标注为//TODO的事情给做了
我的疑问是为什么所有的单元测试中都是要再额外生成一个测试模块。以下内容节选自百度百科单元测试
1、它是一种验证行为。
程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支援。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。而且它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。
2、它是一种设计行为。
编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。
3、它是一种编写文档的行为。
单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。
4、它具有回归性。
自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试。
如果我们再程序中添加一些输出语句,也可以做到单元测试,并且效率我觉得也不会比新建一个测试模块低。因为在测试模块中我们也是手动构造一些测试样例,然后利用断言来判断模块的正确性。这样其实和运行一遍程序利用标准输入输出和断点等调试没有区别。那么为什么还要花费时间在写单元测试模块上呢?或者说如果我再写每一个模块时就能够保证该模块的正确性,那么我是否还需要写单元测试模块呢?
问题2:
4.5.4如何结对编程
驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
领航员:审阅驾驶员的文档;监督驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。领航员也可以设计TDD中的测试用例。
驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
还是难以理解结对编程的合作模式。书中要求驾驶员和领航员不断轮换角色,而领航员是需要思考是否重构。那么当两人编程水平不同时,是否会出现一方认为要重构,另一方认为不需要的情况。还有驾驶员互换时,另一方接着编码时,是否会出现难以读懂对方程序的情况。虽然书中有代码规范注释等要求,但即使有这些我认为看懂别人的代码还是需要花费一定的时间的。综上这样模式的结对编程效率会不会还不如一个人高?如果有一个人能够设计好框架,两个人分模块编写各个模块的功能后相互调用,这样的效率会不会好一些?
问题3:
8.3获取用户需求——用户调研
通常,团队收集到的需求都是杂乱无章的,不同的角色从不同角度表达了希望软件能做什么,有什么特点,能解决自己的什么痛苦,或者有什么好玩的地方,等等。
我个人感觉用户需求是一个难以控制的情况。首先用户是站在用户角度和利益方面,而我们开发者是站在开发者的角度。在收集到的需求中,总会出现一些奇奇怪怪,难以实现的需求。那么面对这样的情况,我们是否要花费很大的代价甚至重构去满足某些用户的需求?其次,面对不同用户的不同需求时,我们是否需要全部实现?那如果需求之间出现冲突时,我们要优先实现哪些用户的需求?
问题4:
16.1.4迷思之四:创新者都是一马当先
其实大部分成功的创新者都不是先行者,例如搜索引擎,Google是很晚才进入这个领域的。
确实大多数在某一领域被人们所熟知的公司一般不是做得最早的,而是做的最好的。但是一般情况下在某领域内研究的越早,才越容易创新。如果我作为一个新领域的开发者,我是否要一马当先的在该领域内不断探索?如果我想成为成功的创新者,是要在新领域内不断探索还是在前人的基础上接着探索?
问题5:
16.1.5迷思之五:要成为领域的专家,才能创新
但是统计数据表明,70%的创新者说,他们最成功的创新,是在他们的拿手领域之外发现的。
我认为这个逻辑是否有问题?难道不应该是先有了创新,才会成为领域的专家么?何为专家?
指在学术、技艺等方面有专门技能或专业知识全面的人;特别精通某一学科或某项技艺的有较高造诣的专业人士。
我相信没有任何一个人没有任何创新就能成为领域内的专家。就连学校内的学生们都要求在毕业论文内有创新点,之后有些学生有了更深的造诣,成为领域内的专家。此外,他们最成功的创新在拿手领域之外发现的。我认为他们在拿手领域之外也一定有很深的造诣,有很广的知识面,才能促成他们有着最成功的创新。所以他们在拿手领域之外的领域不可以称为专家么?
2、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
“软件”一词最早在1953年8月,由Richard R.Carhart在RAND Corporation的研究备忘录中提出。
“软件工程”一词由Margaret Hamilton在进行阿波罗登月任务时这期间第一次使用。
3、【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
1965年同年,为了研发一个能处理多任务的操作系统,美国电话及电报公司(AT&T)、通用电器公司(G.E.)及麻省理工学院(MIT)联合研发了一款操作系统——Multics。由于定义的功能极其复杂,最终参与研发的AT&T 公司的贝尔实验室(Bell Labs)退出了该项目。当时贝尔实验室有个工程师叫做肯·汤普森(Ken Thompson)正在负责为Multics操作系统写一个游戏,但是项目中止了,汤普森没法申请使用造价昂贵的计算机,也没有了可以使用的操作系统。这时候这个极客竟然用一台破旧的小型机(这时候的小型机依然很大)上成功用汇编语言完成了操作系统的编写。汤普森的同事觉得他这个系统写得烂透了,给他开玩笑说,这么烂的系统就叫Unics吧(Multics多任务,Unics单一任务)。而汤普森的另一个同事丹尼斯·里奇(Dennis Ritchie)确对Unics很感兴趣,为了使用汇编写的操作系统能够在多种设备上移植,Dennis开发了一种大名鼎鼎的语言C语言,并把Unics改写了一遍。从此Unix与C语言在这个世界诞生,影响着整个计算机时代的发展。
4、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
Microsoft TFS
优点:任务版上能将需求、项目进度一览无余,集成了项目管理、版本控制、BUG 跟踪,与vs相容较好。
缺点:只是一个团体完成项目的工具,在源代码管理方面有些问题。搭建、维护tfs比较复杂,硬件要求也比较高。
Git和GitHub
优点:开源免费,让系统得到更好的进化,免费则吸引了更大的用户群体,形成一个良性循环。分布式系统,可以让用户有更大的主动性和发挥空间,对服务器依赖降低到最低限度。速度快体积小,复制黏贴占用空间大,而Git采用快照方式,创建和切换分支速度非常快。
缺点:学习代价和周期相对较长,中文资料较少,代码保密性差,一旦把整个库克隆下来就可以完全公开所有代码和版本信息。
Mercurial
优点:学习曲线相对平缓,支持windows,记录不容侵犯。
缺点:与Git相比功能相对较少,分支功能少。
Bitbucket
优点:免费支持私有仓库,同时支持hg/git。
缺点:知名度不够,使用人数相比git较少。
Trac
优点:有良好的扩充性,权限体系比较完备,非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:不支持多项目,需求和缺陷没有分离,用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,中文化不完整,美术人员接触起来困难重重,不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。
Bugzilla
优点:BUGZILLA不收费,BUGZILLA现在有中文版支持。
缺点:BUGZILLA只能管理缺陷。
Apple XCode
优点:可以自动创建分类图表。自动提供撤消、重做和保存功能,无需编写任何编码。
缺点:更新版本后,某个插件可能会失效。
使用人数:
Github:3100万人
Bitbucket:500万人
Microsoft TFS:370万人
5、调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践
GitHub


如图这是我将本地仓库上传到Github时做的简单的测试。需要和Git一起使用,可以实现多人对项目的共同管理,每一个都可以清晰及时的看到版本的更替,是多人项目很重要的版本管理软件。但界面是英文的,而且有时会出现SSH失效的情况,所以我一般用http上传。
Git


如图这是我上传两次的命令。可以记录每一次版本更替的名字并记录修改内容,还有git checkout等指令可以新建分支实现对项目不同方向的更新与拓展。唯一的问题是指令较多,学习时间较长,目前我也只是会一些简单的版本控制,还有许多强大的功能需要逐步学习。
BUAA软件工程个人博客作业的更多相关文章
- BUAA 2020 软件工程 个人博客作业
BUAA 2020 软件工程 个人博客作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 ...
- BUA软件工程个人博客作业
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 个人博客作业 课程目标 培养软件开发能力 本作业对实现目标的具体作用 阅读教材,了解软件工程,并比较各 ...
- 软件工程个人博客作业-软件案例分析:VS与VS Code
项目 内容 本作业属于北航 2020 年春软件工程 博客园班级连接 本作业是本课程个人项目作业 作业要求 我在这个课程的目标是 提高软件开发能力.团队协作能力 这个作业在哪个具体方面帮助我实现目标 提 ...
- [BUAA OO]第一次博客作业
第一次作业 第一次进行面向对象的编程,不论是针对数据设计类还是对方法进行合适的归于不同类中,都不是很熟悉.所写出来的程序还是面向过程+有函数的类(虽然现在很大程度上感觉起来也是这样).索性作业难度并不 ...
- 【BUAA 软工博客作业】个人博客作业
项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:热身作业,阅读并撰写博客 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 阅读教材, ...
- 初窥构建之法——记2020BUAA软工个人博客作业
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 完成一次完整的软件开发经历并以博客的方式记录开发过程的心得掌握 ...
- [BUAA软工]第一次博客作业---阅读《构建之法》
[BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- [2017BUAA软件工程]第0次博客作业
[2017BUAA软件工程]第0次博客作业 结缘计算机 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 计算机是你喜欢的领域吗?是你擅长的领域吗? 我当时报考高考志愿的时候就已经是想好报 ...
- [BUAA软工]第零次博客作业---问题回答
[BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
随机推荐
- 百度云网速慢?普通VIP也限速?用户激励措施太套路?Pandownload被举报?这些统统没关系,我们自己搭建一个私人云盘服务器
前言 前几天醒来后,照例耍手机看新闻.在疫情如此严重的档口,一则小小的新闻引起了我内心小小的波动:Pandownload作者被举报了....心里第一件事就是可惜了我盘上的那N多个T的小电影了,&quo ...
- SQL-Instead of 触发器
定义及优点 INSTEAD OF触发器指定执行触发器而不是执行触发 的SQL 语句,从而替代触发语句的操作. 在表或视图上,每个 INSERT.UPDATE 或 DELETE 语句最多可 ...
- java9的JShell小工具和编译器两种自动优化
一.按顺序逐步执行的脚本程序: 二.编译器自动优化 1.不超数据类型范围编译器自动添加强转操作: 2.一但发生运算,byte/short/char都会自动提升为Int,当只有常量参与运算时,编译器会先 ...
- 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!
OpenYurt作为阿里巴巴首个开源的边缘云原生项目,涉及到边缘计算和云原生两个领域.然而,许多边缘计算的开发者并不熟悉云原生相关的知识.为了降低 OpenYurt 的使用门槛,帮助更多地开发者快速上 ...
- CodeForce-762B USB vs. PS/2(贪心)
USB vs. PS/2 CodeForces - 762B 题意:有三种电脑,分别有a.b.c个,第一种只有USB接口,第二种只有PS/2接口,第三种有两种接口,有m个鼠标,告诉你价钱和接口类型,问 ...
- 【PHP数据结构】二叉树的遍历及逻辑操作
上篇文章我们讲了许多理论方面的知识,虽说很枯燥,但那些都是我们今天学习的前提,一会看代码的时候你就会发现这些理论知识是多么地重要了.首先,我们还是要说明一下,我们学习的主要内容是二叉树,因为二叉树是最 ...
- PHP中操作数据库的预处理语句
今天这篇文章的内容其实也是非常基础的内容,不过在现代化的开发中,大家都使用框架,已经很少人会去自己封装或者经常写底层的数据库操作代码了.所以这回我们就来复习一下数据库中相关扩展中的预处理语句内容. 什 ...
- http升级https遇到的问题
1. 功能请求失效: 可能是链接为http请求,导致出现问题 2.浏览器网址左边出现黄色感叹号: 这是由于网页中存在http的图片链接,需要根据实际情况修改; 3.将网页内的http请求变为https ...
- 配置阿里云maven
在安装好Maven之后,默认的~/.m2目录下是没有maven仓库配置文件settings.xml的,默认使用的是官方的仓库,访问速度会非常慢,我们需要配置下国内的仓库. 创建~/.m2/settin ...
- Jmeter集合点技术
集合点简介 好比小学时候做广播体操,先让大家集合,等到时间统一开始做体操. 创建集合点 同步定时器 同时签到 注意:作用域 参数设置 用户数 为0 具体数值,不能大于 超时时间 为0,没有超时时间 具 ...