• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wangjiayi21376344

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

[P] 结对项目:影蛇舞

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问
我在这个课程的目标是 学习系统化软件工程知识,增进个人专业化素养,打造令人满意的软件产品
这个作业在哪个具体方面帮助我实现目标 通过软件开发的全生命周期的深入阅读和学习,以极短的时间领略软件开发所需的专业知识

Chapter.0 Belua multorum es capitums.(你是多首的怪物。)

引入

→ 📖 Q0.1(P) 请记录下目前的时间。

3.23 2:03

调查

→ 📖 Q0.2(I) 作为本项目的调查:请如实标注在开始项目之前对 Wasm 的熟悉程度分级,可以的话请细化具体的情况。

I. 没有听说过;

II. 仅限于听说过相关名词;

III. 听说过,且有一定了解;

IV. 听说过,且使用 Wasm 实际进行过开发(即便是玩具项目的开发)。

II: 仅限于相关名词

总结

→ 📖 Q0.3(P) 请记录下目前的时间。

3.22 2:34

Chapter.1 不畏迷茫,只管前进。(迷子でもいい、前へ進め。)

结对过程

→ 📖 Q1.1(P) 请记录下目前的时间。

3.22 2:34

→ 📖 Q1.2(P) 请在完成任务的同时记录,并在完成任务后整理完善:
  1. 浏览任务要求,参照 附录A:基于 PSP 2.1 修改的 PSP 表格,估计任务预计耗时;
  2. 完成编程任务期间,依次做了什么(比如查阅了什么资料,随后如何进行了开发,遇到了什么问题,又通过什么方式解决);
  1. 查阅相关资料:包括assemblyscript相关文档:https://www.assemblyscript.org/introduction.html, 以及CSDN上复数对贪吃蛇策略的实现

  2. 熟悉任务已有的代码架构和任务要求

  3. 实际开发以及最终的简单测试

测试

→ 📖 Q1.3(P) 请说明针对该任务,你们设计和实现测试的方法及过程,包括但不限于:出于对需求的哪些考虑设计了哪些测试用例、如何评估所设计测试的有效性 等等。

首先过了测试样例,后自行构建了一些较为极端的结果(如与墙角交互、蛇身位置较为少见的情况),其次进行了自动化、随机化的测试

→ 📖 Q1.4(I) 请说明<u>单元测试</u>对软件开发的作用。
  1. 早期缺陷发现
    在代码编写阶段即可暴露问题,最小化后续debug成本

  2. 代码质量提升
    迫使开发者编写可测试的代码(高内聚、低耦合),间接改善架构设计

  3. 模块套件可复用性
    单元测试的完成意味着代码架构的某一模块具有相当的可靠性,可放心用于后续复用

  4. 开发效率提升
    提供即时反馈循环,减少调试时间,不必在遇到bug时从代码架构角度细细拆分

总结

→ 📖 Q1.5(P) 请记录下目前的时间,并根据实际情况填写 附录A:基于 PSP 2.1 修改的 PSP 表格 的“实际耗时”栏目。

结束时间:3.22 3:20

Personal Software Process Stages 个人软件开发流程 预估耗时(分钟) 实际耗时(分钟)
PLANNING 计划
- Estimate - 估计这个任务需要多少时间 10 9
DEVELOPMENT 开发
- Analysis & Design Spec - 需求分析 & 生成设计规格(确定要实现什么) 10 5
- Technical Background - 了解技术背景(包括学习新技术) 10 5
- Coding Standard - 代码规范 12 6
- Design - 具体设计(确定怎么实现) 12 5
- Coding - 具体编码 20 20
REPORTING 报告
- Quality Report - 质量报告(评估设计、实现、测试的有效性) 10 5
- Size Measurement - 计算工作量 10 5
- Postmortem & Process Improvement Plan - 事后总结和过程改进计划(总结过程中的问题和改进点) 10 15
TOTAL 合计 102 75
→ 📖 Q1.6(I) 请写下本部分的心得体会。

