软件工程是计算机科学的新兴领域,研究其知识体系,是促进研究和教育长足进展的重要论题。本文试图从理论高度结合科研和研究生培养的实验,提出软件工程四维空间知识体系结构模型,作为软件工程方向硕士研究生知识结构框架,并据此论述计算机应用专业软件工程方向研究生培养的有关问题。
一、软件工程的认识体系
软件工程主要研究各类软件的创建、软件生产过程的控制、软件维护等一系列软件生命周期中的活动,是自然科学、社会科学、计算机科学、技术科学、管理科学等之间的边缘学科,涉及人们对计算机及其应用专业领域、人类思维规律、管理及实施技术等各方面的知识。
哲学层次软件工程学科指导思想可为某种认识论、反映论、世界观,更具体的可为信息论、控制论、系统论等。在基础科学层次研究软件开发的基本元素,并据此违立应用软件的开发模型,把由人理解执行的客观世界对象转化为由数学理论或人理解执行的软件逻辑模型,继而转化为由计算机硬件理解执行的软件物理模型,展示软件开发的基本规律,确定基本概念。在技术科学层次研究实际生产或工业任务实施时遵循的技术原则,决定采用的具体方法和技术。根据基础科学层次上建立的开发模型,研究软件开发方法,确立实际软件开发时采取的具体方法和各种描述与构造技术等。例如自顶向下逐步求精方法学是一种自顶向下功能的分解,在求精的每一步做出一个设计决定,这一设计决定或是一个算法步骤的确立,及新的子功能逻辑模型的定义,或是一个完整的算法确定,这是一种层次的决策,形成软件逻辑模型。工程管理层次研究工程化管理、实施环境,为软件开发方法和技术的实施提供具体的管理手段、环境和保障。软件工程的上述四个层次,组成了该学科从理论到实验技术的完整的认识体系。
二、软件工程硕士研究生知识结构模型
软件工程是一门年轻的学科,但是它的知识体系却十分庞大和复杂,其具体内容至今仍然是模糊的和高度动态的,不但包括计算机科学的基础知识,还包括管理科学、经济学、通信技术、人类工程学及一般工程技术等各方面的知识。各类知识主题之间相互交错地联系在一起,它的变化与发展之快令人难以预料。在这种情况下如何组织软件工程的知识体系,对指导软件工程的研究、软件工程硕士研究生的培养有着重要的现实意义和长远意义。软件工程的目标是产品,软件工程的实施是过程,因此软件工程知识组织可以按过程观点和产品观点为主线,建立硕士研究生知识结构模型,把软件工程知识分解成一些相对独立的、足够小的但包含某个中心论题的单位模块。
1.过程观点的知识体系
软件工程的活动是面向过程的,是把软件工程过程划分为开发、控制、管理与运行维护操作等四种不同活动。过程观点是一种动态观点,它把软件的开发与使用看作与人类的学习工作和通信过程密切相关,从软件生命周期需求分析、规格说明、设计、实现和测试各阶段的软件开发人员协作的各种活动出发考虑问题和解决问题。控制指对软件开发起指导和约束作用的活动,包括质量保证、配置管理、验证与确认、复审、性能评价等。管理包括项目计划、资源分配、开发小组组织、成本估算、法律问题等。运行与维护操作包括使用人员的培训、系统的移交与安装、新旧系统的交接、系统的操作与维护、系统的退役,以及这些活动对系统开发各种决策的影响。
以上的四类活动,又可认为由抽象、表现技术、方法、工具、评价、通信等六个活动侧面构成。抽象指各种基本理论和形式模型。如软件设计的模块化和信息隐藏原理,生命周期模型,成本估算模型等。表现指各种记号和语言。如项目计划的PERT网记号,设计的DFD记号,实现用的各种程序设计语言。方法包括各种形式化方法,当前流行的各种实践和方法学。例如正确性证明的形式验证方法,面向对象的设计方法等。评价包括对软件产品、软件过程以及软件对各有关部门产生的影响等方面的测定分析和评价,软件质量与软件标准等。工具包括各种单项工具和集成化工具集合。通信包括各种口头的和书面的通信技术,各种文件资料的格式和书面的通信技术,各种文件资料的格式和书写技巧。
2.产品观点的知识体系
软件工程的性质是面向产品的,产品的观点是一种静态的观点,即把软件看成是独立的,由一组程序及其相关的定义文档组成的产品,其应用的上下文固定且被充分理解。产品观点从产品类型和产品的一般质量要求出发考虑问题和解决问题。其中产品类型包括软件与环境之间的关系,例如批处理,实时,交互式,嵌入式等。处理方式,如集中式,分布式,串行,并行等。内部特性,如表驱动,进程驱动,基于知识的等。应用领域,如商用系统,导弹控制系统,操作系统,数据库系统,专家系统等。质量要求包括不同产品对可靠性,正确性,可维护性,安全性的要求等,质量要素的要求可能是不同的,为达到特定的质量指标,可能必须采取一些特定的行动和手段,因此,也可以某些特定的质量要求为主线组织有关知识内容。
3.过程观点和产品观点的四维空间知识体系结构模型
根据以上讨论,可以过程观点的活动,活动侧面,产品观点的产品类型,质量要求为四个轴构成一个四维空间。空间的每一个点,如果非空的话,即至少包含某一论题的知识体,就可构成一个单位模块。
研究生的知识结构要适应未来,就要学习学科前沿课程,在探索中读书,在消化中思考,在思考中接受,构建研究生的最佳知识结构及相应的课型配置。四维空间模型为此提供了方便,它把庞大的复杂的软件工程体系分解成各单元模块,可以就各单位模块的主要论题深入研究,作出全面透彻的论述,引导研究生参加到创造知识的行列。也可根据不同的目标和学生的具体情况因材施教,组织课程时把相关单位模块组成一个培养方案,给导师和硕士生更大的选课自由度,确定合理的课程结构。有利于知识更新、及时修改多单位模块的内容,反映软件工程最新最好的原理、方法等。
三、软件工程硕士研究生的培养
软件工程的主要目的是在合理的时间和成本约束条件下生产高质量的软件系统。因此软件工程教育培养的应该是这个目标的软件开发或生产人员。这样的开发人员有不同层次的差别和不同层次的要求。对软件工程方向的硕士研究生这一层次人才的培养应着眼于能力提高方面,以软件工程的过程观点和产品观点的四维空间知识体系结构模型为依据,解决好研究生的知识结构中的个性问题,以利于因材施教,因需施教,因知识更新进行再组织,特别是研究生选修课程多规格、多类型的考虑,引导他们深入思考和正确判断,培养他们独立获取知识和解决问题的能力。要求他们除具备实践软件工程所必须的各种技能、经验和训练的知识外,还特别要求能规范地应用各种工程的、科学的和数学的方法,经济地生产高质量的软件。为此在培养阶段应注意加强对以下几个方面的培养与训练。
(1)软件工程知识结构的培养和训练
(2)管理能力训练
(3)工程技术训练
(4)程序设计训练
(5)理论验证训练
我们依照以上提出的知识结构模型,对90、91两届软件工程方向硕士研究生进行培养目标确定、培养阶段划分、课程设置、培养计划的制订和实施,取得了较为令人满意的效果。
软件工程硕士研究生知识体系结构模型的探讨和软件工程研究生的培养是一个综合学科研究的问题,正在发展之中,本文提出的只是一种作者认为可行的思路,按照这个指导思想对该方向研究生的培养,有待在实践中进一步探索和研究。
作者:袁也山(合肥工业大学)