软件工程第一次作业

这个作业属于哪个课程 202601 软件工程(福州大学—计算机与大数据学院)
这个作业要求在哪里 2026 秋软件工程个人作业(第一次)
这个作业的目标 完成 Hugging Face API 调用与前端交互实践,搭建 GitHub 个人主页,并通过技能自评与学习规划明确后续目标
学号 182400143

软件工程第一次个人作业

一、环境准备

二、Hugging Face API 调用:Flux 真实感图像生成

2.1 账号与 Token 准备

我在 Hugging Face 官网注册账号并创建了用于本次作业的 Fine-grained Access Token。为了避免泄露密钥,我没有把 Token 写入前端代码或提交到 Git 仓库,而是将其保存在本地 .env 文件中,由后端读取。

01-huggingface-token

2.2 项目实现思路

本项目采用“浏览器前端 → Node.js/Express 后端 → Hugging Face Inference API”的调用方式:

  1. 用户在前端输入提示词并点击“生成图像”;
  2. 前端通过 fetch 将提示词发送给后端的 /api/generate 接口;
  3. 后端校验提示词,并使用服务器端保存的 HF_TOKEN 调用 XLabs-AI/flux-RealismLora
  4. 后端把生成图片转换为 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。

02-hf-api-success

2.4 提示词设计思路与修改过程

第一版提示词为:

A university student working on a software engineering project in a library.

这一版只描述了人物和场景,即“一名大学生正在图书馆完成软件工程项目”。它能够让模型生成与主题相关的图像,但描述比较简单,人物动作、光线效果和整体氛围具有较大的随机性,真实感和可控性有限。

03-flux-prompt-v1

第二版提示词为:

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:模拟摄影镜头效果,增强照片感。

04-flux-prompt-v2

相比第一版,第二版不仅说明了“画什么”,还进一步描述了“画面应该如何呈现”,因此人物、环境、光线和摄影风格更明确,最终结果也更接近真实世界中的照片。

这次提示词迭代过程可以概括为:基础场景描述 → 增加真实摄影风格、光线与细节 → 提高图像的真实感和可控性。通过这次尝试,我认识到提示词不能只描述主体,还应适当加入环境、光线、镜头和风格等信息,帮助模型更准确地理解需求。

2.5 调用体验与心得

这次实践让我完整经历了注册账号、配置 Token、阅读接口文档、编写前后端代码、处理返回图片和调整提示词的过程。我认识到,完成一个 AI 应用并不只是调用一次模型接口,还要考虑密钥安全、输入校验、错误提示和交互体验。把 Token 保存在服务端环境变量中,可以降低密钥泄露风险;在终端记录模型、提供商和请求时间,则有助于确认调用状态和排查问题。

通过这个小项目,我开始把“会写一些代码”转变为“能够围绕一个需求完成一个可以运行、可以说明、可以验证的小型软件”。

三、GitHub 个人主页

我创建了与 GitHub ID 同名的仓库,并在仓库根目录编写 README.md,作为个人主页的介绍页面。主页主要展示了个人介绍、兴趣爱好、技能与专业能力、项目实践、技术方向和未来规划。

05-github-profile-1
06-github-profile-2
07-github-profile-3
08-github-profile-4

在主页中,我重点展示了本次完成的 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 技术偏好与感兴趣的方向

目前我比较感兴趣的方向包括:

  1. Web 开发:希望继续学习前后端开发,逐步掌握前端框架、数据库和部署;
  2. 人工智能应用:希望了解如何把模型能力接入实际软件,完成有用的 AI 应用;
  3. 数据结构与算法:希望提升分析问题和设计解决方案的能力;
  4. 软件工程实践:希望学习测试、版本协作和规范化开发,让程序不仅能够运行,也更容易维护。

五、截至目前的代码量与目标

截至目前,我在课程练习和个人实践中累计编写了 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 图像生成器作为练习项目,按照“需求—设计—编码—测试—总结”的顺序补全项目过程,再逐步学习部署和团队协作。这样既能把指南落实到实际项目中,也能避免一次安排过多内容而难以坚持。

九、随笔后台编辑截图

image

posted @ 2026-09-08 22:19  Ofseven  阅读(29)  评论(0)    收藏  举报