过程模型案例范文

2024-07-25

过程模型案例范文(精选6篇)

过程模型案例 第1篇

资源导向: 梳理过去的能力 快速学习心理学的知识与培训技能 用现有的技能养它的梦想

愿景导向: 快速学习提升能力 但是需要手中要有足够的现金 资源导向: 找到适合当下能力的工作 养梦想

资源导向更主要是梳理过去能力

找到适合当下能力的工作

用现有的技能养他的梦想

愿景导向更多的是 快速学习提升能力

但是手中要有大量的现金 资源 来支持他

资源少做农夫 专注理论技术能力提升 做专家 资源足够多 可以投资 做猎人 当企业家

今天我想问问在座大家,你的选择是什么?你选择要过什么样的人生?成为谁?

在3年之内,你希望成为什么样的人?

如果5年以后的执业班,是由你来对大家致辞,你会对那群新人讲什么?

十年之后,你又希望成为什么样的人?你希望为这个社会解决什么样的难题?带来什么贡献?这个世界会如何因为你而改变?@古典

过程模型案例 第2篇

北京第二机床厂成立于1953年,是以生产精密、高效外圆磨床和数控外圆磨床为主,同时生产加工中心、超精加工机床等产品的国家大型二级企业,其产品遍及全国各地并销往世界30多个国家和地区。

一、应用效果:略见一斑

“虽然早在1985年北京第二机床厂就开始了计算机的应用,但起步早,发展较慢,已经不能满足工厂信息化建设的要求。”北京第二机床厂信息中心副主任高登华如是说。

据高主任介绍,1985年几台286 PC机首开北京市第二机床厂计算机应用之先河,陆续开发的一些应用程序,把技术人员和管理人员从繁复的手工劳动中解放出来,提高了工作效率,让二机床人初尝计算机应用之甜头。1990年,工厂成立了计算中心,添置了一些软硬件设备,使计算机应用向规模化发展,先后开发了财务、供应、生产计划、设备能源、劳动人事、物资管理等应用系统,在一定程度上提高了工厂现代化管理水平。

“但计算机数量虽然增长较快,但是应用大都停留在单机应用阶段,而且是简单的模仿手工操作和工作流程,是一种低水平的应用,数据不能共享,不能形成有效的资源。计算机应用没有从根本上解决企业在经营管理中的问题。”

1995年,北京第二机床厂争取到联合国UNDP援助的“独立制造岛示范项目”,利用这一契机,企业成立了信息化领导小组,建起了独立制造岛车间,将设备、刀具管理及预调、计算机辅助计划调度、现场数据采集、从CAD、CAM等系统用计算机网络有机地联系起来,构成自动化信息流。通过优化加工过程、畅通物料流、减少等待时间、实现了生产的高效率、高灵活性和高质量。

在该项目的带动下,企业还投资数百万元,充分利用计算机软硬件技术,在产品开发研究所建起了计算机辅助设计网络,对内实现了资源共享,CAD技术得到了推广应用。达到了机械设计计算机出图率达到70%以上,电器设计出图率达到95%以上,并建成了标准件图库及180多种产品的图档库。

二 MRPII:难啃的骨头

2000年,由联合国UNDP投资,北京第二机床厂引进了当时较为先进的MRPII管理软件,开始在生产计划部门实施MRPII项目。技术人员以满腔的热忱投入到项目实施中去,收集、整理了大量的产供销人财物及产品数据,规范了编码,在全厂范围内进行了技术培训,并在一些重要部门重新进行了计算机联网。但几年过去了,MRPII系统依旧在建设中,没有发挥其应有的作用。究其原因,高主任认为:

1.领导认识存在偏差。上MRPII项目时,领导包括技术人员对MRPII没有深刻的认识,只知道它是国外的先进管理软件,不了解具体实施过程及实施中的难度。

2.MRPII是基于国外企业较为先进的管理思想和管理模式开发的软件,与中国企业管理现状有很大的差距,加大了实施过程中的难度。

3.MRPII实施过程牵扯到企业的方方面面,传统思想、旧管理方式、机构和工作流程调整中的人际关系对MRP II的实施都有极大的影响,而这些不是计算机人员所能解决得了的。

4.人员流失严重,没有计算机人员去组织、实施,进行系统维护,项目不可能取得应有的效果。

5.软件供应商的服务不及时。其技术人员大都只懂技术,不懂管理。在项目实施阶段当真正出现问题时却解决不了问题。

总结MRPII进展缓慢的原因,高主任认为,一把手是关键。MPRII实施的过程一定会涉及到企业的业务重组,不能回避。只有第一把手真正参与,由管理人员实施,MRP II才有可能推行。

此外,实施MRPII是锦上添花的事,对于经营情况好的企业,能促使企业进入良性循环。但对经济效益不好的企业,MRPII实施却达不到预期的效果。软件不是万能的,靠软件实施去改变落后是人员认识上的一个偏差。因此在上系统之前,一定要考虑企业的具体情况。若企业管理混乱,规章制度不健全,工作流程不规范,MRPII实施是不可能顺利实施的。

高主任建议企业在选择某个管理软件之前,不能单听供应商的一面之词,应多听听实施用户的意见,了解软件的特点,看其是否真正适合本企业。因为一些管理软件应用,看似容易,但用户真正掌握起来却很复杂。此外用户应该购买二次开发相对容易的系统,以便用户能灵活扩充其功能。

三 发展方向:因地制宜

尽管在信息化建设的道路上,北京第二机床厂并不是一帆风顺,但通过信息化建设提高企业管理水平,使企业在激烈的市场竞争中争得一席之地已经成为领导和全体员工的共识。谈及企业目前及今后在信息化建设上的措施,副总工程师何放介绍说,结合厂区改造,目前信息中心正在做全厂网络建设方案,拟建成覆盖全厂各个相关处室及车间的计算机无源网络系统。此外,结合工厂改制,对企业业务流程进行必要的重组,加大计算机应用力度,实现CAD、MRPII、办公自动化的集成。“信息只有共享才能产生效益。否则网建起来了,网上没有东西,是不能产生效益的,更谈不上为领导决策提供依据了。”

