APP下载

面向智能设计的知识表达方法

2018-05-16北京宇航系统工程研究所

航天工业管理 2018年4期
关键词:源代码约束工具

/北京宇航系统工程研究所

知识管理理论与实践起源于20世纪80年代,经过数10年的发展,多数组织已经建立了知识管理信息系统,积累了大量设计经验知识。由于设计对象的复杂性,传统的设计技术已不能满足需求,需要研究如何将知识和智能化设计工具结合,使计算机可以将积累的设计知识利用起来,辅助设计人员提升设计效率,达到智能化设计的目的。

一、智能化设计与设计工具

设计工具是智能化设计的具体载体。设计的智能化体现在:越来越多的设计知识,特别是传统上只能由人的脑力劳动应用的知识,逐渐可以由计算机自动化地应用于设计过程。目前,计算机软件工具已经在计算、仿真、逻辑判断等很多领域替代人脑实现了设计知识的应用,随着数据分析、人工智能等信息技术的发展,更广泛、更复杂的设计知识将可能通过软件实现自动应用,是智能化设计的发展方向。

通过设计工具固化并自动应用设计知识具有高效、可靠的特点,是信息时代固化设计知识的良好手段。设计工具在实现设计活动的逻辑判断和自动执行的同时,基于同样的业务逻辑可实现知识的推送和推理,是知识推送、推理的天然载体。

由于智能化设计的上述特点,有必要立足于设计工具和设计知识的关系,进一步深入研究面向智能化设计的知识管理方法。

二、设计工具与知识的关系

设计知识一般分为经验禁忌、故障案例、共用模型、最新发展、最佳实践、学术论文、发明专利、科技成果、标准规范等类型。设计工具自身属于“共用模型”范畴。

随着设计工具的自动化、智能化程度越来越高,设计工具自身的流程与功能越来越复杂,与其它类型知识的关系越来越密切。从知识管理的角度,不能仅仅将设计工具看成一个封闭的“黑盒”模型,而必须将其作为一个“白盒”,剖析其结构和内容与各种设计知识的关系。从工具自身发展的角度,未来有生命力的设计工具必然是开放的软件体系,面向专业社区开放软件架构和核心源代码,能够持续扩展和重构,快速适应新的设计需求,体现新的设计知识。这2个方面对工具开放性的要求是相辅相成的。

对于专业自主研发设计工具,其本身就是专业、岗位设计知识的固化和表达,有必要将软件的研制过程与相关知识的识别、采集和表达过程有机地结合起来,持续而完整地识别、采集工具中固化的知识,规范地在工具中表达和应用设计知识,形成知识和工具的良性循环、持续提升。

1.设计流程的再梳理

为了深入研究设计知识如何充分地在软件工具中实际表达和利用,我们认识到专业设计是一个人与计算机程序紧密结合的过程,在当今的信息时代,几乎所有的设计工作都无法脱离计算机程序完成。为适应研究设计知识和设计工具关系的需求,笔者对专业设计流程进行了再梳理,目标是全面、充分地明确整个过程中人和计算机的各种交互关系,在这些交互中涉及到哪些设计知识,以及这些知识参与人机交互的方式。

从人机交互的角度梳理一般专业设计流程,简化表达如图1所示。

由于不同任务的专业设计需求时常发生变化,专业设计软件需要持续改进。因此,专业设计流程包括设计工具软件开发或改进与设计工具软件应用2个核心活动。

在设计工具软件开发或改进活动中,设计师同时也是软件工程师,以软件开发的方式与计算机互动,互动的主要对象是设计工具软件的源代码。

在设计工具软件应用活动中,设计师的身份是软件用户,使用设计工具提供的用户界面(图形化或非图形化)与计算机互动,完成具体设计工作。

同时设计过程本身也是一个设计软件不断迭代和完善的过程。除了上述设计流程中包含的人机交互方式之外,还存在一种重要的人机交互方式——利用设计工具开展学习活动。一般是以“白盒”形式,参考软件的源代码实现,利用软件功能进行试算和专业研究。

