软件工程第一次作业
| 这个作业属于哪个课程 | 202601 软件工程(福州大学—计算机与大数据学院) |
|---|---|
| 这个作业要求在哪里 | 2026 秋软件工程个人作业(第一次) |
| 这个作业的目标 | 完成 Hugging Face API 调用与前端交互实践,搭建 GitHub 个人主页,并通过技能自评与学习规划明确后续目标 |
| 学号 | 182400143 |
软件工程第一次个人作业
一、环境准备
二、Hugging Face API 调用:Flux 真实感图像生成
2.1 账号与 Token 准备
我在 Hugging Face 官网注册账号并创建了用于本次作业的 Fine-grained Access Token。为了避免泄露密钥,我没有把 Token 写入前端代码或提交到 Git 仓库,而是将其保存在本地 .env 文件中,由后端读取。

2.2 项目实现思路
本项目采用“浏览器前端 → Node.js/Express 后端 → Hugging Face Inference API”的调用方式:
- 用户在前端输入提示词并点击“生成图像”;
- 前端通过
fetch将提示词发送给后端的/api/generate接口; - 后端校验提示词,并使用服务器端保存的
HF_TOKEN调用XLabs-AI/flux-RealismLora; - 后端把生成图片转换为 Base64 数据返回,前端负责显示和下载图片。
这种方式可以避免把 Token 暴露在浏览器中,同时也便于统一处理参数校验和错误信息。后端调用模型的核心代码如下:
const client = new InferenceClient(process.env.HF_TOKEN);
const image = await client.textToImage({
model: "XLabs-AI/flux-RealismLora",
provider: "fal-ai",
inputs: prompt,
parameters: {
num_inference_steps: 28,
guidance_scale: 7.5
}
});
2.3 API 调用成功记录
启动项目后,后端运行于 http://localhost:3000。终端日志显示模型为 XLabs-AI/flux-RealismLora、推理提供商为 fal-ai,并记录了两次成功生成请求,对应两版提示词长度 76 和 166。

2.4 提示词设计思路与修改过程
第一版提示词为:
A university student working on a software engineering project in a library.
这一版只描述了人物和场景,即“一名大学生正在图书馆完成软件工程项目”。它能够让模型生成与主题相关的图像,但描述比较简单,人物动作、光线效果和整体氛围具有较大的随机性,真实感和可控性有限。

第二版提示词为:
A realistic photo of a university student working on a software engineering project in a bright library, natural window light, detailed desk, candid moment, 35mm lens.
在第二版中,我加入了更多能够增强真实感的描述:
realistic photo:强调写实摄影风格;bright library:明确环境是明亮的图书馆;natural window light:加入自然窗光,使光线更真实;detailed desk:丰富桌面细节;candid moment:使人物状态更接近自然抓拍;35mm lens:模拟摄影镜头效果,增强照片感。

相比第一版,第二版不仅说明了“画什么”,还进一步描述了“画面应该如何呈现”,因此人物、环境、光线和摄影风格更明确,最终结果也更接近真实世界中的照片。
这次提示词迭代过程可以概括为:基础场景描述 → 增加真实摄影风格、光线与细节 → 提高图像的真实感和可控性。通过这次尝试,我认识到提示词不能只描述主体,还应适当加入环境、光线、镜头和风格等信息,帮助模型更准确地理解需求。
2.5 调用体验与心得
这次实践让我完整经历了注册账号、配置 Token、阅读接口文档、编写前后端代码、处理返回图片和调整提示词的过程。我认识到,完成一个 AI 应用并不只是调用一次模型接口,还要考虑密钥安全、输入校验、错误提示和交互体验。把 Token 保存在服务端环境变量中,可以降低密钥泄露风险;在终端记录模型、提供商和请求时间,则有助于确认调用状态和排查问题。
通过这个小项目,我开始把“会写一些代码”转变为“能够围绕一个需求完成一个可以运行、可以说明、可以验证的小型软件”。
三、GitHub 个人主页
- 采用方案:GitHub Profile README
- 个人主页:https://github.com/Ther-ux
我创建了与 GitHub ID 同名的仓库,并在仓库根目录编写 README.md,作为个人主页的介绍页面。主页主要展示了个人介绍、兴趣爱好、技能与专业能力、项目实践、技术方向和未来规划。




