软件工程_自动售货机
- 格式:doc
- 大小:215.51 KB
- 文档页数:4
自动售货机
信息1101 施敏宇 18号
下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型:
自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查
硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币、五分币、二分币、一
分币。其他货币被认为是假币。机器拒绝接受假币,并将其从退币孔退出。当机器接受了有
效的硬币之后,就把硬币送入硬币储藏器中。顾客支付的货币根据硬币的面值进行累加。
自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。顾客通过
选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货
物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返还到退币孔。如果分配
器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。如果顾客支付的货币值少
于所选择的分配器中货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选
择的货物,他投放进的货币将从退币孔中退出。
面向对象的分析
面向对象分析方法的核心思想是利用面向对象概念和方法为软件需求构造一组
相关模型(对象模型,动态模型和功能模型),来获得关于问题域的全面认识。
这三个模型从不同的角度对系统进行描述,其中:对象模型描述了系统静态
的、结构化的数据性质;动态模型描述了系统顺势的、行为化的控制性质;功能
模型描述了变化的系统的功能性质。这三个模型都涉及到数据。控制和操作等共
同的概念,但每种模型描述的侧重有所不同。它们各自以不同侧面反应系统的实
质内容,综合起来则全面反映了目标系统的需求。
对象模型是三个模型中最关键的。它的作用是描述系统的静态结构,包括构成系
统的类和对象、它们的属性和操作以及它们之间的联系。UML中类图适用于建立
对象模型,状态图适用于建立动态模型。每个类的动态行为用一张状态图来表示,
各个类的状态图通过事件合并起来,构成系统的动态模型。也就是说,动态模型
是基于事件共享而相互关联的一组状态图的集合。建立对象模型大体上按照下列
顺序进行:寻找问题域内的对象,识别出对象间的关系、定义属性和服务。事实
上,分析工作不可能严格按照预定顺序进行,系统的模型往往需要反复构造多遍
才能建成。
注:对象硬币计算器和对象硬币检测器可以作为对象自动售货器的一部分,它们
的属性作为自动售货器的属性。
建立动态模型
对于仅存数静态数据的系统来说,动态模型并没有什么实际意义。然而在开
发交互式系统时,动态模型却起着很重要的作用。如果收集输入信息是目标系统
的一项主要工作,则在开发这类应用系统时建立正确的动态模型是至关重要的。
建立动态模型的步骤:
(1) 编写典型的对话脚本;
(2) 从脚本中提取出事件,联系该事件与其目标对象;
(3) 组织事件的顺序和状态(采用状态图描绘);
(4) 比较各个不同对象的状态图,检查对象之间的一致性,确保事件之
间的匹配。
提示投币
检查硬币
提示是假
币,退币
存储硬币,计算货币总值
确认投完硬币
请求选择货物
检测货物存量提示无货
计算比较货币总值和货物价格确认确认顾客购买送出货物,请求取货退币请求取退币提示显示交易完毕提示货物不足,确
认顾客购买
否
假币
投币
真币
是
选择货物
无货
小于
不购买
购买
不购买
功能模型
功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定
什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入
值得到输出值,它不考虑计算的次序。功能模型由多张数据流图组成。数据流图
用来表示从源对象到目标对象的数据值的流向,它不包含控制信息,控制信息在
动态模型中表示,同时数据流图也不表示对象中值的组织,值的组织在对象模型
中表示。
数据流图中包含有处理、数据流、动作对象和数据存储对象。
1.处理
数据流图中的处理用来改变数据值。最低层处理是纯粹的函数,一张完整的
数据流图是一个高层处理。
2.数据流
数据流图中的数据流将对象的输出与处理、处理与对象的输入、处理与处理
联系起来。在一个计算机中,用数据流来表示一中间数据值,数据流不能改变数
据值。
3.动作对象
动作对象是一种主动对象,它通过生成或者使用数据值来驱动数据流图。
4.数据存储对象
数据流图中的数据存储是被动对象,它用来存储数据。它与动作对象不
一样,数据存储本身不产生任何操作,它只响应存储和访问的要求。
等待顾客投币检查硬币退币退假币分配货物,找零货物
价格
有效币
特征
顾客
投币
顾客取消购
买,退币
送入硬币
储藏器计
算面值
判断货币是
否足够
判断分配器
货物存量
顾客
假币
顾客
假币
有效币
货币总值
硬币
选择货物
无货
有货
足够
不足
硬币
货物,硬币
硬币