个人阅读作业#2——软工模式&CI/CD
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 个人阅读作业#2 |
我在这个课程的目标是 | 从实践中学习软件工程相关知识(结构化分析和设计方法、敏捷开发方法、软件测试、软件项目管理、软件开发工具和环境等),培养合作开发能力 |
这个作业在哪个具体方面帮助我实现目标 | 通过阅读全面了解软件工程的方法论和具体模式流程,同时调研版本管理软件和持续集成/部署工具 |
一、阅读提问
1. 软件的行为和用户的期望值不一样,一定是 Bug 吗?
1.2.4 节软件工程的目标中有这样一句话
什么是 Bug 呢?简单地说,软件的行为和用户的期望值不一样,就叫做 Bug。
我想到这个问题:软件的行为和用户的期望值不一样,就一定是 Bug 吗?
我查阅了维基百科,其对 Bug 的描述是这样的
根据我的实践,软件的行为与用户的期望值不同可能是出于开发者与用户的期望并不一致,也可能是受运行环境等因素影响。因此我认为,软件行为和用户期望不一致,并不能直接断定是程序本身的错误,也就不好直接定义为 Bug。
2. 变量的命名方法如何选择?各种场景下命名规范的形成有什么内在的原因?
4.2 节代码风格规范中提到
还有一些地方不适合用“匈牙利命名法”,比如,在一些强类型的语言(如 C#)中,对类型有严格的要求,不同类型的值是不能做运算的...在这类语言中,前缀就不是很必要。
这是“匈牙利命名法”的一个不适用场景的分析,我想知道对于其他语言和命名方法,具体情况是怎么样的,因此有了这个问题。
我查阅了一些资料,主流的变量命名方法有 Pascal、Camel 和匈牙利命名法,在一个程序中,这些方法可能是可以交替使用的,比如类使用 Pascal 命名法,而变量使用 Camel 命名法。在使用 IDEA 和PyCharm 两个 IDE 时,能够发现其对于变量的命名有着不同的规范;同时阿里的开发手册上也有对于变量命名的要求。因此我有这样的疑惑,命名方法的选用需要考虑哪些方面的因素,在不同语言和不同科技公司中不同的命名规范是怎么形成的?
3. 如何理解 TSP 原则中”团队的各个成员对团队的目标、角色、产品都有统一的理解“
5.3.7 节讲述 TSP 的原则有下面一条:
- 团队的各个成员对团队的目标、角色、产品都有统一的理解
在一个较大规模软件系统开发中,不同开发者面对的可能只是其中几个功能模块,那么他需要对产品有全局的理解吗?前文也提到,遵循一些设计原则通常会带来一些高昂的代价,类似地,我认为遵循 TSP 的这条原则也需要付出不小的沟通成本。这条原则是否对于大规模的团队模式不再适用?或者说对产品“统一的理解”只局限在自己需要理解的部分?
4. 采用用户调查问卷进行调查时,是否需要设置有效性检查?
8.3 节讲述用户调研方法时提出,可以使用用户调查问卷进行用户调研
用户调查问卷看似容易,其实大有门道
文中列举了一些常见的问卷设置错误,对我很有启发。我想到在我的实际体验中,用户调查问卷有不小的概率并不会得到用户认真的对待。查阅资料后发现,有些调查者会在用户问卷中加入个别特殊的问题,判断作答者是否是认真完成问卷,但代价是可能会引起少量被调查者的反感。那么我们在发放用户调查问卷时,是否需要设置这样的问题?
5. 二维绩效评定体系是否有普适性?团队贡献如何量化?
17.6 节绩效管理中提到:
有些公司实施过二维的评价体系:
完成任务维度:...
团队贡献维度:...
比起单纯根据代码量或者根据犯错频率评定绩效,这种二维评价体系在全面性和合理性上都有明显的进步,但是我认为团队贡献的量化本身存在一定的困难。在我曾经参与的一个课题中,起步阶段有一个被划分成几部分的论文集,每个人需要阅读其中一部分,寻找可以应用于项目的方案。大家都很好地完成了阅读任务,但是最终只会采用一个方案,那么读到这个方案的人是否对团队有着更突出的贡献?在软件开发团队中是否会有类似的大家分别探路的情况?此时如何对团队贡献分级?
二、调研源代码版本管理软件
主要调研了 GitHub 和 GitLab,比较它们之间的异同
相同之处
- 都是使用 Git 作为代码管理工具的代码托管平台
- 在团队流程中,开发者需要先进行 fork(并不是 Git 原生的功能),以完成服务端的代码仓库克隆
不同点
- GitHub 在很长一段时间里,对私有仓库收费,但 GitLab 一直支持免费的私人仓库搭建
- 从使用现状来看, GitHub 是最火爆的开源项目托管平台,其中不乏知名开源项目Spring、MyBatis、React、Vue等;而 GitLab 是企业端 Git 仓库的首选,也是各种私有化项目的优选
- GitLab 的下列特性,可能使得其在私有化项目管理上更加便利:
- 允许用户选择分享一个 project 的部分代码
- 允许用户设置 project 的获取权限
- 通过 innersourcing 让不在权限范围内的人访问不到该资源
三、调研持续集成/部署工具
选用 2020_oo 第三单元第一次作业进行测试,这是仓库
Pipelines:
点击 Stages 下的小圆圈可以看到详细信息:
这是 GitHub 上的仓库
这是测试效果:
(本次测试内容只是一些简单的 assert)
需要注意的点是,maven 倾向于使用约定而不是配置,在约定下,源代码和测试文件均有指定的位置。当源文件和测试文件没有放置在正确的目录下,就可能出现 No tests to run 或者 Cannot find symbol 错误。(没有自己创建过 maven 项目,以为 reimport 就万事大吉了,不知道还有这种约定,白白耗费了许多时间QAQ)
查阅资料,结合实际体验,得到 GitLab CI/CD 和 GitHub Actions 有如下共同点:
- 工作流由多个任务构成
- 使用简单的 yaml 格式文件配置工作流
- Self Hosted and .com
GitLab CI/CD 还有如下优势:
- CI/CD 整合程度很高,完全不依赖第三方插件
- 可以进行自动化的 CI/CD Pipeline 配置
而在 GitHub 中,可以很方便地集成他人的action。
个人阅读作业#2——软工模式&CI/CD的更多相关文章
- 软工2021个人阅读作业#2——构建之法和CI/CD的运用
项目 内容 这个作业属于哪个课程 2021学年春季软件工程(罗杰 任健) 这个作业的要求在哪里 2021年软工-热身阅读作业#2 我在这个课程的目标是 了解和掌握现代软件开发和项目管理技术,锻炼在大规 ...
- 团队第一次作业(软工C#造梦厂)
一.团队简介 a.团队名称:软工C#造梦厂 b.队员列表 姓名 学号 张旭(组长) 201731024123 周成杰 201731024136 邹扬锋 201731024134 赵俊安 2017310 ...
- [2021BUAA软工助教]个人第一次阅读作业小结
BUAA个人阅读作业小结 一.作业要求 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2021_LR/homework/11776 二.评分规则 言之有物,按 ...
- 软工个人阅读作业2 —— 构建之法与CI/CD
项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 阅读思考教材,调研软工工具 这个作业在哪个具体方面帮助我实 ...
- 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业
概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...
- [BUAA软工]第一次博客作业---阅读《构建之法》
[BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- [2017BUAA软工]个人阅读作业+总结
阅读作业 没有银弹 No Silver Bullet - Essence and Accidents of Software Engineering - Brooks 在这篇论文中,作者阐述了软件的四 ...
- [BUAA2021软工助教]个人阅读作业#2小结
作业链接 见个人阅读作业#2 优秀作业推荐 Shaun_Yao ✍️ 道法之间--软工第2次博客作业 Potassium ✍️ 构之有道,建之有法--软工个人阅读作业#2 MarkDay ✍️ < ...
- 软工网络15个人作业4——alpha阶段个人总结
软工网络15个人作业4--alpha阶段个人总结 一.个人总结 用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 总结Alpha冲刺过程. 由于直接用 ...
随机推荐
- “Fatal error: Unable to find local grunt.” when running “grunt” command
下载到本地 >npm install grunt >grunt 命令行运行:grunt,出现以下问题: 这些是Gruntfile.js中引用的,依次安装: npm install grun ...
- 2021 NGK生态所体验好、交易快 引人注目!
据悉,NGK计划于2021年2月15日正式上线自己的生态所(时间待定),目的在于满足NGK生态建设者对于NGK几大币种的交易等需求,如NGK.BGV.SPC.USDN.VAST等.只要上NGK生态所, ...
- 应该如何看待VAST的未来价格与价值?
提起数字货币的价格,很多币圈人士都是滔滔不绝,随口一举例,便是百倍千倍的数字货币.可是提起数字货币的价值,就很少有币圈人士能举出几个有力的例子,常常顾左右而言他,场面十分尴尬.之所以会这样,是因为很多 ...
- NGK内存将为全球投资者创造新的财富增长机会
2020年,随着BTC的持续上涨带动了整个区块链市场的持续加温,同时金融市场也对金融体制做出了改变,关于金融和区块链的结合越来越被人们所认可,在此基础上,DeFi行业借此迎来了快速发展,据不完全统计, ...
- HTML页面顶部出现空白部分(#65279字符?)解决办法
1.在火狐下面用Firebug,选择body,点编辑html的时候,看到是多出了一个这个代表的意思,还真不知道,搜索后了解到是一种中文的编码规则, UTF-8不需要BOM来表明字节顺序. 制作 ...
- 五分钟快速上手MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. 可以通过简单的 XML 或注解来配置和映射,Ja ...
- virtualbox-centos扩容
virtualbox-centos扩容 版本信息 virtualbox:版本 6.1.4 r136177 (Qt5.6.2) centos:CentOS Linux release 7.7.1908 ...
- Python3+pygame实现的俄罗斯方块 代码完整 有演示效果
一.简单说明 80.90后的小伙伴都玩过"俄罗斯方块",那种"叱咤风云"场景 偶尔闪现在脑海 真的是太爽了:如果没有来得及玩过的同学,这次可以真正的自己做一个了 ...
- Cloud Alibabab笔记问世,全网详解仅此一份手慢无
转: Cloud Alibabab笔记问世,全网详解仅此一份手慢无 什么是Spring cloud alibaba Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案, ...
- POJ-2240(floyd算法简单应用)
Arbitrage poj-2240 #include<iostream> #include<cstdio> #include<cstring> #include& ...