在上一篇文中已经介绍了描述要素大小的属性(粒度与分层),这一篇要说明描述要素状态的属性。

看到了“黑盒/白盒”,可能认为在讨论软件的测试工作?错了,在分析方法中借用了软件测试的黑/白盒概念,利用这个概念可以对理解逻辑图中要素的表达方式起着很好的帮助作用。当然,这个概念不仅仅对绘制逻辑图有用,它对训练分析师的思维能力、观察能力和叙述能力也都有着非常好的效果。

属性2:黑盒与白盒,是对要素所处状态的描述。

1. 黑/白盒的概念

黑盒、白盒是对要素两个相反状态的描述。
前面讲过,要素是可以再拆分的,当讨论的对象由复数的要素构成时,注意讨论要素的粒度要相同,将小粒度的要素暂时隐蔽起来,避免发生因要素的粒度不同而造成讨论结果难以收敛的情况,为了便于解释这个情况,就引入了黑盒/白盒的概念。

1) 黑盒的概念
■ 黑盒:将盒子盖起来,从外面看不到里面的内容(要素)时的状态。
原指一个只知道输入输出关系而不知道内部结构的系统或设备的状态。在这里借用了这个概念,意思是指当研究几个同粒度要素之间的关系时,不需要同时关注其中某个要素的内部细节,此时,就可以将这些“看不到里面细节”的要素称之为处在“黑盒状态”(因为盒子是盖着的,所以看不见盒子里面的内容),参见图1(a)。


图1 黑盒/白盒的状态示意图

比如,以图1(a)为例:从企业管理这个对象中拆分出来了财务、销售、计划、设计等同粒度的要素(=部门),在讨论部门级的问题时不必去关注财务所包含的“收入”和“支出”等小粒度业务细节,此时可以将“财务”看成是一个整体(黑盒),专注于财务与销售、设计、生产等具有相同粒度要素之间的关系研究。

2) 白盒的概念
■白盒:打开盒子,让盒子里面的内容(要素)的暴露出来时的状态。
白盒与黑盒的定义相反,比如,见图1(b):打开财务这个“黑盒”后,里面小粒度的要素就显示出来了,这时财务就不是处于“黑盒”的状态,而是处于“白盒”的状态了,同时财务也就从要素变为了对象,而白盒中的“收入”、“支出”、“预算”等内容又成为了构成财务对象的要素,此时,财务中的诸要素(预算、支出、收入等)之间又可以彼此看成是黑盒状态了。
图1(b)中只有财务盒子被打开处于了白盒状态,其余的销售、生产等要素仍处于黑盒状态。

2. 黑盒/白盒概念的作用

黑盒与白盒概念在绘制逻辑图时起着什么作用呢?
在绘制逻辑图,特别是复杂业务关系的图形时,要特别注意图上展示要素要是同等粒度的内容,如果要素粒度不相同,则图中表达要素间的关系就会变得非常复杂,传递的意图就可能变得混乱。下面举例说明黑盒/白盒概念在绘制生产流程图时的应用。

假定一条生产流程上有6个节点,每个节点为一个要素,即:销售、设计、采购、生产、物流、结算,这6个要素是同一粒度的。本案例重点研究节点“4.生产”分别处于黑盒状态和白盒状态时的不同。


图2 生产流程

【研究一】“4.生产=黑盒”的场景。
研究节点“4.生产”与它的上游节点1、2、3以及下游节点5、6之间的关系,如图3所示。
因为要研究“4.生产”与其他上下游节点的关系,所以其他节点也都看作是处于“黑盒”状态。此时“4.生产”的输入端和输出端的关系表达分别是
□输入端:上游的1、2、3节点分别向“4.生产”节点提供了①订单、②图纸、③计划;
□输出端:“4.生产”节点向下游的5、6节点分别输出了④合格单、⑤结算单;


图3 “4.生产”节点处在黑盒的状态

【研究2】“4.生产=白盒”的场景。
如果要表达“4.生产”内部的情况,就要将“4.生产”节点看成是“白盒”,将它的内部细节显示出来,那么上游的输入(订单、图纸、计划)就要直接与其内部的内容发生关联,如图4所示:


图4 “4.生产”处在白盒的状态

“4.生产”打开后(=白盒),分别会与输入内容发生如下关系(不限于此)。
①订单:要与“4.生产”节点内的生产流程、设备情况等发生关系;
②图纸:要与生产的工艺、工法、质量等发生关系;
③计划:要与生产的计划、交付、材料价格等发生关系;

可以看出,如何将包括“4.生产”在内的各个节点都看成是“黑盒”,那么图形中要素之间的关系表达就比较简单,如图3所示。一旦打开“4.生产”的内部,就会暴露出很多细小的要素,这些细小要素和输入内容之间的逻辑表达就会变得比较复杂,因此在绘制逻辑图时就要思考:黑盒状态是否满足表达要求?如果够了,就不要打开“4.生产”。如果必须进行详细的表达,则就要让“4.生产”处于白盒状态。

