软件工程实践第二次作业——与AI结对编程(顶会热词统计)
软件工程实践第二次作业——与AI结对编程(顶会热词统计)
目录
- 软件工程实践第二次作业——与AI结对编程(顶会热词统计)
- 截止时间
- 1、作业背景
- 2、作业内容
- 2.1 问题与需求
- 2.2 阶段一:需求理解与原型设计
- 2.3 阶段二:编程实现与部署
- 2.4 AI结对协作要求(本次作业重点)
- 3、编码要求
- 3.1 CodeArts使用
- 3.2 代码规范制度
- 3.3 技术和框架
- 4、博客撰写要求
- 5、作业评分项和评分规则
- 6、规则&格式
- 6.1、为了方便阅读以及助教评分,请大家在博客开头给出博文目录,作为内容的索引
- 6.2、为了方便其他学校的老师或者助教了解课程实况,请大家在作业开头添加格式描述:
- 6.3、提交规则
- 6.4、注意事项
- 7、附录
- 1. PSP表格
- 2. 华为云
- 3. 参考教程
为了不遗漏作业内容,这里有一份checklist方便同学们快速查阅。
- 详细阅读作业要求
- 确定你使用的AI编程助手(豆包、通义灵码、CodeGeeX、Copilot等)
- 阶段一:与AI协作完成需求理解与原型设计(NABCD模型 + 原型网页)
- 阶段二:与AI协作完成编程实现,并部署到华为云CodeArts/云服务器
- 及时记录PSP表格(预估时间与实际时间)
- 撰写博客
- 包含作业描述和目录
- 核对评分标准
- 在deadline之前,在社区中提交作业
截止时间
本次作业截止时间为 2026年9月24日23时59分。
注:博客发布后需要审核,请同学们记得提前发布博客,避免影响作业提交。
1、作业背景
AI编程助手已经深入程序员的日常开发,成为一位"随叫随到的结对伙伴"。本次结对作业顺应这一趋势,每位同学单独与AI组成人机结对,在理解需求的基础上,与AI协作设计出解决问题的系统界面原型,再与AI协作编程实现,并最终部署到华为云服务器。
与传统的"人人结对"不同,本次结对对象是AI。请结合《构建之法》第4章"两人合作"中关于结对编程的论述,思考并实践:如何与AI高效协作?如何审查、验证并改进AI产出的设计与代码?AI结对与传统人人结对有何异同? 这是本次作业的核心考察点。
2、作业内容
2.1 问题与需求
小刚是一个电影迷,他最近看了一部电影:里面的机器人能够快速地分类出它视野里的各个物体,这让他觉得十分酷炫,并激发了他对计算机视觉领域的兴趣。于是他决定通过阅读论文来了解这个领域的研究现状。但令人苦恼的是,他不知道近几年计算机视觉领域的热门研究方向,根据论文列表去一篇一篇查找总结,效率又实在太低,于是想求助"软件工程实践"的同学们,希望我们能帮助他设计一个平台解决现阶段的需求。
计算机视觉领域世界三大顶级会议分别为:国际计算机视觉与模式识别会议(CVPR)、国际计算机视觉大会(ICCV)和欧洲计算机视觉国际会议(ECCV)。以CVPR为例,据会议官网显示,2025年大会有 13008 篇论文投稿,其中录取 2878 篇。论文数量如此庞大,靠人工逐篇阅读来总结研究热点几乎不可行。
希望此平台至少具备以下功能:
- 功能1:论文信息爬取
- 获取待爬取论文列表及论文信息爬取;
- 支持用户输入单个论文题目,也支持批量导入论文列表;
- 通过论文列表,爬取论文的摘要、关键词、原文链接。
- 功能2:论文列表管理
- 对已爬取的论文列表进行操作,可对论文列表进行增、删、改操作;
- 可对论文列表进行查询:输入论文题目精确查询,也支持模糊查询(输入论文编号、关键词等基本信息);
- 若在论文列表中不存在所要检索的论文,则根据输入的查询语句到网站爬取并返回论文的摘要、关键词、原文链接。
- 功能3:热门方向分析
- 分析已爬取到的论文信息,提取 Top 10 热门领域或热门研究方向。
- 功能4:关键词图谱
- 形成如关键词图谱之类直观的查看方式,点击某个关键词可展现相关的论文。
- 功能5:热度走势对比(动图)
- 可对多年间、不同顶会的热词呈现热度走势对比,以动图的形式呈现(此功能范畴限定在计算机视觉的三大顶会CVPR、ICCV、ECCV内)。
以上是本次作业的基础要求,希望同学们可以在满足总的设计思路和用户需求不变的前提下,尽量发挥自己的想象能力,设计出一个交互友好的原型。例如:
年度热词演变:展示历年Top 10热词榜单的演变对比。
了解更多:介绍CVPR、ICCV、ECCV顶会背景与统计口径说明,通过图文使平台更具吸引力。
注:
- 本次作业将原型设计与编码实现合并为一次完成:阶段一完成需求理解与原型设计,阶段二完成编程实现与部署,两个阶段均须体现与AI的协作过程。
- 数据来源:论文数据建议以CVPR、ICCV、ECCV三大顶会近若干年(如2022年至今)为主,可通过会议官网或DBLP公开数据(提供公开检索API与数据集下载)等渠道获取;也可以使用老师提供的数据集(见附录14)。爬取行为仅用于课程教学,请同学们在博客中注明数据来源与获取方式。
- 关键词抽取与统计:可参考jieba分词(英文可做停用词过滤)、TF-IDF、TextRank等方法,统计口径(如词频、热度=词频×年份增长率)请d在博客中说明。
- 动图实现:热度走势对比动图可通过前端图表动画(如ECharts动态渲染后录屏导出GIF)或直接生成GIF等方式实现,形式不限,博客中需展示动图效果。
2.2 阶段一:需求理解与原型设计
- 阅读《构建之法》第3章和第8章的内容,重点掌握NABCD模型,并在作业中体现阅读成果。
- NABCD需求分析:使用AI辅助需求分析与头脑风暴(例如让AI从不同角色视角列出潜在用户与使用场景、竞品分析要点、功能优先级划分建议),最终人工判断与验证AI输出的合理性,形成完整的NABCD模型(重点分析A和C:如何解决问题、有哪些竞争对手、如何竞争、有何优势)。
- 原型设计:使用专用原型设计工具(如Axure、墨刀、Figma、Balsamiq Mockup等)设计平台全部页面原型,至少包含:首页/热门方向总览(Top 10热门方向+关键词图谱)、热度走势对比页(动图)、论文列表管理页(增删改查)、论文爬取/导入页、详情或关于页。
- 与AI协作设计:可与AI讨论页面的信息架构、布局、配色与文案,让AI生成初稿建议,再由你修改完善并截图记录关键对话。
- 发布原型:将原型以网页形式发布(墨刀/Axure均可生成分享链接),博客中贴出链接。
- PSP表格:在动手前,将需求理解、学习原型工具、与AI讨论、界面原型设计等子任务拆解,预估各任务耗时并记录为PSP表格(预估列),实现阶段完成后填写实际耗时并分析偏差原因。
2.3 阶段二:编程实现与部署
- 基础功能实现:采用 Web 技术实现原型中的全部基础功能(功能1~5);
- 推荐使用Web框架:Vue、React、Spring系列、JSP/Servlet、Flask、Express等;
- 如果技术存在难度,也可以直接使用纯前端开发,数据写在代码中、持久化在storage。Web使用的持久化建议持久化在嵌入式数据库中,如SQLite或derby;
- 采用的技术应具有平台兼容性,不依托于具体环境;
- 本次作业以实现功能为主要目标,技术考量仅占一定分数;切勿用原型工具生成代码! 一经发现直接0分。
- 数据获取与处理:爬取/下载CVPR、ICCV、ECCV等顶会论文数据(如DBLP或会议官网)或使用给定数据集,完成数据清洗、关键词抽取与统计、入库,形成平台数据源;
- 关于扩展功能
- 可以扩展你想扩展的功能,扩展功能会被记入作为附加分,对于扩展的功能请在博客中详细描述。
- 本次项目需要部署到 CodeArts华为云服务器上,并且在博客中给出链接。
- 若未实现部署到云服务器,则项目部署部分的分数为0分,并需与助教协商时间,现场演示。
2.4 AI结对协作要求(本次作业重点)
每位同学必须与至少一个AI编程助手结对完成本次作业(如豆包、通义灵码、CodeGeeX、GitHub Copilot、ChatGPT、Claude等),并在博客中如实、完整地记录人机协作过程:
- 协作记录:提供关键提示词(Prompt)截图、AI输出摘要、你做的修改与理由(采纳/拒绝及其原因),以及迭代过程;
- 代表性案例:至少给出 3个有代表性的人机协作案例:
- 案例A:用AI辅助需求分析与原型设计(如头脑风暴、信息架构、文案优化);
- 案例B:用AI辅助编码实现某个功能模块(如论文爬虫、关键词图谱、热度走势动图);
- 案例C:用AI辅助调试与修复Bug(特别鼓励展示"发现AI代码错误并纠正"的过程)。
- 可解释性声明:在博客中声明哪些代码由AI生成、哪些由你编写或修改;对AI生成的代码,你必须能够解释其设计思路。
- 禁止盲抄:严禁直接提交AI生成而未理解的代码,一经发现按抄袭处理(见第6节规则);
- 反思与评价:结合《构建之法》结对编程相关章节,对比"人机结对"与传统"人人结对"的异同,讨论AI结对的优势与局限(如幻觉、知识截止、安全隐患等),写出你的体会。
3、编码要求
3.1 CodeArts使用
本次作业继续沿用 CodeArts 和 华为云服务器 提供的功能和服务,在第一次个人作业Git使用的基础上,针对 Git 使用 与 人机协作 的相关内容进行考察。
- 新建你自己的CodeArts项目,以 学号 命名,并至少进行 15次以上 的 commit 修改。commit记录应该符合项目实情,如果虚构会被扣去所有分数。仓库目录结构没有硬性要求,但要保证可以依靠此仓库提供的代码来构建项目。
- 对于非仓库要求的代码,如编译器生成的项目文件、输出文件、class、jar包、exe等,应使用
.gitignore进行忽略,并确保不会提交到项目仓库中。 - 为自己的仓库编写
README.md,内容包括:作业链接、学号、项目介绍、数据来源、AI使用说明。 - 在本次编程合作中学习使用Git分支、Release发布及其他高级功能:建立一条
dev分支,在dev分支上开发,开发结束后再合并到main分支;在基本功能开发完成后发布release包,标注版本为1.0.0,后续完成更多功能可以继续发布新的release包。
3.2 代码规范制度
编写一份 codestyle.md 作为代码规范,要求该代码规范来自于主流的官方规范或者大公司推荐的规范,并在代码规范顶部标注来源。
3.3 技术和框架
本次作业不限制语言,不限制库和框架的使用。
4、博客撰写要求
- 给出作业描述和目录。
- 在文章开头给出 CodeArts项目地址 和 AI编程助手说明(使用的工具、版本、主要用途)。
- 在开始实现程序之前,在 PSP表格 中记录下估计将在程序的各个模块的开发上耗费的时间和实际花费的时间,实现程序后在PSP表格中记录实际花费的时间,并分析预估与实际偏差的原因。
- 完成NABCD需求分析;完成原型设计,说明原型工具,提供原型网页访问链接,附上原型相关截图。
- 给出项目部署到云服务器后的访问链接(域名或公网IP)。
- 展示你的成品,要求提供10张以上的图片,或者采用GIF或者视频嵌入的方式展示作业要求的功能,并对每张展示的图辅以一定文字说明。
- AI结对协作记录:按2.4节要求,完整呈现人机协作过程(提示词、AI输出、修改迭代、采纳/拒绝理由、3个代表性案例)。
- 描述设计实现过程,给出功能结构图。
- 代码说明:展示出项目关键代码,300行左右,并解释思路(对AI生成的代码同样要解释其设计思路)。
- 阅读《构建之法》第4章的内容,结合课程所学,撰写本次人机结对开发的心路历程与收获,并评价你的AI结对伙伴。
5、作业评分项和评分规则
本次作业总分100分
- (10')基本要求
- (1')博客排版:开头加上目录以及作业格式描述;采用markdown排版;正确给出仓库链接、代码规范链接、AI工具说明【覆盖课程目标5】
- (5')NABCD模型的详细说明(主要分析A和C),且原型发布成网页形式,贴出链接【覆盖课程目标2】
- (4')功能分析,实现过程的设计(如系统设计、功能架构图、系统创新性、合理性等)【覆盖课程目标5】
- (20')原型设计
- (5')原型模型必须采用专用的原型设计工具实现(如Axure、墨刀、Figma、Balsamiq Mockup等),在博文中说明所采用的原型开发工具及与AI协作设计的方式【覆盖课程目标2】
- (10')原型设计过程及成果:原型界面与需求一致、用户体验良好、易操作、界面美观;体现AI辅助设计与人工优化的协作痕迹【覆盖课程目标2】
- (5’)原型交互逻辑设计:完成原型页面跳转、弹窗、查询联动等基础交互定义,借助AI梳理页面间的数据流转关系,在博文简要说明交互规则【覆盖课程目标3】
- (20')编码实现
- (15')基础功能【覆盖课程目标3】
- (3')功能1:论文信息爬取(支持单个输入与批量导入,爬取摘要、关键词、原文链接)
- (3')功能2:论文列表管理(增删改、精确/模糊查询,列表中不存在时联网爬取并返回)
- (3')功能3:Top 10 热门领域或热门研究方向分析
- (3')功能4:关键词图谱(点击关键词展现相关论文)
- (3')功能5:热度走势对比动图(多年间、不同顶会,限定CVPR、ICCV、ECCV)
- (5')将项目部署到云服务器(华为云),博客给出可访问链接【覆盖课程目标5】
- (15')基础功能【覆盖课程目标3】
- (50')结果汇报与AI结对协作
- (5')代码说明:展示项目关键代码并解释思路【覆盖课程目标5】
- (25')AI结对协作记录
- (5‘)AI辅助代码问题调试与优化:利用 AI 排查开发中的代码报错、逻辑漏洞等问题,记录迭代过程【覆盖课程目标3】
- (10‘)提供完整关键提示词(Prompt)、AI输出摘要;体现多次互动、改写、调整prompt的迭代过程,写明采纳/拒绝AI输出的理由【覆盖课程目标5】
- (10’)至少给出3个代表性案例,附上AI对话截图;不接受只粘贴一次性生成的最终结果【覆盖课程目标6】
- (5')成品展示:提供10张以上图片、GIF或视频展示,展示效果好,能够通过展示清晰了解主要功能【覆盖课程目标3】
- (5')分析过程和设计过程表述规范,详细说明实现过程的设计思路、遇到的问题以及解决的方式【覆盖课程目标5】
- (5')PSP表格与Git协作:PSP表格预估与实际;commit满足15次以上且commit时间合理,使用分支、release、issues、pr等其它功能;commit要能够体现人机协作分工【覆盖课程目标6】
- (5')心路历程和收获与评价:不笼统,有意义,图文兼备;个人撰写感想;评价AI结对伙伴的贡献与局限【覆盖课程目标6】
- (附加分:0'~30')附加功能
- 附加功能1:了解更多【附加分:0~10分】
- 附加功能2:年度热词演变【附加分:0~10分】
- 更多功能:扩展基础功能以外的功能【附加分:0~10分】
6、规则&格式
6.1、为了方便阅读以及助教评分,请大家在博客开头给出博文目录,作为内容的索引
请确认目录可以正确跳转!
务必包含以下大标题(标题含义相近即可,你可以个性化你自己的标题):
- git仓库链接、代码规范链接和AI工具说明
- PSP表格
- NABCD需求分析
- 原型设计与原型链接
- 成品展示
- 结对(人机)讨论过程描述
- 设计实现过程
- 代码说明
- 心路历程、收获
- 对AI结对伙伴的评价
6.2、为了方便其他学校的老师或者助教了解课程实况,请大家在作业开头添加格式描述:
| 这个作业属于哪个课程 | <班级的链接> |
|---|---|
| 这个作业要求在哪里 | <作业要求的链接> |
| 这个作业的目标 | <写上具体方面> |
| 其他参考文献 | ... |
markdown代码
|这个作业属于哪个课程|<班级的链接>|
|-- |-- |
|这个作业要求在哪里|<作业要求的链接>|
|这个作业的目标|<写上具体方面>|
|其他参考文献|... |
6.3、提交规则
- 博客以班级作业页面的提交时间为准;需要提交的代码以CodeArts仓库的提交时间为准;
- 在deadline前交,分数为实际得分 ;
- 若帖子发布后在审核(帖子显示404),可以在deadline 之前先于作业页面提交链接,再等待审核通过
- 不接受上传失败、网络原因等补交理由
- 补交:在deadline 后两天内提交视为补交,分数为实际得分 * 50%;写了但是忘记提交作业和补交扣分一致
- 缺交:在deadline 之后两天未补交视为博客缺交,分数为0分;
- 作业抄袭:当助教发现两篇博客文字/图片/代码过于相似时,判定两篇博客都为抄袭,分数都为-100%(注意是倒扣!);
- 伪造提交:虽然作业博客没有完成,但是先提交到作业占位置,判定为伪造提交,分数得0分;
注:提前提交的作业,如果能积极响应助教和老师的反馈并在deadline前做出相应修改,在后续评分时,这些修改完善也会被纳入考量。提早准备好处多~
6.4、注意事项
班级群如果发布相关通知也是作业要求一部分,请及时查看群通知; 若需要在群填写相关信息,未能在deadline之前完成填写的,扣实际得分的50% ; 如对作业存在疑问,请在deadline之前三天在班级群提出; 若助教对作业要求有修改,会在群内公告,请务必查看并按新的要求完善作业; 请及时回复老师或助教的点评并作出相应修改。即使提交了作业,也应该关注班级群中助教的公告!
若有对题意不清或者有不理解的地方,可在该博客下方留言,或者在QQ群/微信群中直接提问。
7、附录
1. PSP表格
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| • Estimate | • 估计这个任务需要多少时间 | ||
| Development | 开发 | ||
| • Analysis | • 需求分析 (包括学习新技术) | ||
| • Design Spec | • 生成设计文档 | ||
| • Design Review | • 设计复审 | ||
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | ||
| • Design | • 具体设计 | ||
| • Coding | • 具体编码 | ||
| • Code Review | • 代码复审 | ||
| • Test | • 测试(自我测试,修改代码,提交修改) | ||
| Reporting | 报告 | ||
| • Test Report | • 测试报告 | ||
| • Size Measurement | • 计算工作量 | ||
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | ||
| 合计 |
一个功能完备的程序不是一蹴而就的。通过将顶会热词统计平台的需求划分为论文爬取、列表管理、热词分析、关键词图谱、热度走势等功能模块,可将一个大任务划分为可操作的小任务,同时最好按照任务难度或紧急程度指定各个任务的完成次序。因此,在动手开发之前,要先估计将在程序各模块开发所需耗费的时间,以及完成整个项目所需的时间,将这个[估计值]记录下来,写成PSP 的形式。
PSP的目的是:记录工程师如何实现需求的效率,和我们使用项目管理工具(例如微软的Project Professional,或者禅道等)进行项目进度规划类似。
有关PSP的更多内容,请自行阅读邹欣老师的博客:工程师的能力评估和发展
2. 华为云
请阅读邹欣老师的博客:源代码管理,了解源代码管理的10个实践问题。
本次作业要求使用华为云进行源代码管理,代码有进展即签入华为云。签入记录不合理的项目会被助教抽查询问项目细节。
对代码签入的具体要求如下:根据需求划分功能后,每做完一个功能,编译成功后,应至少commit一次。具体的功能划分,请自行定义,并在撰写博客时体现出来,遵循自己对需求的功能划分来提交代码即可。
3. 参考教程
- markdown教程-菜鸟教程
- Git安装与配置-华为云
- 克隆Git仓库-华为云
- 创建分支并提交代码-华为云
- 把本地Git仓导入Repo-华为云
- 使用CodeArts快速搭建基于ECS部署的代码开发流水线-华为云
- 新建CodeArts Deploy应用-华为云
- 沃土云创计划·高校(教师/学生免费云主机等权益)-华为云
- DBLP官网与公开数据;检索API文档:https://dblp.org/faq/How+to+use+the+dblp+search+API.html
- 墨刀原型设计
- Axure原型设计教程
- ECharts可视化教程
- AI编程助手: 豆包 、 通义灵码 、 CodeGeeX 、 GitHub Copilot
- 顶会论文下载合集
相关推荐
人工智能大报告+作业练习.zip
机器学习训练AI游戏小鸟越过障碍,可达到150分左右甚至更高,里面还含有一些常见的人工智能专业的题目,更好的是里面的报告内容非常详细还有学习心得等,都是作者亲自做的,为的就是给师弟师妹啊。
人工智能大作业.zip
涉及知识表示与推理,机器学习,自然语言处理(词云、分词)的一个五子棋对战系统。采用java语言编写。中有完整代码,讲解视频,项目报告,一应俱全。
北京交通大学-软件工程专硕-曾立刚-《AI人工智能开发框架》小作业
2021年秋季学期-北京交通大学软件工程专硕《AI开发框架》作业,总共7个小作业,曾立刚老师要求选4-5个写,待课程结束后统一上交
Python_aider是在您的终端中的AI结对编程.zip
Python_aider是在您的终端中的AI结对编程
人工智能(AI)学习:从Python到AI编程
由于Python具有強大的延展性,可以很容易的与別人分享自己所写的程序代码,因此也很容易汇入各式各样別人的程序代码。许多可以分享的案例,包括Python本身所提供的标准案例,通称为模组(Module)或程式庫(Library)。除了Python本身的标准程序库之外,还有許多其他人(又称第三方)分享的程序库。这些分享的模组都成为Python中非常重要的東西,通称为Python的扩充套件。


