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

这个作业属于哪个课程
https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering
这个作业要求在哪里
https://edu.cnblogs.com/campus/fzu/202601SofwareEngineering/homework/15712
这个作业的目标
熟悉 GitHub、博客园等开发平台,学习调用 Hugging Face API 并完成简单的前后端交互,同时梳理个人技术能力与学习规划,为后续软件工程课程学习做好准备。
学号
102401310

一.关于我

d1705ca2dc7f9402a0780cd0dc2b64b8
泥嚎,我是一名Fzuer,今年大三,目前主要关注人工智能和机器学习,正在探索生成模型相关领域......
以下是我的一些账号,欢迎各位朋友前来交流探讨:

二.huggingface-API的调用

本项目使用 Hugging Face 提供的 XLabs-AI/flux-RealismLora 模型生成写实图像,并在 API 调用的基础上结合 Flask、HTML、CSS 和 JavaScript,实现了一个简单的交互式 AI 图像生成网页。本项目已上传至github:flux-realism-web

1. 项目功能

本项目主要实现以下功能:

  • 调用 Hugging Face 上的 FLUX Realism 模型生成图片
  • 通过 Web 页面输入和修改 Prompt
  • 自定义生成图片的宽度和高度
  • 调节模型生成图片时的推理步数
  • 在网页中实时显示生成结果
  • 下载生成的 PNG 图片
  • 在后端终端输出 API 调用记录

项目运行后的前端页面如下:

web-interface

2. 项目结构

flux-realism-web/
│
├── app.py
├── requirements.txt
├── .env.example
├── .gitignore
├── README.md
│
├── images/
│   ├── web-interface.png
│   ├── api-success.png
│   ├── prompt-v1.png
│   ├── prompt-v2.png
│   └── prompt-v3.png
│
└── templates/
    └── index.html

其中:

  • app.py:Flask 后端程序,负责接收前端请求以及调用 Hugging Face API
  • templates/index.html:前端页面,实现 Prompt 输入、参数调节、图片预览和下载
  • images/:存放实验过程和 README 使用的截图
  • .env.example:Hugging Face Token 配置示例
  • .gitignore:避免 Token、虚拟环境等文件上传至 GitHub
  • requirements.txt:项目运行需要安装的 Python 依赖

3. Hugging Face API 配置

在 Hugging Face 官网注册并登录个人账号,然后进入个人设置中的 Access Tokens 页面创建用于调用模型的 Token。

本项目使用的模型为:XLabs-AI/flux-RealismLora

为了避免 Token 泄漏,没有将真实 Token 直接写入 Python 或 JavaScript 代码,而是通过环境变量进行读取。

将项目中的:

.env.example

复制并重命名为:

.env

然后填写自己的 Hugging Face Token:

HF_TOKEN=hf_你的HuggingFaceToken

4. 项目运行

4.1 创建虚拟环境

python -m venv venv

4.2 安装依赖

pip install -r requirements.txt

4.3 启动 Flask

python app.py

运行成功后访问:

http://127.0.0.1:5000

即可进入图像生成页面。

5. API 调用与前端交互

本项目没有直接在前端调用 Hugging Face API,而是通过 Flask 后端完成模型请求。

前端通过 JavaScript 获取用户输入的 Prompt、图片宽度、图片高度以及清晰度参数,然后使用 Fetch 向 Flask 的 /generate 接口发送 POST 请求。

Flask 接收到请求后,通过 Hugging Face InferenceClient 调用模型。模型返回图片后,后端将图片转换为 Base64 数据返回给浏览器,并最终显示在网页右侧。

为了方便观察模型调用过程,我在后端加入了运行日志。调用成功后终端会显示:

image-20260907174726067

6. Prompt 设计与修改过程

为了比较不同 Prompt 对生成效果的影响,我选择橘猫作为主要生成对象,并通过三次 Prompt 修改逐渐增加环境、主体细节以及摄影特征。

6.1 第一版:确定基本内容

最开始只描述需要生成的主体以及基本场景:

A realistic photo of an orange tabby cat sitting on a street.

这一版本的主要目的是确定图片中的基本内容,因此 Prompt 只包含橘猫、街道以及真实照片三个主要信息。

模型能够正确生成橘猫和街道,但是由于缺少对光照、环境以及猫的外观细节描述,生成结果中的场景比较普通,整体真实感仍有提升空间。

第一版生成结果:

1

6.2 第二版:增加环境和主体细节

第二次生成时,在原 Prompt 的基础上加入雨后环境、自然光以及毛发细节:

