软件工程课程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712 |
| 这个作业的目标 | huggingface-API的调用 、Github个人主页搭建、梳理当前的技能树,技术偏好,未来规划 |
| 学号 | 102401435 |
前期准备工作
-
GitHub账号:1530017982,完善个人资料。
-
博客园账号:乔震宇,完善个人资料。
-
关注任课老师的博客
-
关注助教的博客
一、Hugging Face API 的调用
1.1、项目结构
hf-flux-demo/
├─ app.py # Flask后端
└─ index.html # 网页前端
1.2、后端代码 app.py
from flask import Flask, request, jsonify
from flask_cors import CORS
import requests
import base64
import warnings
warnings.filterwarnings("ignore")
app = Flask(__name__)
CORS(app)
HF_TOKEN = ""
MODEL_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-schnell"
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
@app.route('/generate', methods=['POST'])
def generate_img():
data = request.get_json()
prompt = data.get("prompt", "")
payload = {
"inputs": prompt,
"parameters": {
"num_inference_steps": 28,
"guidance_scale": 3.5
}
}
print("正在调用HF API,提示词:", prompt)
response = requests.post(MODEL_URL, headers=headers, json=payload, verify=False, timeout=60)
print("HF返回状态码:", response.status_code)
if response.status_code == 200:
b64 = base64.b64encode(response.content).decode("utf-8")
return jsonify({"img": b64})
return jsonify({"error": response.text}), 500
if __name__ == '__main__':
app.run(host="127.0.0.1", port=5000, debug=True)
1.3、前端代码 index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Flux-RealismLora写实图生成</title>
</head>
<body>
<h1>Flux-RealismLora 写实图生成</h1>
<textarea id="promptInput" style="width:95%;height:200px;">a cat</textarea>
<br><br>
<button onclick="generateImage()">生成图片</button>
<p id="msg"></p>
<img id="resultImg" style="max-width:800px;">
<script>
async function generateImage(){
const prompt = document.getElementById("promptInput").value;
const msgBox = document.getElementById("msg");
const imgBox = document.getElementById("resultImg");
msgBox.innerText = "正在请求...";
imgBox.src = "";
try{
const res = await fetch("http://127.0.0.1:5000/generate",{
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({prompt:prompt})
});
const data = await res.json();
if(data.img){
imgBox.src = "data:image/jpeg;base64," + data.img;
msgBox.innerText = "生成成功";
}else{
msgBox.innerText = "失败:"+JSON.stringify(data.error);
}
}catch(err){
msgBox.innerText = "请求失败:"+err;
}
}
</script>
</body>
</html>
1.4、环境部署 & 运行步骤
- 安装依赖
打开 cmd,执行:
pip install flask flask-cors requests
- 获取 HuggingFace 密钥
- 注册 HuggingFace 账号,进入 Settings → Access Tokens
- 创建 token,权限勾选
read,复制 token 替换代码内HF_TOKEN的值
- 启动后端服务
cmd 进入项目文件夹,运行
python app.py
看到 Running on http://127.0.0.1:5000 代表后端启动成功
- 打开前端页面
双击打开index.html,在文本框输入绘图提示词,点击【生成图片】
1.5、系统原理
- 前端:HTML 页面提供输入框与按钮,点击按钮后 JS 通过
fetch向后端http://127.0.0.1:5000/generate发送 POST 请求,携带文本提示词。 - 后端 Flask 接收 POST 请求,提取提示词,构造请求体调用 HuggingFace 官方 FLUX.1-schnell 模型推理 API。
- HF 服务根据提示词生成图片,返回图片二进制数据。
- 后端将图片二进制转为 base64 字符串,返回给前端。
- 前端接收 base64 编码,解析并在页面展示图片。
1.6、提示词设计思路及图像
- 初始提示词:
a cat

效果:图像偏卡通,真实感弱。
问题:缺少摄影、画质、光影关键词,LoRA 写实效果没有激活。
- 迭代版本 1:
photo of a cat, real world, 8k
效果:真实度提升,但细节、景深不足。

- 最终版本:
photorealistic photo of a cat sitting on wooden windowsill, soft morning sunlight, shallow depth of field, shot on Sony A7M4, 8k, ultra detailed, natural skin texture, sharp focus

- 正向关键词拆解
photorealistic:核心,触发 RealismLora 写实风格- 场景 + 光影:soft morning sunlight, shallow depth of field(浅景深,相机摄影效果)
- 相机参数:Sony A7M4,增强真实照片质感
- 画质:8k, ultra detailed, sharp focus
二、Github个人主页搭建