不贪大求洋,结合企业实际情况,实实在在地建设计算机网络系统是北京第二机床厂孜孜不倦的追求。

过程模型案例 第3篇

模型精化[1,2,3,4]是软件工程中基于模型驱动开发[5,6,7,8]的关键问题,被广泛应用于基于模型的驱动开发方法中。若在初始模型中引入过多细节会使得开发和测试不易管理,因此对于那些大型复杂系统的建模很难能够做到一步到位,在实际的开发建模过程中往往采用模型精化的技术,即在原模型的基础上添加更多的细节,逐步细化,模型从刚开始的比较抽象变得逐渐具体化。而模型精化过程中模型间的一致性是正确建模的必要前提,为了保证精化后的模型和精化前是一致的,需要对精化前后的模型进行一致性检验。

传统的模型精化过程中模型间一致性检测除了检测模型自身的语法、语义、结构方面的正确性之外,还提供了死锁检测和不变式保持性检测[30]。所谓死锁即一个系统或系统的一部分不能再发生任何的状态变迁,系统到达死锁状态后若无外力干预无法继续执行。所谓不变式保持性即在抽象模型中已经被证明的性质,在其精化后的模型中这些性质仍然要保持不变,并且在后继的精化模型中也要保持不变。通常而言,系统不变式定义的是系统中比较重要的或有关安全性的性质[29],然而系统模型间的不一致往往存在于系统行为的各个方面,使用传统的不一致检测方法很难一一找出这些不一致。为此本文提出利用系统属性来刻画系统行为状态的改变,定义为系统行为属性,结合模型检测的方法来检测模型间的行为一致性。由于模型具有抽象性,模型间一致性检测的一个难点在于如何描述出各层模型间抽象到具体的系统行为;另一难点在于如何进一步抽取出这些系统行为属性以便下一步的模型一致性验证。另外,由于模型的复杂性和建模者的行为习惯,导致模型精化过程中精化关系错综复杂,如何从这些错综复杂的精化关系中找出精化前后模型间的内在关联,使得从精化前的模型中抽取的系统行为属性能够在精化后的模型中得到有效对应也是一个重点问题,这些问题导致模型间自动化一致性检测成为难中之难。

为了解决上述问题,1)使用系统行为属性来描述各层模型间抽象到具体的关系,系统行为属性表示为某个操作的前后置条件,通过对比前后置条件的改变可发现模型发生了哪些操作,以此来实现模型抽象到具体化描述的转化;2)通过动态模拟系统模型的具体执行来反映出系统行为状态的改变,以抽象测试用例的形式记录,将涉及的触发事件及其相关的状态变迁以线性时序逻辑(LTL)的形式描述,视为精化后模型需要满足的系统行为约束,即系统行为属性;3)从精化后模型中的详细信息中找出精化前后模型间的内在关系,并相应更新系统行为属性,使得自动化一致性检测成为可能。我们在之前的工作Pro Miner[34]生成的抽象测试用例的基础上,首先把抽象模型的系统属性转化为具体的系统行为属性,实现了系统行为属性的自动化抽取,并根据从精化后模型中抽取出的精化关系进一步更新这些系统行为属性,最后使用这些系统行为属性来验证精化后的模型是否依然满足,如果不满足则说明模型间存在不一致行为,可以通过生成的反例路径找出不一致的位置。实验结果表明使用此方法可以有效找出模型精化前后的大多数不一致行为。

1 背景介绍

1.1 模型检测

模型检测是一种基于模型的形式化方法。模型检测[9,10,11,12]是一种很重要的自动验证技术,主要通过显式状态搜索和隐式不动点计算来验证有穷状态并发系统的命题性质,由于模型检测可以自动执行,并能在系统不满足性质时提供反例路径,因此在工业界比演绎证明更受推崇。时态逻辑模型检测是常用的模型检测技术,它又可以分为基于计算树逻辑(CTL)[13,14]的模型检测和基于线性时序逻辑(LTL)[15]的模型检测。其中LTL的优点主要有:易于组合验证、性质描述和反例路径生成更加直观、容易实现抽象技术等,所以得到了更广泛的关注。

使用模型检测的方法来验证一致性得到了广泛的关注和认可,主要应用在硬件设计的验证、通信协议、安全协议、控制系统、和一些软件系统中[12]。但是大多数的模型检测工具存在一定的局限性[9],例如只检测模型自身的语法、语义、结构方面的正确性和死锁、不变式保持性等,可以找出一些很明显的不一致,而无法找出模型中潜在的反映系统行为方面的不一致(例如两个模型中同一操作产生了不同的结果)。模型中这些反映系统行为方面的不一致需要使用系统行为属性来检测验证,而对于模型行为方面的一致性检测较少见之于文献。

1.2 Event-B模型

Event-B[25,26,27,31]是一种建模语言,运行于Rodin[28,29]上,使用Event-B语言建模的模型的核心就是基于状态迁移系统的抽象自动机,它包含了自动机(Machine)、场景(Context)、证明义务(Proof Obligations)等。该模型可抽象表示为:Machine:=<State,Event>,也可以包括一些描述系统性质的不变式(invariants)。其中State为一组代表系统状态的变量(Variable)对一个值空间的满射,形如:State:={var1=value1;var2=value2;var3=value3…},其中var为变量名,value为变量取值。Event事件为一组代表系统状态迁移的迁移,形如:Event:=any(var)where(condition)then(action)end,即对参数集var在前置条件集condition下可执行action。另外,每个Event-B模型都需要一个初始化事件(INITIALIZATION)用来指定模型的初始状态。

