净室规范和设计的盒子结构(1)

原创 2002年03月14日 10:15:00

净室规范和设计的盒子结构(1)

未经允许,严禁转载本栏目内容

本文经许可转载自软件工程专家网www.21cmm.com

未经CSDN许可,请勿随便转载,谢谢合作

  盒子结构是在规范和设计中对现实系统的外在基本属性的功能描述。图3.1描绘了三种盒子:黑盒、状态盒、明盒。这些盒子不仅展示了外部行为,而且还提高了内部可见度。黑盒确定了一个系统或系统组件的外部行为。状态盒则进一步指定了完成外部行为所需的状态数据。明盒则进一步把状态盒具体化,它确定了完成状态盒行为的过程设计。它可使用已有的黑盒或引入新的黑盒,这些黑盒将在以后细化(明盒由程序控制结构组成),每步细化是根据前一步进行验证的。这样盒子结构将系统开发的三个方面(行为、数据和过程的规范)分离开,但又把它们联成一个细化和验证的内聚过程。

1、黑盒行为

  黑盒定义了一个系统或系统组件的外部行为。当系统接受激励S(视为从其环境的输入)时,它将产生响应R(作为对其环境的输出),响应不仅与当前激励有关,还与到目前为止收到的激励有关。例如,我们考虑一个计算器的外部行为。假设正在进行一次计算,当前的激励是按了键5;如果此前的历史激励是C718(C表示清零)。那么响应将是7185。也就是说,计算器将当前显示的数字左移一位,并在单元位置插入5。如果此前的历史激励是C718+,计算器将在单元位置显示一新的字符串5。因此,系统的当前激励及此前的历史激励惟一地确定了它的响应。

  我们可以从外部行为来看待系统及其组件。例如,工作站接受键盘和鼠标的激励会改变当前窗口内容或显示新的窗口以作出响应。用户可能对工作站的内部操作一无所知,仅仅感受到的是它的外部行为。当然,内部操作可能是与之联网的其他支持这种外部行为的机器完成的。

图 盒子结构精化和验证 BB=黑盒

  黑盒行为的数学语义可写成如下函数:

历史激励→响应

  简记为

SH→R

  SH表示包括当前激励的所有历史激励。

  黑盒定义不包含状态数据及过程实现。它定义了仅取决于历史使用的能被用户感受到的外部可见行为。因此,黑盒关心的是从用户角度看待系统行为的问题,而并不考虑状态和过程的设计。黑盒子规范定义了所有可能使用情况所需的行为。也就是说,在黑盒规范中为所有可能的当前激励和历史激励以及它们的组合定义了正确的响应,在净室项目中黑盒规范的如下三个原则对高效系统开发很关键。

  1. 对系统拥有者和用户而言,黑盒定义了他们分析和协商的所需行为,这是他们准备资源、着手开发和测试的前提。
  2. 对系统开发者而言,黑盒定义了待设计和实现的所需行为。
  3. 对系统测试者而言,黑盒定义了在测试过程中待确认的所需行为。

  黑盒可以用表格形式来定义,表中的三列分别对应于激励、历史条件和响应。这些表可用任意合适的形式(从自然语言到集合论)来叙述。请看表3.1中的非形式黑盒定义。这个低层黑盒定义了一个基于12个月平均销售额的预测系统,用于为一个产品清单控制系统中数以千计的产品预报销售额。该系统接受产品的月销售额组成的激励。并产生相应的响应。黑盒中规则1指定了某一产品少于12个月销售额时的正确响应。规则2指定了至少有12个月销售额时的正确行为。这张表以一种非形式的方式描述了系统行为,其中尖括号中内容是要进一步定义和细化的重要实体。这张表可能是在系统规范制定的早期产生的,这时与用户的分析和讨论在需求方面取得了一致,但还没组织进一步的细化工作。例如对规则1的讨论可能导致更多的计算需求,比如3或6个月的平均销售额。对规则2 的讨论可能导致这样的需求:一个月的销售额做激励,在计算平均值之前,确定销售额值的集合中不小心疏忽的元素。这些变化都会指定新的行为。在黑盒规范中提倡进行这样的讨论。这样可避免浪费资源并防止开发不符合用户要求的系统。

2、状态盒行为

  状态盒规范对系统或其组件进行初步细化,定义了状态空间。状态盒把激励历史封装成状态数据,但仍没有涉及具体过程。它把旧的OS(old state)和激励S映射到新的状态NS(new state)响应R。而新的状态在下一次变换时则变成了旧状态。状态盒子行为的语义是一个如下的变换函数:

(旧状态,激励)→(新状态,响应)

或简写为

(OS,S)→(NS,R)

  状态盒根据黑盒来细化和验证。状态信息就是为了符合黑盒子规范而必须保存的激励历史,这样信息来自于黑盒,无需再定义。因为每个历史激励可用状态来表示,所以每个黑盒有一个状态盒描述。而且,对于一个黑盒子,可设计许多不同的状态盒子,因为对一个状态可能有多种不同的表示和访问方法。

  状态盒可用表格来定义,对应的列包括旧状态、激励、新状态、响应以及对应的黑盒规则。我们来考虑销售额预测系统的状态盒,如下表所示,它与上表相对应。在此例中,对黑盒的激励历史条件分析导致了〈销售文件〉状态项,用来保存每种产品最近11个月的销售额。文件中每条记录用〈产品〉来标识,并包含一个能存11个月销售额的数组。因为当前激励加上前11个便可求出所需的平均值,所以只需存11个值就够了,不必保留更早的,因而接下来的激励将导致删除早于11个月的销售额。下表中的变换1定义了当激励引入一个新产品时所需的行为。变换2定义了当状态盒已知的产品还没达到11个月的销售额时所需的行为,变换1和2只是产生文字信息,将激励显示给用户。最后,变换3定义了不断计算平均植的稳定状态。注意,每一个变换都要进行相应的状态更新,为处理随后的激励作好准备。例如,变换3是这样处理状态的累积过程的,删除最早的〈销售额植〉和把当前激励作为最新的〈销售额值〉加入到〈销售文件〉的该〈产品〉记录中。


  状态盒的验证是导出相应黑盒行为并与原来的黑盒相比较看是否等价。这种导出就是将状态操作转换成激励历史形式。

