项目 内容
这个作业属于哪个课程 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的更多相关文章

  1. BUAA_2021_SE_READING_#1

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#1 我在这个课程的目标是 通过课程学习,完成第一个可以称之为"软件"的项目 ...

随机推荐

  1. nasm astrcspn函数 x86

    xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export ast ...

  2. ng 基础

    文档 组件的工作只管用户体验,而不用顾及其它. 它应该提供用于数据绑定的属性和方法,以便作为视图和应用逻辑的中介者 组件应该把诸如从服务器获取数据.验证用户输入或直接往控制台中写日志等工作委托给各种服 ...

  3. GoEasy使用阿里云OSS出现的问题

    前言:本人使用goeasy来实现微信小程序里面和其他人的im临时对话窗口,想要实现可以同时发送语音和视频.图片.表情包的话,就要通过goeasy关联到阿里云的存储对象. 报错:The OSS Acce ...

  4. JULLIAN MURPHY:拥有良好的心态,运气福气便会自来

    JULLIAN MURPHY是星盟全球投资公司的基金预审经理,负责星盟投资项目预审,有着资深的基金管理经验,并且在区块链应用的兴起中投资了多个应用区块链技术的公司. JULLIAN MURPHY认为往 ...

  5. 开发Microsoft Teams选项卡应用安全注意事项

    我们都知道,为了方便广大的开发人员快速开发Microsoft Teams选项卡应用,微软提供了一个JS SDK,你可以通过这里 https://docs.microsoft.com/en-us/jav ...

  6. DOM的理解

    https://www.cnblogs.com/djtang/p/11538420.html  dom的理解 https://blog.csdn.net/jiuqiyuliang/article/de ...

  7. Mybatis初步认识

    分三层 第一章 1.三层架构 界面层:和用户打交道,接收用户的请求参数明显是处理结果的(jsp,html,servlet) 业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问 ...

  8. 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题

    剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...

  9. Semaphore实战

    简介 Semaphore信号量计数器.和CountDownLatch,CyclicBarrier类似,是多线程协作的工具类,相对于join,wait,notify方法使用起来简单高效.下面我们主要看看 ...

  10. 免费报表工具 积木报表(JiMuReport)的安装

    分享一b/s报表工具(服务),积木报表(JiMuReport),张代浩大佬出品. 官网:http://www.jimureport.com/ 离线版官方下载:https://github.com/zh ...