Pro B[30]是一个很常用的模型检测工具,可集成在Rodin上,可使用LTL作为输入进行验证。Pro B支持模型的自动一致性检测,具体主要包括死锁和不变式违反的检测,而Pro B无法检测模型间那些潜在的反映系统行为方面属性的一致性,所以提出使用系统行为属性的方法来达到模型间行为方面的一致性检测的目的,通过抽取系统行为属性并用LTL的形式表示出来,可直接用于检测模型间行为一致性。

1.3 一致性检测

目前模型一致性检测主要包括:模型与模型间、模型与代码间、模型内部间。其中模型与模型间的一致性是指两个模型的基本特征是一样的,反映的是同一个系统需求和相同的实现机制。目前模型与模型间的一致性检测主要使用不变式保持性方法,在模型A中成立的性质,在另一个模型B中这个性质仍然要保持不变。通常系统不变式定义为系统中比较重要或有关安全性的性质,但是不变式保持性方法很难检测到那些没有定义为系统不变式的那些不一致,而模型精化过程中模型间一致性检测方法通过抽取整个系统的系统行为属性进行一致性检测,不仅包含了对这些系统不变式的检测而且还包含了系统中没有定义为系统不变式的那部分不一致。一致性检测最简单直接的方法就是人工法,这种方法可以应用于任何模型或代码,但对于大型复杂系统来说,使用人工法工作量巨大,容易产生人为的错误,自动化一致性检测是势在必行。目前常用的方法是通过形式化方法[35]将模型转换为一些形式化的表示中,相对容易进行一致性检测,但由于模型本身的抽象和复杂性,这种方法有可能执行效率不高,和工具集成起来比较困难。

1.4 属性抽取

系统属性抽取一直是个热点问题。一般是直接或间接地从系统中抽取某种类型的属性来对系统进行分析和验证。属性抽取是将不同信息源对于某个系统或事物的属性集中起来,能从不同的角度反映这个系统或事物的相关情况。属性抽取的方法可以分为基于规则的抽取和基于统计的抽取,其中基于规则的方法一般通过人工定义抽取的规则和模式进行模式匹配,基于统计的方法是一种使用机器学习算法自动抽取的技术。属性抽取方面的工具也有很多,例如微软实验室的可能不变式(likely invariants)抽取工具Daikon[16,17,18,19]使用动态执行和监控变量的手段来提取系统不变式,可用来作系统分析,但Daikon是基于代码级别的并不针对模型层面,所以不能用来做模型间的一致性检测,模型精化过程中模型间一致性检测方法旨在抽取系统行为属性用于模型与模型之间的一致性检测。Synoptic[20,21,22,23,24]是基于日志文件生成系统不变式(temporal invariants),仅针对系统中出现的事件的时序逻辑进行描述,而不关注系统的状态变迁,模型精化过程中模型间一致性检测方法通过模拟系统的状态变迁反映出系统的行为属性,使得使用系统行为属性的方法来进行模型间的一致性检测成为可能。Pro Miner是模型与代码间的双向一致性检测工具,把模型中生成的抽象测试用例具体化后运行于代码,通过比较执行结果是否一致,进而找出不一致,但这种方法关注于模型与代码间的一致性检测,并不针对于模型与模型之间的一致性检测,模型精化过程中模型间一致性检测方法旨在检测模型与模型间的不一致。综上所述,目前的属性抽取方法并不能很好地解决模型间行为方面的一致性检测问题,如何从抽象模型中抽取出反映系统行为的具体的系统属性亟需新的方法。

2 模型间一致性检测方法

本文提出使用系统行为属性的方法来验证模型精化过程中模型间的一致性,以此来弥补传统一致性检测方法的不足。精化后的模型除了满足模型基本条件(例如语法、语义、结构方面的正确性,无死锁性,不变式保持性等)外,还需要满足精化前模型的行为属性,即反应模型行为方面的属性在精化后的模型中也是成立的,可以通过验证精化后的模型是否满足这些系统属性来进行一致性检测。同时,由于模型间精化关系错综复杂模型精化前后同一子模块的重命名、子模块一对多或多对一的精化关系时而出现,单纯地从精化前模型抽取系统行为无法完全代表精化后模型应该遵守的行为属性,为此我们对系统行为属性进一步分析处理,更新成为适用于精化后模型的系统行为属性。为了验证该方法的有效性,本文选取Event-B语言模型,并使用Pro B作为模型检测工具,系统属性使用可直接用于模型检测的线性时序逻辑(LTL),实验结果表明使用此方法可以有效找出模型精化前后的大多数不一致行为。

2.1 基本流程

模型精化过程中模型间的一致性检测工作流程如图1所示。首先对精化前的模型生成抽象测试用例,再从这些抽象测试用例中抽取系统行为属性,经过从精化后模型中抽取的精化关系的更新后,使用这些系统属性去验证精化后的模型是否满足,如果不满足则说明精化前后的模型存在行为方面的不一致,需要根据反例路径修改精化后的模型,再迭代进行验证,直到精化后的模型能够满足这些系统属性为止。

2.2 一个例子

为了更容易理解此方法的工作原理,这里使用一个简单的烧水壶的小例子。该系统把烧水壶抽象为两层模型(Kerttle0,Kettle1),Kettle1在初始模型Kettle0的基础上进行精化,将Kettle0中的lid_open_1和lid_open_2合并为lid_open,将Kettle0中的lid_is_close重命名为lid_close,将Kettle0中的add具体刻画为add(1)、add(2)、add(3);将Kettle0中的pour具体刻画为pour(1)、pour(2)、pour(3)。具体以Kettle1为例系统模型可以描述为以下事件和状态:事件主要包括打开壶盖(lid_open)、关闭壶盖(lid_close)、打开开关(button_on)、关闭开关(button_off)、加水add(int)、倒水pour(int);状态主要包括壶盖开(lid=open)、壶盖关(lid=closed)、开关开(button=on)、开关关(button=off)、水的高度(fill_height)。该烧水壶模型可以使用Event-B形式化描述如下:

2.3 抽象测试用例生成

