BUAA_2021_SE_READING_#2
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
| 这个作业的要求在哪里 | 个人阅读作业#2 |
| 我在这个课程的目标是 | 通过课程学习,完成第一个可以称之为“软件”的项目,同时了解软件工程中用到的方法,确定自己的职业目标 |
| 这个作业在哪个具体方面帮助我实现目标 | 快速了解《软件工程》这门学科研究的内容,同时学习完成软件项目必不可缺的工具 |
BUAA_2021_SE_READING_#2
1. 教材提问
- 由于我还没有买到教材,参考的是邹欣老师的博客
1.1 单元测试应由谁来写?
在这篇讲义中,老师提到这么一段话:
单元测试必须由最熟悉代码的人(程序的作者)来写。
代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。问:如果我很忙,能不能让别人代劳做单元测试?
答:如果忙到连单元测试都没有时间做,那么你也没有时间写好这个功能。在一些极限编程的方法中,是可以考虑让别人来做单元测试的,但是,程序的作者还是要对单元测试负责。最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义,如果没有单元测试,语义的准确性就不能得到保障,以后会产生歧义。
我个人对此不是很存在疑问,在我个人的开发经历中,作为一个基本的开发者,对于程序的架构或者整体的设计性的任务,我们几乎接触不到,所做的都是在有限的框架下,进行一个“填空式”的开发,对于此,每个“空”的需求已经十分清晰了,如果让开发者自己编写单元测试,即使代码覆盖率提上去了,那真的能做到对需求的全覆盖么?
1.2 关于结对编程理论的提问
在这篇讲义中,老师提到这么一段话:
结对编程不是程序开发者独到的发明,在现实生活中,也存在着类似的搭档关系(Partnership):
越野赛车(驾驶,领航员)
驾驶飞机(驾驶,副驾驶)
战斗机的编组(长机,僚机)
提示:这些任务都有共同点:在高速度中完成任务,任务有较高的技术要求,任务失败的代价很高。
这些项目设计两人(或)两组人,真的是要提高效率或是互相提醒么?这些项目真的和软件项目开发十分类似么? 我个人认为,随着现在仪表电子化水平越来越高,驾驶越野赛车,驾驶飞机等任务完全可以由一个人来完成,而之所以设置两人共同完成这个任务,是因为为了防止出现特殊情况下一人失能,而安排的双人执勤,或是由一个资历较老的操作人员,带领一个新上岗的或是学员来完成任务,是一种教学行为。事实上,对于以前飞机仪表复杂的年代,曾经出现过>=三人的机组配置,实际上确实需要这么多人同时完成任务,才能保证任务的顺利完成。
而软件开发是么?真的需要两个人同时进行且交换身份同时审视,才能高效的完成任务么,我对此存疑。在软件开发过程中,不同人同步进度,互相提问是必不可少的,但是我认为,两人以这种模式结对开发,我对此保留意见。
1.3 关于团队的提问
在这篇讲义中,老师提到了很多种类的团队。
在这篇讲义中,老师使用动物对团队成员进行比喻。
对于我们的小作坊课程组建的临时团队,如何确定每个人应该是哪种“动物”,各种动物的比例应该是多少,如何防止,一人有难,八人围观局面的产生。
1.4 关于需求的提问
在这篇讲义中,老师提到了NABCD。
在这篇讲义中,老师提到了用户调研。
对于某些公司的某些产品,在发布时显然发布了与用户所需要的不符的产品(比如iPhone取消耳机接口,多家厂家纷纷效仿,最终也获得成功,成功的推出了airPods)。请问真的需要那么考虑客户所需么,还是可以学苹果如此“戏弄”客户。
1.5 关于绩效的提问
在这篇讲义,老师讲了绩效相关
请问老师,您如何看待在以往的软件工程课程中,同学互当老好人,实行“共产主义”。
可能还有更多的问题在我仔细阅读中会一步一步的显露出来,由于时间紧张,本人阅读速度过快,所以不能面面俱到
2. 调研持续集成/部署工具
由于我个人之前仅使用过gitlab和github作为代码的远程仓库,本次我就选择Gitlab CI和Github Action来进行学习和实验。
2.1 Gitlab CI
仓库地址:传送门

2.2 Github Action
仓库地址:传送门

2.3 对比及感受
- 两者的yml写法还是有所不同,在之后的学习中要更加细致的学习,今天知识一个简单的测试实验,使用了OOpre作业的代码。
- 这种集成工具,对代码质量有了一定提升,至少对于新加入的代码,在merge或push时都会过一下pipeline
- 部署的每一个步骤都可视化
- Gitlab 的 CI/CD 需要指定镜像
- Github Action 有许多插件可以直接使用
BUAA_2021_SE_READING_#2的更多相关文章
- BUAA_2021_SE_READING_#1
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#1 我在这个课程的目标是 通过课程学习,完成第一个可以称之为"软件"的项目 ...
随机推荐
- nasm astrcspn函数 x86
xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export ast ...
- ng 基础
文档 组件的工作只管用户体验,而不用顾及其它. 它应该提供用于数据绑定的属性和方法,以便作为视图和应用逻辑的中介者 组件应该把诸如从服务器获取数据.验证用户输入或直接往控制台中写日志等工作委托给各种服 ...
- GoEasy使用阿里云OSS出现的问题
前言:本人使用goeasy来实现微信小程序里面和其他人的im临时对话窗口,想要实现可以同时发送语音和视频.图片.表情包的话,就要通过goeasy关联到阿里云的存储对象. 报错:The OSS Acce ...
- JULLIAN MURPHY:拥有良好的心态,运气福气便会自来
JULLIAN MURPHY是星盟全球投资公司的基金预审经理,负责星盟投资项目预审,有着资深的基金管理经验,并且在区块链应用的兴起中投资了多个应用区块链技术的公司. JULLIAN MURPHY认为往 ...
- 开发Microsoft Teams选项卡应用安全注意事项
我们都知道,为了方便广大的开发人员快速开发Microsoft Teams选项卡应用,微软提供了一个JS SDK,你可以通过这里 https://docs.microsoft.com/en-us/jav ...
- DOM的理解
https://www.cnblogs.com/djtang/p/11538420.html dom的理解 https://blog.csdn.net/jiuqiyuliang/article/de ...
- Mybatis初步认识
分三层 第一章 1.三层架构 界面层:和用户打交道,接收用户的请求参数明显是处理结果的(jsp,html,servlet) 业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问 ...
- 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题
剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...
- Semaphore实战
简介 Semaphore信号量计数器.和CountDownLatch,CyclicBarrier类似,是多线程协作的工具类,相对于join,wait,notify方法使用起来简单高效.下面我们主要看看 ...
- 免费报表工具 积木报表(JiMuReport)的安装
分享一b/s报表工具(服务),积木报表(JiMuReport),张代浩大佬出品. 官网:http://www.jimureport.com/ 离线版官方下载:https://github.com/zh ...