树型软件辅助设计

 

 

 

 

 

TREESOFT


目  录

14 树型软件辅助设计. 1

14.1 辅助设计与开发平台.... 1

14.2 标准件与复用过程.... 3

14.3 树型软件具备CAD条件.... 3

14.4 树软辅助设计工具MTC-2008. 5

14.5 未来的Mother Tree. 7


14 树型软件辅助设计

树型软件可以实现辅助设计和半自化编程,是树软法有别于其它软件工程方法的重要特征。本文将要讨论树型软件具备辅助设计的条件,以及初级版辅助设计工具MTC-2008的优缺点。

14.1 辅助工具与开发平台

计算机的应用已经普及到各行各业,包括人们日常生活的各个方面。而且,几乎所有行业都有计算机辅助设计工具,最早也是最为典型的要算是机械行业的CAD。现在就更不用说,CAD 已在建筑设计、电子和电气、科学研究、机械设计 、机器人、服装业、出版业、工厂自动化、土木建筑、地质、动漫设计等各个领域得到广泛应用。然而,非常遗憾的是,偏偏就没有计算机软件设计的CAD。我们知道,所谓CAD即Computer Aided Design,是一个在计算机上运行的软件系统。我们的专业就是计算机软件,任何CAD都是由我们设计开发出来的。为什么我们就不能为自己专业设计开发一个CAD呢?原因何在呢?

什么叫“辅助设计”呢?据资料介绍,CAD的定义为:利用计算机及其图形设备帮助设计人员进行设计工作。基本技术主要包括交互技术、图形变换技术、曲面造型和实体造型技术等。

    交互技术。交互技术在计算机辅助设计中是必不可少的。交互式CAD系统, 指用户在使用计算机系统进行设计时,人和机器可以及时地交换信息。采用交互式系统,人们可以边构思、边打样、边修改,随时可从图形终端屏幕上看到每一步操作的显示结果,非常直观。

    图形变换技术。图形变换技术的主要功能是把用户坐标系和图形输出设备的坐标系联系起来;对图形作平移、旋转、缩放、透视变换;通过矩阵运算来实现图形变换。

    实体造型技术。实体造型技术是计算机视觉、计算机动画、计算机虚拟现实等领域中建立3D实体模型的关键技术。实体造型技术是指描述几何模型的形状和属性的信息并存于计算机内,由计算机生成具有真实感的可视的三维图形的技术。

按照上述资料中的介绍,辅助设计的主要功能是制图。设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;由计算机自动产生设计结果,并立即作出图形显示出来,使设计人员及时对设计作出判断和修改;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。

什么叫设计?设计是一系列动作,是设计人员将自己脑子里对产品思索的构思书写成文件的过程。由此可见,设计活动的最终结果是形成一份文件,这份文件是可以与人交流的,可以用于生产制造出相应的产品的。这里,设计人员有两个动作:思索和书写。用机器画图、写字,就是辅助设计人员“书写”;看着图形交互地边构思、边书写、边修改,则是辅助设计人员“思索”。

文件的内容有两类元素:文字和图形,即所谓“图文并茂”。换句话说,书写文件只有两类动诈:写文字和画图形。如果要用机器帮助书写,也只能是帮助“写文字”/“画图形”,写文字和画图形正是计算机所擅长的。

我们接着来进一步分析“文字”和“图形”。在设计文档中,能用图形替代文字的地方,当然是首选图形。图形可以做到一目了然,准确象形,很少或没有二义性。这正是产品设计文档所要求的:准确、简单、无二义性。图形还有一个更为重要的特性:形象直观。文字则不行,要看懂一篇文章比看懂一幅图更费力。这就是为什么CAD必须具备制图功能的主要原因。人们可以想像场景与实物,可以用文字来描述场景与实物,也可以用图形来记录场景与实物。对着图形可以按想像修改之,对看文字既不能激发进一步的想像,也不能通过修改文字来准确地描述场景与实物。

然而,某类产品是否可以采用CAD,决定因素不是计算机软件,而是产品自身的表示方式。能以图形表示的产品才可以采用CAD,只能用文字表述的产品就不适合采用CAD。这就是为什么机械设计首先采用CAD的原因,机械零部件都是以图形表示的,机械设计方法就是制图。这也是为什么计算机软件设计没有采用CAD的原因,软件产品是计算机程序,是一个文本文件,是用形式语言描述的软件产品。非专业人士根本看不懂,专业人士要想看懂也必须耗费大量的时间和脑细胞,何谈“辅助思索”。