模型间一致性检测方法首先以测试用例的形式来描述精化前模型的系统的行为变化,针对该模型生成抽象测试用例。这里的测试用例是在Pro Miner的基础上产生的,每条抽象测试用例对应于模型中的一条执行路径。抽象测试用例中记录执行路径中状态迁移的触发事件和每一个状态迁移发生后系统的到达状态,即(event name,state)。测试用例以Test Case=list(<INI-TIALISATION,state>,<eventname,state>,<eventname,state>…)的形式表示,即一组由<触发事件,系统到达状态>组成的线性表。以2.2节中的初始模型(Kettle0)为例,其一条测试用例如下所示。这条测试用例表示初始状态为(lid=closed,fill_height=0,maximum=3,button=off),执行事件lid_open后状态变为(lid=open,fill_height=0,maximum=3,button=off)。

Pro Miner生成的测试用例

2.4 系统行为属性抽取

模型间一致性检测方法使用系统行为属性来描述各层模型间抽象到具体的关系,通过模拟模型的执行反映出系统状态迁移的迁移及其触发事件,进而抽取出系统行为属性。Event-B系统模型中Event事件为一组代表系统状态迁移的迁移,形如:Event:=any(var)where(condition)then(action)end,即对参数集var在前置条件集condition下可执行action。由此可见,针对每个事件(event),事件的发生需要在满足前置条件集(condition)后才可以执行某些操作(action),结合上一步生成的抽象测试用例,系统的行为属性可以描述为事件(event)的前后置条件,系统行为属性抽取算法如下所示:

其中测试用例集Test Suite可分为多条测试用例Test Case,每条测试用例可分为若干个步骤Step,每个步骤Step又可以分为二元组(Event,State),pre State为前置条件集合,post State为后置条件集合,由于当前事件的前置条件即为上一个事件的后置条件,所以这里定义last Step记录当前事件和状态,类型为Step类型。首先针对初始化事件,由于初始化事件不需要前置条件,故只需找出后置条件即可。针对其他事件,前置条件即为上一个事件的后置条件(即last Step.State),后置条件即为当前事件的状态(即Step.State),针对每个事件(Step.Event)分别把它的前置条件和后置条件以LTL的形式写入LTL集合中(LTL Set),即为抽取出的系统行为属性的集合。这些形如G({pre State}=>e(Step.Event.name)),G(({pre State}&e(Step.Event.name))=>X{post State})的行为属性中G(globally)意为总是成立,X(next)意为下一个状态,在前置条件集pre State状态下可以发生某个事件(event),在某个事件(Step.Event.name)的前置条件集(pre State)和发生这个事件操作情况下则这个事件的下一个状态集为post State。2.3节中展示了一个这样的测试用例,首先初始化操作(关闭盖子,水高为0,开关为关),然后执行打开盖子操作(lid=open),则Step1=<INITIALISATION,{lid=closed,fill_height=0,maximum=3,button=off}>,Step2=<lid_open,{lid=open,fill_height=0,maximum=0,button=off}>。可以看出,针对这一条测试用例,lid_open的前置条件集就是lid_open事件的上一个事件(INITIALISATION)发生后的State,lid_open的后置条件集就是lid_open事件发生后的State,为此针对事件lid_open可以生成如下两条LTL:

前置条件:G(({lid=closed&fill_height=0&maximum=3&button=off})=>e(lid_open))

后置条件:G((({lid=closed&fill_height=0&maximum=3&button=off})&e(lid_open))=>X({lid=open&fill_height=0&maximum=3&button=off}))

即在满足前置条件集壶盖关(lid=closed)、水高为0(fill_height=0)、最大高度为3(maximum=3)、开关关(button=off)的条件下可以发生打开壶盖(lid_open)操作,在满足这些前置条件集且执行了打开壶盖操作(e(lid_open))后的后置条件为壶盖开(lid=open)、水高为0(fill_height=0)、最大高度为3(maximum=3)、开关关(button=off),这里事件lid_open执行的操作就是令lid:=open。

上述系统属性抽取算法可以检测出的不一致类型主要分为以下三种:

1)初始状态不一致

这种不一致发生在模型初始化过程中,初始化不一致会被认为反映的不是同一个模型需求。例如以2.2节中烧水壶模型为例,存在如下初始化不一致:

精化前模型初始化:{button:=off&lid:=closed&fill_height:=0}

精化后模型初始化:{button:=off&lid:=open&fill_height:=0}

可以看出精化前模型初始化时盖子为关闭状态(lid:=closed),而精化后初始化盖子为打开状态(lid:=open)。

2)前置条件不一致

如上文中所提到的模型中事件可以表示为:Event:=any(var)where(condition)then(action)end,其中condition规定了事件执行需要满足的前置条件集,只有满足前置条件才能执行这一操作,例如以2.2节中烧水壶模型为例,存在如下前置条件不一致:

精化前模型:G(({lid=closed&fill_height=0&maximum=3&button=off})=>e(lid_open_1))

精化后模型:G(({lid=closed&fill_height=0&maximum=3&button=on})=>e(lid_open))

可以看出精化前模型此事件的前置条件中开关状态为关(button:=off)才可以执行打开盖子操作,而精化后开关状态为开(button:=on)时才可以执行此操作,精化后模型定义了和精化前不一致的行为。

3)后置条件不一致

后置条件规定了执行这个操作之后系统所到达的状态,以此来间接检测event中的action,通过观测action操作前后状态的对比可以得到action操作产生了哪些行为,从而从操作前后的对比可以检测是否有不一致行为发生。例如以2.2节中烧水壶模型为例,存在如下后置条件不一致(即事件中的操作不一致):

