学习如何画图,如类图,顺序图,流程图,E-R图和类代码等
一个一个来
加工:命名要用动宾词组;
外部实体、数据存储、数据流:命名要用名词;
下面用个题来说明:
假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。
采购部是数据起点,然后最后仓库是数据终点。中间是订货系统。
所以基本的画图是
然后确定好目标后再进行细化:
确定处理 :
“事务的后果是改变零件库存量,实时统计定货情况” →必须有一个用于处理事物的处理
工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。
“采购部需要报表”→必须有一个用于产生报表的处理
确定数据存储:
当某种零件的库存数量少于库存量临界值时就应该再次定货。
“在某个地方要有零件库存量和临界值数据” →必须有一个用于保存库存清单
的数据存储
“产生报表和处理事务这两个处理在时间上明显不匹配”→必须有一个用于存放定货信息
的数据存储
刚开始画出来框架:(把系统,起始点和终点画好)
然后把处理和数据流和数据结构画上
这里解答下为啥库存清单是双向的,因为处理事务(进货)需要看库存清单,所以会产生一个指向处理事务的箭头
到这里还可以继续细化
因为你看
当某种零件的库存数量少于库存量临界值时就应该再次定货。
这句话中缺货-》订货-》修改库存量等没有体现出来
所以:
细化处理事务
接收事务
修改库存清单
处理定货
的加工我画的不太好,我用下ppt的
这里说明下定货信息(货物的名字啥的,数量)。因为处理事务(需要看数量)
和生成报表(需要看货物信息)
都用上,所以这样画。
然后二层要进行合并
我感觉这个视频讲解的还行:
软件工程数据流图画法 我在tyut
然后我使用的ppt:
其他例题:
高考录取统分子系统
结构化系统分析——交通违章处理
/
/
/
/
/
/
模块结构图三大成分:模块、调用、接口数据(纯数据和控制信息)
三大成分:模块,调用,数据(纯数据◎、控制信息◉)
模块结构图中的主要成分有:
模块
:用长方形表示调用
:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用纯数据
:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义)控制信息
:带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息所以模块结构图中的调用是有箭头指向的
高考录取统分子系统有如下功能:
(1) 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;
(2) 计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
看上面视频链接,数据流图已经画出来了。。(后面加个数据终点(->考生))
那么看结构图
先画一个基本结构:
一般上面三个是输入,处理,输出
他把原始分传过去,那么下面咋样计算原始分之类的还要细分
根据原始分得到标准分,说明在分数处理里面使用了,再细分
那么如果使用分数处理,也得细分。
下面加个计算标准分,把原始分传过去,再标准分传给分数处理
我们还要计算录取线等
我们看右边,先把标准分传过来
结果输出要把标准分存入考生分数文件
还差个录取线,要计算录取线。
根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线件。
招生人数传给分数处理
然后根据标准分和招生人数计算录取线
分数处理得到录取线,返回给系统
分数处理如何得到录取线?
要来个计算录取线模块
传入标准分
传入招生人数
传回录取线给分数处理模块
系统把录取线,存入录取线文件。
加一个存入录取线文件模块
把从系统来的录取线0-》结果输出-》存入录取线文件
最后自己美化下
标准答案见这篇文章高考录取统分子系统
借用视频:
数据流图转软件结构图方法tyut
其他例题:
也可以不像上面那样输入输出处理三个模块
自己设置模块
比如这个题:
“工资处理”子系统的结构图
/
/
/
/
/
/
这个就比较简单了
就按照功能模块往下分层
注意: 模块层次图(H图)二大成分:模块和调用(调用不要画箭头)
还是拿上面那个题为例:
这样写就行,如果还有得话可以细化
/
/
/
/
/
/
参与者(Actor)(活动者)
——与应用程序或系统进行交互
的用户、组织或外部系统。用一个小人表示。用例(Use Case)
——用例就是外部可见的系统功能,对系统提供的服务进行描述。(用户能做什么事情
)用椭圆表示。子系统(Subsystem)
——用来展示系统的一部分功能,这部分功能联系紧密。用例图中涉及的关系有:关联、泛化、包含、扩展。
借用这篇博客的图片
UML建模——用例图(Use Case Diagram)
关于它们的具体介绍一定要看上面那篇文章,理解很清楚
这里要特别说明下,我们老师讲的关联是有箭头指向的,指向用例。
还是要看具体情况的(一般关联实线无箭头)
然后来画用例图
可以看一下上面链接的文章下面的例题
下面我们看道例题:
需求陈述:
某高校欲开发学生成绩管理系统,其基本功能包括:
(1) 基本信息管理
管理员登录系统后,输入或修改教学计划、学生名单和教师名单。
(2) 学生选课
学生登录系统后,根据教学计划进行选课。
(3) 分配任课教师
管理员为符合条件的课程分配教师,并打印任课通知单给教师。
(4) 成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;管理员维护成绩,系统可生成成绩单(发给学生),成绩统计分数表(发给管理员)。
附:学生成绩管理系统的“分配任课教师”用例的描述。
主事件流:
(1) 管理员登录到“学生成绩管理”系统的分配任课教师页面,如果登录失败,转A1。
(2) 管理员查询课程库,查询符合条件的课程,然后查询教师信息,为符合条件的课程分配任课教师,并打印任课通知单给教师。如果没有合适的人选,则放弃则转入A2。用例结束。
扩展事件流:
A1:管理员身份验证不合法
若管理员账号不存在或无效,显示提示信息,可以重新输入或终止该用例。。
A2:取消
如果没有符合条件的课程,则放弃;没有合适的教师,则按取消按钮放弃。
要求:用面向对象方法学对该成绩管理系统进行分析与设计,分别完成以下工作:
(1) 给出成绩管理系统的用例模型 (10分)
先画上三个小人
先分析管理人员:
这里要从大方面考虑,所以从题目主事件流看出
(1) 基本信息管理
管理员登录系统后,输入或修改教学计划、学生名单和教师名单。
(3) 分配任课教师
管理员为符合条件的课程分配教师,并打印任课通知单给教师。
(4) 成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;管理员维护成绩,系统可生成成绩单(发给学生),成绩统计分数表(发给管理员)。
是管理信息,分配任课教师,管理成绩
再分析教师:
看题目得到,好像也就这句话提到过教师干嘛
成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;
所以教师用例为录入成绩
最后分析学生:
看题目得到,好像也就这句话提到过学生干嘛
(2) 学生选课
学生登录系统后,根据教学计划进行选课。
所以学生用例为选课
这样基本的用例和参与者画好了
看题目:
这几个功能都涉及到了登录
某高校欲开发学生成绩管理系统,其基本功能包括:
(1) 基本信息管理
管理员登录系统后,输入或修改教学计划、学生名单和教师名单。
(2) 学生选课
学生登录系统后,根据教学计划进行选课。
(3) 分配任课教师
管理员为符合条件的课程分配教师,并打印任课通知单给教师。
(4) 成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;管理员维护成绩,系统可生成成绩单(发给学生),成绩统计分数表(发给管理员)。
那么这些用例中包含了登录系统,就选用包含关系
这里为啥录入成绩不包含登录系统呢?我们往下看就知道了
看题目:
(4) 成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;管理员维护成绩,系统可生成成绩单(发给学生),成绩统计分数表(发给管理员)。
成绩管理包含了录入成绩
所以它们二个是包含关系
但是我们还有其他漏的关系,还有扩展事件流
继续分析
(3) 分配任课教师
管理员为符合条件的课程分配教师,并打印任课通知单给教师。
这里说明分配任课教师包含打印任课通知单
/
继续分析
(4) 成绩管理
每门课程的教师在考试评分结束后,登录系统录入成绩;管理员维护成绩,系统可生成成绩单(发给学生),成绩统计分数表(发给管理员)。
这里说明管理成绩包含生成成绩单,成绩统计表
最后画出大致:
参与者
要命名成名词,用例
要命名成动宾词组。文章:UML建模——用例图(Use Case Diagram)
其他题目:
图书馆系统的用例图
用例图——门诊挂号
用例图——客户提出申请要求贷款…
用例图——空调公司维修服务流程
借鉴教学视频:
uml图做题方法(上)tyut
这里简单介绍下
详细的看类图详解
注意类特性操作前面有符号的 + -
”+“ :Public 公有
”-“ : Private 私有
”#“:Protected 保护
一组操作的集合,只有操作的声明而没有实现
接口名称
接口方法
例如: 飞翔接口
public 飞方法()
或者还有另外一种写法(”棒棒糖表示法“)关联其他接口
例如:唐老鸭接口
public 讲话
但是它会讲话是讲人话的,需要接口讲人话
就是泛化关系,这里叫做继承关系
比如鸟类属于动物类
实现关系——对应于类和接口之间的关系
例如:大雁飞方法需要接口飞翔
关联关系——描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关联关系语义较弱。
例如:大雁下单与气候关联
其实这样的关联很弱,如果不确定可以不写
特殊关联关系,指明一个聚集(整体)和组成部分之间的关系
例如:雁阵飞包含大雁飞
组合关系——语义更强的聚合,部分和整体具有相同的生命周期
严谨的按照声明周期一样
例如:鸟的翅膀和鸟
依赖关系——※描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式, 例如绑定(bind)、友元(friend)等
比如:动物依赖水
一本书有一个封面、一个目录、一个前言、若干章、每章有若干节、每节有若干段,有若干句子,有0个或多个插图,还有0个或多个表格,书最后有一个附录。试建立该书的对象模型。
找出所有的类
书,封面,目录、前言,前言,节,段,句子,插头,表格,附录
建立关系
组合关系
书包含封面,目录,前言,章,附录
章包含节
节包含段
段包含句子,插图,表格
多重性加上
多重性加上:这里书有若干章,一对多- 1… 1…*
章有若干节 ,一对多- 1… 1…*
节有若干段,一对多- 1… 1…*
段有若干句子,一对多- 1… 1…*
有0个或多个插图,1… 0… * …
还有0个或多个表格 1… 0… * …
/
五种结构:顺序结构、条件选择、多重分支选择、当循环、直到循环。
详细看这篇文章:
N-S图详解
注意:盒图没有开始和结束标志,默认从图的顶部开始,到图的底部结束,单入口单出口。注意直到循环until的条件,千万不要搞反了。
阅读下面的程序流程图,试分别用N-S图和PDL(类C语言描述)表示。
其实前面的都好看,就最后那个结束时候要注意下
你看这个题目
直到i>=50条件成立时候才结束循环
所以使用直到型循环结构
(先执行后判断,当P1条件不成立的情况下,反复执行A语句,直到P1条件成立为止)
下面画好:
注意:使用类C语言的伪代码形式,注意,直到循环do…while,直到循环的条件,千万不要搞反了。
比如上面这题
i = 1
do
{
if ( g >=80 )
输出n、 g
i = i + 1
}while(i<50)
比较难的也就是最后一点,直到循环do…while
关键在于这里的条件
学过C其实懂的
直到循环do…while
只要后面那个while的条件符合就继续执行那个框{}里面的内容
所以是while(i<50)
其他题目可以仿照这个写
这个我就直接用题目讲解了
int isLeap(int year){
if ( year % 4= =0) ----------------------------------------①
{
if ( year % 100= =0) -------------------------------- ②
{
if ( year %400= =0) ----------------------------- ③
leap=1; ----------------------------- ④
else
leap=0; ------------------------------⑤
//endif -----------------------------○6
}
else
leap=1; --------------------------------○7
//endif -------------------------------○8
}
else
leap=0; -------------------------------- ○9
// endif ---------------------------------○10
return leap; ---------------------------------○11
}
请用基本路径测试技术完成该程序的测试,分别实现:
(1)画出上述程序的有向流图,并计算该程序的环形复杂度。(各占5分,共10分)
(2)给出基本路径集,并给出测试用例。(各占5分,共10分)
注:不能修改程序中已有的程序行号,否则不给分。
注意:
看有几个环
最后+1(整体是一个环)
测试用例设计既要写输入数据,也要写预期的输出数据,
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_35629971/article/details/125531259
内容来源于网络,如有侵权,请联系作者删除!