12树型软件结构模型


《树型软件工程方法》之系列博文12

树型软件结构模型


 


 

 

 

 

TREESOFT



中国人为什么不可以有自己的软件工程方法与开发工具平台!

这是介绍《树型软件工程方法》的系列博文,请按文章标题所带的编号顺序阅读,否则你会看不懂本文。

12 树型软件结构模型

    我们从结构化程序设计的概念入手,先后定义了范畴大小不同的各类过程。然后又以大量的篇幅叙述了系统彻结构设计,引出了一连串以前从未见过的概念。现在,我们要站在更高的层次上来观察和统筹这些概念,以说明树型软件的科学性与实用性。

12.1 树型软件模型图

    对于前面叙述的各级过程模块及其结构树,我们可以集中用图12.1的图形来描述,称为“树型软件模型图”。模型图由三部分组成:过程模块、构造方法和结构树。此外,模型图中的“算法”也属于构造方法部分,结构树的构造方法也都是一种算法。下面将对模型图的各部分进行说明。



12.1 树型软件模型图

12.1.1 过程模块

    在此前的讨论中,我们共定义了五类过程模块:系统、事件、任务、作业、操作。这里将一条顺序语句的操作也认为是一级模块,是作用范畴最小的规范模块。此外,模型图中将“单词”也归属于过程模块,是从单词是程序中最小可独立使用的元素的角度来理解的。一个单词构成不了操作,当然也就不会是过程。显然各级模块间存在如下逐级嵌套的包含关系:

    系统事件任务作业操作单词字符

    这里,相邻过程模块之间都是上级模块嵌套包含下级模块,且基本上都存在上、下级模块相等的关系。当上级模块只含有单个下级模块时,上、下级模块就相等。但“操作”和“单词”之间不会出现相等的情况,因为操作中至少会有一个运算符和一个变量或常量,单个单词是不能完成一项操作的。

12.1.2 结构树

    模型图中的第二部分是“结构树”,即过程模块的结构树。模块及其结构树之间有如下对应关系:

    系统事件树;事件任务树;任务作业树;作业操作树;操作单词树;单词字符树

    这里以“ABt”表示A的结构树是Bt。在模型图中,各级过程模块及其结构树分别处于同一级的圆圈内,表明过程模块可以用其结构树来表示。任何过程模块都有相应的结构树,任何结构树都对应着相应的过程模块。图12.2示意出与系统、事件和任务三级过程模块所对应的结构树:事件树、任务树和作业树,它们是逐级分层嵌套的。

 

12.2 树型软件中过程模块与结构树的对应关系

12.1.3 构造方法

    模型图中的第三部分是“构造方法”,亦即结构树的构造方法,“算法”也属于模型图的这部分。每种结构树的构造方法都是算法,具体问题的求解都有具体的算法,各级结构树都构造完成,则问题求解程序的编写也就完成了。

    处于同一级圆圈内的过程模块,按相应构造方法,就可以构造出该级过程模块的结构树。下级过程模块都是上级结构树的节点,所以构造方法还给出了结构树中节点之间的关系。

        (1) 事件树中节点之间的关系是等效处理。

    这里说“事件树中节点之间的关系是等效处理”是不准确的,应该说“事件树中父节点同其全体儿子之间是等效处理关系”。为了叙述的方便,通常仍会用这种简单不准确的说法,应该是不会引起误会。

    等效关系的特点是:关系双方都是独立的,互不影响。说高级事件的功能是控制调度儿子事件的运行,只是在需要的时候父亲事件调用儿子事件的主任务。“调用”就意味着双方都是独立的,既不影响调用者的内部处理,也不干涉被调用者的内部处理。R事件可以调用T事件,S事件也可以调用T事件。所以,事件子树是可以被复用的,原子事件则是最小可被复用的事件子树。

        (2) 任务树中节点之间的关系是协作调用。

    与等效处理类似,协作双方也都是独立的。在任务树中,A任务调用B任务,只能说B任务协助A任务,调用者和被调用者互不干涉内部处理。所以,任务也是可以复用的,而且是最小可被复用的规范模块。

        (3) 作业树中节点之间的关系是同宗延续。

    同宗延续是非线性控制关系。在作业树中,同宗作业必须按同宗控制连接,既不允许有异宗作业插入,也不允许将同宗作业独立出去。儿子作业必须在父亲作业的直接控制下运行,不存在父亲作业调用儿子作业的说法。所以,作业不是独立的模块,它是不能被复用的规范模块。

        (4) 操作树中节点之间的关系是顺序执行。

    此前我们没有明确定义过操作树。操作树是作业的结构树,由于作业是由顺序语句和最后一条控制语句组成的,所以作业中的语句都是顺序执行的,操作树就以操作为节点的顺序链。

        (5) 单词树中节点之间的关系是广义运算。

    所谓“单词树”,即操作的结构树,是由以单词和运算符为节点的顺序链。这里说“广义运算”,即不仅仅是数学运算,还包括输入、输出、传送等等计算机可实现的处理。

        (6) 字符树中节点之间的关系是简单并接。

    字符树是单词的结构树,是以字符为节点的顺序链。单词树和字符树的概念并不是笔者所提出来的,其是计算机编译系统的概念,前者属于句法分析,后者属于词法分析。

12.1.4 字符集

    模型图是由八个同心园组成的,直观地表示树型软件的逐级嵌套结构。最小的圆圈是“字符集”圈,它是唯一没有被分割成三部分的完整圆圈,意味着其既属于“过程模块”,也属于“结构树”和“构造方法”。

    所谓字符,实际就是数据,任何类型的数据都是用字符串表示的。所以,也可以将模型图的核心“字符集”改为“数据”。无论是过程模块,还是结构树和构造方法,要进入计算机系统都必须经过信息化表示,即都要用相应的字符串来表示。软件的运行结果也是数据,字符集圈也表示树型软件最终的运行结果。

