在上一篇文中已经介绍了描述要素状态的属性(黑盒与白盒),这一篇要说明描述要素的集合体的名称。

我们知道,“系统、“模块”等都是“功能”集合体的名称,那么将一些功能集合成为一个整体时需要遵循什么原则?这个集合体有什么特点?用图形表达有什么标准要求呢?在绘制逻辑图时,任何一个“框”都代表着一个系统或是模块,因此,搞清楚系统、模块的概念、特点、原则等对于正确绘制逻辑图、传递逻辑意图是非常重要的。

■属性3:系统与模块,是要素归集的单位。

1. 系统与模块的概念

1)系统的概念
系统:是由一群有相互作用关系的功能要素组成的集合体。


图1 系统的概念

前面讲过的要素属性有:粒度/分层(表达要素的大小)、黑/白盒的(表达要素内部是否可视的状态)概念,除此之外,还需要对要素归集在一起的称呼给予说明。把一群有相互作用关系的要素的集合在一起称之为系统。

系统的概念有三层含义:
□系统是由两个以上的要素组成的,这些要素必须是功能,可以用来处理业务,如:合同签订、计划编制、材料采购、物流派送等,而不能是“物”(比如:桌子、电器、材料等);

□系统内部要素之间存在相互作用的关系,能够形成一定结构体;

□同一系统中的要素通过相互作用可以具有处理某类业务的能力,如:销售管理、财务管理、物流管理、订单管理等。

仅考虑要素的粒度和包含关系、不考虑相互作用时,可以将一群要素的集合体之为“对象”。但是在考虑要素之间的相互作用时,要素的集合体一般就要改称为“xx系统”了。
再进一步,考虑的处理业务的不同时,在系统二字的前面加上业务用途做前缀就形成了不同的业务系统,如:财务系统、生产系统、人资系统、物流系统等。

系统也有粒度的概念,小型的集合体可以称之为:子系统,大型的集合体称之为父系统,或简称为系统。父、子系统是个相对的概念,不同的系统之间不好直接进行大小的比较。

2) 模块的概念
■模块:是由一群可处理某个业务场景的功能要素组成的集合体。
作为要素集合体名称的概念,模块可以看成是比系统小一级的要素集合体。

由于系统、模块和功能这三个词在不同的场合、面对不同的描述对象时定义都不同,为了避免出现表达的混乱,三者同时出现的场合,可以做如下的约定
□系统:是具有独立处理某个业务领域工作的完整功能集合体,系统是由模块组成的,如:财务系统;
□模块:是分担系统中的局部处理工作的,模块是由功能组成的,如财务系统中的:报销模块、收入模块;
□功能:是系统中可以完成某个业务处理操作的最小独立单位,不可再拆分,如报销模块中的:出差申请功能(界面)。
(注:假定一个界面是一个功能,如果再拆分界面,则得到是工具栏、输入框、滚动条等界面构件,这些构件是不能独立完成一个操作);

系统、模块都是由功能(要素)构成的不同集合体,三者粒度大小的关系为:系统>子系统>模块>功能。
三者在构成上的关系为:
□ 1个系统 =Σ(n个子系统)
□1个子系统=Σ(n个模块)
□ 1个模块=Σ(n个功能)

注:作为要素的集合体,“模块”还具有另外一层含义,被称之为模块的要素群必须具有“可以组合、拆分”的功能,比如:软件系统中的xx模块,就意味着这个xx模块可以替换。如果被称为xx系统时,则不强调这个要素集合体是否具有可组合、拆分的功能。

2. 系统与模块概念的作用

在绘制逻辑图时,特别是图中有大量的要素时,要特别注意对这些要素的归集,要素归集的集合体根据大小的划分就可以分别称之为系统、模块等。下面举例绘制企业业务功能的框架图来说明概念的作用。

【画法一】
将企业的业务划功能分为三个业务领域,分别命名为:主营区、辅营区和支持区,如图2所示,这三个区就代表了三个系统。

图2 业务功能的组合

□主营区:主营区内的有4个子系统,构成了企业业务的主体,它们分别代表了4个主营业务板块,包括:①销售管理、②财务管理、③设计管理、④生产管理,因为它们是企业产生价值和收入的主要功能,所以称之为主营业务。
这里表达的4个子系统是处于“黑盒状态”。如果对子系统再进行拆分(如②财务管理),就可以看到其内部的模块、功能等细粒度的要素。

□辅营区:辅营区的子系统是用来对主营区和辅营区的业务进行辅助管理的,包括:财务管理、人资管理、信息中心等,它们不是直接生产价值的,而是为了保证价值顺利产生的功能;

□支持区:这些子系统是为主营区业务提供服务的,包括:后勤管理、物流管理等;

【画法二】
也可以把三个区的内容都看成是一个“系统”,每个区看成是一个子系统,进行降级的名称标注。可以看出,要素群名称的标注是相对的。重点是一定要对要素群的划分有层级的概念。

■扩展说明
有了模块的概念,就有了“模块化设计”的概念,模块化设计就是将具有不同作用的功能进行多种组合,以实现用有限的功能支持多样的业务处理场景。

功能要素按照要求,被归集到不同的系统中,每个系统可以独立地处理某个业务领域的工作,且每个系统都具有标准的对外接口。按照需要,可连接更多的具有不同功能的系统组合在一起,以完成更加复杂的任务。通常我们做所的系统规划都具有这样的特点,以企业管理的功能框架图为例来说明模块和模块化的关系。

举例,按照企业管理信息系统的设计方法*1,客户的业务处理模块与管理控制模块需要分开来进行设计,业务模块与管理模块各自遵循各自的理论、方法、标准完成各自的设计,然后再按照模块化的标准组合到一起,参见图3,