早几年出现了一个新名词,叫“计算机软件辅助工程”CASE(Computer-Aided Software Engineering)。我查了些资料,它的定义是:CASE是一组工具和方法集合,可以辅助软件生命周期各个阶段的软件开发。还有的说是:CASE软件工具是用于辅助计算机软件的开发、运行、维护和管理等活动的一类软件。1993年Fuggetta根据CASE系统对软件系统的支持范围,提出 CASE系统可分为三类:

(1) 支持单个过程任务的工具。

(2) 工作台支持某一过程所有活动或某些活动。

(3) 环境支持软件过程所有活动或至少大部分。

我理解,CASE工具就是软件开发平台,或者说是软件开发环境,如微软的Visual C++及Visual C++.NET等系列产品。

什么叫“软件开发平台”?通俗地讲,就是在制造软件产品时,软件开发人员工作活动的舞台。文艺工作者有表演舞台,建筑工人有施工工地,工厂工人有工作车间与机床,大师傅做菜有厨房灶台,…。我们设计开发软件也一样,需要工作场所、设备和合适的环境。只不过,软件产品的开发与应用都是计算机,不象别的产品,生产制造是一个平台,服役使用又是另一个平台。所以说,软件开发平台与其它行业的工作环境和工具一样,是制造软件产品的环境与工具。

综上所述,开发平台与辅助工具是有区别的,后者不仅包含了前者的功能,而且具有“辅助思索”的作用。

14.2 设计元素与标准件

无论是开发平台还是CAD,都会尽可能地采用标准件。标准件的采用不但能提高设计效率,而且可以减少设计错误。更为重要的是,标准件的采用还可以缩短产品的制造周期,节省制造成本,提高产品的可靠性。

首先是产品设计用元素。制图用的设计元素是:点、线、园形、矩形、六角形、…、等等几何元素。这些几何元素不但是自然标准化的,而且也是人们所熟知的,这也是机械设计容易采用CAD的一个重要因素。软件产品也有标准化的设计元素,那就是形式语言。无论是机器语言、汇编语言、还是高级语言,都有国际标准,都有准确无二义性的词法和语法规则。然而,形式语言太专业,与自然语言的易读性相差太远。语言本身就没有几何图形直观易懂,形式语言表述的程序就更难读懂,更不易“辅助思索”。

其次是标准件。机械制造也是最早最多拥有标准件的行业,螺钉、螺帽、垫圈、齿轮、轴承、涡杆、涡轮、…,某类机械产品还有许多自己的标准件或通用件。在用CAD设计机械产品时,这些标准件是不用设计绘图的,只要按规格点取,CAD就会自动绘图安装进装配图,产生直观的立体效果。

计算机软件行业也有类似于机械行业标准件的东西,也就是我们常说的复用过程。虽然我们也常说“标准子程序”“标准函数”,实际并没有得到哪级标准化机构认可。复用过程不象机械零部件那样有确定的几何外形与规格尺寸,复用过程标准化所涉及的因素多且软。所谓“多”,就外观而言有过程的功能定义,过程的输入输出接口规定;就内在而言,要求结构合理,运行稳定、可靠、高效。所谓“软”,是说所有这些定义、规定和要求,都不是能用简单直观的图形所能表示的,而是用需要易读易理解的自然语言描述的。所以说,复用过程还算不上是标准件,可以称之为准标准件,或简称准标件。准标件的使用同样可以起到缩短软件产品的制造周期,节省制造成本,提高可靠性的效果。

14.3 树型软件具备CAD条件

之前我们一直在说,计算机软件不具备辅助设计的条件,因为它是以形式语言叙述式表达,不能用图形表示。现在我们要说:

    树型软件具备辅助设计的条件,树软产品以树型表示其结构,清晰地给出了软件内部的控制关系,可以辅助设计者“思索”、“修改”、“完善”软件设计。

(1) 结构树也是几何图形

树型软件共有三类结构树:事件树、任务树和作业树。构成树的几何元素是直线和三类节点。

·事件节点:高20mm,宽45mm,带中位线的矩形。

·任务节点:高20mm,上下边长各40mm,中位线长60mm的六边形。

    ·作业节点:高20mm,宽40mm,两端为半园,带中位线的端园矩形。
 

        这里,为了显目,作业树中的顺序节点也选用带中位线的矩形,规格同事件节点。我们看到,设计结构树用的几何元素很少,只有三种标准图形。使用时,辅助设计工具会按选择弹出相应的标准图形。

(2) 可视地设计结构树即是辅助编程

我们知道,程序设计的难点就在于如何合理地安排实现算法的控制。顺序语句的编码是比较直观的,控制逻辑的理顺就比较抽象。所以,辅助设计工具的“辅助思索”功能主要体现在“控制逻辑设计”上,树软的结构树可以起到”辅助思索”的作用。

