软件工程课程第一次个人作业

软件工程课程作业(一)

这个作业属于哪个课程 H202601软件工程与软件工程实践 (福州大学 - 计算机与大数据学院)
这个作业要求在哪里 作业要求
这个作业的目标 学习 Hugging Face API 调用与前后端交互,建设 GitHub 个人主页,并梳理自身技能与软件工程学习计划
学号 102401632

1. Hugging Face API 的调用

本项目使用 Hugging Face 的 XLabs-AI/flux-RealismLora 模型,实现“输入提示词—生成图像—网页展示”的交互流程。首先在 Hugging Face 注册账号,在 Settings → Access Tokens 创建 Token;Token 仅保存在本地环境变量 HF_TOKEN 中。

用户输入提示词 → 网页前端 → Flask 后端 → Hugging Face API → Flux 模型 → 返回并展示图像

项目先用独立脚本完成模型连通性验证,再由 Flask 提供网页接口。运行前需安装 flaskhuggingface_hubHF_TOKEN 通过环境变量读取,避免写入仓库。

import os
from huggingface_hub import InferenceClient

client = InferenceClient(provider="fal-ai", api_key=os.environ["HF_TOKEN"])

prompt = """A highly realistic documentary photograph of a modern city street,
ordinary people walking naturally on the sidewalk, cars on the road,
natural daylight, realistic shadows and colors, 35mm photography."""

image = client.text_to_image(
    prompt=prompt,
    model="XLabs-AI/flux-RealismLora",
)
image.save("flux_result.png")

以上为 test_flux.py 的核心调用片段。前端将用户输入以 POST /generate 发送给 Flask,后端调用模型并返回生成图片地址。运行成功时,终端应能看到请求完成和图片保存的记录。

正在调用 Hugging Face API...
API 调用成功!
图片已经保存为 flux_result.png

当前项目中,test_flux.py 用于完成作业要求的 XLabs-AI/flux-RealismLora 调用并保存 flux_result.pngapp.py 则实现首页路由和 /generate 接口:它会校验空提示词、调用模型、将结果写入 static/generated.png,再以 JSON 返回图片地址。前端使用 JavaScript 的 fetch 提交请求,并在图片 URL 后加入时间戳,避免浏览器展示缓存的旧结果。

提交前核对:现有 app.py 的模型名是 black-forest-labs/FLUX.1-dev,与独立验证脚本中的 XLabs-AI/flux-RealismLora 不同。若教师要求前端也必须调用后者,应将 app.py 中的 model 改为 XLabs-AI/flux-RealismLora,并按该模型可用的推理服务配置后重新截图。本文不把两者混写,以免记录与代码不一致。

提示词设计

我先使用 A realistic city street 进行测试,结果虽然包含街景,但场景和摄影感不够明确。随后增加人物、车辆、建筑、树木和日光等环境信息;最终加入 documentary photographrealistic shadowsnatural colors35mm photography,明确要求模型生成纪实摄影风格而非插画。实践表明,提示词应同时说明主体、环境、光线与风格,生成目标会更稳定。

操作记录与心得

图 1 展示了测试脚本、依赖安装和终端中的“API 调用成功”记录;图 2 展示了浏览器中输入较长的场景提示词后,页面返回的雨后城市街景。两张图分别证明了接口连通和前端交互结果。

图1:Flux API 调用成功记录

图2:前端交互生成结果

这次实践让我认识到,模型调用不仅是发送提示词,还要处理密钥保护、依赖环境、异常反馈和前后端传递。AI 模型只是应用的一部分;把它做成可操作的网页,才能真正服务用户。

2. GitHub 个人主页搭建

我选择 GitHub 提供的个人资料 README方案:创建与账号同名的仓库 5-bin/5-bin,并在根目录 README.md 中维护主页内容。这样访问 GitHub 个人主页时即可展示自我介绍、技能、项目和学习计划;主页地址为:github.com/5-bin

目前我已接触 C/C++、Python、Java与 Git/GitHub。C/C++ 主要用于课程实验和算法练习;Python 已用于 Flask 和 API 调用;Java 是接下来重点投入的后端语言。

我对后端开发、AI 应用和 AI Agent 更感兴趣。当前不足主要是大型项目经验、数据库设计和 Java 后端工程能力,后续会通过完整项目持续补足。

未来三年,我计划先夯实 Java、MySQL、Git 和 Spring Boot 基础,完成可展示的项目并争取实习;大四再结合能力和兴趣确定就业或升学方向。长期目标是具备从需求分析、系统设计到测试、部署和维护的完整工程能力。

