软件是能被计算机识别和产生相应运算的符号序列。软件最初是由制造计算机的厂商和用户自己编制。后来,计算机应用广了、复杂了,才出现专门编制软件的公司。随着信息化的发展,软件公司越来越多、越来越大。在先进国家常见顾员上万人的软件公司,我国也在建设软件航母、软件园、软件名城,软件已成为一个新兴的行业。
本文引用地址:软件行业在快速发展同时,伴随软件编程产生的软件危机也发展到无法回避和很难克服的程度。软件危机是软件公司不愿提及的是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
图1:软件危机的主要表现图
软件危机的主要表现为:1、软件开发费用和进度失控 2、软件的质量和可靠性差 3、生产出来的软件难以维护 5、难以满足用户的需求6、软件开发生产率远低于硬件的算力提供的效率等等。
还原论的软件编程方法没有对事实做整体分析、进行规范后编程产生的软件危机,是不可能用还原论的软件编程方法自我回避或解决的。一种经过十几年实践,能解决软件危技的整体论的FO软件编程方法(简称为FO方法)公布,受到人们关注和认可。
FO方法包含三部分内容:面向事实的分析、面向结构的设计、面向形式的编程。为便于FO方法理解,举一假设用软件编制人的例子对FO方法的基本原理做一简单的介绍。人是一个巨复杂的事实。
图2、人体器官分解示意图
采用还原论的软件编程方法时:
会先按照还原论的整体是由部分组成的认识将人按各个部位划分,比如分成头、四肢、躯干等。 再可将头按五官、面部、毛发、头骨等;四肢按手、手臂、脚、腿等;躯干按心、肝、肺等五脏六腑进行分解。然后,组织软件人员分组,分工编程。
这种按组成人的各个部位分工编程的方法,比较直观,但是,系统设计复杂、各部位相互连接难、编程工作量大、软件复用率低、不易测试和改动、隐含问题多,很难维护,存在着严重的软件危机。
FO方法是基于整体论通过观察事实而总结归纳出来的一个基本假定,即:任何一个复杂的连接形态都可以采用维的组合结构来处理;很多对象的内部特性是相同的,之所以是不同的对象,是因为它们的外部特性不同。
图3、由表向里整体看人体
采用整体论的FO方法时:
1、对人进行面向事实的分析:
用整体论的思想对人体进行分析,人的全身是由骨胳、血管、神经,淋巴、经络系统连接,将这些系统的集合定义为与人体现实模型分析出的逻辑模型中的结构。人的骨胳、血管、神经,淋巴、经络系统是人体结构的不同的维。
剥离人体的各连接系统的维,再对人体剩余部分做分析,可看到的人的剩余部分是由表皮组织、毛发、肌肉、脂肪、软组织、骨头、体液等有数的若干不同组织组成。将这些组织定义为分析出的逻辑模型中的对象。这种分析得出人的逻辑模型是由结构和对象二部分组成。人体的结构由若干不同的维构成,人体的对象是若干不可再分的简单对象的集合。
2、对人进行面向结构的设计:
面向结构的设计是对逻辑模型里的结构部分进行编程处理。在不同的事实中,结构的连接方式不一定是单一的线性方式,也会是多维的空间连接方式。需要再采用哲学方法对结构进行分解,使一个复杂的空间结构变成一系列简单的维的组合。每个维也不一定是线性的,更多的是非线性的。(FO方法构建的多维空间用到对伏羲八卦整数树改进的乾坤树)人的血管、神经、淋巴、经络系统是非线性的维,骨骼是线性的维。然后采用技术的方法来实现对人的结构设计。
3、对人体各部分面向形式的编程:
用FO方法分析出的逻辑模型中人的表皮组织、毛发、肌肉、脂肪、软组织、骨头、体液等是对象。对象有内部特性和外部特性。对象的内部特性为形式(算法),对象的外部特性为配置(数据)。也就是不同的对象可以有相同的形式,有相同形式的对象不同的原因是配置不同。例如:人的毛发可分为头发、胡须、不同部位的体毛等,它们是不同对象,但它们有相同的形式,由于他们的配置不同才表现成为不同对象。如果编制的是黄种人,通过调整表皮组织对象形式的配置,也可方便快速地编程出其他肤色的人。
由此,按构成人所需的皮组织、毛发、肌肉、脂肪、软组织、骨头、体液等对象的形式进行大小、多少、软硬等程度配置,然后设置在已设计好的人的结构的相应部位上,就完成了人的编程工作。
采用FO方法的优势:
1、简化了系统设计复杂度
2、编程难度、工作量和成本显著减少
3、软件编程的标准化和复用率高
4、便于检查编程错误和日后的维护
5、对不同外貌和有特征人的个性化设计简单
6、便于随时调整满足用户需求
7、通过改变结构状态和对象形式的配置可快速编程出其他哺乳、脊椎等相似动物的软件。
FO方法已通过实践在很短时间仅由一人编制出让人难以置信的巨复杂的可覆盖全世界行政区的无限多集群网站em258.com。采用FO方法对集群网站em258.com的逻辑模型里的同构部分还进行归类,比如在集群网站em258.com中有科技信息发布管理,社会信息发布管理,汽车信息发布管理等一些发布管理属于同构群,因此只需要处理一个发布管理就可以了,其余的通过同构特性处理就可以得到。这样就大大减少了软件编程和维护的工作量,将需要几十万行,甚至上百万行程序代码的软件系统,用几百行程序代码就可替代了。
FO软件编程方法是我联盟的一个成员单位在多年为用户软件编程服务中发明的。因为公司小,用户大多又是熟人和朋友,对编制出的软件总是不满意,不客气地三番五次提出修改要求,直到满意后才会罢休。技术人员在不断为用户反复修改软件当中,慢慢领悟和归纳出软件编程的规律,才发明出可快速进行编程和维护的FO方法。
一个小公司能在短时间能用几百行程序编制出巨复杂的软件系统原因是,因为他们事先已采用FO方法将现实世界的万物间复杂的连接关系分析为由地名维,分类维,栏目维,工作维,工作部门等等基本维组成的结构和将万物分析出结购外的许多简单的有限的对象及这些对象形式都建好库了。
需要对新的事实进行软件编程时,如分析出的维和对象行式已在建好的维和对象形式库中,就直接引用。如缺一些维和对象在库中没有,就再编制出缺的维和对象应用,同时纳入已建的维和对象形式库待用。(这种建立维和对象形式库和引用,与目前软件编程常见的子程序库、模块调用、宏的定义应用等在软件编程的做用有质的不同)通过FO方法该公司已造出了自用的软件编程工具。
软件是使用计算机进行信息加工的工具。目前,软件编程还没有成为计算机用户也同应用文字编辑软件word、WPS等编写文章一样也可自主、自如地进行软件编程,可以时刻简便地用来满足自己需求的信息进行加工的工具。FO方法为软件编程像机械加工一样实现规范化、标准化、简便化,工具化提供了很好的案例。
,不仅为软件公司解除了软件危机,更有意义的是:可让广大的更了解和熟悉本单位、本行业信息化迫切需求和专业知识的技术人员能亲自编写出最适合的软件应用,让软件在国家信息化和数字经济发展中发挥出更大作用。
(注:本文是中国嵌入式系统产业联盟网络空间命运共同体研究会交流文)
相关文章