资讯动态

软件工程第一次实验指南:需求分析、用例图与流程图全攻略

发布时间:2026/10/2 4:14:13 来源:尧图企业网站定制
1. 实验前的定位别急着上手画图先搞清楚老师到底要什么软件工程第一次实验说实话很多同学栽倒的地方不是技术而是方向。你打开实验指导书看到一堆名词——需求分析、用例图、流程图、数据字典、可行性分析——脑子里第一反应往往是“这到底要我干什么”。这种迷茫很正常我第一次带学生做这个实验的时候发现十个里有七个是把实验报告写成了“项目介绍”剩下三个把流程图画成了“系统架构图”全部跑偏。先把这个实验的本质说清楚。软件工程第一次实验通常对应的是软件工程导论课程里的“需求分析”或“系统分析”阶段。它不是让你写代码也不是让你做原型而是让你用一套规范化的工具和文档把一个“用户想要的东西”翻译成“开发者能看懂的东西”。这个过程在真实企业里叫需求工程在课程里叫实验本质上是一样的。所以你拿到实验题目之后第一件事不是打开画图工具而是先回答三个问题这个系统服务的用户是谁用户角色用户在这个系统里能做什么功能需求这些功能之间是什么关系业务流程这三个问题想清楚了后面所有画图、写文档、做设计都是水到渠成的事。想不清楚你画出来的用例图一定逻辑混乱评审老师随便一问就能把你问住。再说说选题。很多学校的第一次实验会给你一堆备选题目比如图书馆管理系统、学生选课系统、网上购物系统、酒店管理系统。我的建议是选你身边最熟悉的场景哪怕它看起来“不够高级”。为什么因为需求分析的核心是“理解用户”如果你对图书馆借书的流程都模模糊糊那你写出来的需求一定漏洞百出。反过来如果你选一个自己真正用过的系统哪怕功能简单你也能把每个流程讲得清清楚楚老师问细节你也答得上来这就是高分的基础。2. 核心文档与工具的选型思路2.1 实验报告到底要交付哪些东西我第一次带实验的时候有学生拿着三页纸过来上面画了一个孤零零的用例图跟我说“老师我做完了”。这显然不行。软件工程第一次实验的标准交付物一般包含以下几部分我按重要性排个序需求分析说明书——这是最核心的交付物包含项目背景、用户角色、功能需求、数据需求、非功能需求。UML用例图——用图形化的方式表达“谁”能“做什么”。业务流程图或活动图——表达系统的核心业务流程“怎么走”。数据字典——对关键数据项的定义比如“订单编号”是什么格式、几位数、代表什么。实验总结与心得——这部分虽然是凑分项的但写好了能给老师留下好印象。有同学说“我们老师只要求画用例图和流程图”那你至少也要把需求说明书里的功能清单列出来。因为图是从文字来的没有文字描述图画出来也是空中楼阁一答辩就露馅。2.2 画图工具怎么选从ProcessOn到EA再到Visio工具选型这块我给学生推荐过很多种简单说下各自的定位。ProcessOn——网页版免费上手快适合第一次实验。它内置了UML、流程图、思维导图等模板画用例图和流程图非常方便。缺点是免费版能建的文件数有限流程图复杂了之后排版会有点乱。draw.io——也是免费工具可以本地用也可以网页版胜在功能更全导出格式多。如果你愿意花十分钟熟悉一下它的面板体验会很好。Visio——老牌工具学校里机房一般都有装。功能很强模板很多缺点是正版贵、界面稍显老旧。如果实验室已经装了Visio直接用就好不用额外折腾。EAEnterprise Architect——这个我要单独说。EA是专业级建模工具支持从需求分析到代码生成的完整流程很多学校软件工程课程要求用它。如果你老师明确要求用EA那建议花点时间系统学一下。但它对第一次实验来说偏重学习成本高如果老师没说必须用不推荐一上来就上EA。还有个容易被忽略的点你画完图之后一定要导出成高清图片插到实验报告里不要直接在工具里截图。截图的分辨率往往不够打印出来字都是糊的。ProcessOn和draw.io都有导出PNG/SVG的功能导出时把DPI调到300以上这样报告印刷出来才清晰。3. 需求分析的实操从用户故事到功能清单3.1 用户角色定义别把“人类”当用户需求分析的第一步是定义系统的用户角色也就是谁会用这个系统。很多同学在这里犯第一个低级错误把所有使用者统一写成“用户”。这就跟写论文把参考文献写成“百度百科”一样虽然不能说全错但显得非常不专业。正确的做法是具体到“角色”。拿图书馆管理系统举例用户至少分成三类读者查询图书、借书、还书、续借、预约。图书管理员录入新书、处理借还、管理读者信息、生成逾期通知。系统管理员维护系统基础数据、分配权限、查看系统日志。每个角色的功能边界要清晰。比如“读者”能不能删除图书当然不能这是管理员的权限。如果你定义用例的时候把读者和管理员的功能混在一起那后面画用例图、写需求说明书的时候一定会乱套。我的一线经验是每个角色配一个“用户故事”来描述核心诉求比如“作为一个读者我希望能在网上续借图书这样我就不用专门跑一趟图书馆”。这种表达方式叫User Story是敏捷开发里常用的工具但放到需求分析里也没问题它能让你的需求文档“活”起来而不是冷冰冰的功能罗列。3.2 功能需求拆分让每个功能可验证、可测试定义完角色接下来就是把每个角色能做的事细化成功能需求。这里有一个关键原则功能需求必须是“可验证”的也就是你要能说清楚“做到什么程度算是完成”。我给你一组反例和正例对比类型写法问题反例系统应提供图书查询功能怎么算“提供”查询方式是什么响应时间呢正例读者可通过书名、作者、ISBN三种方式检索图书查询请求发出后2秒内返回结果列表结果按书名拼音排序明确输入、明确输出、明确性能要求看到区别没有正例把“用什么查、多久返回、怎么排序”都说清楚了这就是一个合格的需求项。软件工程实验里老师最看重的就是这个“把模糊变具体”的能力。功能需求拆分的时候建议用编号管理例如FR-01、FR-02这样。比如图书馆管理系统可以拆成这样FR-01读者可以通过书名关键词模糊查询图书信息支持分页显示。FR-02读者可以在个人中心查看当前借阅列表包含借出日期和应还日期。FR-03图书管理员可以通过扫描图书编号完成借书操作系统自动更新库存。FR-04系统在读者应还日期的前3天自动发送逾期提醒邮件。每个编号对应一个完整的功能描述后面写代码、画流程图、做测试都是拿这些编号来对需求这样整个链条就串起来了。3.3 非功能需求容易被忽略但决定成败的部分功能需求之外还有一类叫非功能需求它描述的不是“系统能做什么”而是“系统做得怎么样”。很多学生的实验报告里这部分直接空白这其实是很大的失分项。非功能需求至少包括四个方面性能系统支持多少用户同时在线查询响应时间不超过几秒安全性用户密码怎么存储哪些操作需要管理员权限可用性系统界面是否需要中英文双语是否需要支持移动端访问可靠性系统宕机了怎么恢复数据多久备份一次拿图书馆管理系统举例你可以写系统应支持200个以上用户同时在线查询用户密码经过加密存储即使是系统管理员也无法查看明文密码系统在运行期间数据库每日凌晨2点自动备份备份保留最近7天。这些指标写的时候要合理别拍脑袋写“支持100万并发”那不但不加分反而显得你不懂行。真实场景下一个校园图书馆的并发用户通常也就几百写200~500完全够用。4. 核心图表的绘制方法与避坑指南4.1 用例图用例、角色、关系三要素要闭环用例图是软件工程第一次实验里最核心的产出物也是老师最爱挑毛病的地方。我们先说清楚用例图的三要素参与者Actor系统的使用者用小人图标表示放在框图两侧。用例Use Case参与者能做的某件事用椭圆表示比如“借书”“还书”“查询图书”。关系参与者与用例之间用实线连接表示“谁关联了哪个用例”用例之间可能还有include包含和extend扩展关系用虚线箭头表示。我第一次画用例图的时候也踩过坑——把用例画得又大又全一个椭圆里塞了五六个动作。老师看完直接说“你这个用例该拆分了”。正确的粒度应该是一个用例对应一个完整的用户目标而不是一个操作步骤。举个例子“借书”是一个用例它里面可能包含“验证读者身份”“检查逾期记录”“更新库存”这些步骤。但这些步骤是借书这个用例的内部流程不需要单独画成用例。只有当“检查逾期记录”本身是一个独立可选流程时才考虑用extend关系。用例图常见的错误我整理了一份速查表错误类型错误示例正确做法参与者笼统只画一个“用户”拆成读者、管理员、系统管理员用例过粗一个“管理图书”包含增删改查拆成“新增图书”“删除图书”“修改图书信息”关系遗漏读者可以不登录就借书在借书用例前包含“用户登录”用例包含/扩展乱用把“还书”和“计算罚款”画成平级关系“计算罚款”是“还书”的可选分支用extend关于include和extend再展开说一句。Include是“必须做的”比如借书之前必须登录所以“借书”包含“登录”Extend是“可能会做但非必须”比如还书时如果超期了才“计算罚款”如果没超期就不做所以“计算罚款”扩展了“还书”。这个逻辑捋顺了用例图基本就稳了。4.2 业务流程图泳道图让角色职责一目了然流程图在软件工程实验里的作用是展示“一件事从头到尾怎么流转”。最常见的场景就是借书流程、还书流程、图书采购流程。这里面有个技巧用泳道图Swimlane按角色把流程划分成横向的一条条泳道每个角色只在自己的泳道里放置操作这样谁做什么一眼就能看明白。我建议学生用ProcessOn里的“泳道图”模板来画。拿“图书借阅流程”举例它的基本流向是这样的读者在检索台或者小程序里检索图书看到“可借”的状态。读者拿着图书和校园卡到借书处。管理员扫描校园卡和图书条码。系统校验读者是否有逾期未还图书若有则提示不可借阅。校验通过后系统更新图书状态为“已借出”记录借出日期和应还日期。读者确认信息后完成借阅。画这个流程图的时候每个步骤都要放在对应的泳道里检索图书—读者扫码—管理员校验—系统或者管理员更新状态—系统。这样三类角色的职责边界就很清楚了。流程图里的判断节点也要画规范。菱形表示判断比如“是否有逾期未还图书”就是一个判断节点下面分出“是”和“否”两个分支。很多同学画到判断节点就只会写“是/否”但正确做法是在边上标注出分支条件比如“是存在逾期记录进入拦截流程”“否校验通过继续借阅”。这样流程图的可读性会高很多。4.3 活动图与状态图进阶图表用对了是加分项如果实验要求里没有强制画活动图和状态图那你可以选择性画一两个用对了就是明显的加分项。活动图描述的是“一个用例内部的执行流”比如“借书”这个用例里从读者提交申请到最后完成借阅系统做了哪些动作、在哪个节点产生了分支。它比流程图更偏“逻辑”而非“角色”适合展示复杂算法的分支逻辑。状态图描述的是“一个对象在不同状态之间的切换”。比如“图书”这个对象它的状态可以是“在馆”“已借出”“预约中”“下架”。每一次状态切换都是由某个事件触发的比如“借出”事件把图书从“在馆”变成“已借出”预约到期后系统自动释放预约状态。状态图在讲清楚对象生命周期的时候特别好用老师一看就知道你是真的理解了面向对象思维。我的建议是如果你的实验报告里用例图是核心那活动图和状态图各画一个就好画多了反而显得主次不分。挑你最熟悉的一个用例画活动图挑“图书”或“订单”这种核心业务对象画状态图够了。5. 数据字典与数据需求让报告经得起推敲5.1 数据项定义字段名称、类型、约束缺一不可软件工程第一次实验里数据字典往往是很多学生交白卷的部分但它恰恰是需求分析说明书里最体现专业度的章节。数据字典是对系统里出现的数据流、数据项、数据结构进行定义说白了就是给数据库设计打前站。写数据字典的时候你应该为每个核心数据项列出至少四样信息名称、类型、长度/格式、约束条件。拿图书馆管理系统举例数据项借阅证号类型字符型长度10位格式前4位为入学年份后6位为顺序号例如2024011122约束全局唯一不能为空数据项ISBN类型字符型长度13位或10位格式符合国际标准书号规范例如978-7-302-12345-6约束全局唯一数据项应还日期类型日期型格式YYYY-MM-DD约束大于借出日期默认借期为30天这种数据字典的写法格式规整、信息明确老师一眼就能看出你有数据库设计的基础。反观那些随便写“借书证号字符串”就完事的水平高下立判。5.2 E-R图实体、属性、联系检验需求理解深度E-R图实体-联系图也是软件工程实验里经常考察的内容。它的核心是三个概念实体Entity、属性Attribute、联系Relationship。拿图书馆管理系统举例实体至少有“读者”“图书”“图书管理员”属性分别对应该实体的特征比如“读者”有“姓名、学号、学院、借阅证号”“图书”有“书名、作者、ISBN、出版日期、库存数量”。实体之间怎么联系读者和图书之间是“借阅”关系一个读者可以借多本图书一本图书也可以被多个读者借过不同时间所以是多对多N:M。图书管理员和图书之间是“管理”关系一个管理员可以管理多本图书但一本图书的入库操作通常由一位管理员完成所以为一对多1:N。画E-R图有两种习惯一种是把实体的属性画成一圈圆圈挂载在实体周围另一种是用表格或者清单方式列出每个实体的属性。我建议初学用后者因为在Word或Markdown里好排版可读性也更强。E-R图画完你还可以顺手把“逻辑结构设计”初步写一下就是描述你打算建哪几张数据表、每张表的字段和主外键是什么。这一块虽然不是软件工程第一次实验的硬性要求但写了就是超预期答辩时老师问起系统实现你也能对答如流。6. 实验报告撰写的结构模板与排版技巧6.1 报告结构让老师三分钟看懂你的思路实验报告的结构直接影响了老师给分的主观感受。一个清晰的报告应该让老师三分钟之内抓住你的核心思路而不是在冗长的文字里翻来翻去找你的用例图在哪。我给学生的标准结构是这样项目背景与目标用户角色分析功能需求清单编号列表非功能需求用例图与用例描述业务流程图核心流程数据字典与E-R图实验总结这个顺序非常关键先讲背景再讲角色和功能然后在图表里把功能可视化最后用数据字典把细节钉死。整个逻辑是从“为什么做”到“做什么”再到“怎么做”跟需求分析的标准流程完全一致。用例描述部分我建议用“用例描述表”的格式这是UML标准里的做法也是最不容易丢分的格式。一个用例描述表通常包括用例编号与名称参与者前置条件只有满足这个条件才能执行主事件流正常情况下的步骤序列备选事件流异常情况后置条件执行完成后保证为真的状态拿“借书”用例举例前置条件是“读者已登录”“读者无逾期未还图书”。主事件流是“读者提交借书申请→系统校验读者身份→校验图书状态→系统更新库存→记录借阅信息”。备选事件流是“读者存在逾期记录系统提示并终止操作”“图书状态为已借出系统提示不可借出”。后置条件是“图书状态变为已借出读者借阅记录新增一条数据”。这样一张表写下来整个用例的逻辑就闭环了。你答辩时老师问“借书如果逾期了怎么办”你直接指着备选事件流说“这里写了系统拦截并提示”老师自然无话可说。6.2 排版细节不花哨但要做到整齐合规实验报告排版不要求花哨但基本素养要有。我给学生的要求是正文宋体小四、标题黑体三号、行距1.25倍或1.5倍、图表要有编号和图题。图题放在图下方表题放在表上方这是最基本的规范。图表编号要统一比如“图1-1 系统用例图”“表3-1 读者角色权限表”。后面在文字里引用的时候要写“如图1-1所示”不要写“如下图”这种模糊表述。这些细节看起来不起眼但能直接影响老师在主观评分项上的印象分。还有一点很多人容易忽略导出图片的时候图要清晰。我见过太多报告用例图里的字都糊成一团根本看不清。处理办法是画图时把画布设置大一点字体调大导出PNG时选择高清模式插入Word后不要直接拉大否则会变模糊。6.3 实验总结怎么写出真实感实验总结是很多人头疼的地方觉得“不知道写什么”。我教你一个通用思路拆成三层来写。第一层写你做了什么。这里用一两句话概括实验内容就行别长篇大论。第二层写你遇到了什么问题以及怎么解决的。这是老师最爱看的部分特别能体现你的思考过程。第三层写你学到了什么、有哪些不足。给你一个示例参考“本次实验完成了图书馆管理系统的需求分析绘制了用例图和业务流程图编写了数据字典和E-R图。在绘制用例图时我最初将‘登录’和‘借书’画成了两个独立用例后来意识到登录应该是借书的包含关系经过查阅资料和修改最终采用了包含关系表达对UML的include和extend机制有了更深入的理解。后续还需在用例描述的细化程度上继续提升。”这个总结的真实感很强因为你写了具体的困惑和修正过程而不是空泛地说“这次实验让我受益匪浅”。哪怕老师不细看正文看到这段总结也会觉得你是用心做的。7. 常见问题与答辩避坑实录7.1 用例图画完自己都讲不清先自查这5个问题实验报告交上去一般会有答辩或者课堂展示环节。我总结了学生在用例图这块最容易翻车的五个问题你在提交前先自查一遍第一每个用例是否都能对应到一个参与者如果有的用例你找不到谁用它那这个用例大概率是多余的。第二用例名称是否都是“动词名词”结构“图书管理”这种模糊措辞不行“新增图书”“删除图书”才行。第三参与者和用例的连接线是否都用实线有没有漏画这张图是不是包含了整个系统的所有功能如果你的用例图漏掉了一个在需求清单里写过的功能答辩时老师一眼就能发现。第四是否存在“系统管理员登录”和“图书管理员登录”这种把简单问题复杂化的情况登录功能可以统一用一个“用户登录”用例再通过角色权限去区分。第五点是高频问题图太挤文字重叠排版乱。画图的时候注意把用例和参与者均匀摆放每条连线都交叉最少。宁可图大一点、元素间距宽一点也不要为了省一页纸硬塞。7.2 答辩被问“这个系统有什么风险”怎么答有个答辩经典提问很多学生被问懵了你这个系统存在哪些风险这个问题考察的是非功能需求和可行性分析是否真的思考过。正确应对思路是分风险类型回答。技术风险方面可以说“系统初期开发周期紧张UML建模深度可能不足后续需要补充详细设计”。安全风险方面可以说“用户数据、借阅隐私存在被未授权访问的隐患后续需要设计完善的权限控制与数据加密方案”。运维风险方面可以说“如果并发访问量超过预期数据库可能出现性能瓶颈需要考虑缓存和数据库优化方案”。这个问题其实不难关键在于你实验报告里要把风险分析和解决方案对应起来。你写“系统支持200个并发”那就要说“超过200并发时系统通过消息队列削峰保证核心功能可用”。这样回答就有理有据老师听着也觉得你认真做了方案评估。7.3 小组分工雷区所有内容都“一起完成”等于零个人展示如果你做的是小组实验分工部分也要写出真实感。我见过太多小组分工写“全员共同完成需求分析、全员共同绘制用例图、全员共同编写报告”这等于没分工。合理的小组分工应该是明确到人、职责可验证的。比如A负责用户角色定义和用例图绘制B负责业务流程分析和流程图绘制C负责数据字典和E-R图设计D负责汇总排版和报告撰写。答辩的时候每个人讲自己负责的部分老师问细节也知道该问谁展示的是团队真实协作成果。如果你是单人实验那分工部分可以省略但个人总结部分一定要多写一点重点突出你在整个分析过程中独立面对和解决的难题展示独立思考能力。8. 从实验到项目一套可复用的需求分析方法论做完第一次实验我希望你带走的不只是一个分数而是一套可复用的分析框架。因为这套东西你以后做课程设计、毕业设计甚至真正进入企业做项目都会反复用到。总结一下这次实验里你练到的东西从用户角色出发而不是从技术出发。很多同学一上来就想“我要用什么数据库、什么框架”但优秀的需求分析师会先问“我的用户是谁、他要完成什么目标”。先定义角色再梳理功能然后画图可视化最后用数据字典把所有字段定义清楚——这样从抽象到具体从模糊到精确一步一步逼着你把需求想透。这个方法论的价值我在实际项目里反复验证过。早期我自己也犯过“跳过需求分析直接画原型”的错误结果原型推翻了三版因为根本没想清楚用户要什么。后来老老实实把需求清单、用例图、流程图这些前置工作做扎实开发效率反而快了许多。工具只是辅助思路才是核心。再说一点额外经验如果你有兴趣可以把第一次实验的选题延续到后面的课程设计甚至毕业设计。很多毕业设计面试官问起你的项目经历你如果有完整的从需求分析到详细设计再到开发实现的全过程作品比零散的三四个“玩具项目”更有说服力。软件工程第一次实验就是你积累完整项目经验的起点。最后分享一个小技巧把实验里产出物的格式模板整理成自己的笔记以后做任何新项目直接复用这套模板只需要替换里面的角色、功能、业务流程一份新的需求分析文档很快就能搭出骨架来。工具会过时题目会变但“先想清楚再动手”这个习惯什么时候都不过时。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