系统分析——以事件开始构建系统模型
当为一个系统定义需求时,先调查清楚能对该系统产生影响的事件是十分有用的。通过询问系统相关者,找到对系统影响的事件。这样系统分析员就可以把注意力集中在外部环境上,并把整个系统看成一个黑盒,从高层次上全面考察系统,而不是集中在系统内部工作上。
既然事件对系统分析如此重要,就有必要对事件有个深入了解。我们来看个关于事件的例子。
家中用的空调都是自动调节温度的,用于调节温度的重要部件是温度控制器,它可以感知周围的环境温度。当温度高于设定温度时,温度控制器触发继电器闭合,空调运转,当温度低于设定温度时,温度控制器触发继电器断开,空调停止运转。
在上面的例子中,温度控制器用来控制空调的运转,从而控制室内温度。当室内温度高于设定温度时,温度控制器会发出指令,让空调进入运转状态;当室内温度低于设定温度时,温度控制器会发出指令,让空调进入停止状态。在合适的时间温度控制器发出启动和停止空调运转的指令,就是一个空调系统中的事件。
图 1 空调温度控制器事件图
从上图也可以看出,温度控制器本身触发了2个事件,一个事件是当温度高于设定温度时发生,事件发生后执行的动作是启动空调;另外一个事件是当温度低于设定温度时发生,事件发生后行的动作是关闭空调。
如果我们把空调看作一个系统,这个系统还有定时事件、温度调整事件、风速调整事件、空调的启动与关闭等事件。启动空调事件会触发一系列如风扇开启等动作,关闭空调事件会触发风扇停止运转等动作。
可以看出空调系统所有的过程都是由事件驱动或触发的,因此,当定义系统需求时,把所有事件罗列出来并加以分析是很有意义的。
在这里给出事件的定义。
什么是事件—
可以描述的、值得记录的在某一特定时间和地点发生的事情
当我们为一个系统定义需求时,先调查清楚能对该系统产生影响的事件是十分有用的,概括说,就是什么事件发生时,需要系统做出响应?
什么事件发生时,需要系统做出响应?
通过调查对系统有影响的事件,可以把注意力集中在系统外部环境上,并把整个系统看成一个黑盒,从较高层次上全面考察系统,而不是集中在系统内部工作上。假如一个企业要准备生成空调,需要调查空调系统具有哪些功能,可以先找出空调系统能够响应的事件,像定时、温度调整、风速调整等事件。找出空调系统所有能够响应的事件后,就可以把空调系统的功能划分为多个部分,把复杂的空调系统分解成容易处理并能更好理解的小单元,这就是再处理复杂事情时分而治之的原则。
来看一个案例内容
某一快餐连锁店,一直为顾客提供快餐服务,由于价格实惠,服务优良,到店吃饭的顾客很多,顾客需要排很长的队才能点餐和配餐,严重影响了顾客体验。快餐老板希望能够实现顾客电话预订餐,顾客提前通过电话预定餐,并预约到店时间,这样快餐店可以提前做准备,缩短了顾客在餐厅的等候时间。
快餐店老板希望开发一个电话预订餐系统,我们可以尝试从上面的案例内容列出电话预订餐系统的系统事件。
既然是电话订餐,就要有客户拨打打电话、接听电话、记录电话内容、通知厨房备餐、顾客到店取餐等操作。我们来分析一下,看看上面的操作哪些是系统事件。
先说客户拨打打电话这个操作。客户打来电话后,系统要记录电话号码、拨打电话时间,并自动拨通分机号码。因此,客户打来电话是系统事件。
再来看接听电话和记录电话内容这两个操作。客服人员接听电话后,系统并没有进行响应,因此接听电话不是系统事件。当客服人员根据客户的要求记录电话内容时,例如在系统的订餐界面选餐或输入订餐内容,此时系统需要响应客服的输入,因此记录电话内容是系统事件。
通知厨房备餐在电话订餐系统中,属于系统内部事件,当客服人员提交订餐内容后,电话订餐系统会自动触发该事件。该事件会通知厨房人员有的新的备餐。
顾客到店取餐可以分为顾客到店和取餐两个操作。客到店并没有直接影响到系统,系统对顾客进入店中也无需进行响应,只有当顾客提出取餐时,系统才开始响应。因此,顾客到店不是事件,取餐是事件。
图 2 影响电话订餐系统的事件
上面的图列出了影响电话订餐系统的事件,云形灰色区域内的事件是系统内部发生的临时事件。例如,当顾客在预定的时间没来取餐时,系统应给出提示,再如,系统需要每天在规定的时间形成当天的订餐单汇总表。云形灰色区域外的事件是系统之外发生的事件,如顾客拨打电话、顾客支付订餐费用等。
这节课我们通过空调系统和电话订餐系统两个案例,了解了什么是事件。事件是能够引起系统响应、可以描述的、值得记录的在某一特定时间和地点发生的事情。在电话订餐系统中,我们提到了临时事件,下节课我们将讨论事件的类型,事件类型有外部事件、临时事件和状态事件。
系统分析——以事件开始构建系统模型相关推荐
- Stream Processing: S4系统模型分析和关键源码读解
S4(Simple Scalable Stream System) 流数据处理系统是Yahoo!公司提出的,在2011年的时候成为Apache软件基金下的一个孵化项目,可惜的是在2014年的时候该孵化 ...
- [译] 基于事件流构建的服务
[译] 基于事件流构建的服务 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 原文:https://www.confluent.i ...
- 如何基于数据快速构建用户模型(Persona)?
用户模型(Persona)是Alan Cooper在<About Face:交互设计精髓>一书中提到的研究用户的系统化方法.它是产品经理.交互设计师了解用户目标和需求.与开发团队及相关人交 ...
- nuget 构建自己的包_适用于企业的NuGet:持续集成自动构建系统中的NuGet
nuget 构建自己的包 I had the pleasure of speaking at TechEd 2011 North America last week in Atlanta. You c ...
- DDD领域驱动设计三、用事件风暴构建领域模型
文章目录 一.准备事件风暴 1.参与人员 2.环境条件 二.确定产品愿景 参与角色: 三.业务场景分析 1.参与角色: 2.实例 四.领域建模 1.参与角色: 2.思考 3.实例 五.微服务拆分与设计 ...
- 事件抽取与事件图谱构建
公众号 系统之神与我同在 知识图谱是下一代人工智能的基础设施, 是实现可解释人工智能的重要手段. 事件图谱的意义:通用领域 丰富现有的知识图谱 支撑其它信息获取引擎 事件图谱构建的关键技术:事件抽取 ...
- pusher 创建新应用_基于 Laravel + Pusher + Vue 通过事件广播构建实时聊天室应用
基于 Laravel + Pusher + Vue 通过事件广播构建实时聊天室应用 由 学院君 创建于2年前, 最后更新于 3个月前 版本号 #3 前言:学院君之前有说过要整理出一篇事件广播手把手教程 ...
- php三层架构erp,基于ERP/MES/PCS三层架构的现代集成制造系统模型
数据集成是实施MES的基础将生产管理层的生产运行,产品质量.原料和产品输送.动力能耗等数据进行汇总和处理,使下层生产过程的实时信息和上层企业资源管理等的各类信息都在MES层中融合,并通过信息集成形成优 ...
- 多模态知识图谱构建系统论文笔记
总结 从数据来源,构建系统可以分类两大类: 1. 信息抽取:直接从原始材料中提取实体,比如Gaia.Neil. 2. 信息融合:根据已有的知识库进行融合,比如VisualSem. 可以参考下图,第一类 ...
最新文章
- 老码农:这是我见过最操蛋的代码,切勿模仿!
- 各个系统下以及VS2017、Qt十分常用的快捷键
- 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
- OSPF——虚链路详解(含配置命令)
- 三个变量存在一个协整方程_存在多个协整关系,如何取舍?
- delphi dbgrideh 遍历每一个单元格_真香!我用Python 制作了一个迷宫游戏
- python执行变量次_当脚本再次执行时需要一个变量来保留它的值(Python)
- 性能测试:性能测试常见指标
- 服务器装win10系统,win10服务器系统
- python islower方法_(验证)Python中不同类型的islower()方法
- 计算机扫盲教案,对号入座教案
- java 自动化报表_SpringMvc JDBC jQWidgets项目案例JasperReport自动化报表系统
- 使用echarts生成海友网企业全国分布地图
- iframe 重新加载
- 猿人学试题(非常简单js混淆、雪碧图、样式干扰 css加密、js混淆源码乱码、js混淆动态cookie、访问逻辑)
- 弱网、2G、3G、4G测试
- 信号的周期、频率和角频率关系
- Pandas的数据结构之DataFrame
- 智能台球计费android,中科台球厅智能计费管理系统
- 中文分词方法汇总笔记