“松鼠生命中的一天”,或者从建模过程到设计自动计算材料价值的系统“ Squirrel-1.0”(第1部分)

使用的插图是普希金的《沙皇萨尔坦的故事》,该书由儿童文学出版社出版,1949年,莫斯科,列宁格勒,由K. Kuznetsov绘制。
“松鼠”与它有什么关系?
我将立即解释“松鼠”的含义。 在网上偶然找到了一些有趣的项目来学习UML时,我依靠从童话故事情节中借来的主题领域(例如, 在这里 [1]),我还决定为我的学生准备一个类似的示例,这样我就可以只学习三种类型的图:图,用例图和类图。 为了避免有关“翻译难点”的争议,我故意不将图表的名称翻译成俄语。 有什么用-我待会儿解释。 在这个例子中,我使用了澳大利亚公司Sparx Systems [2]的Enterprise Architect环境-一个价格合理的好工具。 作为培训的一部分,我使用Modelio [3],这是一个很好的免费的面向对象设计工具,支持UML2.0和BPMN标准,在视觉功能方面没有多余的要求,但足以学习该语言的基础知识。
我们将使这些过程中产生的重大价值的会计活动自动化。
...
该岛位于海上,(E1,E2)
岛上的城市(E3,E1)
与金色圆顶教堂,(E4)
带有塔楼和花园; (E5,E6)
云杉生长在宫殿的前面,(E7,E8)
在它的下面是一座水晶屋。 (E9)
松鼠在那里生活手册(A1)
真是个艺人! (A1)
松鼠唱歌(P1,A1)
是的,坚果会咬住所有东西,(P2)
而且螺母并不简单,(C1)
所有贝壳都是金色的(C2)
内核是纯祖母绿。 (C3)
仆人守着松鼠,(P3,A2)
他们为她服务的另一个仆人(P4)
店员被命令(A3)
严格说明坚果; (P5,C1)
向她的军队致敬; (P6,A4)
从蛋壳中倒出硬币(P7,C2,C4)
是的,漂浮在世界各地; (P8)
女孩倒绿宝石(P9,A5,C3)
在厨房里,但在后台; (E10,E11)
...
普希金(A.S. Pushkin)《沙皇撒旦的故事,他的儿子光荣而强大的英雄格维登·萨尔坦诺维奇亲王和美丽的公主天鹅的故事 ,” 该故事的创作大概始于1822年。普希金”(第三部分,1832年,第130-181页) -从设计到出版,十年了!
有关写在行右侧的代码的一点说明。 “ A”(来自“演员”)表示该行包含有关流程中参与者的信息。 “ C”(来自“类”)-有关在执行过程中处理的类对象的信息。 “ E”(来自“环境”)-有关表征流程执行环境的类的对象的信息。 “ P”(来自“流程”)-有关流程本身的信息。
顺便说一句,即使只是因为流程不同(业务,生产,技术等),对流程的准确定义也声称会引起方法论纠纷。 等 (例如,您可以在这里 [4]和这里 [5]熟悉)。 为避免引起争议,我们同意该过程在时间上的可重复性和自动化需求方面对我们很感兴趣 。 将过程操作的任何部分的执行转移到自动化系统。
活动图应用说明
让我们开始对过程进行建模,并为此使用“活动”图。 首先,我将解释如何在模型中使用以上代码。 通过图形示例更容易解释,但与此同时,我们将分析“活动”图的一些(几乎所有需要的元素)元素。
让我们分析以下片段:
...
松鼠唱歌(P1,A1)
是的,坚果会咬住所有东西,(P2)
而且螺母并不简单,(C1)
所有贝壳都是金色的(C2)
内核是纯祖母绿。 (C3)
...
我们有过程P1和P2的两个步骤,参与者A1和三个不同类的对象:由于我们过程中此步骤P2的活动,类C1的对象到达了该步骤的输入,在输出中获得了类C2和C3的对象。 对于该图,我们使用以下建模元素。

我们流程的一部分可以这样表示(图1)。