A realistic photo of an orange tabby cat sitting on a wet street after rain, natural light, detailed fur, photorealistic.

这一版本主要增加:

wet street after rain
natural light
detailed fur
photorealistic

其中,雨后的街道可以增加地面水迹、反光等现实环境细节;自然光可以减少过于明显的人工布光效果;detailed fur 则用于提高猫毛发部分的细节表现。

与第一版相比,第二版生成结果中的环境更加完整,猫的毛发也更加清晰,整体开始具有真实摄影的效果。

第二版生成结果:

2

6.3 第三版:增强真实摄影感

最后一次修改主要针对图片中可能出现的“AI 感”进行优化。

最终 Prompt 为:

A candid photo of an orange tabby cat sitting on a wet street after rain, natural daylight, detailed slightly messy fur, realistic eyes and whiskers, natural pose, shallow depth of field, photorealistic.

相比第二版,进一步增加:

candid photo
slightly messy fur
realistic eyes and whiskers
natural pose
shallow depth of field

其中 slightly messy fur 用于避免猫的毛发过于整齐;natural pose 强调动物自然状态而不是刻意摆拍;realistic eyes and whiskers 加强眼睛和胡须等容易影响真实感的细节;shallow depth of field 则模拟真实摄影中的景深效果,使主体与背景之间形成更加自然的层次。

相比单纯加入 8Kmasterpiece 等强调画质的关键词,这种方法更加注重现实摄影本身具有的特征。

最终生成结果:

3

通过三次 Prompt 调整可以发现,提示词不仅需要告诉模型“生成什么”,还需要进一步描述主体所处的环境、光照以及希望呈现的细节。尤其是在生成写实图片时,相比单纯堆叠表示高画质的关键词,加入现实世界中的自然状态、环境细节和摄影特征,更有助于让最终生成结果接近真实照片。

7. 实验体验与心得

通过本次实验,我完成了从 Hugging Face 模型选择、API Token 配置、模型调用,到 Flask 后端和前端页面交互的完整过程。

在实际操作过程中,我发现模型 API 本身的调用代码并不复杂,但要真正将模型集成到一个可以使用的 Web 应用中,还需要考虑前后端数据传递、API Token 安全以及异常处理等问题。例如,一开始可以直接在 JavaScript 中调用 API,但这样容易导致 Token 暴露,因此最终选择通过 Flask 后端统一处理 Hugging Face API 请求。

Prompt 的设计也是本次实验中比较明显的一点。最开始使用简单 Prompt 时,模型虽然能够生成正确的主体,但对图片细节的控制比较有限。随着自然光、环境、毛发、眼睛、姿态以及景深等描述逐渐加入,生成结果也更加符合预期。

这次实验让我认识到,使用生成式 AI 不仅仅是简单地调用一个模型。如何准确描述需求、根据生成结果不断调整 Prompt,以及如何将模型能力集成到实际程序中,同样是生成式 AI 应用开发中非常重要的部分。

三.Github个人主页搭建

GitHub 的 README 个人资料:

image-20260906195634143

GitHub Pages搭建的个人主页:https://hackun.top

image-20260906195922306

image-20260906200642564

这是我大一时使用 GitHub + Stellar 搭建的个人博客。当时主要是为了记录学习网络安全过程中遇到的问题,以及整理一些计算机相关知识。没想到时隔一段时间,这个博客又在软件工程课程中派上了用场哈哈哈。

这次我在原有版本的基础上进行了重新整理和优化,对页面进行了美化,并调整了内容结构,使其更加清晰、实用。之后也希望继续用这个博客记录软件工程课程的学习过程,以及 AI 相关领域的学习与实践。

四.随笔

不知不觉已经大三了,回头看看大学前两年的学习,自己也算接触了不少计算机相关的知识。从最开始学习 C 语言,到后来的数据结构、计算机网络、网络安全,再到今年暑假刚开始接触的人工智能,我对计算机的认识也在慢慢变得更加完整。

不过学得越多,我反而越能发现自己还有很多不会的东西。所以借这次随笔,我也想梳理一下自己目前到底会什么、喜欢什么,以及还有哪些地方需要继续努力。

1、当前技能树与自我评估

1.1 编程与算法

  • 编程语言:目前主要使用 C/C++、Python,能够完成课程实验、算法练习和一些简单项目。
  • 数据结构:学习过链表、栈、队列、树、图、堆、并查集等常见数据结构,并能够进行基本应用。
  • 算法能力:掌握一些常见的排序、搜索、图算法等,能够解决较简单的算法问题。

