| 这个作业属于哪个课程 | 软件工程 |
|---|---|
| 这个作业要求在哪里 | 点这里 |
| 这个作业的目标 | 学会 API 调用和使用 git 仓库,制定今后的学习计划 |
| 学号 | 102401133 |
一、Hugging-Face Flux 模型 API 调用实验
- 项目实现方案
本项目实现一个基于Hugging Face云端模型的文生图Web系统。用户在浏览器网页输入英文图像提示词,后端程序调用Hugging Face的 XLabs-AI/flux-RealismLora 模型生成写实风格图片,并将图片回显在网页界面。项目采用B/S架构,轻量易部署,不需要本地运行大模型。
后端代码:
from flask import Flask, render_template, request, jsonify
from huggingface_hub import InferenceClient
import base64
from io import BytesIO
app = Flask(name)
client = InferenceClient(
model="XLabs-AI/flux-RealismLora",
token="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"
)
@app.route('/')
def index():
return render_template("index.html")
@app.route('/generate', methods=['POST'])
def generate():
data = request.get_json()
prompt = data["prompt"]
image = client.text_to_image(prompt)
buf = BytesIO()
image.save(buf, format="PNG")
b64_img = base64.b64encode(buf.getvalue()).decode("utf-8")
return jsonify({"image": b64_img})
if name == 'main':
app.run(debug=True)
前端代码:
async function generateImage(){
const prompt = document.getElementById("prompt").value;
const res = await fetch("/generate",{
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({prompt:prompt})
});
const data = await res.json();
document.getElementById("resultImg").src = "data:image/png;base64," + data.image;
- 提示词以及API调用
我的提示词:
photorealistic photo, side profile of a young white man sitting at desk, wearing black t-shirt and red gaming headset,
hands on keyboard, computer monitor showing dark IDE screen with programming code, home room background, floor lamp with warm yellow light,
gaming chair, white desk with drink bottles on side table, warm indoor lighting, natural shot, 35mm lens, shallow depth of field,
high detail

二、GitHub 个人主页搭建

三、个人技能树梳理与自我评估
[一]已具备的专业知识与能力
能力 A:编程基础(C / C++)
掌握 C 语言基本语法:变量与数据类型、运算符、流程控制、函数、数组、指针基础;掌握 C++
面向对象基础:类与对象、封装、构造与析构、继承与多态,会使用 STL
常用容器(vector、string、map)与算法;能独立编写数百行规模的过程式、单文件程序,如排序、字符串处理类题目。
能力 B:Python 初步应用
掌握基本语法与常用数据结构(list、dict、set);能读懂并修改已有脚本,借助第三方库完成简单的数据处理。目前定位为入门水
平,尚不能熟练独立开发。
能力 C:开发工具的基本使用
会使用 IDE(VS Code、Visual Studio
等)编写、编译、调试代码;能理解基本报错信息,会通过官方文档和搜索定位简单问题;了解 Git
的最基本操作(clone、add、commit、push),但没有多人协作经验。
[二]感兴趣的技术方向
- AI 应用开发(个人最感兴趣的方向):不止于调用现成模型,更想理解如何把大模型能力封装成可用产品,包括提示词工程、API
调用、RAG 检索增强、Agent 工作流等。 - 软件工程方法论:软件是如何被工程化地造出来的——需求怎么获取、架构怎么设计、质量怎么保证、进度怎么管理。
- AI 与软件工程的结合点:用规范的工程方法开发 AI 应用,以及把 AI 作为工具反哺开发流程(AI 辅助编码、测试与文档)。
[三]目前欠缺的能力
- 项目级开发能力(最核心短板):能写独立函数和小程序,但无法把零散功能组织成一个结构清晰、可运行、可维护的完整系统。
- 需求分析与设计能力:面对一个模糊的需求描述,不知道如何转化为明确的功能点、模块划分和接口定义;缺少
UML、设计模式等建模与设计工具的使用经验。 - 工程化与协作素养:缺少版本管理规范、代码规范、目录组织、依赖管理等方面的实践;没有真正的团队协作开发经历。
- 测试与质量意识:不会写单元测试,不清楚测试在开发流程中应处于什么位置,习惯“能跑就行”。
- 系统性调试与排错能力:面对复杂报错或跨文件的逻辑错误时,缺乏系统性的定位方法。
- 文档与表达能力:不熟悉如何撰写需求文档、设计文档、README 与接口说明。
[四]代码量情况
截至目前约 2000 行,以课程作业与练习题为主,多为单文件程序。
本学期目标达到 5000 行。
增量计划通过一个完整的项目实践来实现,而非继续堆砌零散练习题;同时希望这些新增代码是有结构、有组织的,而不是量的简单叠
加。
[五]本课程最期待学习的知识
- 软件生命周期与过程模型:瀑布、迭代、敏捷与 Scrum
各自的适用场景,一个项目从立项到交付要经过哪些阶段、每个阶段该产出什么。 - 需求工程:如何获取、分析、描述和验证需求,如何把用户想要的东西翻译成可实现的软件需求。
- 软件设计方法与工具:UML 建模、模块化与高内聚低耦合原则、常见设计模式、架构分层思想。
- 软件测试与质量保证:单元测试、集成测试、系统测试的区别与实践,如何设计测试用例,如何用测试保证重构安全。
- 团队协作与项目管理:Git 分支协作流程、代码评审、任务拆分与进度管理、角色分工。
- AI 时代的软件开发:大模型如何接入真实软件系统,以及 AI 工具如何改变编码、测试、文档等环节的工作方式。
[六]希望获得的收获
- 从“会写代码”到“能做项目”的转变。这是我最想跨过的一道坎,希望能独立或与团队一起完成一个从零到一、可运行、可演示的完
整项目。 - 一套可复用的工程方法论。掌握面对新需求时从哪里下手、按什么顺序推进、如何验证结果的完整思路,而不只是记住某道题的解
法。 - 一个属于自己的作品。最好与 AI 应用相关,可作为后续深入学习或求职的作品集。
- 团队协作的实际经验。真正用 Git 与同伴协作完成一次开发,学会读别人的代码、写别人能读懂的代码。
- 代码量与代码质量的双重提升。代码量达到 5000 行以上,并且能清楚讲出每一处设计的理由。
- 自主解决问题的能力和习惯。学会查文档、读报错、拆解问题,并善用工具(包括 AI)辅助定位与修复缺陷。
四 软件工程课程学习指南(Claude AI 生成)
(一)课程核心目标
软件工程要解决的不是"能不能写出代码",而是"能不能把软件规范、高效、可维护地做出来"。因此本课程的重点是建立工程思维——学
会在一个有需求、有分工、有期限、有质量要求的真实场景里推进开发,而不只是把功能实现出来。
(二)分阶段学习路线
第一阶段:打基础(前期,约第 1–4 周)
一是把至少一门语言用熟,能独立完成读写文件、发网络请求、处理报错;二是补上必要的基础常识,理解程序怎么运行、请求怎么走
、前后端怎么交互;三是从现在开始守规范,变量命名、函数拆分、注释习惯都在这一阶段定型。
第二阶段:学方法(中期,约第 5–10 周)
这一阶段是课程的主干,需要掌握四样东西:软件生命周期五大阶段(需求分析、系统设计、编码实现、软件测试、部署维护);瀑布
、迭代、敏捷等开发模型的适用场景;分层设计、模块化、高内聚低耦合等设计思想;UML
用例图、类图、时序图的画法与用途。同时要理解测试不是开发完之后的收尾,而是贯穿全程的质量保障手段。
第三阶段:做项目(后期,约第 11–16 周)
按"先文档、再设计、后编码"的顺序完整走一遍流程。项目不必大,但每一环节都要留下产物:需求说明、设计文档、代码、测试记录
、复盘总结。这一阶段真正要练的是协作——怎么分工、怎么合并代码、怎么处理版本冲突、怎么迭代。
(三)三个关键方法
第一,项目驱动。与其刷一百道题,不如把一个项目从零做到能演示,过程中碰到的问题自然会把知识点串起来。
第二,文档先行。写文档不是额外负担,它逼你把模糊的想法想清楚,也是团队协作的公共语言。
第三,善用工具。Git、调试器、AI 助手都是提效手段,但要先理解原理再用,否则出错时无从排查。
(四)常见误区
只写代码不写文档;先编码后补需求;把测试当成最后一道工序;一个人闷头写完再合,导致合并时冲突成灾。这几种做法在课程项目
中都会付出明显代价。
(五)自测方式
学完一个阶段问自己三个问题:能不能说清这个阶段该产出什么?能不能在项目里找到对应的实践?能不能向别人解释自己的设计选择
?三个都能做到,才算真正掌握。
合理性:
(一)合理之处
这份指南的框架是站得住的。它把"目标—阶段—方法—误区—自测"串成了一条线,尤其"先文档、再设计、后编码"和"项目驱动"这两条,
正好切中我目前最大的问题——我能写单个功能,但从没按流程完整做过一个项目。常见误区那一段也很实在,几乎每一条都是我可能会
犯的。
(二)不够合理的地方
一是没有时间刻度,"前期、中期、后期"到底对应几周,得自己猜;二是它默认编程基础已经过关,而我的 C++、Java
其实只到能应付算法题的水平,真按它的节奏去啃 UML
和分层设计,中间是断档的;三是它讲的是通用路径,和本课程具体的作业安排、考核方式并不完全对应,直接照搬容易跑偏。
(三)对我的实际帮助
有用,但不能全盘照收。我打算把"阶段划分"和"三个关键方法"留下来当框架,把"常见误区"贴在显眼处随时对照,具体的周计划则按
课程进度自己重排,基础薄弱的部分先补上再往前推。指南说到底只是给了张地图,路还是得自己走——它最后那句"能不能坚持下来",
才是真正的难点。
指南合理性分析
个人觉得这份学习指南整体十分合理,至少为我制定了一个完整的学习计划,让我知道学什么、怎么学。所以我觉得这个指南还是非常
实用的,前提是我能好好坚持下来。
本博客使用 Markdown 编辑

浙公网安备 33010602011771号