实际上,程序内部的控制都是由作业树来实现的。事件树的作用是将系统划分成事件模块,任务树的作用是将事件划分成任务模块,这两类结构树中的控制也都是由作业树来实现的。作业树的设计原理是结果倒推法:

    在认为已经求得当前问题结果的假定下,推导出求得问题结果所需要满足的条件,以及在此条件控制下的可执行的操作和待求解的下级问题。分层逐级进行这样的推导,直至所得结果就是问题的解。

设计作业树时,就是按结果倒推法来“思索”的,总可以逐级推导出当前问题的控制及该控制下的顺序语句。如图14.1所示的辅助设计画面,作业树的设计和显示是在设计窗口,遍历编程的代码则显示在编码窗口。设计者在设计窗口画出控制节点后,编码窗口就会自动编写相应的控制语句,设计者可以在此编码窗口的控制框架内编码顺序语句。由此可见,软件设计者可以边“思索”、边“画图”、边“编码”,与机械设计者的“辅助思索”是一样的。

图14.1 计算机辅助设计系统的作业树设计画面

(3) 遍历编程结构树是程序设计半自动化

我们看到,就制图的元素而言,设计树软结构树的几何元素比设计机械零部的几何元素要少得多,只有三类标准的节点图外加直线;就图形的结构而言,结构树比机械零部件也要简单得多;就图形的修改而言,结构树可以通过剪、接子树来实现,机械零部件的图形修改就不是这么容易的事。

不仅如此,树型软件的辅助设计还可以实现半自动化,这就是遍历编程结构树。对于结构树的任何修改,都会自动地反映在编码窗口的代码中。这样,设计者就不必考虑控制的编码实现,可以将精力集中于各级模块的结构树设计上。

(4) 可视地调试运行

实际上,结构树不仅可以在设计时“辅助思索”,调试、查错、修改时都有“辅助思索”的功效。可视地调试运行,也是树型软件辅助设计工具所独有的,其它行业的辅助设计工具都不可能做到。所谓“可视”,是说可以在结构树上看见程序运行轨迹、程序出错退出的节点等情况。软件开发平台也可以看到调试运行结果,但却不能可视地调试运行。

14.4 树软辅助设计工具MTC-2008

实际上,我们已经有了一个初级版的树型软件辅助设计工具,取名为Mother Tree。由于是适用于C语言编程的,故称之为Mother Tree C,简称MTC。该软件系统是一个博士后课题成果,由两位博士和一位硕士花了两年时间,于2008年完成,并于2009年试用了半年,故将该工具软件的代号取为MTC-2008。

“树软辅助设计工具MTC-2008”己经由oschina收录为开源软件,感兴趣的网友可以查阅试用,也可直接登陆网站http://wtreesoft.com查看。

(1) MTC-2008具备开发树型软件的基本功能

由MTC-2008的主屏画面可以看出,它具备如下主要功能:

·新建项目

·构造事件树

·组建任务树

·设计作业树

·编码

·编译与调试

·运行

项目的新建与其它开发平台差不多,但之后并不是直接进入编码,而是要构造设计各级结构树。固定流程为:

新建项目→构造事件树→组建任务树→设计作业树→编码

上述流程看上去有点烦,实际都是简单的点菜单操作。各级结构树的建立都不一定要一次性完成,可以逐步完善。譬如,在新建项目后,你可以登记注册只有一个节点的事件树,接着为这个事件登记注册只有一个节点的任务树,然后为这个任务登记并设计作业树。如果还要在事件树中添加节点,只要调出相应事件树添加即可,再按流程往下工作。我们的观念要有所改变,不要认为只有编码才是程序设计。实际上,构造设计各级结构树也是程序设计,而且是非常重要的设计工作。对于简单小型的软件系统开发,树软法似乎没有什么优势。但对于大型复杂的软件系统开发,树软法就会体现出全方位的优势。

曾经有过一位软件工程师对我说:树软法好是好,就是有点烦,编一个输出“早上好!”的程序都要逐级建立结构树。我就跟他说:看来你脑子里没有“设计”的概念,太急于编码运行。我们所处的是一个科学技术高度发展的年代,几乎所有行业都是采用现代化的生产方式。远古的“钻木取火”很直接,但现在决不会有人说“造打火机,烦!”。要知道,自有计算机程序设计这个行档以来,一直都是采用手工操作,几十年都没有大的改变。为提升软件产品的各项性能,改变一下方法,来一点辅助设计,来一点半自动化编程,不好吗!观念的改变果真就那么难吗!

    实际上,对于象输出“早上好”这样的简单程序,未来的MT并不需要手工逐级建树,可以象其它开发平台一样,新建项目后就可以直接进入编码操作。既然任何项目都必须有各级结构树,MT就应该自动地为新建项目登记注册只有根节点的事件树、任务树和作业树;只要新建事件,MT就会自动地登记注册只有根节点的任务树和作业树;只要新建任务,MT就会自动地登记注册只有根节点的作业树。事件和任务的增加,当然是在事件树和任务树上,而节点增删的过程就是构建设计结构树。