目前具备基本的编程和算法能力,但距离熟练还有一定差距。尤其是在面对较大型项目时,对代码结构、设计和维护的考虑还不够。

1.2 网络安全

大一的时候,我曾经对网络安全比较感兴趣,接触过 Web 安全和 CTF,了解 SQL 注入、XSS、文件上传等常见漏洞,也进行过一些 Linux 和网络安全方面的实践。

不过后来学习重心逐渐转向其他方向,这部分内容已经有一段时间没有系统学习,目前很多知识已经比较生疏。

1.3 人工智能

最近我对人工智能和深度学习产生了比较大的兴趣,目前接触过神经网络、VAE、Diffusion Model 等相关内容,也开始尝试通过阅读论文来理解一些模型的基本原理。

目前对人工智能的学习还处于逐步深入的阶段,主要以理解论文和基础原理为主。在数学基础、模型实现和实际应用方面还存在较大的提升空间。相比只是了解一些模型,我更希望通过后续的代码实践和项目,把理论知识真正应用起来,并逐渐找到自己感兴趣的研究方向

2、目前的代码量与目标

截至目前,我编写的代码主要来自课程实验、数据结构与算法练习、个人项目以及课外实践,累计约 1 万行。完成本学期课程后,我希望代码量能够达到 1.5 万~2 万行。

不过,我认为代码量并不能完全代表编程能力。随着 AI Agent 等工具的不断发展,单纯追求代码行数的意义也在逐渐降低。相比增加代码量,我更希望将更多精力放在实际项目实践上,在完成项目的过程中不断提高代码的规范性、可读性和可维护性,同时提升自己分析问题、设计系统和解决实际问题的能力。

3、对本课程的期待

以前写程序时,我比较习惯拿到题目后就直接开始写代码,首先考虑的是“怎么把功能实现出来”,而对于需求分析、整体设计、测试以及后期维护等问题考虑得比较少。随着接触的项目越来越多,我也逐渐意识到,真正的软件开发并不只是把代码写出来,而是需要一个完整、规范的开发过程。

因此,我比较期待在本课程中学习以下几个方面:

  1. 需求分析:学习如何理解和梳理用户需求,并将其转化为明确的功能和开发目标。
  2. 软件设计:学习如何进行系统设计和模块划分,让项目的整体结构更加合理。
  3. Git 与团队协作:进一步掌握 Git 和 GitHub 在实际项目中的使用,了解多人协作开发的流程。
  4. 软件测试:学习如何通过系统的测试发现问题,提高软件的稳定性和可靠性。
  5. 代码规范与维护:学习如何编写更加规范、清晰和易于维护的代码。

我希望通过这门课程,逐渐改变自己过去“先写代码、遇到问题再修改”的习惯,从单纯关注代码能否运行,进一步理解一个软件项目应该如何规划、设计、开发、测试和维护,真正提升自己的工程实践能力。

4、AI 生成的软件工程课程学习指南

以下学习指南由 GPT-5.6 Sol 生成:

软件工程课程学习指南

一、课程目标

软件工程主要学习如何运用系统化、规范化的方法开发和维护软件。通过本课程,希望掌握软件开发的基本流程、工程方法和常用工具,能够从需求分析一直完成到设计、编码、测试和维护。

二、主要学习内容

  1. 软件工程基础
  • 软件工程的基本概念与发展
  • 软件生命周期
  • 软件过程模型
  • 软件工程的基本原则与方法

重点理解:软件开发不仅是写代码,而是一个完整的工程过程。

  1. 需求分析
  • 用户需求与系统需求
  • 功能需求与非功能需求
  • 需求获取、分析和验证
  • 用例图、用例描述
  • 需求规格说明书(SRS)

重点掌握:明确“系统需要做什么”。

  1. 软件设计
  • 软件体系结构
  • 模块化设计
  • 高内聚、低耦合
  • 面向对象设计
  • 类图、顺序图、活动图等 UML 图

重点掌握:明确“系统应该如何实现”。

  1. 软件开发与项目管理
  • 编码规范
  • 版本控制
  • Git 与 GitHub
  • 软件配置管理
  • 项目计划与进度管理
  • 团队协作与敏捷开发

重点了解:多人如何协作完成一个软件项目。

  1. 软件测试
  • 测试的基本概念
  • 黑盒测试与白盒测试
  • 单元测试、集成测试、系统测试
  • 测试用例设计
  • 软件缺陷与调试