三、博客园随笔
软件工程课程学习随笔
一、个人技能树梳理 & 自我评估
✅ 已具备专业知识与能力
- 掌握 C、C++ 基础语法,能够编写简单程序,熟悉变量、循环、条件语句、数组等基础编程逻辑。
- 掌握 Python 基础语法,能够编写简单程序。
- 会使用 Flask 搭建简易后端接口,接收前端发来的请求。
- 了解基础 HTML 和 JavaScript,能写简单网页,实现页面交互。
- 可以调用网络 API,进行简单的数据传输,能处理图片的 base64 编码。
🎯 感兴趣的技术方向
- 大模型 / 文生图 AI 应用开发:基于开源大模型 API 搭建 Web 应用,前端页面交互、后端中转调用 AI 模型。
- 前后端分离小型 Web 系统开发:独立完成完整项目,从页面、接口到数据流转。
- 软件项目工程化:版本管理、项目文档撰写、需求分析、测试流程(软件工程课程相关方向)。
- 底层计算机原理:计算机组成原理、底层数值运算、C/C++、嵌入式底层开发(长期感兴趣方向)。
❌ 目前欠缺的能力
- 工程化规范能力:缺少版本控制 Git(分支、提交、冲突处理);项目缺少单元测试,没有错误统一处理、日志规范;代码没有分层(控制器、服务层分离),所有逻辑堆在路由函数内。
- 项目架构能力:不会项目模块化拆分,缺少配置文件管理(密钥硬编码在代码,存在安全风险);不熟悉项目依赖管理(requirements.txt)。
- 前端进阶能力:只会原生 JS,不会 Vue/React 框架;没有样式美化、组件封装、状态管理。
- 软件设计能力:缺少 UML 用例图、时序图、类图绘制;不会做需求分析、系统设计、接口文档编写。
- 部署能力:仅能本地开发调试,不会将 Web 项目部署到服务器;不熟悉生产环境 WSGI 服务、容器 Docker。
- 测试能力:没有编写单元测试、接口自动化测试的经验;只会手动网页点击测试。
二、代码量统计与目标
- 当前累计代码量:约 4000 行
- 本学期课程结束目标代码量:累计 2000 行。包含:多个小型 Web Demo、配套测试代码、脚本程序,覆盖需求实现 + 简单单元测试。
三、课程期待学习内容与希望收获
最期待学习的知识
- 软件生命周期完整流程:需求分析、概要设计、详细设计、编码、测试、维护。
- 软件工程建模工具:UML 图(用例图、时序图、类图),学会用图形描述系统交互。
- 版本控制 Git:掌握提交、分支、合并,团队协同开发。
- 软件测试理论与实操:单元测试、集成测试,如何设计测试用例,发现程序缺陷。
- 项目文档规范:学会撰写项目需求文档、概要设计文档、用户手册。
希望获得的收获
- 建立工程化思维:不再只追求 “代码跑通就行”,学会规范开发,考虑健壮性、可维护性。
- 掌握团队协作开发方式,能和他人共同完成一个软件项目。
- 学会对软件项目进行拆解,把需求转化成可实现的模块与接口。
- 学会规范地撰写项目报告、设计文档,完成课程项目。
四、AI 生成《软件工程课程学习指南》+ 合理性分析
选用 AI 工具:DeepSeek
给 DeepSeek 提示词:生成一份软件工程课程学习指南,面向大学本科学生,简洁,覆盖学习阶段、重点知识点、练习方案、项目实践建议。
DeepSeek 生成的学习指南
软件工程课程学习指南
一、学习阶段规划
- 基础理论阶段(第 1-6 周)
重点学习软件生命周期、软件开发模型(瀑布模型、增量模型、敏捷开发);理解需求工程,学习如何提取用户需求,区分需求的功能性与非功能性需求。
学习任务:阅读教材,完成课后习题;练习简单需求描述案例分析。- 软件设计阶段(第 7-10 周)
学习 UML 建模:用例图、时序图、类图;学习模块化、高内聚低耦合的设计思想;学习接口设计。
学习任务:针对小型项目绘制 UML 图;练习模块拆分。- 编码与测试阶段(第 11-14 周)
掌握版本控制 Git 基础;学习单元测试、集成测试,设计测试用例;理解软件缺陷。
学习任务:用 Git 管理课程项目,为代码编写单元测试。- 项目综合实践阶段(第 15-16 周)
小组合作完成课程大作业,完整走完从需求分析、设计、编码、测试、撰写文档全流程。二、核心知识点清单
- 软件开发模型:瀑布、增量、原型、敏捷
- 需求工程:需求获取、需求规格说明书
- UML 建模:用例图、时序图、类图
- 软件设计原则:高内聚低耦合、模块化
- 软件测试:测试分类、测试用例、缺陷管理
- 版本控制 Git 基础
- 软件项目文档撰写规范
三、配套练习方案
- 每周课后:整理知识点笔记,完成课后思考题。
- 每学完一个模块,使用小型 Demo 项目进行实践,将理论落地。
- 小组项目:2~4 人组队,分工完成课程项目,练习团队协作。
四、项目实践建议
优先选择小型 Web 应用、管理系统作为课程项目;项目不要追求复杂功能,优先保证完整软件工程流程(文档 + 设计 + 代码 + 测试),而不是复杂算法。
指南合理性与个人帮助分析
- 合理性分析
- ✅ 合理部分:学习阶段划分贴合本科软件工程课程教学进度;知识点清单完全匹配课程核心内容;强调流程完整大于功能复杂,这点非常适合课程大作业,避免学生一味堆砌功能而忽略文档、UML 设计等软件工程核心。推荐小组项目、UML 绘图、Git 实践,和课程考核目标对齐。
- ⚠️ 不足之处:指南没有给出学习难点的应对方案;缺少参考资料推荐;没有区分理论背诵和动手实践的时间分配;没有说明文档撰写的模板参考。
- 对个人的帮助
- 帮助我建立课程学习的时间线,明确不同阶段学习重点。我之前更关注写代码,这份指南提醒我软件工程的核心是工程流程与文档、设计,而不只是程序实现。
- 项目实践建议正好适配我正在做的 Web AI 图像生成 Demo,可以把这个 Demo 扩展成本课程的课程项目,补充需求文档、UML 图、测试用例,补齐我欠缺的工程化内容。
- 让我清晰看到学习顺序:先理论与需求,再设计建模,然后编码测试,最后项目整合,方便规划本学期学习计划。
后台截图

浙公网安备 33010602011771号