精化前模型:G((({lid=open&fill_height=2&maximum=3&button=off})&e(lid_open_1)=>X({lid=closed&fill_height=2&maximum=3&button=off}))

精化后模型:G((({lid=open&fill_height=2&maximum=3&button=off})&e(lid_open)=>X({lid=closed&fill_height=3&maximum=3&button=off}))

可以看出精化前模型并没有对水高(fill_height)产生影响,而精化后的模型此事件的操作影响了水高(由2变为3),所以认为精化前后的模型定义了不一致行为。

2.5 精化关系抽取

在实际的模型精化的过程中,由于模型的复杂性和建模者的行为习惯,导致精化前后模型之间事件(Event)关系的错综复杂,有时会发生精化后的模型的同一个事件名称发生了变化,也可能会发生精化后事件合并和事件拆分的情况,如果不做处理的话,不一致检测时会把不同事件名称的事件当作不同的事件。为此在抽取上述LTL后还需要进行进一步的处理,检测是否有事件名称变化、事件合并、事件拆分的情况发生,如果有则用精化后的新事件名称代替精化前的旧事件名称,精化关系抽取和名称替换算法如下所示:

该算法主要针对以下三种事件精化类型:

1)事件名称变化

由于建模者的设计习惯不一样,有可能会发生精化后的模型的同一个事件用了不同名称,虽然建模过程中并不主张这种设计方法,但这种情况还是会时有发生。例如精化前事件lid_is_close精化后为lid_close,系统属性抽取是针对事件的,如果事件名称不一样会被认为不是同一个事件。为此在抽取系统的行为属性后还需要判断是否有这种情况发生。具体可以通过扫描精化后的模型的详细信息是否存在refine前后事件名称不同的情况,如果有,则用精化后的事件名称替换精化前的事件名称。例如2.2节烧水壶实例中,针对精化前模型Kettle0中事件lid_is_close,精化后模型Kettle1中重命名为lid_close,则替换后的LTL为:G(({lid=open&fill_height=0&maximum=3&button=off})=>e(lid_close)),G((({lid=open&fill_height=0&maximum=3&button=off})&e(lid_close))=>X({lid=closed&fill_height=0&maximum=3&button=off}))。

2)事件合并

事件合并是指精化前模型中的两个或两个以上的事件精化后合并为一个事件,事件合并的前提条件是事件执行的操作是相同的(即action相同),合并后的事件为原事件的并集。针对这种情况也是通过扫描精化后模型的详细信息判断是否存在一个事件refine多个事件,如果有则用refine后的事件名称替换精化前的这多个事件名称。例如2.2节烧水壶实例中精化前模型中的事件。

精化后合并为一个事件:

这里可以合并的原因是无论开关打开或关闭都可以执行打开壶盖(lid=open)的操作,合并后又由于button只有两个状态开和关,这里两个状态下都可以进行操作故可认为打开盖子和开关状态无关,可把(button:=on)∨(button:=off)这个condition忽略不计。通过扫描精化后模型的信息可以得出lid_open_1和lid_open_2精化后合并为一个事件lid_open,则针对原始LTL中lid_open_1和lid_open_2两个事件的LTL:

合并前为:G(({lid=closed&fill_height=0&maximum=3&button=off})=>e(lid_open_1)),G(({lid=closed&fill_height=0&maximum=3&button=on})=>e(lid_open_2))。

合并后为:G(({lid=closed&fill_height=0&maximum=3&button=off})=>e(lid_open)),G(({lid=closed&fill_height=0&maximum=3&button=on})=>e(lid_open))。

3)事件拆分

由于事件拆分全由开发人员的建模习惯决定,拆分关系错综复杂,很难做到完全自动化,我们目前主要针对含有参数的事件的拆分进行处理。精化后可能会把精化前含有参数的事件进行拆分,以此来更详细地反映模型细节,例如2.2节烧水壶实例中:事件add拆分为add(1)、add(2)、add(3),Pro Miner在生成抽象测试用例时默认会把事件的参数加进去,即生成的LTL中事件名称即为add(1)、add(2)、add(3),故上述算法没有对这种特殊情况进行处理也还是可以检测一部分这种类型的不一致。若含有参数的事件在精化后并没有产生事件拆分的操作(即还为add),则可参考事件名称变化的处理方法,把add(1)、add(2)、add(3)重命名为add。

2.6 系统行为属性验证

使用上述步骤中抽取出的系统行为属性对精化后的模型进行一致性检测,利用模型检测生成的反例路径定位模型中不一致的位置。延续2.2节中的烧水壶实例,对精化后模型Kettle1检测生成的一条反例路径形如图2所示。图2中的反例路径对应的一条LTL输入为:G((({lid=closed&fill_height=3&maximum=3&button=off})&[lid_open])=>X({lid=open&fill_height=3&maximum=3&button=off})),图中T表示为真(True),F表示为假(False),U表示不确定(Undetermined)。通过图2中F结点的指向关系可以看出不一致发生在lid_open这个事件的后置条件中,即图2中最下面Next({lid=open&fill_height=3&maximum=3&button=off})这一行中,Next表示事件的后置条件,所以可以具体定位到Kettle1模型lid_open事件的action中。可以发现,在执行lid_open这个事件操作时,精化后的模型和精化前的模型存在不一致行为,精化前Kettle0中lid_open事件的action为lid:=open,精化后Kettle1中lid_open事件的action为lid:=closed,在验证lid_open这个事件的过程中lid的状态产生了不一致,建模者可以通过修改此不一致迭代进行验证。

3 实验分析

如上所述,传统的模型间一致性检测方法只对模型自身的语法、语义、结构方面的正确性、死锁和不变式保持性进行检测,而很难检测系统行为方面的一致性,为此提出使用系统行为属性的方法来验证模型精化过程中模型间的一致性。为分析该方法的有效性,选取了三个系统Celebrity、Kettle、VOBC进行一致性检测,其中Celebrity是著名的“名人”示例系统,以人物之间的关系作为输入信息,输出符合条件的名人。Kettle是文中使用的烧水壶示例系统。VOBC[32,33]系统是车载控制器模型系统,系统中一列(或几列)列车在一条轨道线上运行,主要负责完成车载ATP(列车自动防护)/ATO(列车自动运行)功能,该系统的目的是提供安全的列车运行。

