在前面的课程中,我们了解了什么是事件?事件是可以描述的、值得记录的在某一特定时间和地点发生的事情,当事件发生时,系统要做出响应。系统可能会响应外部发生的事件,也可能会响应在系统内部发生的事件,也可能在指定的时间段系统要做出响应。我们把系统响应外部发生的事件称为外部事件;把系统响应内部发生的事件称为状态事件;把系统在指定时间段响应的事件称为临时事件。

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

我们先来看外部事件。前面我们分析了电话订餐系统的事件,其中顾客拨打电话、顾客取消订餐、顾客取餐等事件都是由顾客触发或参与的。顾客可以称之为外部实体或动作参与者,它为系统提供信息或从系统中获取信息。外部实体可以是一个人,如顾客;也可以是一个单位或事物,如学生信息管理系统的课程。

在这里,给出外部事件的描述

外部事件—

系统之外发生的事件,通常都是由外部实体或动作参与者触发的

当描述外部事件时,需要给事件命名,这样外部实体才能清楚。如电话订餐系统中,拨打电话这个事件可以命名为——顾客拨打电话。顾客拨打电话这个事件描述了一个外部实体(顾客)以及这个顾客想做的事情(拨打电话),这个事件直接影响着系统。

识别外部事件对定义系统需求非常重要。为了识别系统的外部事件,首先需要确定有哪些外部实体从系统中获取信息或为系统提供信息。例如,电话订餐系统的顾客就是很重要的外部实体,顾客拨打电话订餐对电话订餐系统来说是个非常重要的外部事件。

识别外部事件并不容易,但是有一些方法可以帮助我们识别外部事件。一种方法是当外部实体需要系统响应时。例如,电话订餐系统的顾客拨打电话;再一种方法是当外部实体需要从系统获取信息时。例如,电话订餐系统的顾客取餐时,服务人员需要从系统中获取该顾客的订餐信息;还有一种方法是当外部实体需要变更系统信息时。例如,电话订餐系统的顾客需要取消订餐或者变更定餐内容时。用这些方法来识别事件,相对就容易些了。

识别外部事件的方法—

当外部实体需要系统响应时

当外部实体需要从系统获取信息时

当外部实体需要变更系统信息时

再来看临时事件。前面分析的电话订餐系统的事件,也包括了一些临时事件。如未取餐提示、未备餐提示、定餐单汇总都属于临时事件。这些事件有一个共同特征,都是在某一时刻发生的事件。例如,当顾客在规定的时间没来取餐时就会触发未取餐事件,系统将做相应处理。再如,在每天的固定时间内生成当天订餐单汇总表。也就是在某一时间需要系统处理一些事情的事件。

在这里,给出临时事件的描述

临时事件—

系统到达某一时刻自身触发的事件

临时事件不一定非要在确定的时间发生,也可以在预先定义的一段时间过后发生。例如,当客户购买商品后,在某一时间段内没有支付商品费用,淘宝系统会自动关闭该交易。临时事件命名一般都采用需要系统产生的结果这种方式来命名。例如,电话订餐系统中的未取餐提示、未备餐提示、订餐单汇总事件命名。

识别临时事件也有三种方法。第一种方法是当系统需要在某一最后期限之前必须完成的任务,就可以确定为临时事件;第二种方法是当系统需要输出内部输出结果时,例如电话订餐系统的每天订餐单汇总;第三种方法是当系统需要对外部输出结果时,例如提醒备餐人员的未备餐提醒。

识别临时事件的方法—

当系统需要在某一最后期限之前必须完成的任务时

当系统需要有内部输出结果时

当系统定时需要对外部输出结果时

最后我们再来看看状态事件。状态事件类似于临时事件,也是系统内部发生了需要处理的情况时所引发的事件。例如,淘宝商户所售商品的库存降到了一定数量后,就必须要提前进货,该状态事件可以命名为“达到进货点”,虽然状态事件和临时事件都是由系统内部触发的,但有所区别,状态事件无法定义事件发生的时间,而临时事件都是在固定的时间或过后一段时间触发。

在这里,给出临时事件的描述

状态事件—

当系统内部发生了需要处理的情况时所引发的事件

识别状态事件的要点是,状态事件不受时间的控制,可能会随时发生,而系统又必须要处理的。

这节课主要了解了系统响应的事件类型。事件类型有外部事件、临时事件和状态事件。外部事件是由外部实体触发的,如电话订餐系统的顾客;临时事件是系统在某个固定时间自动触发的;状态事件是系统内部发生了需要处理的情况时触发的。下节课,我们将主要学习如何识别影响系统的事件。

