当为一个系统定义需求时,先调查清楚能对该系统产生影响的事件是十分有用的。通过询问系统相关者,找到对系统影响的事件。这样系统分析员就可以把注意力集中在外部环境上,并把整个系统看成一个黑盒,从高层次上全面考察系统,而不是集中在系统内部工作上。

既然事件对系统分析如此重要,就有必要对事件有个深入了解。我们来看个关于事件的例子。

家中用的空调都是自动调节温度的,用于调节温度的重要部件是温度控制器,它可以感知周围的环境温度。当温度高于设定温度时,温度控制器触发继电器闭合,空调运转,当温度低于设定温度时,温度控制器触发继电器断开,空调停止运转。

在上面的例子中,温度控制器用来控制空调的运转,从而控制室内温度。当室内温度高于设定温度时,温度控制器会发出指令,让空调进入运转状态;当室内温度低于设定温度时,温度控制器会发出指令,让空调进入停止状态。在合适的时间温度控制器发出启动和停止空调运转的指令,就是一个空调系统中的事件。

图 1 空调温度控制器事件图

从上图也可以看出,温度控制器本身触发了2个事件,一个事件是当温度高于设定温度时发生,事件发生后执行的动作是启动空调;另外一个事件是当温度低于设定温度时发生,事件发生后行的动作是关闭空调。

如果我们把空调看作一个系统,这个系统还有定时事件、温度调整事件、风速调整事件、空调的启动与关闭等事件。启动空调事件会触发一系列如风扇开启等动作,关闭空调事件会触发风扇停止运转等动作。

可以看出空调系统所有的过程都是由事件驱动或触发的,因此,当定义系统需求时,把所有事件罗列出来并加以分析是很有意义的。

在这里给出事件的定义。

什么是事件—

可以描述的、值得记录的在某一特定时间和地点发生的事情

当我们为一个系统定义需求时,先调查清楚能对该系统产生影响的事件是十分有用的,概括说,就是什么事件发生时,需要系统做出响应?

什么事件发生时,需要系统做出响应?

通过调查对系统有影响的事件,可以把注意力集中在系统外部环境上,并把整个系统看成一个黑盒,从较高层次上全面考察系统,而不是集中在系统内部工作上。假如一个企业要准备生成空调,需要调查空调系统具有哪些功能,可以先找出空调系统能够响应的事件,像定时、温度调整、风速调整等事件。找出空调系统所有能够响应的事件后,就可以把空调系统的功能划分为多个部分,把复杂的空调系统分解成容易处理并能更好理解的小单元,这就是再处理复杂事情时分而治之的原则。

来看一个案例内容

某一快餐连锁店,一直为顾客提供快餐服务,由于价格实惠,服务优良,到店吃饭的顾客很多,顾客需要排很长的队才能点餐和配餐,严重影响了顾客体验。快餐老板希望能够实现顾客电话预订餐,顾客提前通过电话预定餐,并预约到店时间,这样快餐店可以提前做准备,缩短了顾客在餐厅的等候时间。

快餐店老板希望开发一个电话预订餐系统,我们可以尝试从上面的案例内容列出电话预订餐系统的系统事件。

既然是电话订餐,就要有客户拨打打电话、接听电话、记录电话内容、通知厨房备餐、顾客到店取餐等操作。我们来分析一下,看看上面的操作哪些是系统事件。

先说客户拨打打电话这个操作。客户打来电话后,系统要记录电话号码、拨打电话时间,并自动拨通分机号码。因此,客户打来电话是系统事件。

再来看接听电话和记录电话内容这两个操作。客服人员接听电话后,系统并没有进行响应,因此接听电话不是系统事件。当客服人员根据客户的要求记录电话内容时,例如在系统的订餐界面选餐或输入订餐内容,此时系统需要响应客服的输入,因此记录电话内容是系统事件。

通知厨房备餐在电话订餐系统中,属于系统内部事件,当客服人员提交订餐内容后,电话订餐系统会自动触发该事件。该事件会通知厨房人员有的新的备餐。

顾客到店取餐可以分为顾客到店和取餐两个操作。客到店并没有直接影响到系统,系统对顾客进入店中也无需进行响应,只有当顾客提出取餐时,系统才开始响应。因此,顾客到店不是事件,取餐是事件。

图 2 影响电话订餐系统的事件

上面的图列出了影响电话订餐系统的事件,云形灰色区域内的事件是系统内部发生的临时事件。例如,当顾客在预定的时间没来取餐时,系统应给出提示,再如,系统需要每天在规定的时间形成当天的订餐单汇总表。云形灰色区域外的事件是系统之外发生的事件,如顾客拨打电话、顾客支付订餐费用等。