为验证模型间一致性检测方法的有效性,对上述三个系统人工注入不一致,通过对比发现,模型间一致性检测方法可以检测到Pro B检测不到的不一致行为,如表1所示。从表1中可以看出,模型间一致性检测方法检测出的不一致不仅包含了Pro B检测出的不一致,而且还检测出了Pro B检测不出的许多不一致。检测结果中的不一致类型和模型各层间的不一致结果如表2所示,分别详细说明了检测出的不一致在三种类型(初始状态不一致、前置条件不一致、后置条件不一致)中的个数,以及不一致在各个模型间的分布情况。

模型精化过程中模型间一致性检测方法可以检测出的不一致类型主要为初始状态不一致、前置条件不一致、后置条件不一致三种类型,而没有发现的不一致主要集中在以下区域:

1)含有参数的事件

没有发现的含有参数的事件不一致主要表现为某些局部变量。其中局部变量类似于Event:=any(var)where(condition)then(action)end中的var,Pro Miner在生成测试用例时,覆盖所有的参数取值空间会导致状态爆炸[9,10,11,12],故Pro Miner只会取一些较容易出错或出现次数频繁的参数作为观察对象,而有些不一致行为恰恰需要这些变量的某些取值才能触发,故而若生成的测试用例中不包括触发不一致行为的取值的话,则此不一致不会被发现。例如2.2节烧水壶实例中:精化前模型事件加水操作add(fill_height)中fill_height的取值范围为(1…100),生成的测试用例中只有参数为(1,28,50,79,100)时的情况,若不一致发生在参数为30时,这时此不一致将不会被发现。

2)新增变量和事件(event)

由于模型精化过程中模型间一致性检测是使用精化前模型的系统属性来验证精化后的模型,针对精化后模型新增的变量和事件是不适用的,但是由于是使用相邻两层间的模型进行一致性检测(即使用第0层模型的系统属性去验证第1层模型,使用第1层模型的系统属性去验证第2层模型,以此类推),这种差异不会一直持续扩大化。在以后的研究中,会持续探索此问题的解决方法。值得提出的是,由于模型精化过程中模型间一致性检测是从初始模型(即第0层模型)中开始,一般情况下认为初始模型是正确的,但是若初始模型存在错误,则这个错误有可能在接下来的模型精化中一直存在,虽然这也是一种错误,但是此方法旨在检测模型之间的不一致,若初始模型和第1层模型中存在不一致行为,初始模型出错还是第1层模型出错取决于建模者的决策。

4 结语

模型检测和模型精化是基于模型驱动开发方法的常用技术,自提出至今在多方面都有了一定的发展,对模型进行一致性检测能够有效帮助建模者建立正确合理的模型。为了验证模型精化过程中行为描述的一致性,提出使用系统行为属性的方法来验证模型精化过程中模型间的一致性。以抽象测试用例为手段描述模型间抽象到具体的对应关系,用系统中触发事件的相关前后置条件描述系统行为,参照模型间的精化关系,提取系统行为属性,并结合模型检测结果,有效帮助建模者定位模型不一致所在。

过程模型案例 第4篇

关键词:案例教学实施案例选取原则

所谓案例教学法就是通过对一个案例或者具体情景的描述,引导学生对这些案例进行思考以掌握基本知识并锻炼能力的一种教学方法。在案例教学中,教师和学生一起参与对实际案例的讨论和分析,教师与学生有着更多的教学互动,教师调控着案例的讨论,学生积极的思考,不再觉的是在被动的接受知识,而是主动地发表自己的意见,学习兴趣得以提高,课堂气氛热烈而活跃,老师有成就感同时从学生的回答中,老师也有可能从中得到有益的启发。思想政治课既要向学生传播经济、法律、政治等社会科学理论知识,又要培养学生分析理解社会与人生的能力,达到树立科学世界观、人生观、价值观的目的。在思想政治课中运用案例教学法可以很好地完成这些任务,案例教学法由于可以根据不同的目的来选材设计不同的案例,让学生身临其境去摸索、学习处理各种现实问题的经验,从而使学生分析与解决问题的能力得到训练,提升直面社会生活的本领。让大学生在轻松掌握知识点的同时,心悦诚服的接受人生观、价值观、世界观等方面的教育。

一、案例教学的实施过程

1案例教学实施前的准备工作

案例教学要想达到预期的效果,选择合适的案例是关键的一步。当然选择合适的案例前要做好准备工作,首先老师要备好大纲与教材,也就是依据大纲和教材,明确教学目标,找到教学的难点与重点。其次要备好学生,也就是知晓所要教授的对象有什么特点,比如说他们是理工科的学生还是文科生,他们在生活中对什么比较感兴趣等等。最后,老师还要对现实生活有一定的了解,并且要善于探索它们与所教授内容的内在联系。这就要求老师要善于观察生活,注意通过电视媒体、书报、互联网等途径搜集信息,并能够对这些信息进行加工、抽象、概括,为形成教学案例做好准备。

2利用案例教学设计、展现课堂教学的“实践情境”

如果就课堂上的“理论”讲授本身而言,在过去的传统认识中,往往是把思想政治课理论教学与实践对立起来,理论讲授是不可能体现出“实践性”的,甚至把理论讲授等同于“填鸭式”教学。如果说这种思维对于大学中的某些学科有合理性的话,对于高校思想政治课来说就不可这样,也不能这样。因为就高校思想政治课而言,无论是《中国近现代史纲要》、《思想道德与法律基础》、《马克思主义基本原理概论》还是《毛泽东思想和中国特色社会主义理论体系概论》,学生对相关知识已经有所了解,知识的重复性传授已经没有必要。高校思想政治课课堂教学的主要任务应该是在学生原有知识的基础上,引发学生对思想、政治、道德等问题的进一步思考,让学生学会分析问题,提出解决问题的思路与方法,并尽可能影响学生未来的行为实践。

