软件工程第1次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2026-01SoftwareEngineeringandSoftwareEngineeringPractice/homework/16716 |
| 这个作业的目标 | 熟悉开发社区工具、掌握云端模型API调用与全栈交互、梳理个人技术成长路径与学期规划 |
| 学号 | 052405110 |
1. 准备工作完成情况
- 博客园设置:已开通个人博客,头像与个人主页样式已配置完毕;已将默认编辑器设置为 Markdown 模式。
- 关注与实名:已关注任课老师(黄兆武)及助教(李怡涵、焦圣蒙);已加入「202601 软件工程」班级群,并完成班内实名制绑定。
- GitHub 准备:已完善个人 Profile 基本资料。
2. GitHub 个人主页搭建
我选用了 个人资料自述文件(Profile README) 方案进行搭建。新建了与自己 GitHub 用户名同名的特殊公开仓库,并在根目录下的 README.md 中进行了排版展示。
- 个人主页地址:https://github.com/zzzoe116/ZZZOOE116
- 页面包含要素:
- 个人兴趣爱好及经历简介;
- 个人技能清单、掌握的技术栈与自我评估;
- 对未来三年的学业与职业规划(目标与选择理由)。
主页展示截图:

3. Hugging Face API 的调用与交互式图像生成
本次实验通过调用 Hugging Face 官方的 Serverless Inference API,部署并调用了指定的 XLabs-AI/flux-RealismLora 模型,结合 Python 生态的 Gradio 框架构建了轻量级的前端交互系统,实现了从 Prompt 构思到写实图像生成的完整工程闭环。
3.1 操作步骤与实现方案
- 账号准备与鉴权:在 Hugging Face 官网注册账号,在个人设置(Access Tokens)中生成了具备推理调用权限(Read)的 API Key。
- 环境依赖搭建:本地部署 Python 运行环境,安装
huggingface_hub、gradio、pillow等关键工程库。 - 接口封装与前端交互:通过
InferenceClient实例向模型节点发送请求,并将推理生成的二进制图像流转换为 PIL 对象;利用 Gradio 封装出包含“输入区、生成按钮、预设示例、图像展示窗、日志回显面板”的可视化 Web 页面。
核心调用与前端交互代码:
import gradio as gr
from huggingface_hub import InferenceClient
from PIL import Image
# 1. 配置 Hugging Face API 凭据(此处已进行脱敏处理)
HF_TOKEN = "hf_********************************"
MODEL_ID = "XLabs-AI/flux-RealismLora"
client = InferenceClient(token=HF_TOKEN)
def generate_realistic_image(prompt: str):
if not prompt or prompt.strip() == "":
return None, "错误:提示词不能为空!"
try:
# 调用官方推理端点
image = client.text_to_image(
prompt=prompt,
model=MODEL_ID
)
status_info = (
f"✅ 调用成功!\n"
f"目标模型: {MODEL_ID}\n"
f"图像尺寸: {image.size[0]}x{image.size[1]}\n"
f"响应状态: HTTP 200 OK"
)
return image, status_info
except Exception as e:
error_msg = str(e)
if "503" in error_msg:
return None, f"⚠️ 模型正在云端冷启动加载中(503),请稍等 1-2 分钟后再重试!\n详细信息: {error_msg}"
elif "401" in error_msg:
return None, f"❌ 认证失败(401):Token 无效或权限不足。"
else:
return None, f"❌ 调用出现异常:\n{error_msg}"
# 2. 构建可视化交互前端
with gr.Blocks(title="FLUX RealismLora 图像生成系统") as demo:
gr.Markdown("# 🎨 FLUX RealismLora 真实感图像交互生成")
gr.Markdown("软件工程个人作业:调用 Hugging Face Inference API 实现前端交互生成")
with gr.Row():
with gr.Column(scale=1):
prompt_input = gr.Textbox(
lines=4,
placeholder="请输入写实风格英文提示词...",
label="Prompt(提示词输入区)"
)
submit_btn = gr.Button("🚀 生成写实图像", variant="primary")
gr.Examples(
examples=[
["A cinematic close-up shot of an old ceramic mug of black coffee on a weathered dark oak desk, natural morning window light, high detail, 8k photorealistic, depth of field"],
["A photorealistic medium close-up photograph of a university student studying in a library, warm desk lamp lighting, fine skin texture, shot on 35mm lens, f/1.8, 8k"]
],
inputs=prompt_input
)
with gr.Column(scale=1):
image_output = gr.Image(label="生成的写实图像", type="pil")
log_output = gr.Textbox(label="API 交互日志与状态", lines=4)
submit_btn.click(
fn=generate_realistic_image,
inputs=prompt_input,
outputs=[image_output, log_output]
)
if __name__ == "__main__":
demo.launch()
3.2 运行效果与调用成功记录
1. 前端交互界面与写实图像生成展示
在本地前端界面输入设计好的 Prompt,调用 XLabs-AI/flux-RealismLora 模型成功生成高写实度的图像:

2. API 调用成功记录与状态日志
从交互面板的响应日志可以看出,接口请求顺利返回 HTTP 200 OK,模型端点匹配正确,图像数据流解码渲染无异常:

3.3 提示词(Prompt)设计思路与修改过程
为了充分激发出 flux-RealismLora 在消除“AI 塑料感”、渲染微观写实材质上的优势,提示词经过了针对性的工程迭代:
初始版本(Prompt v1):
A cup of coffee on the desk.
存在问题:描述过于单薄,模型缺乏具体的环境光照与构图引导,生成的杯体边缘过于光滑,质感扁平,具有明显的数字插画涂抹痕迹。
第二版(引入构图与基础环境):
A close-up shot of a cup of coffee on an old wooden desk, morning window light.
修改反馈:光影立体感有所提升,但物体表面微观肌理与镜头纵深依然不够细腻,AI 感仍然存在。
最终版本(Prompt v3 - 摄影级写实参数约束):
A cinematic close-up shot of an old ceramic mug of black coffee on a weathered dark oak desk, natural morning window light, high detail, 8k photorealistic, depth of field
迭代思路与优化效果:
镜头与景深控制:采用 cinematic close-up shot(电影特写)与 depth of field(浅景深),使焦点精准聚集于咖啡杯身与液面漫反射,背景自然虚化。
物理光照建模:使用 natural morning window light(自然晨曦侧光),形成了明暗交界线清晰的真实阴影与光泽过渡。
材质纹理特化:引入 old ceramic mug(带细微做旧质感的陶瓷杯)与 weathered dark oak desk(风化黑橡木纹理),成功激发了 LoRA 权重对复杂物理表面微观结构的渲染能力,生成了一张最贴近真实世界的照片级图像。
3.4 API 调用体验与心得体会
服务解耦与算力轻量化:通过 Hugging Face 提供的 Serverless 推理 API,开发者可以在本地完全不具备昂贵 GPU 显存资源(FLUX 模型通常需极高显存)的情况下,通过轻量级 SDK 迅速拉起高精度的模型服务,真正体会到了“模型即服务(MaaS)”带来的工程敏捷度。
工程鲁棒性思考:在实际调试过程中体会到,云端免费共享算力存在“冷启动等待(HTTP 503)”的现象。在工业级软件工程交付中,单纯的“调通接口”是远远不够的,前端与业务层必须设计好完备的超时重试机制、状态反馈(如 Loading 骨架屏)及异常捕获兜底方案。
4. 技能树梳理与个人成长评估
4.1 当前技能树与技术偏好
按核心维度梳理如下:
已掌握的知识与能力:
能力 A(编程语言基础):熟练掌握 C/C++ 语言核心语法与指针内存操作,具备 Python 脚本编写及基础数据处理能力。
能力 B(专业理论根基):系统学习过数据结构与基础算法,能够完成链表、栈、二叉树、图结构的设计以及常见排序、检索算法的实现。
能力 C(开发工具与环境):掌握 Git 基础命令行版本管理(commit, push, pull, 分支管理);熟悉 VS Code 开发环境调试与 Linux 常用操作指令。
技术偏好与感兴趣的方向:
对计算机系统底层架构与高性能后端服务设计抱有极大兴趣。
关注现代生成式 AI 原生应用工程(LLM / Diffusion Agent 的实际业务编排与落地)。
当前欠缺与短板:
缺乏面向大规模生产环境的架构设计能力,对常见设计模式(如工厂、观察者、单例)的实战沉淀不足。
尚未建立成熟的软件工程全生命周期观念,对自动化测试驱动开发(TDD)、CI/CD 持续集成部署的规范化实践较为欠缺。
4.2 代码量统计与课程预期
目前累计代码量:约 8,000 行(主要由大一、大二的专业基础课、算法题解及小型课设脚本构成)。
完成本学期课程后希望达到的代码量:目标新增 6,000 ~ 8,000 行,累计突破 15,000 行。相比单纯的代码行数增长,更注重代码的结构规范、模块化内聚性以及高覆盖率的单元测试代码占比。
4.3 课程期待与收获目标
在本次《软件工程》课程中,我最希望能够:
跳脱“单兵作战”的局限:真正体验工业界标准的敏捷协同开发(Scrum)、规范的代码审查(Code Review)流程与需求工程变更管理。
建立全链路工程化工程素养:不再只写局部的功能函数,而是完整走一遍从“需求分析与规格说明”、“系统架构设计”、“代码协同实现”到“自动化测试与交付”的完整软件生命周期,为未来深造与工程实践打下坚实的地基。
5. AI 生成的软件工程课程学习指南与合理性分析
5.1 AI 生成的学习指南内容
使用 AI 工具(DeepSeek)输入提示词:“请为一名计算机科学与技术专业大三学生定制一份《软件工程》课程的一学期学习指南,涵盖理论学习、工程实践与团队协同三个方面。”
AI 生成的简要指南如下:
第一阶段:理论认知与需求建模(第 1-4 周)
深入掌握瀑布模型、增量模型与敏捷开发(Scrum)的适用场景与优缺点。
掌握用户故事(User Story)与需求规格说明书编写规范,熟练使用 UML 工具(类图、时序图、用例图)表达系统设计。
第二阶段:工程规范与持续交付(第 5-10 周)
建立标准 Git Flow 分支协作规范,杜绝直接向主干分支随意推送。
学习并落地测试驱动开发(TDD),引入自动化单元测试(如 pytest / GoogleTest)及集成测试。
探索 CI/CD 工具链,实现代码提交后的自动化构建与代码风格检查。
第三阶段:团队协同与项目冲刺(第 11-16 周)
实施每日站会与看板(Kanban)任务管理,动态跟进 Sprint 迭代进度。
推行严格的 Pull Request 与 Code Review 制度,控制技术债务积累,确保团队最终交付高内聚、低耦合的可运行软件成果。
5.2 合理性分析与个人思考
合理且带来帮助之处:
结构层次清晰:指南打破了“纯背理论概念”的传统误区,将软件工程理论与工程界的实际落地工具(Git Flow、CI/CD、看板)紧密绑定,为本学期的实操指明了关键里程碑。
聚焦工程规范:指南特别突出了测试覆盖与代码审阅,这正是我个人目前技能树中最为薄弱、也最需在团队作业中补全的软硬件规范。
局限性与实际工程考量:
AI 给出的指南存在理想化假设,忽略了真实学生团队在协作初期可能遇到的“技术栈割裂”、“沟通摩擦与需求频繁变更(Scope Creep)”以及“考试周冲刺时的任务推迟”。
落地应对策略:在团队大作业开展前,不能盲目堆叠高大上的工具链,而应先在团队内部确立统一的代码格式化规约(Linter)与最小可用接口文档协议,采取“小步快跑、频繁集成”的策略,以防在最后交付期出现系统级联调崩溃。
6. 后台博文编辑页面截图
已将博客园后台默认编辑器切换为 Markdown 编辑器进行本次作业的撰写与排版:

浙公网安备 33010602011771号