重点掌握:如何发现问题并验证软件是否满足需求。

  1. 软件维护与质量
  • 软件维护
  • 软件质量保证
  • 软件可靠性
  • 软件度量
  • 软件重构

重点理解:软件发布并不是开发的终点,后期维护同样重要。

三、推荐学习顺序

建议按照软件开发的实际流程进行学习:

软件工程基础 → 需求分析 → 系统设计 → 编码实现 → 软件测试 → 软件维护 → 项目管理

学习每个阶段时,可以始终思考三个问题:

为什么做? → 做什么? → 怎么做?

这样能够避免只记概念,而是建立完整的软件工程思维。

四、实践建议

可以选择一个简单项目进行贯穿式学习,例如:

  • 学生信息管理系统
  • 图书管理系统
  • 在线博客系统
  • 课程管理系统
  • 简单的 Web 应用

按照软件工程流程完成:

需求分析 → 编写需求文档 → UML 建模 → 系统设计 → Git 管理代码 → 编码实现 → 编写测试用例 → 测试与维护

通过一个完整项目,将课程中的理论知识与实际开发结合起来。

五、学习重点

课程学习中建议重点掌握以下内容:

  1. 软件生命周期与开发模型
  2. 需求分析与用例建模
  3. 软件体系结构与模块化设计
  4. UML 建模
  5. Git 与团队协作
  6. 软件测试方法
  7. 敏捷开发与项目管理
  8. 软件质量与维护

对于课程中的各种模型和方法,不需要只停留在背诵层面,应理解它们解决什么问题、什么时候使用以及如何使用

六、最终学习目标

完成课程后,希望能够:

  • 理解完整的软件开发流程;
  • 能够进行基本的需求分析;
  • 能够使用 UML 对系统进行建模;
  • 掌握基本的软件设计方法;
  • 能够使用 Git 进行版本管理和团队协作;
  • 掌握基本的软件测试方法;
  • 具备一定的软件项目管理意识;
  • 能够按照规范完成一个小型软件项目。

最终目标不是“学会更多概念”,而是建立从需求到产品的完整软件工程思维。

我认为这份学习指南的安排比较合理,学习内容基本按照软件开发的过程进行,从软件工程基础逐步过渡到需求分析、软件设计、编码、测试和维护,能够帮助我建立对软件开发流程的整体认识。这样的学习顺序也比较符合实际项目的开发过程,能够让我更好地理解不同阶段之间的联系。以前学习编程时,我比较关注代码能不能实现功能,但通过这门课程可以认识到,一个完整的软件项目还需要经过需求分析、系统设计、测试和维护等环节。因此,在后续学习中,我希望不只是完成代码,而是按照比较规范的软件开发流程来完成项目,并通过实践进一步理解软件工程的思想。

五.总结

通过这次个人作业,我完成了 GitHub、博客园等平台的整理与使用,也第一次比较完整地尝试了 Hugging Face API 的调用,并将 FLUX 模型与前端页面结合,实现了一个简单的 AI 图像生成应用。相比以前只关注代码能不能运行,这次从环境配置、API 调用、前后端交互到项目上传 GitHub,让我对一个小型项目从实现到整理发布的过程有了更直观的认识。

虽说现在是进入 Vibe Coding 的时代,借助 AI我们可以很快生成代码,甚至只需要描述自己的想法,就能完成不少功能。这确实让写代码变得越来越方便,但也让我开始思考:如果以后“写代码”本身变得越来越简单,那么我们学习软件工程究竟是在学习什么?

我觉得答案可能不只是学会写更多代码,而是学习如何把一个想法真正变成一个完整、可靠的软件。AI 可以帮助我们完成很多具体的编码工作,但要做什么、为什么这样做、项目应该如何组织,以及最终的软件是否真正解决了问题,这些仍然需要自己去思考。

这也是我对接下来软件工程课程比较期待的地方。希望通过后续的学习,不只是提高自己的编码能力,也能够逐渐理解一个软件项目从想法到最终实现的完整过程,并学会更加规范地进行软件开发!

附录:

博客园后台编辑截图:

image-20260907223559954

相信大家看那么久也看累了吧,谢谢对我的支持!

愿我们都能在求知的路上有所收获,在一次次探索与实践中遇见更好的自己。前路或许漫长,但愿心中始终有热爱,脚下始终有方向,最终找到属于自己的人生之路,奔赴各自的山海!

加油打气冲鸭_爱给网_aigei_com
posted on 2026-09-07 23:14  Ziekun  阅读(23)  评论(2)    收藏  举报