需求分析——识别系统需求中的三类事件相关推荐

  1. 项目需求分析——如何理解和识别系统需求?

    在前面的课程中,已经了解了结构化开发方法和面向对象的开发方法,并且学习了分析和设计阶段的活动以及这些阶段的每一项活动的目标.从这节课开始,我们将结合人脉项目,讨论在分析阶段使用的技巧及有关任务.分析阶 ...

  2. React中的合成事件

    React中的合成事件 React自己实现了一套高效的事件注册.存储.分发和重用逻辑,在DOM事件体系基础上做了很大改进,减少了内存消耗,简化了事件逻辑,并最大程度地解决了IE等浏览器的不兼容问题. ...

  3. 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件

    本文主要介绍HttpModule,它在一个网页请求过程中是一个怎样的过程是我们要知道的,在网页加载过程中HttpModule在何时被执行也是我们要知道的,以及,HttpModule在网页请求过程中,所 ...

  4. java 自定义监听_Spring 中的自定义事件

    Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为SpringExample的项目 ...

  5. JUST技术:探查城市中的异常事件

    城市在正常运行的过程中,也伴随着一些异常事件的发生,例如某一路段突发的交通拥堵,这些异常事件往往会对我们带来负面影响.前几年,30多万人涌入上海外滩观看除夕灯光秀,人群的数量远远超出了组织者的预期.过 ...

  6. html如何设置滑轮效果,HTML中鼠标滚轮事件onmousewheel处理

    滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...

  7. vue中 点击事件的写法_vue中的事件:原生事件与自定义事件__Vue.js

    模板编译 processAttrs 对于ast attributes处理(v-on/@) 利用onRE与dirRE来捕获事件 这里最重要的就是dynamic的判断,vue中可以用动态参数来命名事件名称 ...

  8. 论文阅读:A Survey of Textual Event Extraction from Social Networks 综述:从社交媒体中抽取文本事件

    A Survey of Textual Event Extraction from Social Networks 综述:从社交媒体中抽取文本事件 目录 A Survey of Textual Eve ...

  9. 无监督从海量语料中挖掘关键事件

    前言 新闻语料库的自动事件检测是挖掘结构化知识的关键任务,挖掘事件的粒度很多,从比较大的主题粒度到比较小的动作粒度都有相关的研究,但是这些动作通常过于细化,无法理解现实世界的事件,今天要介绍的这篇pa ...

最新文章

  1. 右边补0 润乾报表_关于润乾报表的补充说明 -
  2. linux程序运行段错误,Linux下段错误调试技巧
  3. 【转载】详解 Spring 3.0 基于 Annotation 的依赖注入实现
  4. linux 内核发布时间,求问Linux最新内核版本以及发布日期。
  5. Linux 串口编程二 深入了解 termios
  6. 【Maven】Java项目管理工具
  7. ctrl z撤销后如何恢复_偏瘫后如何恢复?偏瘫家庭功能锻炼方法送给你
  8. python实现五子棋-人机对战/人人对战(动图演示+源码分享)
  9. 音乐转换成16进制写进单片机的方法(音符频率和音符的播放长度时间计算)
  10. 【数据库CS751】数据库各种连接的理解(包括自然连接,内连接,外连接)
  11. Element-Plus中日期时间选择器组件DateTimePicker默认显示英文的问题
  12. 关于Odoo盘盈成本和计价法的讨论
  13. ubuntu安装过程中提示: the path is not vaild path to the gcc binary等gcc路径不对和kernel不存在?
  14. 曲线平滑-B样条曲线
  15. 杰理之IIC sclk时钟【篇】
  16. diskgenius linux 分区,DiskGenius怎么分区,DiskGenius分区教程
  17. aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用
  18. MySQL创建/查看/修改/删除数据库
  19. 【Electron】使用vue-electron+electron-store创建项目,NSIS打包为exe可安装文件
  20. findbugs常见错误总结

热门文章

  1. ZK tree使用mold
  2. Coursera NLP 笔记02
  3. Thinking In Design Pattern——Query Object模式
  4. mcf5271如何使用数学库函数
  5. linux中umask的使用
  6. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...
  7. oracle报无效月份 注册表,在oracle中插入时间时出现“无效的月份”解决方法
  8. python能和c语音交互吗_Python和C语言交互--ctypes,struct
  9. 服务器绑定域名可修改吗,云服务器可以绑定域名吗
  10. tablednd保存 php,JQuery-tableDnD 拖拽的基本使用介绍