所以就课堂“理论”教学而言,应该采取灵活多样的方法让“理论”动起来,并在一定程度上还原出教育“实践情境”,让学生身临其境去体味“理论”,接受“理论”。也就是说,思想政治课课堂理论教学,也应该而且可以体现出“实践性”。当然,这种“实践性”主要是一种“具体实践性”,即教师的“理论”传授应当直接着眼于学生在内化一定知识和思维方式的基础上,形成合目的性的行为习惯。也就是说,思想政治课课堂理论教学的实践性更多地是指向“实践理念”层次上的,也就是在学生怎样“行为”的方案、规划层面上的实践性,或者说是一种达到“知行合一”的可能性。那么,在思想政治课“理论教学”中,如何才能体现出思想政治教育的“具体实践性”,关键在于课堂教学中“实践情境”还原的效果如何。所谓“实践情境”,就是通过教师的讲述(这种讲述不仅局限于语言,还包括图片、视频、声音等任何有助于情境创设的手段),向学生再现一种“事件”情境,让他“身入其中”,从而了解知识、反思、模拟行为选择,最终达到思想政治教育的目标。“实践情境”成功形成的重要

标志是,学生与教师共同走入事件中或创设的氛围中,并积极分析问题、探索解决问题的方案,甚至形成共鸣性的认识。在这样一种状态中,学生会主动接受“知识”,形成对未来“行为实践”的初步方案、计划,或者对这种方案、计划能够保持持久的“实践”动力。

3案例教学的课后总结

教育者在课后,要及时反思教学过程中存在哪些需要改善的地方,总结在教学过程中的成功经验。教育者在课堂教学结束后,一般都会对整个教学过程有一个直观印象或者反思,比如整个“教学情境”效果如何,学生围绕哪些问题产生了共鸣,对哪些问题还存在着困惑,教学案例的设计与展现还需怎样的完善(案例教学的切入角度是否具有足够吸引力、多媒体素材展现的顺序是不是最优、语言表达是不是足够简洁明了、提问的时机是否合适、设计的问题能否引发学生积极的思考等),学生的思想状况是否如课前所预想,教材内容是否有需要更新的地方,教师自身的知识素养与思维能力在哪方面还需进一步提升等等。当然能产生这样的印象或者反思和“实践情境”式教学过程的展开是密不可分的,如果是那种“填鸭式”教学,把学生作为一种知识接受的“客体”,教育者可能很难产生这些印象或者进行这种反思。而这种反思如果进行及时的总结与提升,就会有助于教育者“教”之素养的提高以及学生“知行合一”可能性的进一步提高。

二、案例选择原则探析

1针对性

所谓针对性,一方面是指选择的案例能够囊括所教授知识的内容,有助于学生更好理解所学内容。另一方面就是针对学生的實际情况,他们在高中阶段是学理科的还是学文科的,他们对所学知识的理解角度或者深度存在哪些差异。比如在讲社会主义发展阶段这一节内容的时候,我发现理工科学生关注点与文科生有一定的不同。理工科学生更多关注的是社会主义初级阶段理论有什么用,对我们的生活有什么指导意义,而文科生则更多关注社会主义初级阶段是如何提出的,为什么我们处于社会主义初级阶段。针对学生的不同特点,我就设计了一个案例,我列举了前苏联在社会主义发展阶段上的一些提法(1936年斯大林:基本实现社会主义;1961年赫鲁晓夫:20年建成共产主义;1967年勃列日涅夫:建成了发达的社会主义;安德罗波夫:漫长发达社会主义的起点;1986年戈尔巴乔夫:发展中的社会主义)让学生来感受社会主义初级阶段理论提出的背景。然后我就开始向学生提问,这些对社会主义发展阶段的看法有什么特点,然后让他们回顾以前所学的历史,思考这些提法与当时的苏联社会现实是否相符,最后回到引用案例的目的上:社会主义初级阶段的含义是什么,为什么中国提出社会主义初级阶段,它所需的时间是漫长还是短暂等。这样从学生理解问题的角度去设计案例就能够很好把学生的注意力抓住,收到很好的教学效果。

2简约性

一节课也就是五十分钟左右,为了把知识更好的、更快的传授给学生就要使课堂教学言简意赅。而在案例教学中要做到言简意赅,首先必须使案例简约。教师平时收集的案例可能很多,有的案例可能信息量也很大,这就需要对案例进行加工、化约,去除次要的信息。只要能很好的调动学生积极思考、切合所学知识点,案例是越简约越好。如果案例的呈现让学生听、看了半天不知所以然,就会让学生失去兴趣和学习积极性,继而也就无法继续进行有效的知识传授与思想教育。比如在讲计划经济体制与市场经济体制的关系时,为了让学生更好地理解二者间的关系,我就向学生呈现了一个案例:在纯粹的计划经济与市场经济中,如何来给甲、乙、丙三人分好、中、差三套房子。这个案例最初设计的时候当然需要很多的相关信息(原来的计划经济体制下人们怎么生活的,资源怎么配置的,现在实行市场经济了人们怎么生活的,资源怎么配置的,而且无论是以前的计划经济与现在的市场经济都不是纯粹的),这就需要根据教学内容化约、去除次要的东西。当学生看到这个案例后,很感兴趣纷纷举手提出资源配置的方案,然后我就引导他们去认识计划经济体制的优缺点与市场经济的优缺点,从而得出纯粹的计划与市场经济在现实生活中是不存在的,我们实行的市场经济并不意味着没有任何计划。

3现实性