图3 业务功能与管理功能的模块化组合

这里将处理业务用模块设计为图(a)的形式,对业务模块进行管理控制的模块设计为图(b)的形式,这两个模块通过组合可以给出不同的解决方案,这里试举2例。
□方案1:将业务模块(a)和管理模块(b)进行组合,形成了方案1(对流程加工节点进行“c”管理)。
□方案2:将业务模块(a)和管理模块(b)进行组合,形成了方案2(将管理“c”从加工节点移到采购节点)。

方案1与2的变化在管理模型的“c”上,从图中可以看出,变化的管理模块与不变的业务模块可以给出不同的组合。当外部市场发生变化时,企业需要调整管理模式,由于业务模块(流程图)与管理模块(PDCA模型)是各自独立的,因此可以不断地更换管理的模型(因为管理易变),而不必改变业务架构(如果业务不需要改变的话)。这就是模块化的设计带来的效果。

下一篇介绍要素的第四个属性“内聚与解耦”。

*1:详细的内容说明请参见《大话软件工程—需求分析与软件设计》一书。

如何绘制逻辑图 — 5. 要素的属性:系统与模块相关推荐

  1. 如何绘制逻辑图 — 6.要素的属性:内聚与解耦

    在上一篇文中介绍了描述要素归集名称的属性(系统与模块),这一篇要说明描述要素归属的原则属性. 松耦合和高内聚,是决定最终完成系统是否具有应变性.复用性的重要设计原则,作为在分析和设计一线的需求工程师也 ...

  2. 如何绘制逻辑图— 4. 要素的属性:黑盒与白盒

    在上一篇文中已经介绍了描述要素大小的属性(粒度与分层),这一篇要说明描述要素状态的属性. 看到了"黑盒/白盒",可能认为在讨论软件的测试工作?错了,在分析方法中借用了软件测试的黑/ ...

  3. 如何绘制逻辑图 — 3.要素的属性:粒度与分层

    在上一篇文中已经介绍过了,要想绘制出正确的逻辑图,就要掌握绘制逻辑图的三元素,三元素中的第一位是"要素".从本篇开始用4个篇幅介绍表达要素的属性. 不论从事软件工程上的那个岗位,& ...

  4. 如何绘制逻辑图 — 2.要素的属性

    按照逻辑图的三元素原理(要素.逻辑.模型),已经知道要素是构成逻辑图的主体,那么构成逻辑图的要素有哪些特点.规律及标准,如何表达它们的这些特点.规律和标准呢?理解这些内容是正确绘制逻辑图的基础.我在培 ...

  5. 如何绘制逻辑图 — 1. 逻辑图构成的三元素

    不论做什么资料,如:解决方案.产品规划.需求分析.软件设计等,都需要用逻辑图来帮助作者说明自己的意图.通常资料内容包含的要素越多.逻辑越复杂,意图表达的难度就越大,此时仅用文字,表格来描述就显得力不从 ...

  6. 【029】获取选择要素的属性

    ---------------------------------------------------------------------------------------------------- ...

  7. Kanzi学习之路(4):Kanzi的属性系统

    由于中间隔了一个年假,所以这两周都没有更新,今天来一起学习一下kanzi的属系统,由于内容太多,本文只讲解一些概念和在kanzi studio中的使用,下一次会分享在kanzi engine中的使用. ...

  8. 【Qt】Q_PROPERTY():属性系统

    一.简介 Qt属性系统基于元对象Meta-Object系统,因此在使用时,需要继承QObject类并添加宏Q_OBJECT,属性除了具有类成员的功能外,还可以通过元对象系统访问,比如可以使用信号和槽机 ...

  9. Android平台上使用属性系统(property system)

    在使用Android的属性系统(property system)时遇到了一些问题,结合此次经历,对属性系统的使用做以简单介绍. 一.Property系统简介 属性系统是android的一个重要特性.它 ...

最新文章

  1. 分析师洞察:边缘数据中心的UPS系统
  2. 没有找到mfc100.dll
  3. Arduino--超声波
  4. 通过防火墙堵住×××安全漏洞
  5. 【转】TFS上分支和标签的用法
  6. 如何区分大数据下的三大利器:数据科学家,数据工程师与数据分析师
  7. 高中职业学校计算机专业题,职业高中高考计算机专业试题3.doc
  8. 为什么Spark比MapReduce快
  9. Tomcat监控利器Probe
  10. 计算机云开头的词语,“云”字开头的成语大全
  11. 什么是rich text,富文本?富文本有什么优势?
  12. 构件3扩大构件法的本质+W3是否等于W2 +角加速度α3是否等角加速度α2+科氏加速度诞生
  13. 快速上手Flask(一) 认识框架Flask、项目结构、开发环境
  14. 《计算之魂》读书笔记 04
  15. Flutter支付宝支付
  16. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)
  17. python中文注释与单行注释_Python单行注释方法
  18. App引流推广:能够提高用户的转化的技术
  19. jQuery网页版简易qq音乐
  20. 计算机的基础知识---位(bit)、字节(byte)、编码(Encoding)和大小端

热门文章

  1. 数据库操作php,一个数据库操作PHP类
  2. 【Python】Python3编码规范
  3. linux网络收包过程
  4. 334. Increasing Triplet Subsequence
  5. django系列5.1--ORM对数据库的操作
  6. Vue工程模板文件 webpack打包
  7. WSDL4J解析WSDL文件方法
  8. 打造自己的分布式搜索引擎底层架构(非Lucene)
  9. Java输入/输出流体系中常用的流分类
  10. CentOS统的7个运行级别的含义