项目 内容
这个作业属于哪个课程 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. js add Struct to ArrayBuffer

    使用struct-buffer为ArrayBuffer添加结构体 $ npm i struct-buffer 1. 创建结构体 import { DWORD, string_t, StructBuff ...

  2. The Filesystem Hierarchy Standard of Linux

    The Filesystem Hierarchy Standard of Linux linux directory https://zhuanlan.zhihu.com/p/23862856 htt ...

  3. Techme Inc热心公益事业 积极开展公益活动

    从2015年起,Techme inc(公司编号:20151524696)便通过优质的产品和服务,帮助顾客实现营养与健康的目标.与此同时,Techme inc(公司编号:20151524696)多年来始 ...

  4. .NET探索模型路由约定实现伪静态

    概述 IPageRouteModelConvention接口用于自定义PageRouteModel,这个对象在Microsoft.AspNetCore.Mvc.ApplicationModels命名空 ...

  5. ROS 安装完成后运行小乌龟示例程序

    安装ROS成功后,在Beginner Tutorials中有一个简单的示例程序. 在Terminal中运行以下命令: $ roscore 新开一个terminal,运行以下命令,打开小乌龟窗口: $ ...

  6. (转)linux下的系统调用函数到内核函数的追踪

    转载网址:http://blog.csdn.net/maochengtao/article/details/23598433 使用的 glibc : glibc-2.17使用的 linux kerne ...

  7. 树的遍历c/c++

    先序遍历(递归) 1 void preOrderTraverase(TreeNode * r) 2 { 3 if(r) 4 { 5 printf("%d\t",r->_dat ...

  8. nacos--配置中心之客户端

    nacos提供com.alibaba.nacos.api.config.ConfigService作为客户端的API用于发布,订阅,获取配置信息: ConfigService获取配置信息流程: 优先使 ...

  9. Win命令行切换Python版本

    目录 安装2.x 和 3.x 的python 设置系统环境变量 pip的使用 参考 安装2.x 和 3.x 的python 我这里使用anaconda来安装两个版本的python包. conda cr ...

  10. 运营好帮手| 华为DTM助电商类应用实现营销数据快速跟踪

    对于电商来说,销售额就是生命线,业务运营人员需要实时关注订单量,交易额,支付转化率等,并从各种维度对比分析,无论增幅或降幅,都需要马上找到原因,落地运营手段进行干预.快速准确的得到各种营销数据就显得格 ...