挺好玩的,感觉两个人结队讨论并实现还挺有意思的

Chapter.2 即使迷茫,也要前行。(迷子でもいい、迷子でも進め。)

结对过程

→ 📖 Q2.1(P) 请记录下目前的时间。

3.26 14:01

→ 📖 Q2.2(P) 请在完成任务的同时记录,并在完成任务后整理完善:
  1. 浏览任务要求,参照 附录A:基于 PSP 2.1 修改的 PSP 表格,估计任务预计耗时;
  2. 完成编程任务期间,依次做了什么(比如查阅了什么资料,随后如何进行了开发,遇到了什么问题,又通过什么方式解决);
  1. 简单阅读项目要求,明确编码方向

  2. 以bfs思路编码

  3. 组织测试和总结

代码可复用性与需求变更

→ 📖 Q2.3(P) 请说明针对该任务,你们对 🧑‍💻 T2 中已实现的代码进行了哪些复用和修改。

出现的障碍物使得我们不再以简单的最近路径搜索来完成代码,需要使用bfs的整体框架来处置,但实际上没有太大的思路变化

→ 📖 Q2.4(I) 请说明在编码实现时,可以采取哪些<u>设计思想</u>、考虑哪些<u>设计冗余</u>,来提高既存代码适应需求变更的能力。

t1-3使用 javascript直接实现,未对冗余性加以考虑(因为知道最后要换别的)

头脑风暴环节

**→ 📖 Q2.5(P) **只吃一个食物可满足不了贪吃蛇的欲望,请一起思考并简述以下场景中贪吃蛇的策略:

在 🧑‍💻 T2 的基础上,场地里不再是只有 1 个果子,而是总共有 n 个果子 (1 < n < 10 ),果子随机分布在场地中且不会刷新,保证不与障碍物重叠,保证每个果子均可达,且至少存在一条成功吃掉所有果子的路线,其余条件保持不变,请你找出一条吃完所有果子的行动路径。

带路径的bfs即可解决

总结

→ 📖 Q2.6(P) 请记录下目前的时间,并根据实际情况填写 附录A:基于 PSP 2.1 修改的 PSP 表格 的“实际耗时”栏目。

结束时间3.26 3:11

Personal Software Process Stages 个人软件开发流程 预估耗时(分钟) 实际耗时(分钟)
PLANNING 计划
- Estimate - 估计这个任务需要多少时间 10 5
DEVELOPMENT 开发
- Analysis & Design Spec - 需求分析 & 生成设计规格(确定要实现什么) 10 5
- Technical Background - 了解技术背景(包括学习新技术) 10 5
- Coding Standard - 代码规范 12 6
- Design - 具体设计(确定怎么实现) 12 5
- Coding - 具体编码 20 20
REPORTING 报告
- Quality Report - 质量报告(评估设计、实现、测试的有效性) 10 5
- Size Measurement - 计算工作量 10 5
- Postmortem & Process Improvement Plan - 事后总结和过程改进计划(总结过程中的问题和改进点) 10 5
TOTAL 合计 102 62
→ 📖 Q2.7(I) 请写下本部分的心得体会。

感觉整体变化较小,改成bfs加上调整就完事了,测试也很简单

