项目 内容
这个作业属于哪个课程 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. Apple & HTML5 app

    Apple & HTML5 app https://developer.apple.com/cn/news/?id=09062019b https://developer.apple.com/ ...

  2. jquery.query.js

    帮助文档 var url = location.search; > "?action=view&section=info&id=123&debug&te ...

  3. 千万不要错过VAST,NGK算力的下一个财富机会!

    我们把目光投向NGK市场,近来,NGK接连新币,推出了SPC后,又有VAST.在目前市场上债券收益率已经趋近于零的情况下,世界上的大多数央行都在试图让本国货币贬值,所以在此时寻找其他保值资产是合理的. ...

  4. 教你玩转CSS border(边框)

    边框样式 边框样式属性指定要显示什么样的边界. border-style属性用来定义边框的样式 border-style的值 代码演示: <!DOCTYPE html> <html ...

  5. 使用 Tye 辅助开发 k8s 应用竟如此简单(三)

    续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何对数据库进行链接. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次 ...

  6. 无所不能的Embedding7 - 探索通用文本表达[FastSent/InferSent/GenSen/USE]

    在4/5章我们讨论过用skip-thought,quick-thought任务来进行通用文本向量提取,当时就有一个疑问为什么用Bookcorpus这种连续文本,通过预测前一个和后一个句子的方式得到的文 ...

  7. 分分钟钟学会Python - 第四章 文件操作

    4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 ...

  8. 阿里云CentOS8.0服务器配置Django3.0+Python 3.7 环境

    ---恢复内容开始--- 1. 下载并安装python # 安装Python3.7.6 wget https://www.python.org/ftp/python/3.7.6/Python-3.7. ...

  9. SpringCloud(一):微服务架构概述

    1-1.  系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应用,就是把所有的程序.功 ...

  10. 看完我的笔记不懂也会懂----ECMAscript 567

    目录 ECMAscript 567 严格模式 字符串扩展 数值的扩展 Object对象方法扩展 数组的扩展 数组方法的扩展 bind.call.apply用法详解 let const 变量的解构赋值 ...