热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EA业务建模实践之业务用例图

本文重点是业务建模实践,以及建模工具EA初级使用过程日志。先前写了些文档,从不同角度描述了业务建模,但是条理性和规范性仍无法让人一目了然。春节期间当我再次读了《软件方法

        本文重点是业务建模实践,以及建模工具EA初级使用过程日志。

        先前写了些文档,从不同角度描述了业务建模,但是条理性和规范性仍无法让人一目了然。春节期间当我再次读了《软件方法》前几章,产生了共鸣:误解随处都在,通过UML规范沟通环境,是辛勤汗水的教训。

        按书中观点及回答问题如下:

        业务建模:描述组织内部各系统(人肉系统、机械系统、电脑系统......)如何协作,使得组织可以为其他组织提供有价值的服务。新系统只不过是组织为了对外提供更好的服务,对自己的内部重新设计而购买的一个零件。组织引进一个软件系统,和招聘一名新员工没有本质区别。如果能学会通过业务建模去推导新系统的需求,而不是拍脑袋得出需求,假的“需求变更”会大大减少。

        需求:聚焦于待开发系统的边界,详细描述系统要卖得出去必须具有的表现─功能和性能。这项技能的意义在于强迫我们从“卖”的角度思考哪些是涉众(Stakeholder)在意的、不能改变的契约,哪些不是,严防“做”污染“卖”。需求工作流的结果─需求规约是“卖”和“做”的衔接点。

        组织要解决什么问题。

        为组织提供流程管理、流程再造服务,为组织办公流程能力、执行力、工作效率提供管理支撑服务。

        为了解决组织的问题,待开发系统应该提供什么功能和性能。

        提供本地化、个性化BPM服务,提供快速开发流程支持(5个工作日以内)服务,通过流程(流程定义与流程实例)全面生命周期为组织提供管理创新支持服务。


1、研究对象及其业务用例图

        本次实践的研究对象是办公管理的业务流程。

        业务用例模型是说明业务预期功能的模型。作为一个核心输入模型,业务用例模型用于确定组织的各个角色和可交付工件。


图1

        按办公管理的业务流程为研究对象,涉众利益者有办公管理人员、流程管理人员(是办公管理人员中的子集,是其中专业管理流程的人员)、流程开发者(运维人员)、系统建设者等,其中业务用例所关注的主要涉众是办公管理人员、流程管理人员、流程开发者,也就是业务执行者。

        有箭头从执行者指向用例,也有箭头从用例指向执行者。前一种执行者称为用例的主执行者,后一种执行者称为用例的辅助执行者。

        如图1所示,以及《易扩展的办公流程化管理核心模型(第1版)》所述,此图中的用例是组织业务建模用例,解答组织真实核心需求,并不是人们日常所见到的资费审批流程、人力请假流程...,而是能支撑快速开发流程及支持管理创新的流程管理能力平台。

        需求及功能敬请见下篇文章。

2、使用EA建模

        Enterprise Architect 是基于UML 标准的,将高效建模和可视化,及设计融为一体的平台。它具有从思维导图,到业务需求,软件设计,直至部署的完全跟踪能力。

        1.创建项目

        通过模型向导,选择“Use Case”,其它根据实际情况选择。


图2

        2.分包管理

        在用例模型下,创建业务分组包(package)


图3


图4

        结果如下:


图5

        3.创建用例图(Use Case Diagram)


图6

        图形类型选择用例“Use Case”。

        1)首先确定研究用例对象的边界


图7

        拖拽“Boundary”到用例图中,并进行定义,名字为“流程管理”。


图8

        生成的边界如下图所示。


图9

        2)添加业务执行者“Business Actor”

        拖拽上图中的“Actor”到用例图中,命名为“办公人员”,并按下图设置为“Business Actor”。


图10

        结果如下:


图11

        3)添加用例

        拖拽上图中的“Use Case”到用例图中。弹出如下图所示的用例定义窗口,输入用例名称为“申请”。


图12

        生成如下所示图形。


图13

        4)添加关联线

        选择工具盒中的“Use Case Relationships”->“Associate”线,点击“办公人员”Actor并按住鼠标拖拽到“申请”用例中(出现关联虚影)再松开鼠标按键,

图14


图15

        鼠标双击下图中关联线(实线),弹出关联线定义窗口。


图16

        在弹出窗口中,通过选择定义关联线类型“Stereotype”来定义业务执行者与用例关联关系,此案例中选择了“Source->Destination”。


图17


图18

        最终如图1所示的用例图。


        参考及摘自:

        《软件方法》UMLChina 潘加宇 2012.11

        易扩展的办公流程化管理核心模型(第1版)肖永威 2015.1


推荐阅读
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
author-avatar
刘自龙Sophisten
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有