图1 专业设计流程图

2.设计知识的分类

基于上述设计流程再梳理的思路,从人机交互方式的角度对专业设计知识进行分类。

流程型。流程型知识表达的核心是计算或操作步骤的顺序,这些步骤必须能够逐级细化到可执行、可操作的程度,可能体现为人工操作的流程,也可能体现为计算机程序中的自动流程。二者没有本质区别,在一定条件下可以相互转化,与设计工具的智能化和自动化程度相关。

流程可以按易变程度分为2类:一类是固化流程,在一定范围内,不随具体型号、任务变化的流程;另一类是易变流程,随具体型号、任务需求变化的流程。一个完整的设计流程,往往在粗粒度上是固化流程,某些具体活动细化展开后是易变流程。

固化流程本身是对专业设计知识的高度凝练,体现了专业的核心原理,将设计流程合理固化是对设计知识的一种升华。依据固化流程实现软件工具,体现了知识对设计软件的架构设计指导。随着技术成熟度的提升,一些易变流程可能会逐渐演变为固化流程。

易变流程可进一步划分为2种模式:一种是静态流程,是根据具体需求直接固定定义的流程;另一种是动态流程,是将具体设计需求和输入转化为形式化的模型和数据,由模型和数据驱动动态生成的流程。

专业设计任务虽各有不同,但具有一定的内在相似性,国内外先进设计工具的实践结果已经表明:我们能够总结出通用的、计算机能够解读的模型和数据结构,表达绝大部分设计任务;我们能够利用这种相对简单的模型和数据,自动生成易变的、复杂的设计流程,相对于每次重新定义静态流程降低了工作量。该种模型驱动的方法,是对知识进行提炼和固化的一种更高级的形式,借助更为智能化的软件技术手段,将知识提炼为模型定义和基于模型的设计方法,是先进设计工具的发展方向。

总之,固化流程体现了显见的共性知识和核心原理;静态的易变流程体现了针对具体型号和任务的特性知识,动态易变流程自动生成方法体现了对隐性共性知识的发掘和智能化应用。尽量采用固化流程和动态生成易变流程,是提升知识复用度和软件通用范围的核心思路。

流程型知识与其它类型知识的关系是:流程定义了设计活动,在一次设计任务中起到提纲的作用,其它类型知识均与具体的设计活动关联。

算法型。算法型知识是在流程中一般不继续细分的计算活动。专业计算活动一般均由计算机程序完成,是公式、算法、数据等设计知识在软件中的直接固化。在软件工具中,算法型知识除体现为软件源代码外,一般均应同时提注释、文档等说明信息,帮助阅读和学习。

约束型。约束型知识是对流程活动中相关数据的定量约束。一般对应某种设计经验或禁忌。在软件工具中,一般应体现为程序的自动判断,判断的具体判据可以通过用户界面(或输入数据文件)修改,与具体的输入参数相关。

参考型。暂时不形成具体计算、不构成定量约束的知识,如历史上的质量问题案例等。在软件工具中,一般体现为上下文相关的帮助信息。

3.设计知识与设计工具开发

利用上述设计流程梳理和知识分类,可以帮助我们分类确定设计知识与软件工具开发的具体关系,包括设计知识在软件中的固化方式、表达方式、引用方式等,具体详述如下。

流程型。流程是实现导航式设计的基础。基于专业的特点,导航式设计需要同时深入设计工具软件的开发和应用2个阶段。

在设计工具软件开发或改进活动中,流程型知识与软件需求和架构设计密切相关。首先要基于流程梳理结果,明确自动流程和手动流程的分界面,合理划分,尽可能提升工具的自动化、智能化水平,减少设计人员的负担。

在设计工具的开发过程中,对于易变流程,应尽量避免在软件中采用“硬编码”的形式实现,降低软件的维护难度。可以参考先进设计工具,为仿真、迭代和优化设计流程模型,用于定义易变的设计流程,也能用来存储固化的设计流程。

通过设计流程的定义,为其它类型的设计知识与设计流程的关联创造了条件,为形成导航式的设计工具奠定了基础。