12.2 树型软件的哲理

    计算机软件是对现实世界各种现象的模拟。说计算机软件可以设计成树型的,等价于说现实世界的各种现象的内部结构都是分层嵌套的。这个命题涉及到哲学,不是本文作者所能回答的。尽管如此,我们还是打算做一些粗浅的探讨。

12.2.1 事物与单词

    哲学上说:现实世界是由物质组成的。在计算机软件中,事物是以变量的形式被信息化的。人们通常称为实体的事物,属于我们这里定义的虚事物。虚事物的特征称为虚事物的属性,计算机软件以数据库的记录来描述虚事物及其属性。属性则属于我们这里定义的实事物,我们用实事物来描述虚事物。

    在树型软件模型图中以字符串来表示单词。单词包括常量、运算符、变量名、过程名等等。换句话说,任何事物都可以被计算机软件描述。

12.2.2 事物的运动与软件过程

    哲学上说:系统是物质存在的普遍形式。自然界的一切物质客体不仅自成系统,而且又互成系统。这说明,事物总处于某一个系统中,没有孤立存在的事物,也没有绝对静止的事物。

    在计算机软件中,以过程模块来描述事物的运动。树型软件中有范畴不同的过程:系统,事件,任务,作业,操作。最简单的运动就是单项操作,再复杂的运动可以用范畴更大的过程模型来描述。所以说,现实世界事物运动所形成的任何case(事物的运动情况),树型软件都可以描述它。

12.2.3 过程是嵌套的

    哲学上说:现实世界的大系统中有小系统,小系统中有更小的系统,…。这句话本质上就是说,现实世界的系统是分层嵌套的。从宏观上讲,现实世界是一个稳定有序的大系统。所谓有序,是指控制有序;无序则控制混乱,导致矛盾冲突。平衡稳定的系统中控制互不交叉矛盾。既然现实世界的系统中控制互不交叉,模拟它的计算机软件中的控制也不应该交叉,而是分层嵌套的有序控制。

    树型软件是分层嵌套的结构,它可以真实地描述现实世界的稳定系统。实际上,过程嵌套的现象是符合“事物存在于系统中”的哲理的。操作是由事物直接参与的;操作嵌套于作业,意味着操作是以事物的身份参与作业的;作业嵌套于任务,意味着作业是以事物的身份参与任务的;…。操作、作业、任务、事件这些规范过程都是事物,它们各自都有自己的特征属性。由此可见,过程嵌套是现实世界中自然现象的真实写照:系统是物质存在的普遍形式。“自然界的一切物质客体不仅自成系统,而且又互成系统。大系统中有小系统,小系统中有更小的系统,…”。树型软件真实地模拟了现实世界中的自然现象。

12.3 树型软件及其工程方法

    前面对树型软件模型图做了简单的说明,实际是将树型软件的设计原理集聚在模型图中。各级结构树的详细构造方法,此前的系列博文都有详述。构造方法也就是工程实现方法,只要构造出了事件树,接下来的任务树、作业树和操作编码,都属于软件专业的规范设计,也就是设计算法和编写程序。所以,就树型软件工程而言,乞今为止的叙述还欠缺如下几方面的内容:

        (1) 树型软件的系统分析方法,即如何从用户需求构造出事件树。

        (2) 树型软件调试方法。

        (3) 辅助设计系统。

    对于系统分析方法,接下来的博文会专题叙述。对于调试方法,就不打算专文叙述了。树型软件的调试自然有它的特点,可以分子树、节点逐级逐个调试。但基本方法还是设断点,可以以子树、节点来设置断点。树型软件的工程实现有一整套规整而完备的方法,并且可以设计成辅助设计系统。己经有一个初级版的辅助设计系统MT-2008,是一个博士后课题的成果。笔者会在适当的时候将其递交给OSCHINA,作为开源软件。

12.4 树型的件的优点

    在软件工程发展史上,有过许多种软件工程方法。总的来说大概可以分为两类:面向过程的和面向对象的,因为现实世界就是由事物(对象)及其运动(过程)组成的。长期以来学术界和业界也一直在争论:计算机软件开发应该面向过程还是应该面向对象。本文并不打算参与这种争论,同时认为这种争论是没有必要的,能够设计出高品质软件系统的工程方法就是好方法。

    树型软件是结构化的软件,自然是面向过程的,她具有如下优点:

        (1) 可靠性高

    树型软件的结构是逐级嵌套的,控制清晰流畅互不交叉,没有goto语句,自然就具有高可靠性。

        (2) 易维护扩充

    事件、任务和作业都具有高内聚、低耦合的特性,自然就易于维护和扩充。

        (3) 调试性能好

    如前所述,你可以分子树、节点来设置断点,出错可以定位在事件、任务或作业的范畴内。你可以结构树上看到出错点,直观地判断出错原因。你甚至可以在结构树上设置信号灯,令出错节点闪烁变色。

        (4) 复用性好

    任务、事件乃至事件子树都是可复用的。由于被复用的模块都在结构树中有确定位置,其功能及接口都很直观,选择和使用复用过程都很方便。

        (5) 可工厂化生产

    视树型软件的事件和任务为零部件,以实现工厂化流水线生产。特别是原子事件,一旦设计出了原子事件,用高级事件来组装搭建事件树是很容易的。可以将树型软件的原子事件或任务分拆在模块车间生产,由装配车间设计高级事件搭建组装成事件树,由测试车间统调和测试。

    应该说,树型软件是高品质的软件。

转载于:https://my.oschina.net/treesoft/blog/88749

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值