3、明盒行为

  系统或其组件的明盒设计定义了状态盒行为的过程。明盒是一个计算机程序或程序集,基于程序的内部状态OS,它接受激励S,产生新的内部状态NS,并产生响应R。这些过程由基于结构化程序设计的控制结构(顺序、选择、循环,如果引入并发机制还要加上并行结构)来定义。明盒用这些控制结构来完成新状态和响应的计算。对于所给状态盒可以定义多种不同的明盒。明盒可用一个变换函数表示:

(旧状态,激励)→(新状态,响应),借助过程

或简记为:

(OS,S)→(NS,R),借助过程

  明盒的过程可以重用已有的黑盒,也可在后续求精过程的状态盒笥明盒中引入新的黑盒。定义明盒是一个关键步骤,因为它必须组织和连接处于一个盒子结构层次的黑盒。通过定义每个黑盒用途的准确内容,这种显式的连接有助于对项目开发保持智能控制。另外,组件及其连接是从明盒设计中局部处理需求导出的。从本质上,盒子结构的信息不是"分离、征服",而是"分离、连接和征服"。

  明盒的验证是把其操作抽象成一个导出的状态盒并与原来的状态盒进行比较。明盒的设计和验证在以后讨论。

净室规范和设计的盒子结构(2)

净室规范和设计的盒子结构(2)未经允许,严禁转载本栏目内容本文经许可转载自软件工程专家网www.21cmm.com,未经CSDN许可,请勿随便转载,谢谢合作4、盒子结构层次  正如前面所述,盒子结构层...
  • gigix
  • gigix
  • 2002年03月14日 10:15
  • 1180

poj 2411 Mondriaan's Dream 状压dp入门

题意: 求h*w的矩形被1*2的小矩形覆盖的方案数。 分析: 状压dp入门,《挑战程序设计竞赛》上讲的很好,好几天才看懂。 代码: #include using namespace std...
  • sepNINE
  • sepNINE
  • 2015年02月16日 18:26
  • 655

C规范(1) - 结构体或类定义的好习惯

请看如下代码 typedef struct Result { char name[20]; int age; Rect rect; char *pic; long takesTime; }...
  • lanmo555
  • lanmo555
  • 2014年02月12日 15:15
  • 916

数据库范式-表结构设计规范

数据库表结构设计有一套规范。设计出的表结构应尽量避免不必要地冗余,同时要确证灵活性。只需要遵守公认的范式,就可以达到较合理地设计效果。同时,这些范式也是评价一个数据库表结构设计是否合理的标准。...
  • Qguanri
  • Qguanri
  • 2015年11月29日 23:20
  • 742

净室技术

净室技术未经允许,严禁转载本栏目内容 本文经许可转载自软件工程专家网www.21cmm.com,未经CSDN许可,请勿随便转载,谢谢合作   净室软件工程可用如下三个关键技术来刻画:置于统计过程控制之...
  • gigix
  • gigix
  • 2002年03月14日 10:16
  • 1344

[对比]Android的差异设计和iOS的统一设计规范

以前一直觉得iphone的可控性比较好,不理解android的开放的设计,觉得可能会带来未知的灾难。 早期的Android OS,没有统一的设计,UI是自定义的,不同厂商的设备在不同的版本间徘徊,a...
  • ArthurChenJS
  • ArthurChenJS
  • 2011年11月17日 21:27
  • 6231

架构设计规范

简单整理下架构设计相关规范,希望能帮助那些有需要的团队理清思路,参考要素中有些是内部的中间件大家不必追究名字。外部开源的中间件和服务器也有,希望能帮到正在做架构的朋友。...
  • kongqz
  • kongqz
  • 2013年05月21日 15:49
  • 3523

盒子模型的三位立体结构图

第一层:border 第二层:content+padding 第三层:background-image 第四层:background-color 第五层:margin。...
  • sinat_39173458
  • sinat_39173458
  • 2017年07月13日 16:23
  • 225

数据库设计方法

数据库设计方法目前可分为四类:直观设计法、规范设计法、计算机辅助设计法和自动化设计法。 其中,新奥尔良法是目前公认的比较完整和权威的一种规范设计法。新奥尔良法将数据库设计分成需求分析(分析用户需求)、...
  • minwang593
  • minwang593
  • 2013年10月08日 08:51
  • 1112

C++类的设计与实现规范

规范是一种规定,遵守这种规定能够带来长远的利益,而违反这种规定却不会立即收到惩罚。程序设计的规范是人们在长期的编程时间中总结出来的,深入理解中这些规范需要认真的思考和大量的实践 。不符合程序设计规范的...
  • K346K346
  • K346K346
  • 2015年10月27日 10:39
  • 1638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:净室规范和设计的盒子结构(1)
举报原因:
原因补充:

(最多只允许输入30个字)