软件质量与管理2023 期末复习
软件开发四大本质难题
- 不可见性(不因项目而异)、复杂性、可变性、一致性
软件发展三大阶段
软硬件一体化:软件支持硬件完成计算任务、功能单一、复杂度有限、几乎不需要需求变更;measure twice cut once、code and fix;
软件成为独立的产品:摆脱了硬件的束缚、功能强大、需求多变、兼容性要求、来自市场的压力;形式化方法、结构化程序和瀑布生命周期模型、成熟度模型;
网络化和服务化:功能更复杂 、规模更大、用户数量急剧增加、快速演化和需求不确定、分发方式的变化、进一步的服务化和网络化、盛行开源和共享文化;迭代式开发、敏捷开发、开源软件开发方式、DevOps;
管理的三大关键要素:目标、状态、纠偏
软项目管理的三大目标:成本、质量、工期
软件质量与管理2023 课上选择题
“Measure twice, cut once” 描述的是下述哪个软件开发场景:
A. 软件设计;
==B. 代码评审;==
C. 需求开发;
D. V&V;
整体来看,我们可以把软件的发展分为三大阶段,以下不属于三大主要阶段的是:
A. 软硬件一体化; (1950s - 1970s)
B. 网络化和服务化; (1970s - 1990s)
==C. 云计算化和云原生;==
D.软件成为独立产品;(1990s - )
外设推荐——Cherry MX2.0S
嵌入式方向实践 小车实验报告
嵌入式方向实践实验四
实践四_评估LLM对约束表达式的匹配能力 实验报告
实验要求
在实践二中,大家已经将约束表达式交由大语言模型去生成相应的测试用例输入,而在现实的工程环境 下,并没有所谓的正确代码,只有需求文本(即功能说明注释)与待测试的代码,这时我们可以将待测 试代码的约束表达式交由大语言模型,让其辅助判断是否与功能说明相符,是否有错误或遗漏。
本次实践的主要任务是模拟在没有标准代码的情况下,通过将待测试代码的约束表达式与功能说明注释 交给大语言模型,让其判断是否相符,以评估大语言模型对约束表达式的理解能力与匹配能力,从而探 索待测代码的约束表达式能否直接交给大语言模型判断对错,使得测试代码更加方便,准确。
本次实践的原材料依旧为上交实践一成果后分发到的约束,要求大家将每份代码的约束表达式与对应的 功能说明注释交给大语言模型,设计提示语,让其判断是否相符,是否有遗漏等匹配情况,记录下大语 言模型的判断结果(正确/错误/遗漏/……)并计算其判断正确率。
为了防止大语言模型的惯性回答,要求将分发得到的约束表达式进行一定的变异(比如故意改成错 的),来测试其判断正确率。也可以将功能说明进行一定的改动,使其与约束表达式不相符。对于一份 正确的约束,要求至少变异为一份错误的/遗漏的约束。 同时由于大语言模型的不稳定性,在评估判断正确率时,应用相同的提示语多次向大语言模型提问(无 上下文,开新的对话框提问才算为多次),取平均值,本次实践要求每份正确/错误的约束至少重复提 问 3 次,方可评估其判断正确率。
本次实践的成果要求为一份实验报告,包含你所设计的提示语(prompt)、每条约束表达式及判断结 果(文本形式记录)与大语言模型对话的截图(两三张即可),并记录下大语言模型对于约束表达式判 断正确率(请按照上述要求重复生成后再计算正确率)。
嵌入式方向实践实验三
实践三_通过LLM生成测试用例输出 实验报告
实验任务
本次实践的主要任务是模拟在没有标准代码的情况下,通过将测试用例输入(实践二得到的)与功能说明注释交给大语言模型,让其生成一系列的测试用例输出,以评估大语言模型在解析能力与计算能力, 同时连同实践二的内容一起,探索该借助大语言模型生成完整测试用例集的方法的可行性。
而大语言模型基于测试用例输入与功能说明注释所生成的输出并不一定是正确的,因此需要检查其生成的输出(即以实践一所转换的 Cpp 代码运行测试用例输入来核对其输出是否正确),并将正确的输出作为最终的测试用例输出,也请记录大语言模型生成的测试用例输出的准确率,由于大语言模型的不稳定性,在评估准确率时,应用相同的提示语多次向大语言模型提问(无上下文,开新的对话框提问才算为多次),取平均值,本次实践要求每份代码生成测试用例输出时至少重复提问 3 次,方可评估准确率。
本次实践的成果要求与前两次实践类似,为各份代码各个输入所对应的测试用例输出(由大语言模型生成的多份 + 由程序跑出来的一份),与实验报告。实验报告需包含你所设计的提示语(prompt)与大语言模型对话的截图(两三张即可),并记录下大语言模型生成的测试用例输出的准确率(请按照上述要求重复生成后再计算准确率)。
嵌入式方向实践实验二
嵌入式方向实践实验一
实践一_ 利用大模型将python程序转换成C++程序 实验报告
实验任务
请大家将认领到的程序, 尝试借助大语言模型将本文件夹中的 Python 代码转换为 C++ 的代码。应该提 交: 1.原始python代码, 2.大模型输出的C++代码 (标注由哪个模型输出, 以及驱动大模型的prompt), 3.以 及手动修正后的C++代码(需要通过编译, 且可执行, 执行结果正确.)
输入的 Python 代码均由两部分组成,主要功能函数(函数名不确定,函数中含有功能说明注释)与测 试函数( check(candidate) 函数); 手动修正后的 C++ 代码由三部分组成,由主要功能函数(函数名 不确定,请手动将功能说明注释同样补充在其中, 粘贴过去即可)与主函数( main 函数,用于调用主 要功能函数来进行测试,不需要包含原有 check(candidate) 中的所有用例)。
如何搭建个人网页(七)—— Gitlab Pages部署(二)
开始
在第二章中,我们讲了如何将 Hexo 生成的网页部署到 GitLab Pages,但有一个比较麻烦的地方:每次改写网页或新增 Markdown 文件后,运行 hexo deploy
部署时,都需要重新在 GitLab 项目中上传 .gitlab-ci.yml
文件以触发流水线。这无疑非常麻烦。
经过两小时的研究,我发现问题的根源在于:通过 hexo deploy
部署网站实际上是 GitHub Pages 的惯用方式,而 Hexo 官方文档中对于 GitLab Pages 的部署建议则是另一种方法。
本章将讨论部署到 GitHub Pages 和 GitLab Pages 的区别,以及当我们错误地使用 GitHub Pages 的方式部署到 GitLab Pages 时(是的,这种“粗心”就是我了),有没有快捷的补救办法来避免每次上传 .gitlab-ci.yml
文件。
说明:这里所说的部署是指改写网页或新增 Markdown 文件后,重新部署更新网站,而非从零开始的部署流程。