图 3 为个人资料 README 的发布效果。页面已说明本人为计算机专业本科生,并将 Java 后端、Python 和 AI Agent 应用开发列为重点学习方向;后续会继续补充项目链接与阶段性成果。

图 3:GitHub 个人资料 README

3. 博客园随笔:技能树、自我评估与 AI 学习指南

技能树与自我评估

我目前处于从“学习单个知识点”向“完成一个小型项目”过渡的阶段。编程基础方面,我能够使用 C/C++ 完成课程实验和基础算法练习,理解函数、数组、指针、结构体及常用 STL 容器;Python 方面,已经接触虚拟环境、Flask 与第三方 API 调用,并将这些内容用于本次图像生成项目。Git/GitHub 则帮助我完成基本的命令行操作、版本提交和代码托管。

我的技术偏好是后端开发与 AI 应用开发的结合。一方面,Java、MySQL、Spring Boot 是我希望系统学习的后端技术;另一方面,调用 Hugging Face 模型的过程让我了解到,AI 能力需要通过接口、页面和业务逻辑才能成为真正可用的功能。我也对 AI Agent 感兴趣,但会先夯实编程、数据库和软件工程基础,避免只停留在工具使用层面。

对照完整的软件开发流程,我的不足也比较明确:目前项目规模较小,数据库设计、接口规范、自动化测试与多人协作经验仍然不足;遇到复杂问题时,需求拆分和系统设计的能力也需要通过持续实践提高。接下来我会用一个可迭代的后端项目练习这些能力,并及时记录需求、提交记录和测试结果。

代码量与课程目标

截至目前,我累计代码量约为 10000行,包括课程实验、算法练习和个人项目。本学期结束时,希望达到 15000行。相比单纯增加行数,我更希望这些代码来自能够解决真实问题的项目。

对课程的期待

本课程中我最期待系统学习软件项目的完整过程:需求分析、系统设计、编码规范、测试、版本协作和项目管理。我希望把“代码能运行”的目标,逐步提升为“能以工程化方式交付可维护的软件”。

对我来说,需求分析能够帮助我在编码前明确要解决的问题;设计阶段决定模块如何拆分、数据如何流动;测试与版本控制则让功能修改有据可查。这些内容相互关联,只有放在同一个项目中练习,才能真正理解软件工程不是单纯地写出更多代码。

AI 工具生成的学习指南及分析

本次选择 ChatGPT 生成简要学习指南,使用的提问是:

请为计算机专业本科生制定简要的软件工程学习指南,覆盖需求分析、系统设计、编码、测试、项目管理,以及 Git/GitHub,并给出适合项目实践的学习顺序。

AI 给出的路线为:软件工程基础 → 需求分析 → 系统设计 → 编码实现 → 软件测试 → 项目管理 → 综合项目。我认为它覆盖了软件生命周期,作为知识框架是合理的;但建议较通用,不能代替个人实践。

对于计算机专业本科生来说,软件工程学习应与实际项目结合,逐步建立完整的软件开发思维。首先学习需求分析,明确用户需求、系统目标和主要功能;然后学习系统设计,掌握架构设计、模块划分、数据库和接口设计等基本方法。编码阶段应注重代码规范、模块化和可维护性,完成后学习单元测试、集成测试等方法,提高软件质量。同时掌握任务拆分、进度管理和团队协作等项目管理知识。

Git和GitHub也应尽早学习,掌握基本的版本控制、分支管理和团队协作方法。推荐按照“Git/GitHub—需求分析—系统设计—编码—测试—项目管理—部署”的顺序学习,并通过博客系统、校园二手交易平台等项目进行实践,在完整经历开发流程的过程中提高软件工程实践能力。

结合自己的情况,我会把这条路线落实得更具体一些:先在小项目中写出需求和接口说明,再完成 Java 或 Python 后端、数据库表设计和基础页面;每完成一个功能就用 Git 提交,并为关键逻辑补充测试。这样既能跟上课程的知识结构,也能逐步形成自己的工程习惯。AI 适合作为查缺补漏和梳理学习路径的助手,但需求取舍、代码验证和复盘仍然需要由自己完成。

4. 作业要求与提交检查

下图为博客园后台编辑页面,说明本文采用 Markdown 编辑方式。

图 4:博客园 Markdown 编辑器后台

posted on 2026-09-08 21:03  5-bin  阅读(13)  评论(0)    收藏  举报