这节课我们通过空调系统和电话订餐系统两个案例,了解了什么是事件。事件是能够引起系统响应、可以描述的、值得记录的在某一特定时间和地点发生的事情。在电话订餐系统中,我们提到了临时事件,下节课我们将讨论事件的类型,事件类型有外部事件、临时事件和状态事件。

系统分析——以事件开始构建系统模型相关推荐

  1. Stream Processing: S4系统模型分析和关键源码读解

    S4(Simple Scalable Stream System) 流数据处理系统是Yahoo!公司提出的,在2011年的时候成为Apache软件基金下的一个孵化项目,可惜的是在2014年的时候该孵化 ...

  2. [译] 基于事件流构建的服务

    [译] 基于事件流构建的服务 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 原文:https://www.confluent.i ...

  3. 如何基于数据快速构建用户模型(Persona)?

    用户模型(Persona)是Alan Cooper在<About Face:交互设计精髓>一书中提到的研究用户的系统化方法.它是产品经理.交互设计师了解用户目标和需求.与开发团队及相关人交 ...

  4. nuget 构建自己的包_适用于企业的NuGet:持续集成自动构建系统中的NuGet

    nuget 构建自己的包 I had the pleasure of speaking at TechEd 2011 North America last week in Atlanta. You c ...

  5. DDD领域驱动设计三、用事件风暴构建领域模型

    文章目录 一.准备事件风暴 1.参与人员 2.环境条件 二.确定产品愿景 参与角色: 三.业务场景分析 1.参与角色: 2.实例 四.领域建模 1.参与角色: 2.思考 3.实例 五.微服务拆分与设计 ...

  6. 事件抽取与事件图谱构建

    公众号 系统之神与我同在 知识图谱是下一代人工智能的基础设施, 是实现可解释人工智能的重要手段. 事件图谱的意义:通用领域 丰富现有的知识图谱 支撑其它信息获取引擎 事件图谱构建的关键技术:事件抽取 ...

  7. pusher 创建新应用_基于 Laravel + Pusher + Vue 通过事件广播构建实时聊天室应用

    基于 Laravel + Pusher + Vue 通过事件广播构建实时聊天室应用 由 学院君 创建于2年前, 最后更新于 3个月前 版本号 #3 前言:学院君之前有说过要整理出一篇事件广播手把手教程 ...

  8. php三层架构erp,基于ERP/MES/PCS三层架构的现代集成制造系统模型

    数据集成是实施MES的基础将生产管理层的生产运行,产品质量.原料和产品输送.动力能耗等数据进行汇总和处理,使下层生产过程的实时信息和上层企业资源管理等的各类信息都在MES层中融合,并通过信息集成形成优 ...

  9. 多模态知识图谱构建系统论文笔记

    总结 从数据来源,构建系统可以分类两大类: 1. 信息抽取:直接从原始材料中提取实体,比如Gaia.Neil. 2. 信息融合:根据已有的知识库进行融合,比如VisualSem. 可以参考下图,第一类 ...

最新文章

  1. 老码农:这是我见过最操蛋的代码,切勿模仿!
  2. 各个系统下以及VS2017、Qt十分常用的快捷键
  3. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  4. OSPF——虚链路详解(含配置命令)
  5. 三个变量存在一个协整方程_存在多个协整关系,如何取舍?
  6. delphi dbgrideh 遍历每一个单元格_真香!我用Python 制作了一个迷宫游戏
  7. python执行变量次_当脚本再次执行时需要一个变量来保留它的值(Python)
  8. 性能测试:性能测试常见指标
  9. 服务器装win10系统,win10服务器系统
  10. python islower方法_(验证)Python中不同类型的islower()方法
  11. 计算机扫盲教案,对号入座教案
  12. java 自动化报表_SpringMvc JDBC jQWidgets项目案例JasperReport自动化报表系统
  13. 使用echarts生成海友网企业全国分布地图
  14. iframe 重新加载
  15. 猿人学试题(非常简单js混淆、雪碧图、样式干扰 css加密、js混淆源码乱码、js混淆动态cookie、访问逻辑)
  16. 弱网、2G、3G、4G测试
  17. 信号的周期、频率和角频率关系
  18. Pandas的数据结构之DataFrame
  19. 智能台球计费android,中科台球厅智能计费管理系统
  20. 中文分词方法汇总笔记

热门文章

  1. js 的正则表达式 部分展示test()方法的验证功能
  2. 处理有外键约束的数据
  3. CSS3实现小黄人动画
  4. asp.net权限控制配置web.config
  5. 程序一旦发觉写得不理想,那就得重构它
  6. ppz css栅格框架
  7. Vue入门 ---- vue-loader 、vue-cli
  8. Golang——多种运算符及优先级
  9. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程
  10. 框架的特性_Go 语言 Web 框架 Echo 系列:基础篇—通过一个例子串联各特性