|||
《软件世界》 |
从没有银弹到银弹加工场 |
作者:李兴森 |
当我们苦苦搜寻30余年而一无所获之余,有没有考虑自己加工银弹呢?其实银弹加工场早已存在,只是我们没有人去利用那些设备而已。 在网上流传一则文言文的笑话:“今有程序员五人,需时日几何方得完成?”“一年。”“吾急需之!若有十人,几何?”“二年。”“百人若何?”“万世。”这则笑话正是反映了软件开发领域的人月工作量问题。程序员越多,进度越慢。 正因如此,《人月神话》真的像神话一样成为具有深远影响力和畅销不衰的著作。作者弗雷德里克·布鲁克斯是北卡罗莱纳大学商学院的计算机科学教授,曾荣获美国计算机领域最具声望的图灵奖(A.M.Turing Award)桂冠。他被认为是“IBM 360系统之父”,曾担任了360系统的项目经理,以及360操作系统项目设计阶段的经理。 凭借在上述项目中的杰出贡献,布鲁克斯博士在1985年荣获了美国国家技术奖,美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程做出了里程碑式的贡献。” 《人月神话》为人们管理复杂项目提供了最具洞察力的分析。作者以“焦油坑”类比大型软件项目的开发,从自身所经历的大型软件项目的开发与管理的工作入手,详尽的分析并论述了软件工程中所面临的问题。 2003年《人月神话》排在china-pub年度总销售榜的第4名。这本软件工程管理的书历时30多年,深具影响力而且历久不衰,其中一个原因就在于30多年前软件开发领域遇到的问题和困扰,今天仍然存在,继续困扰着后来者。 从软件危机被提出以来,人们一直在寻找解决它的方法。于是一系列的方法被提出并且加以应用。比如:结构化的程序设计,面向对象方法,能力成熟度模型(CMM),统一建模语言(UML)等等。 1986年,IBM 大型电脑之父弗雷德里克·布鲁克斯发表了他的著名论文《没有银弹》。在这篇论文中他预言:“在10年内无法找到解决软件危机的银弹”。 这篇论文在其后引起了巨大的反响。 《人月神化》没讲标准,没有提供银弹,但它可以给你带来很多思考,为怎样做好一个项目提供了一些参考。软件工程是为开发软件服务的,标准不是目的,只是手段。随着网络技术的发展和企业竞争环境的变化加剧,对软件的适应性提出了更高的要求。软件工程“人狼”野性十足,越来越强壮、越来越难以控制,而银弹却不知隐藏在何处? 当我们苦苦搜寻30余年而一无所获之余,有没有考虑自己加工银弹呢?其实银弹加工场早已存在,只是我们没有人去利用那些设备或者没有听说加工场的存在而已。 解决矛盾问题有无规律可循?能否建立一套形式化的理论与方法?按照一定的程序,生成解决它们的策略?然后,利用这些理论和方法,研究计算机能操作的推理方法和技术,使计算机能帮助人们处理矛盾问题。这就是蔡文研究员在1976年确定要探索的研究方向,1983年,《科学探索学报》发表了可拓学的开创性文章“可拓集合和不相容问题”,标志着可拓学这门新学科的诞生。 二十多年来,国家自然科学基金委员会等和一大批专家学者支持和参与了可拓学的建设,初步构建了一门新兴学科——可拓学。 可拓学是用形式化模型研究事物拓展的可能性和开拓创新的规律与方法,并用于解决矛盾问题的科学。它的研究对象是矛盾问题,基本理论是可拓论,方法体系是可拓方法,逻辑基础是可拓逻辑,应用技术是可拓工程。 可拓学的研究对象 人类的历史,是一部解决矛盾问题、不断开拓的历史。可拓学的研究对象是客观世界中的矛盾问题。所谓矛盾问题,就是指人们要达到的目的在现有条件下无法实现的问题。例如,在“曹冲称象”的故事中,要称一头大象,却只有能称20千克的小秤。在《三国演义》中,诸葛亮要对付司马懿的十万精兵,却只有五千老弱残兵。 可拓学的研究者在研究过程中发现,在诸多工程领域,如管理、控制、计算机技术、人工智能、机械、电工等,都会碰到各种各样的矛盾问题。那么,解决矛盾问题有无规律可循? 可拓学的理论框架和方法体系 (1)可拓学的逻辑细胞和可拓模型 可拓学采用形式化的语言表达事、物、关系和问题,建立问题的可拓模型,表达解决矛盾问题的过程,表达量变和质变的过程以及临界状态,表达生成策略的过程和奇谋妙计。 它是用符号方式反映研究对象内在关系的模型,以此为基础建立了可拓方法体系。这个体系用质与量相结合、定性和定量相结合的方法去“化不行为行”、“化对立为共存”、“化不是为是”,从而解决矛盾问题。这个方法体系既利用了西方还原论的方法,也结合中国古代的系统观和整体论的思想,从整体的角度去处理矛盾问题。 为描述客观世界中的种种事物,可拓论建立了表达万事万物和问题的物元、事元和关系元(统称为基元),探讨了他们的各种性质,构成了基元理论,它们是可拓学的逻辑细胞。基元包括事物、特征、量值三个要素。例如,大象,重量,2000公斤;小秤,秤量,100公斤等。 事物的矛盾性是可变的,随着环境、条件和时间的变化而变化,特别是随人们采取不同的变换而改变。用基元描述信息、知识、智能和各种问题转换的形式化模型称为可拓模型。有了可拓模型,就可以根据基元的可拓性,利用可拓论和可拓方法,提出解决各种矛盾问题的策略。 (2)可拓论的三大支柱 可拓论有三个支柱:基元理论、可拓集合理论和可拓逻辑。 ①基元理论 基元的可拓性和物元的共轭性是基元理论的核心,而用形式化符号表示这些性质则是可拓论的重要特点,它们是生成解决矛盾问题的策略的依据。可拓性包括发散性、相关性、蕴含性和可扩性。共轭性包括物的物质性、动态性、系统性和对立性。 可拓性是事物固有的特性。整个世界,包括客观世界和主观世界,都存在可拓性,人类要进一步认识世界和改造世界,就要认识事物的可拓性,了解进行开拓的可能方案。对事物的可拓性认识越清楚,越能提出解决矛盾问题的变换,越能使用更可行的方法、窍门和点子,去处理开拓过程中出现的种种矛盾问题。 可拓性的研究,使人的开拓活动更有规律可寻、更有理论可依。物的可拓性是多种多样的,事的可拓性和关系的可拓性也是多种多样的,因此,开拓的可能性有多种。 世界的可拓性,既包括了客观世界中各种事物的可拓性,也包括了人的可拓性以及各种关系的可拓性。事物的可拓性为人们解决矛盾问题提供了各种开拓的可能性,因此,研究事物的可拓性是一个十分重要的课题。如果说,开拓是人类社会发展的主旋律,那么,物、事和关系的可拓性就是开拓的依据。 ②可拓集合理论 为了解决矛盾问题,必须涉及事物性质的变化。在现实世界里,事物的性质处于变化之中,既有量的变化,也有质的变化。事物可以从不具有某种性质变化为具有某种性质,从具有某种性质的程度不大变到较大,或者相反。 因此,人们必须从描述确定性事物和模糊性事物,发展到能用集合描述性质变化的事物,描述在某些变换下事物的量变和质变,从集合的角度去探讨事物的动态分类和事物开拓的过程。例如,在产品质量检验中,合格品与不合格品是对立的2个集合,然而在实际问题中,不合格的产品经过一定的加工处理却可以变为合格品。 如某车间生产的一大批车轴,实求直径D=50±0.1mm,如其中有的样品D为50.11mm,50.12mm等,便属于再采取车削加工转化为合格品的产品。为此,可拓学研究了新的可拓集合理论,作为化矛盾问题为不矛盾问题的集合论基础。 ③可拓逻辑 现有的二值逻辑和模糊逻辑只能描述确定性和模糊性的事物,其推理方法难以作为解决矛盾问题的推理工具。 为此,可拓学建立了用于处理矛盾问题的可拓逻辑,使变换和推理不再停留在传统的确定性和模糊性的基础上,而能作为描述事物可变性的工具,使之成为未来的计算机进行创造性思维,能生成解决矛盾问题的策略的基础。 可拓逻辑汲取了形式逻辑的形式化特点,采用了辩证逻辑研究内涵的思想。其特点是:(1)用形式化模型(2)考虑事物的内涵,因而能表达“变”的推理规律。可拓逻辑的研究内容主要有如下三个方面:a.概念的可拓表示和可拓概念;b.命题的可拓模型和可拓命题;c.推理的可拓模型和可拓推理。 (3)可拓学的理论框架 经过20多年的努力,可拓学建立了初步的理论框架,如图1所示: (4)可拓工程方法及其应用 元素的变换(包括事元和物元的变换)、关联函数的变换和论域的变换,统称为可拓变换。变换是可拓工程方法的核心。它通过基本变换、传导变换、共轭变换以及转换桥方法等产生一系列解决矛盾问题的策略,表达生成策略的过程和奇谋妙计,然后通过优度评价法等对产生的策略进行评价,选择最佳策略实施。 可拓学与其他学科的交叉融合,产生了信息、控制、管理、思维科学等领域中的可拓工程理论与方法。若干年来,可拓学研究者开展了可拓论和可拓方法在专业领域的应用研究,包括:在人工智能领域的应用,在设计领域的应用:机械设计,产品设计,建筑设计,在自动化领域的应用:可拓检测,可拓控制,在管理领域的应用:可拓决策,可拓营销,可拓策划;在中医药领域的应用等等。其中北京交通大学一名普通的本科学生,学习可拓学后3年申请了新型减速器等3项专利,发表论文10余篇。 在软件工程中,存在种种矛盾问题。项目经理和程序员天天在处理它们。但有的人聪明,解决了问题,有的人一筹莫展。 可拓学应用流程 1.分别列出目标基元和条件基元。软件工程的目的是进度、预算可控制,条件是软件由人工编程,存在大量难管理的隐性特征。 2.分析矛盾所在。软件工程管理的矛盾在于进度的可见性和人的编程思维不可见性的矛盾。 3.对条件和目标分别进行发散思维及变换。 (1) 软件的基元分析。从软件的实义特征、性质、功能三个主要方面进行物元分析: 软件功能通过做事元分析可以得到如下结果: 使用者通过软件可以便捷地管理数据、存储信息、处理业务,使信息的查询和传递更快速、及时,对大数据的分析可以提供决策支持,提升管理水平,通过实施特定的软件,可以塑造企业竞争力,提升品牌价值等等。软件的副作用有耗费较多的人力物力,需要员工培训。 (2) 变换条件。以基本变换为例,可以做增删变换,如增加内容使软件可见性加强,目前强调的文档管理就是一种增加变换,通过增加详细的文档说明使软件开发更好管理,更容易读懂和维护,如ISO 9000,CMM,和统一软件开发过程(RUP)等。那么,除了文档,有没有其它可以附加的东西使软件更透明,使软件开发的管理更有效呢?软件中哪些是可以删除的? 置换变换:哪些属性可以用其它满足要求的事物代替/置换?如原先结构化瀑布式的开发改为面向对象的组件化开发就是一种置换变换。拥有者置换成软件公司就是现在崭露头角的ASP模式()。置换程序员为机器开发就是CASE计算机辅助软件工程的思路。 扩缩变换:软件的哪些特征需要放大,哪些特征需要缩小?采用更高级的语言以及更快的机器,扩大软件的功能大而全还是压缩软件的功能?压缩软件团队规模,采取极限编程 (XP)和 敏捷流程 (Agile Processes)就是一种缩小变换。 组分变换:软件的哪些部分可以组合,哪些需要分解?开发过程的哪些环节可以分解,哪些环节需要组合?采用XP开发方式,持续集成,不断的小步发布新版本,通过组合使软件产品不断的增长就是一种组分变换的思路。另外还有开发人员可以和最终用户组合成小组,大型软件和小型软件的组合等等。其它变换还有: 中介变换:能否找到一种中介物使软件在设计阶段更容易被用户读懂? 补亏变换:可以用哪些有余的特征弥补不足? 种种变换过程中可以从事物的共扼性进行分析,从事物的蕴含性分析,变换方案之间可以进行或、与、积、逆等的运算。 (3) 变换目的。软件工程的目标真的使为了控制进度、预算吗?我们是否真的需要功能众多、结构复杂的大型软件? (4) 同时变换条件和目的。当目标变换后,条件的属性随之变换;条件的变换又促使产生新的目标,从而形成良性改进的循环。也许“焦油坑”只是管理者的幻觉,人狼也只是恐惧的产物,软件工程没有我们想象的这样复杂,软件只是为人类服务的千千万万工具中的一种。 4.选择、评价得到的策略。通过前三个步骤的变换,我们初步将有可能得到6×3×4=72种方案,对这些方案进行筛选、评价,最后实施适合企业环境的方案。 图1 可拓学理论框架 链 接 可拓学不单纯是“授人以渔”,而是“授人以渔之渔”,“渔”的方法不只一种,环境、人员、时间不同,可能需要因地制宜。“授人以渔之渔”也就是教给人们发现、评价各种方法的方法,从而受益无穷。找到银弹是运气,银弹用完了怎么办?环境变化、技术升级,新的人狼也会基因突变,没有一劳永逸的银弹,却有不断设计、制造新银弹的工场——可拓学。 来自:可拓学网站 |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 14:28
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社