(2) MTC-2008只适用于开发C语言程序

每一种开发平台都有它的语言属性,MTC-2008也一样,它只能开发用C语言编码的程序。在树型软件的辅助设计工具中,不仅编码涉及到语言,将作业树的控制类型转换为控制语句也涉及到语言。

就软件工程方法而言,树软法适用于任何算法语言,还可以有MTB(Basic)、MTJ(Java)等等辅助设计工具。只要改变顺序语句的编码语言,修改遍历编程模块(原子事件)中对控制类型的转换程序段(一个任务)就可以了。各级结构树的构造设计与算法语言无关。

(3) MTC-2008并不完美

如前所述,MTC-2008只是一个博士后课题成果,主要是为了验证树软法的可行性。所以,初级版的MTC并不完美,远没有发挥出树软法的方法优势。它的编译系统和调试系统都是开源软件,使用起来到还不错。

1) 功能不齐全

MTC-2008的功能不够齐全,只有结构树的简单设计,以及简单的编辑功能。且不说许多精细的局部功能,至少有两大类功能欠缺或不齐。

·没有界面设计功能

现代软件一般都有菜单界面,特别是视窗式软件。MTC-2008没有这项功能,使用起来很不方便,需要时只好手工设计一些简单的界面。

·控制类型标志不齐全

MTC-2008只有如下几类控制类型标志:$,?,!,??,?*,!*,??*,#。

对于C语言,循环语句就有三种,这里只用标志“!”来表示“while”循环控制,“do…while”和“for”循环都没有,意味着所有的循环都必须采用“while”方式。实际上,可以用“!w”、“!d”和“!f”,分别标志三类循环。

C语言还有“swich”语句,MTC-2008也没有实现它。可以用“&”表示“swich”,用“&c”表示“case”,实现开关控制。现在没有,只好用条件语句嵌套替代。

实际上,在MTC中增加新的控制类型并不难,只涉及到遍历编程事件的修改,令其将控制类型标志编码成相应的控制语句即可。

2) 编辑不方便

MTC-2008对结构树的剪接并不方便,按理应该有更多更好的结构树编辑手段。与其它开发平台相比,程序编码也不甚方便,没有浮动提示、选择、帮助等常用的编码手段。

3) 没有自己的通用过程库

一般来讲,每一种开发工具都有自已的通用过程库,并且浮动提示给编程者选择。MTC-2008没有自己的通用过程库,甚至连简单的工具箱都没有。必竟这只是由3个人短时间内制造出来的产品,不好与微软等大公司由几百人的团队设计制作的产品相比。没有通用过程库是阻碍MTC-2008推广应用的主要障碍,目前可以借用微软的API,但消息处理机制又很难适应树软法(期盼有网友解决这个难题!)。

(4) MTC-2008的源程序并不是树型结构

MTC-2008是在Windows系统的Visual C++平台上开发的,没有按树软法设计编码。原因是时间短人手少,平台也不支持树软法。新版的MT可以在MTC-2008上开发,自然就可以采用树型结构。

14.5 未来的Mother Tree

不用说,未来的树软辅助设计工具MT(Mother Tree)应该具有完备的功能,充分发挥树软法的辅助性和智能性。未来MT的系统化分大概如图14.2所示。可以看出,未来MT的系统划分与MTC-2008差不多,只增加了“界面与菜单树”系统。

图14.2 未来MT的系统树

如前所述,一个开发平台的先进性,不仅仅取决于其设计原理的科学性,还在于其功能实现的精细性。树软辅助设计工具应该具有独特的辅助性、智能性和半自动化编程,并且应该具备现今各种开发平台的优点。未来MT不是几个人或小团体所能开发制造的,也不是一年半载所能完成的。所以,也就不必在此深入讨论,以免浪费时间。

14.6 结束语

至此,介绍“树型软件工程方法”的系列博文全部完成,一共是14篇文章。总的来说,该系列博文的发表还是成功的,涵盖了树软法的基本理论。研读过这些文章的网友,应该可以采用树软法设计软件了。我想,即便不直接采用树软法设计软件,至少可以使你增加了一种软件设计的思想方法。你会下意识地考虑软件的结构设计问题,尤其是担负大型系统设计的总工程师。