Chapter.3 这就是我的前进、到我出场了!!!!!(It's MyGO!!!!!)

结对过程

→ 📖 Q3.1(P) 请记录下目前的时间。

4.4 15:00

→ 📖 Q3.2(P) 请在完成任务的同时记录,并在完成任务后整理完善:
  1. 浏览任务要求,参照 附录A:基于 PSP 2.1 修改的 PSP 表格,估计任务预计耗时;
  2. 完成编程任务期间,依次做了什么(比如查阅了什么资料,随后如何进行了开发,遇到了什么问题,又通过什么方式解决);
  1. 阅读题目要求,清晰其与前两题的差别在哪

  2. 阅读代码,根据第二题的javascript对之进行修改,并确定策略

  3. 测试时发现javascript无法生成wasm 😃

  4. 将其翻译为AssemblyScipt文件,并编译后进行npm测试

需求建模和算法设计

→ 📖 Q3.3(P) 请说明你们如何<u>建模</u>这一需求。

将其他🐍的四节身体看作障碍,使其与T2代码架构对齐,而后发现实际上第四节身体无需视为障碍,并调整思路

→ 📖 Q3.4(P) 请说明针对该任务,你们采取了<u>哪些策略</u>来优化决策。具体而言,怎么避免死亡?怎么吃到更多果子?如何编程实现。

策略:以果子为主体,反向进行BFS,保证最后选定的要前往的果子,离它最近的🐍一定是本🐍,并且这种策略也保证了在同一距离的其他的🐍无法通过改变方向来阻挡我们的道路,进而也一定程度上避免了死亡,而本身BFS所具有的避开障碍的特征,也不会让我们主动撞上,这一策略实际上也保证了我们可以以较高的效率前往果子,尽可能吃到最多

软件度量

→ 📖 Q3.5(P) 请说明你们如何量度所实现的程序模块的有效性,例如:“如何说明我们的程序模块对弈能力很强?”尝试提出一些可能的定量分析方式。

加入了其他组的🐍进行测试比较,并且我们进行了沙盘模拟

总结

→ 📖 Q3.6(P) 请记录下目前的时间,并根据实际情况填写 附录A:基于 PSP 2.1 修改的 PSP 表格 的“实际耗时”栏目。
Personal Software Process Stages 个人软件开发流程 预估耗时(分钟) 实际耗时(分钟)
PLANNING 计划
- Estimate - 估计这个任务需要多少时间 10 9
DEVELOPMENT 开发
- Analysis & Design Spec - 需求分析 & 生成设计规格(确定要实现什么) 10 5
- Technical Background - 了解技术背景(包括学习新技术) 10 15
- Coding Standard - 代码规范 12 8
- Design - 具体设计(确定怎么实现) 20 25
- Coding - 具体编码 30 40
REPORTING 报告
- Quality Report - 质量报告(评估设计、实现、测试的有效性) 15 20
- Size Measurement - 计算工作量 10 5
- Postmortem & Process Improvement Plan - 事后总结和过程改进计划(总结过程中的问题和改进点) 10 15
TOTAL 合计 127 134
→ 📖 Q3.7(I) 请写下本部分的心得体会。

设计策略的过程很有趣,这个我们结对互相讨论、互相思想对抗的过程,实际上极大提高了我们迭代策略、选取高级策略的效率

结对项目总结

结对过程回顾和反思

→ 📖 Q4.1(P) 提供两人在讨论的结对图像资料。

→ 📖 Q4.2(P) 回顾结对的过程,反思有哪些可以提升和改进的地方。

驾驶员和领航员的角色交换不够平常,驾驶员对驾驶的热情过高,使得领航员在特定时间内参与度较低

→ 📖 Q4.3(I) 锐评一下你的搭档!并请至少列出三个优点和一个缺点。

优点:
思维明察秋毫、代码风格高风亮节,编程速度一骑绝尘
缺点:
不拘小节,能够写出 i*8+1+1这一神奇代码

对结对编程的理解

→ 📖 Q4.4(I) 说明结对编程的优缺点、你对结对编程的理解。

两个人裨补阙漏,有所广益,并且能在交换思路、互相监督的过程中达到1+1>2的效果,在编码过程中即时发现小错误
但是毕竟是两个人,需要协调时间

代码实现提交

→ 📖 Q4.5(P) 请提供你们完成代码实现的代码仓库链接。

GITHUB: https://github.com/Amad0us/PairProgramming_wc_wjy

posted on 2025-04-06 21:40  王嘉懿  阅读(32)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3