■扩展说明
除去绘制逻辑图,黑盒与白盒的概念在需求分析时也起着非常重要的作用。
为什么当遇到复杂的问题时新手会感到束手无策,而经验丰富的老手则可以从容地找到解决问题的路径呢?下面也尝试用黑/白盒的概念来解释一下。

1)没有经验的新手
在观察问题时缺乏经验,他们看到问题(对象、要素)的状态,既有呈黑盒状态的、也有呈白盒状态的,结果会感到问题非常的多、盘根错节,一团混乱。原因就是新手的眼睛不会“只抓取同粒度的要素去观察”,而是同时看到了所有不同粒度的问题。

2)有丰富经验的老手
首先搞清楚粗粒度要素(=黑盒)之间的关系,如果关注某个要素的详细情况,则可以将其打开成为白盒状态,再对该白盒内的细节问题进行深入的研究,这样就避免了黑白盒同在的状态,大幅度地降低了研究的难度(当然,有经验但缺方法的老手也会犯与新手一样的初级错误)。

要素的粒度越粗,理解时需要的业务知识就越少。反之,要素的粒度越细需要的业务知识就越多。不同分类的黑盒同时打开,不但造成了大量的细节同时出现,同时需要具有多种多样的业务知识,而且不同黑盒中的要素之间还可能存在着复杂关联,这就使得判断的工作量和难度达到了难以把握的程度。

因此可以说,理解了黑盒/白盒的概念,不但可以帮助软件工程师正确地绘制逻辑图、而且还可以帮助提升交流和分析的水平。

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

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

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

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

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

    在上一篇文中已经介绍了描述要素状态的属性(黑盒与白盒),这一篇要说明描述要素的集合体的名称. 我们知道,"系统."模块"等都是"功能"集合体的名称,那 ...

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

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

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

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

  5. 面向可解释AI的黑盒和白盒模型

    使用模型属性.本地逻辑表示和全局逻辑表示从黑盒模型生成解释 快速回顾:XAI 和 NSC 可解释人工智能 (XAI) 致力于开发对人类(包括用户.开发人员.政策制定者和审计人员)来说本质上更容易理解的 ...

  6. java软件测试黑盒工具,软件测试中的抽象层次系列之一 – 黑盒与白盒

    前几天我在微博上发出了一个STB-010(软件测试在线公益课程系列)报名通知的帖子,这一讲的题目是"软件测试黒盒技术与应用 - 状态转换测试方法",立即引来了一些讨论. 比如朱少民 ...

  7. 软件工程白盒测试的流图怎么画_功能安全理论 | 黑盒 与 白盒

    点击上方?"汽车知识共享空间"关注订阅号,设为星标⭐获取更多实时内容更新... 功能安全标准ISO 26262-6的第9部分是关于软件单元验证的的,总共三个Table(7.8.9) ...

  8. 黑盒、白盒、灰盒测试

    黑盒.白盒.灰盒测试 1.黑盒测试关注的是被测对象整体外部特征,而不关注内部的构造细节,比如一个查询功能,只要测试这个功能是否能够完成精确查询.模糊查询等操作,而不必在意具体是怎么实现查询的. 2.白 ...

  9. 软件测试之测试策略:黑盒和白盒

    软件测试策略:黑盒测试和白盒测试 1. 基本概念 测试,是通过运行代码的方式来检验程序和需求的符合性.不管我们使用什么样的测试策略,最终都是需要运行一个个测试用例,检验合理性.个人认为,黑盒和白盒,更 ...

最新文章

  1. Linux搭建Maven私服, 使项目公用Android aar
  2. android MAT使用
  3. 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多
  4. 全球及中国水刀机械行业发展态势及及投资决策建议报告2021年版
  5. [转载]httpClient.execute抛Connection to refused异常问题
  6. mysql 10分钟一聚合_SQL-根据DateTime查询多个聚合-MySQL
  7. mysql启动失败 linux_如何解决MySQL内存不足启动失败的问题
  8. 类垂直站点插件实现与分享
  9. vmware workstation中Linux虚拟机固定IP
  10. C语言的体系结构--main函数存在的必然性(听杨力祥老师的课)
  11. ZipEntry压缩时中文文件名乱码解决办法
  12. java Outlook的日程_使用Outlook进行日程安排的方法
  13. 百度网盘_SEARCH
  14. centos 6.5安装步骤
  15. 云计算模拟平台——Cloudsim的配置(Windows10 和 ubuntu18.04)
  16. copy-to-clipboard 的拷贝使用
  17. 一分钟让你知道黑白照片修复彩色软件有哪些?
  18. 俄语IT词汇积累之二
  19. Zookeeper客户端工具-ZooInspector使用
  20. 用友NC移动审批APP介绍

热门文章

  1. win10 make命令的安装
  2. pycharm连接sqlite
  3. no connection could be made because the target machine actively refused it.问题解决
  4. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记
  5. 【Web网站服务器开发】Apache 和 Tomcat的区别及配置
  6. ActiveRecord教程
  7. mac os 显示文件列表命令 ls -a
  8. [Pyramid 杂记]Static Routes,静态路由是用来干什么的?
  9. mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
  10. WeChatTweak-微信小助手安装教程