软件工程第一次作业

这个作业属于哪个课程 2026-01 软件工程与软件工程实践(福州大学)
这个作业要求在哪里 第一次作业要求
这个作业的目标 注册 Hugging Face 并调用 Flux 模型实现“输入提示词→生成图像”的交互式应用;搭建 GitHub 个人主页;梳理自身技能树与学习规划,使用 AI 工具生成课程学习指南并分析
学号 102401633

一、Hugging Face API 调用 Flux 模型生成图像

1. 注册 Hugging Face 账号并获取 API Token

本次作业中,我在 Hugging Face 官网注册了个人账号,并创建了用于调用模型的 API Token。

  • Hugging Face 官网:https://huggingface.co/
  • 使用模型:XLabs-AI/flux-RealismLora
  • Token 保存:写入本地 hf_token.txt

2. API 调用成功记录

本次共完成 2 次成功的 API 调用

屏幕截图 2026-09-06 104748

调用成功后,后端成功返回图片数据并保存为 PNG,同时把提示词、模型、时间、耗时追加写入调用记录文件,说明前后端通信与模型调用均正常完成。

3. 前端页面与最终生成图像

在调用模型的基础上,我用 Python Flask 后端 + HTML/JavaScript 前端 实现了交互式生成:
前端输入提示词(或点击示例按钮)→ 点击“生成图片” → 后端调用模型 → 前端展示结果并记录日志。

核心调用代码(后端)大致如下:

from huggingface_hub import InferenceClient

MODEL    = "XLabs-AI/flux-RealismLora"
PROVIDER = "fal-ai"                    # 该 LoRA 需第三方推理提供商

client = InferenceClient(provider=PROVIDER, token=token, timeout=300)
image  = client.text_to_image(prompt, model=MODEL)   # 返回 PIL 图片
image.save(path)                                     # 保存 PNG 并返回给前端展示

屏幕截图 2026-09-06 104742

4. 提示词设计思路与修改过程

屏幕截图 2026-09-06 104757

由于任务要求生成“最贴近真实世界”的图像,我认为关键不是画面多华丽,而是像一张真实相机拍下的照片,因此提示词从“内容”和“摄影质感”两个维度设计:

  • 内容维度:具体的人 + 具体动作 + 具体场景/时间。真实世界最有辨识度的是人——皮肤、皱纹、神情、生活瞬间;
  • 质感维度:用 photorealistic / documentary photograph / full-frame DSLR 锚定纪实摄影风格,
    deep wrinkles / natural skin pores / golden hour light / film grain / true-to-life colors 强化真实质感,
    85mm / f/1.8 / shallow depth of field 等相机参数控制景深,结尾加 no text, no watermark 防止画面出现乱码文字。

修改过程:我先用“雾中山湖日出”的风光场景验证了 API 通路与模型的写实能力;验证成功后,把方向从“明信片式风景”升级为“人物纪实 + 生活瞬间”,突出皮肤细节与黄金时刻光线,最终效果更符合“贴近真实世界”的要求。

轮次 提示词方向 设计意图 结果
第 1 次 雾中山湖日出(风景写实) 先验证 API 通路与模型写实能力 ✅ 调用成功,画面写实,但缺少人物/生活元素
第 2 次 稻田边休息的老农(人物纪实,成品) 用人的皮肤细节与生活瞬间表现“最贴近真实世界” ✅ 调用成功,作为最终成品

最终提示词:

Ultra-photorealistic documentary photograph taken with a full-frame DSLR camera of an elderly Chinese farmer resting on a stone bench beside a rice field in the late afternoon, wearing a faded straw hat and a worn cotton shirt, deep wrinkles and natural skin pores visible on his face, holding a ceramic tea cup with both hands, golden hour sunlight casting long soft shadows, distant mountains and village rooftops blurred in the background, slight natural film grain, authentic colors, balanced composition, shallow depth of field, 85mm lens, f/1.8, true-to-life detail, no text, no watermark

二、GitHub 个人主页搭建

1. 方案选择

本次我选择的是方案一:个人资料自述文件(Profile README)——创建与 GitHub ID 同名(Clu3y)的仓库,
在根目录 README.md 中撰写个人主页。

image-20260908171342385

2. 主页包含的内容

  • 关于我:福州大学计算机科学与技术专业大三在读,目标 2028 年毕业后直接就业做后端开发;
  • 技能与工具:C++ / Java / SQL、Spring Boot、MySQL、HTML/CSS/JS、Git/GitHub 等;
  • 自我评估:已掌握的知识与能力、感兴趣的技术方向、最希望学习的知识;
  • 未来三年发展规划:以“毕业后就业做 Java 后端”为目标,按大三 → 大四 → 入职第一年排布时间线。

三、技能树梳理与学习规划

1、当前技能树与技术偏好

A. 已具备的专业知识与能力

  • A1 编程基础:掌握 C++ / Java 基础语法与面向对象思想,能编写较完整的应用,理解数组、链表、栈、队列等常用数据结构与基础算法。
  • A2 后端入门:了解 Java Spring Boot 框架的基本用法,能编写简单的 REST 接口;了解 MVC 分层思想。
  • A3 数据库基础:会 MySQL 的基础增删改查(CRUD),能设计简单的单表/少表结构。
  • A4 前端基础:能写简单的 HTML/CSS/JavaScript 页面,理解“前端发请求 → 后端返回 JSON → 前端渲染”的基本交互过程。
  • A5 工具与协作:会用 Git / GitHub 管理代码,习惯用 Markdown 写文档;会配置博客园、搭建 GitHub 个人主页。