渴望了解社会,是大学生普遍的心理倾向。因此在案例选择时就要多联系现实生活,特别是学生能够亲切感受到的一些社会现象。当然要做到这一点首先老师自己要做个有心人,首先要善于运用思想政治课的知识去思考社会现实生活。超女、周杰伦、油荒、禽流感、中秋节与书本知识有什么联系呢,这就需要老师对这些案例进行加工、思考。比如在讲到思想路线中的“注重调查研究”这一内容时,我没有过多的讲理论,而是首先问他们知道不知道周杰伦是谁,知道不知道“拇指一族”是什么意思。由于这些与学生的生活很贴近,他们立刻就很感兴趣。然后我就接着问,移动公司推出的“动感地带”为什么找周杰伦做广告,然后启发他们进行思考,让他们理解注重调查研究对于在现实生活中做到实事求是取得事业成功的重要性。在讲健全社会信用体系重要性时,我就举了在广州市经常可以见到的“天福茗茶”的例子,首先让学生有一种身临其境的感觉,然后讲了它的董事长对员工进行培训的一项内容(清洗马桶,干净程度达到自己吃的食物可以在馬桶里炒着吃),然后启发学生思考其中的原因。当然像禽流感与鸡蛋价格的关系、中秋节与月饼价格的关系、油荒与宏观调控的关系等等这些案例的设计都可以把学生的现实生活与书本知识联系起来,从而可以收到很好的教学效果。

4案例设计要体现出思想政治课的特点

思想政治课的一个非常明显的特点就是,要对学生进行思想政治教育,培养他们正确的人生观、价值观、世界以观。当然在思想政治课教学中,除了思想政治教育之外,还有一些知识性内容的传授。为了体现思想政治课的特点,我觉得即使在进行知识性内容的传授时,也可以通过案例的设计体现出一些思想教育课的特点。比如说在前面提到的“移动公司推出的‘动感地带’为什么找周杰伦做广告”这一案例,主要目的是为了讲授实事求是这个知识点,但是在设计这一案例时,老师应该注意到当前的追星对年轻人可能产生的影响,所以在设计这一案例时就可以把“理性地看待自己喜欢的明星”这一内容加进去,从而在教学过程中适时的提出,对学生进行教育。再比如说在讲到科学技术是第一生产力这一问题时,在设计“互联网技术对人们生活巨大改善”这一案例时,可以把“合理的使用电脑、不要沉迷于游戏”这一内容加进去,从而适时地对大学生施以教育影响。当然这样的教育要少而精,能够切中问题的要害,它应该成为知识性教学过程侧面的点睛之笔。

5创新性

案例教学过程是一个不断追求完美的过程,教育者不应把备课内容一成不变地反复使用。教学过程本身就孕育着创新的元素,教育对象的改变、情境的改变都会使教育者产生新的思想闪光点。教育者在课后要及时反思案例教学的过程还存在哪些需要改善的地方,总结在案例教学过程中有哪些成功的经验,不断进行案例的创新。

在社会多元化的大背景下,尊重个人利益与价值、寻求个性的发展、思想的自由作为一种新的社会伦理诉求,被越来越多的人所认可与接受。单一中心,绝对控制的计划经济时代已渐渐远去,在某种程度上与这种时代相适应的注入式教学模式也需要加以改变。高校学生的思想在新的时代背景中越来越活跃,他们要表达自己的意见和想法,高校的思想政治课教学,如果再用以前的“主体——客体”模式已越来越难完成自己的育人任务了。我们需要一种新的“主体——主体”的教学模式,而案例教学法就是这种教学模式的一种探索,它有利于提升高校思想政治教育的“实践性”。

参考文献:

[1]关新案例及其在大学生思想政治教育中的运用[J]教育探索,2005(12):47

3d模型的构建过程 第5篇

①人工软件构建3D模型:此种方式要求操作人员要具有丰富的专业知识,熟练使用建模软件,而且操作复杂,周期较长,同时最终构件的3D模型真实感不强;

②三维扫描仪构建3D模型:此种方式需要价格昂贵的三维扫描仪等硬件设备。并且,三维扫描仪现今只能获得物体的位置信息,对于物体表面的纹理特征多数仍然需要辅助大量的手工工作才能完成。整个过程成本高,周期长;

案例分析—面试过程 第6篇

面试官:在您的简历中,您说曾经在某大型制造公司担任计算机系统管理员,您这个岗位的具体工作内容是什么?

求职者:我的基本工作是维护企业计算机系统的正常运作并解决各类突发问题。同时还承接了公司管理自动化的项目,实现了企业从半手工、半程序化的操作向自动化的转变。

面试官:能介绍一下您所承接的这个项目是如何具体实施完成的吗?

求职者:首先,在立项时会设定两个目标:第一,为企业配备优良的设备;第二,员工充分接受自动化的转变,并能迅速学会计算机系统操作。

针对第一个目标,我首先进行了项目招标,最终指定了业内非常知名的一家计算机信息系统公司为我们提供设备。针对第二个目标,我首先在企业进行广泛的调查,了解员工目前工作流程以及需要改进的地方,并在调查的基础上,我制定一份“系统实施需求列表”,协调计算机信息系统公司有效地在企业推行了相关系统,提高员工工作效率。

面试官:计算机信息系统从原理上确实可以提高员工工作效率,并帮助企业实现其他的很多管理功能,但是在实际操作中,却又大量企业无法实现初始的目标,您觉得原因是在哪里。

求职者:我完全同意您的说法,那就是在原理上面完全可行的企业管理计算机化在许多企业的实际操作中是失败的或至少是不尽如人意。我认为,最重要的一点在于:企业领导和项目负责人首先要把该实施计算机系统作为一项“管理变革”项目,其次才是一项“电脑工程”。在推行企业计算机化项目的时候,首先要改变员工的思想观念,其次才是电脑系统。

每个人的思维,工作习惯都是具有定式的,一旦他们习惯了某一种方式,可能短期内很难改变。许多企业推行计算机系统后,员工的工作量不降反升,他们甚至会在电脑系统操作完后,在手工操作一次。

因此,良好的员工沟通是企业管理计算机化的一个重要前提。了解他们工作的现状,从实际出发来帮助他们工作中存在的问题,要求他们在变革初期尽量克服适应。这些是项目成功的必要条件。

面试评价:

1.该求职者面试过程中的回答思路非常清晰,逻辑性强,回答相当专业。

2.该求职者第三回合的回答很好地呼应了面试官的提问,一方面非常容易引起面试官的共

上一篇:高一班主任月工作总结下一篇:文法学院青年志愿者协会规章制度