《构建之法》阅读以及工具调研

本文结合《构建之法》的阅读,讨论了单元测试的编写者、服务于小部分用户的idea的价值、敏捷软工在教学中的适用性、非专业团队中项目经理的角色,以及读书后的思考。同时,调研了源代码版本管理工具如Github、GitLab、Gitee和Coding,以及持续集成/部署工具Github Actions和GitLab CI,对比了它们的优缺点和使用场景。

《构建之法》阅读以及工具调研

项目 内容
这个作业属于哪个课程 2022年北航敏捷软件工程社区
这个作业的要求在哪里 传送门
我在这个课程的目标是 1. 提升自身在技术硬实力上的竞争力 2.体验规范软件开发流程,积累团队合作经验,提升软实力
这个作业在哪个具体方面帮助我实现目标 督促我快速建立对敏捷开发整个流程的了解,并实践常用 CI/CD 工具的用法。

第一部分:阅读提问

下面我会列出来自己在阅读《构建之法》的过程中想到的问题,有些问题不一定与某具体章节有关。

问题一:单元测试应该谁来写?

在《构建之法》第二章,对于单元测试,有这样一段描述:

单元测试必须由最熟悉代码的人(程序的作者)来写。

代码的作者最了解代码的目的,特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。

从我目前的经验和经历来看,假如我作为某个事物(不一定是代码)的作者,自己找自己的错误往往会有一种“我没有问题”的心理暗示,而帮别人做一些检查(也不一定是代码)时,因为自己相对作者来说是一个“傻子”,可能都没有理解他搞这个要做什么,所以更容易去给出一些作者从来没有考虑过的“用例”。“当局者迷,旁观者清”大概是这个道理吧。

最近我在一项工作上面临其他同学的检查,在这个期间我们工作小组共同完成的工作被其他组的同学谨慎检查后提出了几十个问题。我个人的体会是,因为我自己预先在心里给这个事情的前提条件设定了一些“期望”,而这些“期望”并不为其他人所知,所以其他人更能 hack 我。

我认为这种检查,和写单元测试属于一类事情,应该拥有类似的经验教训可以吸取,所以我目前觉得单元测试未必要交完全交给最熟悉代码的人来写。熟悉代码的人,比如作者,尽可能地去覆盖自己现有的路径;其他不太熟悉代码的人,可以在原有的单元测试上做补充工作,这些人由于有一个学习的过程,所以思路不是纯白盒测试,而是“从黑逐渐到白”盒测试,这样容易发现诸如原有代码的路径划分过于“粗糙”的一些问题。

问题二:服务于小部分典型用户的idea是否应该被鼓励/继续下去?

在《构建之法》第十章,有一部分是讲述“如何定义典型用户”。其中有一部分这样说道:

注意:我们的软件不是为所有人而服务的

问:那这样不就是损失了大量潜在的用户,我们至少得争取一下为所有人服务,如果不行,再回到少部分用户?

答:不妥,我们宁可从小部分用户出发,要非常明确地定义出谁是我们的用户。

首先,我对书中相关部分的讲解是认同的,即我们在分析软件的典型用户的时候,需要毫不含糊地定义出自己的“基本盘”,即我们可以拍板说这些人几乎肯定需要用我们做的软件。否则,我们可能连做这个软件的底气都没有。泛泛地去谈自己软件的用户,只会让自己沉浸在一种虚无的安全感和满足感中,纯粹是在画满足不了的大饼,最后做出来的产品很

内容概要:本文围绕“考虑储能和可再生能源误差的售电公司购售电策略”展开,基于Python代码实现,构建了日前调度和日内调度两个时间尺度下的优化模型,旨在帮助售电公司在存在可再生能源出力不确定性及储能系考虑储能和可再生能源误差的售电公司购售电策略(Python代码实现)统参与的情况下,制定最优购售电决策。研究综合考虑了电价波动、负荷需求、储能充放电特性以及风光发电预测误差等因素,通过数学建模与优化算法求解,降低运营风险并提升经济效益。文中强调该策略为顶级SCI复现工作,具有较强的学术参考价值和技术实用性,并配套提供完整的代码资源供学习与验证。; 适合人群:具备一定电力系统基础知识和Python编程能力的研究生、科研人员及从事能源交易、智能电网优化等相关领域的工程技术人员。; 使用场景及目标:① 掌握含不确定性因素的电力市场购售电优化建模方法;② 学习多时间尺度调度框架的设计与实现;③ 复现高水平SCI论文中的优化策略,提升科研能力与项目实践水平。; 阅读建议:建议读者结合提供的Python代码逐模块分析,重点关注目标函数构建、约束条件设置及求解器调用过程,同时可借助文中提及的YALMIP等工具包深入理解优化模型的实现细节,推荐在实际数据基础上进行调试与扩展实验。
《DiceGame:深入探索Python骰子游戏编程》在编程世界中,游戏开发是一个充满趣味且富有挑性的领域。本文将深入探讨一个名为"DiceGame"的Python项目,这是一个基于骰子的游戏,旨在帮助初学者熟悉Python编程语言,理解随机数生成、条件判断以及基本的用户交互等核心概念。Python作为一门简洁易学的编程语言,是学习游戏开发的优秀选择。DiceGame项目就是一个很好的实践平台,它将带领我们进入Python的世界,体验编程的乐趣。在DiceGame游戏中,玩家通常会通过掷骰子来决定行动或比较结果。Python的`random`模块提供了生成随机数的功能,包括掷骰子所需的整数随机数。例如,我们可以使用`random.randint(a, b)`函数来生成介于a和b(包括a和b)之间的一个随机整数,模拟骰子的点数。游戏的流程通常涉及一系列的决策和循环。Python中的`while`和`for`循环是实现游戏循环的关键。比如,游戏可能会持续进行直到满足特定条件(如达到一定分数),这可以通过`while`循环实现。在每一轮游戏中,玩家可能会进行多次投骰子的动作,这可以使用`for`循环配合`range()`函数来完成。用户交互是任何游戏不可或缺的部分。Python的`input()`函数允许我们从用户那里获取输入,例如询问玩家是否要继续游戏。同时,使用`print()`函数可以向用户显示游戏状态和提示,增强游戏的交互性。DiceGame的代码结构可能包含以下几个部分:1. 导入必要的模块,如`random`。2. 初始化游戏状态,如设定初始分数。3. 游戏主循环,检查游戏是否结束。4. 在循环内,进行一轮游戏,包括掷骰子、处理结果、更新分数等。5. 提供用户交互,询问是否继续游戏。6. 结束游戏时,展示最终分数。了解了这些基础知识后,我们就可以着手编写DiceGa
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值