感谢众网友和oschina工作人员的支持与帮助,同时欢迎网友们的批评指正,我愿意随时与各位共同探讨树软法。

祝大家圣诞节快乐!

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

14树型软件辅助设计相关推荐

  1. 清华大学 陈晨 计算机,TNet基于树型结构集群工具软件通信协议.PDF

    第2卷 第6期 444 中国科技论文在线 SCIENCEPAPER ONLINE 2007 年 6 月 TNet :基于树型结构的集群工具软件通信协议 陈 晨,陈文光,郑纬民 ( 清华大学计算机系, ...

  2. 纯python统计基于orthofinder得到的系统发育树的关注点位置的树型结构

    对于某一个物种或某类物种在整个系统发育树中的位置存在一定争议的情况,使用直系同源基因构建单基因树,并对该物种或该类物种所在结构进行统计是可以对争议起到一定的解决作用的,在此留下全套流程和大家交流. 主 ...

  3. dtree和jquery构建树型结构

    对于小型的树型应用来说,dtree是一个不错的选择. 先看一眼dtree给的例子 构造静态树 首先引入css文件和js文件 <link rel="StyleSheet" hr ...

  4. 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...

    小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...

  5. C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考

    为什么80%的码农都做不了架构师?>>>    应用软件是否好用就体现在一些细节操作上,开发人员是否考虑到了很多细节,例如一个树形结构的数据若不支持拖拽功能那用起来会很糟糕一些,用户 ...

  6. php创建无限级树型菜单以及三级联动菜单

    http://www.php.cn/php-weizijiaocheng-373500.html 这篇文章主要介绍了php创建无限级树型菜单 ,主要使用的是递归函数,感兴趣的小伙伴们可以参考一下 写递 ...

  7. php创建多级栏目_用PHP实现多级树型菜单

    用PHP实现多级树型菜单 更新时间:2006年10月09日 00:00:00   作者: //树型目录结构模板程序 //菜单目录库字段说明: //menu_id 菜单项目 id //menu 菜单名称 ...

  8. php实现无限级树型菜单(函数递归算法)

    2019独角兽企业重金招聘Python工程师标准>>> 大概步骤如下: 首先到数据库取数据,放到一个数组, 然后把数据转化为一个树型状的数组, 最后把这个树型状的数组转为html代码 ...

  9. php 修改多级菜单,用PHP实现多级树型菜单

    用PHP实现多级树型菜单 ---摘自互联网 //树型目录结构模板程序 //菜单目录库字段说明: //menu_id 菜单项目 id //menu 菜单名称 //menu_grade 菜单等级 1 为主 ...

最新文章

  1. php hasattribute,PHP DOMElement hasAttribute()用法及代码示例
  2. POJ 1789 Truck History
  3. mysql 数据库引擎
  4. 《快速软件开发——有效控制与完成进度计划》
  5. python基础-牛逼的三层循环,实现想在那里退出,就在那里退出。
  6. Android 动画之ScaleAnimation应用详解
  7. java 泛型机制_java中的泛型机制
  8. Blender建模与游戏换装(转载文)
  9. PinSAGE有伴了! 快速了解PinnerSAGE模型
  10. 公共关系学试题与参考答案
  11. ps人物换脸移花接木
  12. MATLAB 中gcf、gca 以及gco三者的解析
  13. 【RW007系列综合实战3】柿饼派上怎样更新RW007固件和驱动?
  14. 如何在IDEA中写Java程序
  15. MySQL查询和删除重复记录
  16. java B2B2C Springcloud电子商务平台源码------Hystrix的缓存使用
  17. linux界面配置网卡命令,linux网卡的详细配置
  18. obs nginx-rtmp-module搭建流媒体服务器实现直播 ding
  19. 坐标深圳,100位技术专家出席的0票价大会正在招募中!
  20. 【Java】1-100之间所有自然数的和(while和for方法)

热门文章

  1. python小游戏源代码pygame_python抓娃娃小游戏源码(pygame)
  2. 语义分割 调色板代码
  3. 智能双路充电插座(桩)的强“心脏”——中移芯昇CM32M101A
  4. Centos 服务器禁止 IP访问/ IP黑名单
  5. QAQ 君临天下 || 天行九歌
  6. wps怎么将字体嵌入文件_WPS文档技巧—自由给文档嵌入字体
  7. CAD缺少一个或多个SHX文件如何添加字库
  8. 网站服务器刷机了怎么解决,完美刷机一直在连接云服务器
  9. 私域运营系统的两个基础
  10. 在viewPager里使用高德地图