B. 感兴趣的技术方向

  • B1 Java 后端开发:希望深入 Spring Boot 生态,做出能真正上线运行的后端服务;
  • B2 AI 应用落地:希望把大模型能力接入实际业务;
  • B3 Web 全栈:补全前端与部署能力,打通“页面 → 接口 → 数据库 → 服务器”整条链路。

C. 还欠缺的能力

  • C1 算法与数据结构不系统:能写基础题,但面对中等以上难度题目缺少训练,未形成解题套路;
  • C2 数据库进阶不足:索引优化、事务隔离、慢查询分析、复杂表设计基本空白;
  • C3 工程化能力弱:未接触单元测试、CI/CD、代码规范与 Code Review 流程;
  • C4 部署运维欠缺:不熟悉 Linux 命令、云服务器部署与 Docker 容器化;
  • C5 前端能力浅:只会基础页面,未使用过 Vue/React 等框架;
  • C6 需求与设计经验少:缺少从“需求分析 → 系统设计 → 编码实现 → 测试交付”完整走一遍项目的经验。

2、代码量:现状与目标

  • 截至目前的代码量:约 6000 行(尚未精确统计,主要来自课程实验、练习与个人小项目)。
  • 本学期结束希望达到:约 15000 行。

3、本课程最期待学习的知识 & 希望获得的收获

最期待学习的知识:

  1. 软件工程全流程:需求分析、系统设计、测试、部署与项目管理,而不只是“写代码”;
  2. 团队协作开发:Git 分支管理、Code Review、多人协作的分工与规范;
  3. 工程化实践:单元测试、CI/CD、代码质量与文档规范。

希望获得的收获:

  • 能独立完成 1~2 个“从需求到上线”的完整项目,充实简历与作品集;
  • 建立规范的工程习惯(写文档、写测试、复盘),为毕业求职(后端方向)打好基础;
  • 通过与老师、助教、同学的交流,明确自己的技术定位与求职准备节奏。

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

4.1 我使用的 AI 工具与提示词

  • 工具:ChatGPT
  • 提示词:“我是一名计算机科学与技术专业大三学生,计划 2028 年毕业后直接就业做后端开发。请为我生成一份简要的、本学期可执行的软件工程课程学习指南,按周安排,包含需求、设计、编码、测试、Git 协作与项目复盘,并给出每周实践任务。”

4.2 AI 生成的指南(原文复制如下)

软件工程课程 12 周学习指南

主线:用一学期从 0 完成一个“个人记账/任务管理 Web 应用”,走完软件工程全流程。

周次 阶段 学习重点 本周实践任务
第1周 课程与工具准备 软件生命周期、敏捷基础、Git/IDE 环境 搭建开发环境;选定项目主题;写 100 字项目构想
第2周 需求分析 功能/非功能需求、用户故事 为你的项目写出至少 8 条用户故事,区分优先级
第3周 用例与原型 用例图、线框原型 用 draw.io 画用例图;用 Figma/墨刀画 3 个核心界面
第4周 数据建模 ER 图、表设计、主外键 画 ER 图并写出建表 SQL(含索引与约束)
第5周 接口设计 RESTful API、前后端契约 用 Swagger/OpenAPI 定义全部接口
第6周 Git 协作 分支模型、PR 规范 建仓库,练习 feature 分支 + PR + 合并
第7周 后端实现 Spring Boot CRUD、分层架构 实现用户与核心业务模块,统一错误处理
第8周 前端对接 页面调接口、鉴权 完成登录与核心页面,调通端到端主流程
第9周 单元测试 JUnit、测试金字塔 为核心模块写单元测试,覆盖率目标 70%+
第10周 集成与自动化 接口测试、GitHub Actions 配置 CI:push 自动跑测试与静态检查
第11周 部署 Linux、Docker、云服务器 用 Docker 打包并部署到云服务器,公网可访问
第12周 复盘交付 文档、复盘、技术债 写 README 与复盘报告,总结收获与不足

4.3 合理性分析

合理、能带来帮助的部分:

  • 一个贯穿全学期的完整项目为主线,符合软件工程“做中学”的特点,避免知识碎片化;
  • 每周任务与软件工程经典流程(需求→设计→编码→测试→部署→复盘)一一对应,相当于把课程内容“翻译”成了可执行清单;
  • 任务难度循序渐进(先文档后代码、先单机后部署),并强调 Git、测试 等课堂之外但就业必需的工程能力

需要警惕/不完全合理的部分:

  • 时间过于理想化:每周任务实际可能需 2~3 周,且与课程作业、其他科目冲突,不能照单全收,应结合课程节奏做减法;
  • 前端部分偏薄:指南默认我已有前端基础,而实际我只会基础 HTML/JS,需要额外预留学习 Vue/React 的时间;
  • AI 生成内容缺乏“本校上下文”:它不知道我们课程的具体作业与考核方式,只能作为学习框架参考,不能替代完成课程作业本身。

结论:这份指南整体合理,对我的价值在于提供了一个“项目驱动 + 工程化”的学习路线图,但需要我按真实课表裁剪后使用。本学期我至少会落实其中三点:① 用 Spring Boot + MySQL完成一个完整项目;② 给项目写单元测试并接入 GitHub Actions;③ 学会用 Docker 部署。如果真能执行到位,对毕业求职(后端方向)会有实打实的帮助。


四、Markdown 写作与博客园后台编辑器截图

image

posted on 2026-09-10 19:00  EULC  阅读(12)  评论(0)    收藏  举报

导航