在主页中,我重点展示了本次完成的 Flux Realism 图像生成器,并梳理了 Java、C++、JavaScript、HTML、CSS、Node.js、Git、基础数据结构与算法和 Hugging Face API 等技能与实践经历。个人发展规划等内容见上方 GitHub 主页截图。
四、当前技能树与技术偏好
4.1 已掌握或正在学习的能力
| 能力方向 | 当前情况 |
|---|---|
| Java | 掌握基础语法,能够编写简单程序 |
| C++ | 掌握基础语法,并用于数据结构与算法练习 |
| JavaScript | 能够实现网页的基础交互逻辑 |
| HTML、CSS | 能够搭建和美化基础网页 |
| Node.js | 能够用于简单的后端程序与接口调用实践 |
| Git | 能够完成基础的版本管理操作 |
| 数据结构与算法 | 学习过常见的基础数据结构与算法 |
| Hugging Face API | 能够配置 Token、调用模型,并在前端展示生成结果 |
4.2 自我评估
目前,我能够使用 Java、C++ 完成基础编程和算法练习,也能使用 HTML、CSS 和 JavaScript 制作简单网页。在本次作业中,我进一步使用 Node.js 搭建了后端,并调用 Hugging Face API 完成图像生成。这说明我已经具备完成小型程序和简单 Web 应用原型的基础能力。
不过,我现在掌握的内容仍以基础知识和小型实践为主。对前端框架、数据库、系统设计、自动化测试、项目部署和多人协作等内容还不熟悉;数据结构与算法也需要通过更多练习来巩固。对于 Hugging Face API,我目前主要会完成基础调用和提示词调整,对模型原理、模型训练和部署等内容还缺少系统认识。
4.3 技术偏好与感兴趣的方向
目前我比较感兴趣的方向包括:
- Web 开发:希望继续学习前后端开发,逐步掌握前端框架、数据库和部署;
- 人工智能应用:希望了解如何把模型能力接入实际软件,完成有用的 AI 应用;
- 数据结构与算法:希望提升分析问题和设计解决方案的能力;
- 软件工程实践:希望学习测试、版本协作和规范化开发,让程序不仅能够运行,也更容易维护。
五、截至目前的代码量与目标
截至目前,我在课程练习和个人实践中累计编写了 3000 多行代码。这些代码主要来自 Java、C++、Web 基础练习。代码行数不能完全代表编程能力,但能够反映我的实践积累和学习过程。
完成本学期课程后,我希望累计代码量达到 8000 行左右。我计划通过课程作业、算法练习和小型项目逐步增加实践量。这个目标不只是为了追求数字,更希望新增的代码具有清晰的结构和实际用途,并在编写过程中练习需求分析、版本管理、测试和项目总结。
六、本课程中最期待学习的知识与希望获得的收获
我在本课程中最期待学习的是完整的项目开发流程。以前的学习更多集中在编写单个程序或完成某项功能,我希望通过软件工程课程了解一个项目如何从需求分析开始,经过设计、编码、测试和修改,最后形成可以使用和展示的成果。
我希望在课程结束后,自己能够独立完成一个完整项目,并在实践中提高代码规范和解决问题的能力。除了让程序能够运行,我也希望逐渐养成先分析需求、合理组织代码、记录问题和验证结果的习惯。
七、ChatGPT 生成的软件工程课程学习指南
我选择的 AI 工具是 ChatGPT。我向它提出的问题是:
请为一名学习过 Java、C++、JavaScript、HTML、CSS、Node.js、Git 和基础数据结构与算法,并完成过 Hugging Face API 入门调用的软件工程专业学生,生成一份简要、可执行的软件工程课程学习指南。指南应包含学习顺序、实践任务、工具建议和阶段性成果要求。
下面是 ChatGPT 生成的学习指南:
软件工程课程学习指南
第一阶段:理解需求与软件生命周期
- 学习需求分析、用户故事、用例和验收标准;
- 了解瀑布、迭代和敏捷开发的基本思想;
- 实践任务:为一个小型 Web 应用写出用户故事、功能清单和验收标准;
- 阶段成果:一份简洁的需求说明书和项目计划。
第二阶段:设计系统与接口
- 学习模块划分、分层设计、接口设计和数据流;
- 了解 REST API、状态码、输入校验和错误处理;
- 实践任务:画出系统结构图,并设计主要 API 的请求和响应格式;
- 阶段成果:一份设计文档和可运行的接口原型。
第三阶段:编码规范与版本控制
- 学习命名、注释、代码复用和基本重构方法;
- 掌握 Git 的提交、分支、合并、冲突解决和代码评审;
- 实践任务:为一个项目建立分支策略,使用清晰的提交信息完成两次功能迭代;
- 阶段成果:可追踪的 Git 历史和一份项目 README。
第四阶段:测试与质量保证
- 学习单元测试、集成测试、接口测试和边界条件;
- 了解测试覆盖率、缺陷记录和回归测试;
- 实践任务:为核心模块编写测试,覆盖正常输入、错误输入和异常场景;
- 阶段成果:自动化测试脚本、测试报告和缺陷修复记录。
第五阶段:部署与持续集成
- 了解环境变量、构建、部署、CI/CD 和基础监控;
- 学习如何区分开发环境、测试环境和生产环境;
- 实践任务:将项目部署到一个可访问的环境,并配置自动化检查;
- 阶段成果:部署地址、运行说明和 CI 流程记录。
第六阶段:综合项目与复盘
- 综合使用需求分析、设计、编码、测试和部署知识;
- 每周记录完成内容、遇到的问题和下一步计划;
- 实践任务:完成一个从需求到发布的完整项目;
- 阶段成果:源代码、设计文档、测试结果、项目演示和个人复盘。
建议使用的工具包括 Git 和 GitHub、VS Code、Node.js、Postman 或 Insomnia、自动化测试框架,以及 GitHub Actions 等 CI 工具。每个阶段都应保留可展示的成果,并通过小步迭代持续改进。
八、对 AI 学习指南的分析
我认为这份指南总体合理,而且与我当前的能力状态比较匹配。
首先,它按照“需求—设计—编码—测试—部署—复盘”的顺序组织学习内容,符合软件从想法到交付的基本流程。我的当前项目已经能够完成编码和简单 API 调用,但在测试、部署和复盘方面还比较薄弱,因此这份指南能够补上我目前最明显的短板。
其次,它为每个阶段都安排了实践任务和阶段成果,没有只停留在概念记忆层面。例如,要求编写验收标准、设计 API、保留 Git 历史、补充自动化测试和记录缺陷,这些任务可以直接转化为可检查的学习结果,对我比较有帮助。
不过,这份指南仍然比较通用,还需要结合课程进度和个人时间进行调整。它没有明确每个阶段需要投入多少时间,也没有指定项目规模、测试覆盖率和部署平台;如果完全照着执行,可能会因为任务过多而难以坚持。此外,AI 生成的内容可能存在遗漏,不能替代教师讲义、课程实验要求和官方技术文档。
对我来说,最适合的执行方式是先把当前的 Flux 图像生成器作为练习项目,按照“需求—设计—编码—测试—总结”的顺序补全项目过程,再逐步学习部署和团队协作。这样既能把指南落实到实际项目中,也能避免一次安排过多内容而难以坚持。
九、随笔后台编辑截图


浙公网安备 33010602011771号