1、对软件工程领域的影响
(1)SI-NS图技术揭示了程序的多态性
自然界物质具有多态性。例如水,就有液态、气态和固态三种形态。人类对水的研究,不限于常态的水,也研究水蒸汽和固态的冰。因而不仅有了水轮机,还发明了蒸汽机、蒸汽轮机,以及冰淇凌、冰上芭蕾等等,极大地丰富了人类的物质和文化文明。人与水的关系才是融洽的,和谐的。
非物质文化遗产,古老的中国象棋,也具有多态性。棋盘是一种形态,棋谱是又一种形态。前者看上去一目了然,适于对弈。后者一般人难以读懂,但倘若要将下棋的过程记录下来,供后人借鉴和研究,还得靠棋谱。老祖宗同时为我们创造了象棋文化的这两种形态,它们各有所长,互为补充,千百年来代代相传,为开发中国人的智力,尤其是少年儿童的智力,可谓功德无量。我们多数人在年少时都曾亲身感受过。中国老百姓与象棋文化之间的关系是融洽的,和谐的。
计算机程序也是一种非物质文化。它是现代人,主要是西方人为我们创造的一种类似于棋谱的一维文化。虽然它适于记录、编辑和修改,但读起来如读棋谱一样颇费脑力。我们与计算机程序之间的关系并不和谐。
SI-NS图技术为我们揭示了计算机程序的多态性。
这里仍以谭浩强教授编写的起泡法对10个数排序为例,程序到SI-NS图变换经历的三种形态如图所示。它们分别是一维的文字性程序、二维的树形节点数据结构,以及二维的SI-NS图。
程序的上述三种形态各有所长,互为补充。
一维的文字性程序如前所述,它便于输入、编辑和修改,也便于编译程序这样的工具软件对其逐行扫描,进行词法和语法分析。但可读性较差,尤其是算法和逻辑关系复杂的程序,读起来令人头痛,不利于程序分析、测试、开发和维护。
二维的SI-NS图与一维的文字性程序特性正好互补,其可读性特好,再复杂的程序一经变换成SI-NS图,程序的总体结构、嵌套关系、执行路径,具体细节都一目了然。软件工程师甚至无需计算机就可以在SI-NS图上执行和诊断程序。它有利于软件工程师分析、测试、开发和维护;但难于通过键盘或其它方式输入、也不容易编辑和修改。
二维的树形节点数据结构突出的优点是便于处理和计算。因而无论是程序到SI-NS图的变换,还是SI-NS图到程序的变换,它都起到至关重要的作用。其短处是不能像前两种形态一样以文件形式永久保留。
除了以上三种形态外,相信还应该有其它的程序形态,并且相应的也有其独特的作用。
目前软件工程领域对程序的分析测试技术,编译技术、程序开发环境、开发方法等等,其研究的基础和对象毫无例外都限于一维的文字性程序,这是值得我们深思的。我们是否应该向老祖宗学习,要研究和开发程序的多种形态,使计算机文化与我们人类之间的关系变得融洽一些。一些目前看起来比较困难和棘手的研究课题,是否可以考虑通过变换程序形态,或许可以像实现程序到SI-NS图变换一样,获得意想不到的结果。
SI-NS图技术揭示了程序的多态性,相信在软件工程研究领域内,围绕程序的多态性,有许多有价值的课题值得我们去继续研究和探索。
(2)国家标准制修订项目建议书“程序SI-NS图形化表达规范草案”
SI-NS图既然是一种程序形态,并且在可读性方面具有一维的文字性程序无法替代的作用。其应用也不再局限于程序设计阶段,它可以贯穿软件生存周期的软件实现、软件测试、软件交付、软件维护等过程。因此,制定SI-NS图技术规范就十分必要了,它有助于开拓和推广这项技术,促进软件产业和软件工程领域的发展。
其主要内容“程序SI-NS图形化表达规范”已在“技术课堂”中涉及,这里不再重述。
2、对学校软件教学的影响
学习编程如同学习游泳一样,如果天天只在泳池里学游20来米,是永远不能到大江大河里去的。一个学生不经历几个有一定规模和难度的编程训练是算不上会编程的。教材中需要有一定规模和难度的编程实例,教师只有在讲解有一定规模和难度的编程实例中,才可能传授解题方法、步骤和经验,才能培养学生解决实际问题的能力。而这些恰恰是目前的计算机软件教学欠缺的。“程序实例大多不超过一页,只能传授知识,难以培育能力”的问题,在目前的计算机软件教学中普遍存在。原因也简单,过长和过于复杂的程序实例既不容易读懂也不容易讲解。但采用SI-NS图技术,情况就完全不同了。
再复杂的程序一经变换成SI-NS图,程序的总体结构、嵌套关系、执行路径,具体细节都一目了然。教师可以与学生轻易交流较大规模和难度的编程实例,并借此能传授解题方法、步骤和经验,能培养学生解决实际问题的能力。
学习编程技术也像学习写作一样,要多读、精读一些原著,这对提高写作能力十分必要。同样道理,对于计算机专业的学生来说,学习编译技术,就应该去读一个完整的编译源程序。学习操作系统,就应该去读一个操作系统核心程序。这在过去是十分困难的。有了SI-NS图技术,将复杂的程序变换成清晰、规范、二维结构化的SI-NS图,就不再困难了。
由公司创办人斯传根老师编著、清华大学出版社出版的《编译设计与开发技术》[9]一书,以提高学生研发能力为目标,运用SI-NS图技术,将一个PL0编译程序完整地变换成了SI-NS图,学生不仅掌握了与编译有关的形式语言和语法分析理论,懂得了什么是编译,更重要的是在学完了不到60学时的课程内容后,完全有能力自己去设计和开发一个语言的编译程序。学生们自行完成的第13章一个有一定规模和难度的编译课程设计是最好的说明。
3、对软件企业的影响
产品软件可以与任何主流开发平台实现无缝链接,随时将开发和维护中的程序自动变换成清晰、规范、可读性远胜于文字性程序的二维结构化程序框图(SI-NS图)。再复杂的程序一经变换成SI-NS图,程序的总体结构、嵌套关系、执行路径,具体细节都一目了然。
它改变了程序开发维护的传统理念,在软件生存周期的软件实现、软件测试、软件维护等过程中,从此可以用图而不再是文字性程序分析和思维。
软件工程师终于有了自己的图形化工程语言,彼此可以用图代替文字性程序分析并进行交流和切磋。
它是程序测试和维护的理想平台,无论是静态测试的代码审查、代码走查(Code Walkthrough),还是动态测试采用的白盒测试,无论是程序测试用例的编写,还是对测试错误结果的分析,面对SI-NS图都变得简单明了。软件工程师甚至无需计算机就可以在SI-NS图上执行和诊断程序。
软件工程师在程序设计与开发过程中,始终面对的是读起来远比程序容易理解得多的SI-NS图。用SI-NS图算法设计,在SI-NS图上执行并验证程序的算法逻辑。当计算机执行结果与预期的不一致时,在SI-NS图上分析出错原因并进行修改。当有新的需求时,首先也在SI-NS图上找到相关的程序模块,扩充和修改相应的程序逻辑。即便用到计算机也是短暂的,不耗费精力的,而且完全可以交给其他人去做。软件工程师的聪明才智都可以用在刀刃上,并始终保持充沛的精力和清醒的头脑。这样的开发模式能保证程序的开发质量,一次开发成功率非常高,自然能有效缩短软件的开发周期,降低软件的开发成本。
企业多年辛勤付出积累起来的软件程序,都将以SI-NS图文档形式被妥善保存,再也不会因开发人员跳槽等原因而付之东流。
如果将程序源代码视作一件要交付的产品,SI-NS图则更像是整理和包装精良的正规产品,能得到用户的认可。企业借此也能提高在市场和客户心目中的声誉和地位。
软件企业承担的许多项目,包括外包项目,多数属于遗留系统升级改造。如何在短时间里读懂理解遗留程序,是较快实现原有系统升级改造的关键。SI-NS图技术可以起到重要作用。
随着开发模式从面向程序到面向SI-NS图的转变,相信还会对软件企业的人员结构、产品质量、生产成本,以及整个运作模式产生深刻的影响。
|