图1.活动图的一部分
要组织空间并构造活动图,就UML符号的经典用法而言,我们将使用一种不太标准的方法。 但是有几个原因。 首先,在建模开始之前,我们将草拟一个所谓的建模协议 ,其中我们将修复使用符号的所有功能。 其次,这种方法已经在实际项目中的业务建模阶段成功地成功应用到创建软件系统中,结果由我们的小型作者团队记录在相应的版权主题中[6],并在培训手册中使用[7]。 对于活动图,我们确定图字段的结构是使用“游泳”路径-泳道构成的。 轨道的名称将与将放置在该轨道上的图表元素的类型相对应。
“输入和输出工件”:对象-使用的对象或某些处理步骤的结果将位于此轨道上。
“流程步骤”:在这里,我们放置活动的元素-流程中参与者的动作。
“参与者”:元素的路径,它将指示操作执行者在我们的过程中的角色,对于他们,我们将使用相同的建模对象元素-一个对象,但向其添加构造型“演员”。
下一个轨道称为“业务规则” ,在该轨道上,我们将以文本形式放置用于完成流程步骤的规则,为此,我们将使用建模元素Note-一个注释。
尽管我们可以额外使用“工具”轨道来收集有关过程自动化水平的信息,但我们将在此处停止。 跟踪“参与者的位置和单位”也可能有用,它可用于在过程中将角色与参与者的位置和单位联系起来。
我刚才描述的只是建模协议的一部分, 协议的这一部分涉及组织一个图的规则以及相应的编写和阅读它的规则。
“食谱”
现在,我们将考虑活动图中的系统建模选项。 这只是选项之一,我注意到他当然不是唯一的选项。 活动图将使我们对从流程建模到设计自动化系统的作用感兴趣。 为此,我们将坚持方法学上的建议-一种仅由五个阶段组成并且仅涉及三种图表类型的开发方法。 应用此配方将有助于获得我们要自动化的流程的形式化描述,并为系统设计收集数据。 对于刚开始学习UML的学生来说,这是一种救生圈,它不会让您沉迷于UML和现代建模工具中的所有可视化工具和技术。
实际上,这里是食谱本身,然后是为我们的“童话”主题领域构建的图表。
阶段1.我们以活动图的形式描述流程。 对于突出显示10个以上步骤的过程,应采用过程步骤分解的原理以增加图表的可读性。
第2阶段。我们突出显示可以自动化的内容 (例如,可以在图中突出显示步骤)。
阶段3.自动化步骤需要与系统的一个或多个功能相对应 (关系可以是多对多的),绘制用例图。 这些是我们系统的功能。
阶段4。我们使用类图 -类描述AS的内部组织 。 活动图上的游泳路径“输入和输出对象(文档)”是构造对象模型和实体关系模型的基础。
阶段5。让我们分析“业务规则”轨道上的注释,这些注释给出了各种限制和条件,并逐渐转变为非功能性需求。
生成的一组图(活动性,用例,类)以相当严格的表示法给我们提供了形式化的描述,即 读起来很清楚。 现在可以制定职权范围,阐明要求的规范等。
让我们开始建模。
阶段1.我们以活动图的形式描述流程。
让我提醒您,我们在“泳道”泳道的帮助下构造了图表字段;在每个泳道上都有相同类型的元素(图2)。 除了上述图表元素之外,我们还将使用其他元素,从以下开始进行描述。

决策在图上指示我们流程的分支点,以及流程的合并(Merge)-他们的团聚点。 在过渡的方括号中,记录了过渡条件。
在两个同步器(Fork)之间,我们将显示该过程的并行分支。
我们的过程只能有一个开始-一个进入点(初始)。 但是最终(最终)可能是几个,但对于我们的特定图表而言,不是。
有很多包含大量元素和链接的箭头,您可以首先选择流程的各个阶段,然后分解这些阶段。 但是为了清楚起见,我想在一张图上完整地显示我们的“童话”过程,当然,我们需要确保箭头不会“粘在一起”,我们可以准确地跟踪什么与什么联系在一起。

图2.活动图-流程的一般视图
因为 在诗意的线条中,省略了该过程的一些细节,我不得不对其进行还原,它们由带有白色背景的元素表示。 这些细节包括“存储和处理的传输/接收”步骤以及一些输入和输出工件。 值得注意的是,此步骤也没有完全揭示该过程,因为 我们将需要分别指示转移步骤和接收步骤,甚至对于外壳添加一个单独的步骤,还推测所有这些材料值首先应暂时存储在某个地方,等等。 等
我们还提请注意以下事实:关于坚果起源的问题仍未得到解答-它们来自何处以及如何获取蛋白质? 这个问题(在注释的字体中以红色突出显示-注意元素)需要单独研究! 因此,分析师的工作-一点一点地收集信息,做出假设并从领域专家那里获得“好”或“不好”,这在创建系统时的业务建模阶段非常重要,并且是无法替代的。
还要注意,处理步骤P5由两部分组成。

并且我们分解每个部分并进行更详细的考虑(图3,图4),因为 在这些步骤框架内进行的活动将自动进行。

图3.活动图-详细信息(第1部分)

图4.活动图-详细信息(第2部分)
阶段2。突出显示可以自动执行的操作
图表中要自动化的步骤以彩色突出显示(请参见图3,图4)。

所有这些操作均由流程中的一名参与者执行-该订单的店员:
- 在语句中输入有关螺母重量的信息;
- 输入有关将螺母转移到语句的信息;
- 它解决了将坚果转换为壳和核的事实。
- 在语句中输入有关螺母内核的信息;
- 在语句中输入有关核桃壳的信息。
分析完成的工作。 接下来是什么?
因此,我们做了很多准备工作:我们收集了有关将要自动化的流程的信息; 开始制定建模协议(到目前为止仅在使用活动图方面); 执行了过程仿真,甚至分解了其几个步骤; 确定了我们将自动化的流程步骤。 现在,我们准备继续进行下一步,并开始设计系统及其内部组织的功能。
如您所知,没有实践的理论是徒劳的。 您绝对必须用自己的双手尝试“建模”,这对于理解建议的方法也很有用。 例如,您可以在建模环境Modelio [3]中工作。 我们仅分解了该过程的总体视图图中的一部分步骤(请参见图2)。 作为一项实际任务,建议在Modelio环境中重复所有图并分解步骤“存储和处理的传输/接收”。
我们暂不考虑在特定的建模环境中工作,但这可能会成为独立文章和评论的主题。
在本文的第二部分,我们将分析3-5阶段所需的建模和设计技术,我们将使用UML图用例和类。 待续 。