算法型。设计工具软件开发或改进活动的主要内容之一是实现自动流程活动中的算法。算法型知识与设计工具的关系,主要是文本形式的原始知识和源代码形式的软件实现之间的对应关系。虽然软件开发基于第三方提供的通用开发平台和工具进行,难以将导航式的思路强制贯彻到开发过程中,但是导航式设计仍与设计工具开发有密切的关系。虽然算法在实现后一般以“黑盒”的方式调用,但并不意味着在开发完成后就不再关心软件实现与知识关联的问题,这是因为设计工具同时也是承担学习功能的载体。如果在流程定义的基础上能够通过导航式的方式,阅读和学习算法型知识的“白盒”软件实现并能够关联的知识的来源,如相关标准等,对提高代码质量和提高学习效率都有帮助。

因此,不需要只关注狭义的开发过程、追求在开发过程中直接干预编码,建议转而控制开发结果,关注代码的复用和学习参考价值,使开发成果充分体现导航式特点,这对计算模块的开发提出了更高的要求。在开发过程中,不能仅仅满足于实现功能,同时还需要以结构化注释或结构化导读文档的形式提供导航信息,明确代码实现与知识的关联。在代码走查工作中,利用导航信息辅助提升代码走查的效率和效果,保证开发质量。在后续复用和参考学习过程中,导航信息能大大提升代码的可读性,揭示软件实现与知识的关联。

具体的思路是:在开发源代码的同时,要求开发人员以结构化注释或标准结构文档的方式,同时编写出规范格式的导航式代码导读信息,将代码实现与相应知识相关联。可以开发辅助工具,以图形化的方式展现知识关联信息,进一步提升软件代码和导航信息的可读性。导航信息的具体格式可不依赖于具体的开发平台和编程语言,该方案具有高度的适应性和可操作性。

约束型。部分约束型知识可以直接固化在相关的自动流程的计算活动中。该种约束型知识和设计工具的关系与算法型知识类似。在导航式的“白盒”代码参考学习过程中,应重点呈现此类知识与软件实现的关联。

参考型。如果在软件开发和参考学习过程中,需要关联参考型知识,可以将其以链接的形式加入代码导航信息中,以供查阅。

4.设计知识与设计工具应用

流程型。对于先进的设计工具,能够在不修改源代码的前提下灵活地定义、调整和执行设计流程。如果设计工具具备此种能力,那么在设计工具应用活动中,就不仅仅是遵循软件工具开发固化设计流程,还可以不断地将新的流程型知识引入软件工具。目前,设计工具大多暂时不具备类似能力,因此可以开发相对独立的流程导航工具,辅助定义设计流程,供使用工具时参考。

算法型。在设计工具应用中,算法一般作为“黑盒”模块调用即可。如果关心算法的具体实现,可参考关于算法型知识用于学习目的的描述。

约束型。多数约束型知识需要在设计工具的用户接口上预留可调参数,因此在调整这些参数的过程中有必要提供约束型知识的原始来源和参数设置注意事项供设计师参考。基于导航式设计的思路,应在人工操作流程的基础上采用上下文相关的帮助方式,自动关联并提供当前活动相关的约束型知识。

参考型。大多数参考型知识适宜以设计工具帮助文档的方式提供。与约束型知识类似,应基于导航式设计的思路,采用上下文相关的方式按需提供。即使设计工具没有图形化的界面,也应该在输入数据文件中描述约束性、参考型知识的原始来源。

笔者阐述了设计工具与知识的关系,并从二者的关系角度,提出了流程型、算法型、约束型、参考型的设计知识分类方法,分析了4类知识在设计软件开发和应用过程中固化和共享的模式,可供与知识管理结合的智能化设计工具建设参考。▲

猜你喜欢

源代码约束工具
基于TXL的源代码插桩技术研究
波比的工具
波比的工具
准备工具:步骤:
“巧用”工具
马和骑师
保护好自己的“源代码”
解密别克安全“源代码”
适当放手能让孩子更好地自我约束
CAE软件操作小百科(11)