软件工程知识体系指南综述*

 

软件工程知识体系指南综述*

万江平,安诗芳,黄德毅

(华南理工大学工商管理学院,广东广州510640)

摘要】首先许述软件工程知识体系指南的历史及其五大目标,并进一步说明了其层次结构以及相关的八个学科;详细分析了其十大知识域及其相应的各个子专题;最后探讨了我国如何应用软件工程知识的体系指南。

关键词】软件工程;标准化;软件工程知识体系;软件工程教育

随着软件产业的逐渐形成,一方面,国际软件工程标准化 迅速活跃起来,另一方面,软件工程的教育也应运而生。特别是20世纪80年代和90年代,计算机科学教育得到了突飞猛进的发展,进一步带动了软件工程教育。不过人们发现,虽然许多院校的大纲已经从最初的以程序设计语言和编码为中心的课程设置转移到强调软件工程理论和设计上,但是直接面向"工程化"的课程和学时很少。然而,恰恰是诸如需求建模、设计方法、体系结构设计、软件复用、软件过程、质量问题、团队组织技能之类软件工程领域的知识和技能对于商业软件的高效开发是至关重要的。由于缺乏对于各种软件工程化实践活动和必要能力的共识,致使在软件工程化活动中出现许多棍乱现象,对软件工程知识的评价、获取和应用造成严重的不良后果。

1软件工程知识体系指南的历史

1998年,美国联邦航空管理局在启动一个旨在提高该局技术和管理人员软件工程能力的项目时,发现他们找不到软件工程工程师应该具备的公认的知识结构。他们向美国联邦政府提出了关于开发"软件工程知识体系指南"的项目建议。美国Embry-Riddle航空大学计算与数学系的Thomas B. Hilburn 教授接受了该研究项目,并且于1999年4月完成了《软件工程知识本体结构》的报告。该报告发布后迅速引起世界软件工程界、教育界和一些政府对建立软件工程本体知识结构的兴趣。很快人们普遍接受了这样的认识:建立软件工程本体知识的结构是确立软件工程专业至关重要的一步;如果没有一个得到共识的软件工程本体知识结构,将无法验证软件工程工程师的资格,无法设置相应的课程,或者无法建立对相应课程进行认可的判断准则。对建立权威的软件工程知识本体结构的需求迅速从世界各地反映出来。1999年5月,ISO和IEC的第一联合技术委员会(ISO/IEC/JTCl )为顺应这种需求,立即启动了标准化项目一一"软件工程知识体系指南" (Guide to the Software Engineering Body of Knowledge, SWEBO K , http : II www. swebok. org/)。美国电子电气工程师学会与美国计算机联合会联合建立的软件工程协调委员会( SECC)、加拿大魁北克大学以及美国MITRE公司(与美国SEI共同开发SW-CMM的软件工程咨询公司)等共同承担了ISO/lEC/JTCl "SWEBOK指南"项目任务。几十个国家和地区的几百名软件工程专家先后参加了SWEBOK指南草案的三次公开审查工作,提出了几千条意见和建议。整个SWEBQK指南项目实施过程分为三大阶段,即草人阶段、石人阶段和铁人阶段。草人阶段产生软件工程本体知识指南的雏型,主要是为该指南确定恰当的组织结构。2001年4月18日发布的SWEBOK 0.95版标志着石人阶段的结束。在完成两年试用之后,启动了该指南的"铁人阶段"的编制工作。其中铁人阶段包括O.1版(1999.2) ,0.5版 (1999. 10 ) , 0.6版( 2000.2), 0.7版( 2000.4), 0.9版 (2001. 2) ,0.95版(2001.5),1.0版(2001. 5)。本文将讨论的 是最新的2004版本。

2软件工程知识体系指南的目标

SWEBOK指南的目的是为软件工程学科的范围提供一致的确认,为支持该学科的本体知识提供指导。SWEBOK指南将软件工程学科的本体知识分为10个知识 域,各种重要概念之间的区别在每个知识域描述中阐述,便于读者迅速查找感兴趣的专题。

SWEBOK指南的目标是:①促进软件工程本体知识达成世界范围的共识;②澄清软件工程与其他相关学科如计算机科学、项目管理、计算机工程以及计算机数学的关系,并且确定软件工程学科的范围;③反映软件工程这个学科内容的特征;④ 确定软件工程本体知识的各个专题:⑤为相应的课程和职业资格认证材料的编写奠定基础。其目标结构图如图l所示。


SWEBOK指南项目的成果并不在于知识体系本身,而在于它是一个指南。知识早已存在,关键是在可以表征软件工程学科特点的核心知识子集上达成共识。为了达成这些目标,该项目是面向广大读者的。它着眼于为公共和私营的组织或团体服务,需要对软件工程的共识来确定教育和训练的需求、岗位分类和开发绩效评估的策略,同时也向在职的软件工程师和政府官员阐明了制定认证和专业指导方针的公共策略的相关责任。

SWEBOK指南面向全世界的广大读者。它适合于有关的公共和私营组织一一它为软件工程规定教育和培训要求、划分职业类别、拟订绩效评价政策或确定开发任务提供一致的见解;它适合于从事具体执行或管理工作的软件工程师和负责制定职业许可政策及指南的政府官员;它适合于负责规定认证规则、大学课程认可政策以及职业实践指南的职业工作者和教育工作者;它也适合于正在学习软件工程专业的学生和从事课程设置及课程内容设计的教育工作者和培训工作者。

3软件工程知识体系指南的结构

SWEBOK2004版包括正文11章和四个附录。核心部分是第二~第十一章。为了便于阅读,对于核心部分,SWEBOK 指南在材料的组织上采用了比较一致的分层结构。整个SWEBOK指南中包含10个本体知识域(Knowledge Areas, KA) ,每个本体知识域均用一章予以描述,并且进一步分解为若干专题,在专题描述中引用有关知识的参考材料。涉及到了八个相关的学科:计算机工程( Computer Engineering)、计算机科学( Computer Science)、管理( Management)、数学( Mathema-tics)、项目管理(Project Management)、质量管理(Quality Ma-nagement)、软件人类工程学(Software Ergonomics)和系统工程 (System Engineering)。

知识域间的区别与相关学科间的区别对指南的目标很重要。项目将被指定知识域及其专题,它们被看作是软件工程师的核心知识,软件工程师也应该知道相关学科的资料,但SWEBOK指南项目将不会试图去指定这些资料,而是留给其他部门和单位努力去解决,如IEEE计算机协会和计算机协会软件工程协调委员会(ACM Software Engineering Coordinating Committee)的协同合作、软件工程教育工作组( Working Group on Software Engineering Education)的研究等。如图2所示,每个知识域的说明均包含了若干个重要的成分。

SWEBOK指南用层次的组织结构将每个知识域分解成一组可以识别的专题。二或三层的细目分类给读者提供了一个合理的方法去找到感兴趣的专题。指南将会用一种与主流的思想学派相兼容、与在工业和软件工程文献及标准中通用的细目分类方法相兼容的方式来处理所选择到的专题。专题的细目分类不假定特殊的应用域、商业用途、管理哲学、开发方法等。每个专题的说明范围将仅符合读者成功找到参考资料的需要,知识体系毕竟是在参考的资料中得到,而不是在指南本身。

指南为每个知识域确定了参考资料。它们可能是书本的章节、参考论文或任何其他公认的权威消息的来源一一但参考资料必须用英文写成而且通常是可获得的。我们更需要那些不是IEEE计算机协会或ACM早已拥有版权的资料,因为我们想在Internet上免费得到这些参考资料。指南将会按Bloom 的分类学(Taxonomy of Educational Objectives: The Classification of Educational Goals, Mackay, 1956)来组织。Bloom的分类学 是众所周知并广泛使用的认知经验分类方法。

4软件工程知识体系指南的十大知识域

每个知识域的选择、命名和说明均保留了对专题的注解、评审和修正。而诸如测量、工具和标准的专题跨越了知识域却被独立地分开了,这些内容在指南的后续版本中都将要评审 (图3)。10个知识域及与它们集成的重要专题如表l所示。


 

(1)软件需求(Software Requirements)。真实世界问题而必必、须展示的特性。软件需求的知识域包括七个子域,即软件需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。

(2 )软件设计(Software Design)。根据IEEE [ IEEE 610.12-90] ,设计既是"定义一个系统或组件的体系结构、组件、接口和其他特征的过程",又是"这个过程的结果"。软件设计的知识域包括六个子域,即软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。

(3)软件构造( Software Construction)。它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件,其知识域包括软件构造基础、管理构造、实际考虑三个子域。

(4)软件测试(Software Testing)。它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组成, 测试用倒是实际上无限的执行域中适当选择出来的。软件测试包括五个子域,即软件测试基础和测试级别、测试技术、需求分析、与测试相关的度量、测试过程。

(5)软件维护(Software Maintenance)。软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出新的需求。生命周期软件维护阶段从软件交付时开始,但是维护活动出现得还要早。软件维护的知识域包括四个子域,即软件维护基础、软件维护的关键问题、维护过程、维护技术。

(6)软件配置管理(Software Configuration Management)。为了系统地控制配置的变更和维护在整个系统生命周期中的完整性和可追踪性,而标志软件在时间上不同点的配置的学科。软件配置管理包括六个子域,即软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行管理和交付。

(7)软件工程管理(Software Engineering Management)。处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉及的是度量程序的专题。软件工程管理包括六个子域,即启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。前五个覆盖软件过程工程 管理,第六个描述软件度量的程序。

(8)软件工程过程(Software Engineering Process)。涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进。软件工程过程包括四个子域,即过程实施与改变、过程定义、过程评定、过程和产品度量。

(9)软件工程工具和方法(Software Engineering Tool and Method)。包括软件工程工具、软件工程方法两个子域。

(10)软件质量(Software Quality)。处理跨越软件生命周期过程的软件质量的考虑,由于软件质量在软件工程中元处不在,其他知识域也涉及质量 问 题。软件质量包括三个子域,即软件质量基础、软件质量过程、实践考虑。

5软件工程知识体系指南的应用思考

与亚洲的印度和欧洲的爱尔兰等国相比,中国软件产业发展还不太尽如人意,原因很多。从SWEBOK指南发展中至少有下面两点启示:①我国软件工程知识教育必须与国际接轨; ②我国必须关注软件工程知识指南的最新发展。

在已经比较成熟的计算机科学教育中,不乏有关的理论知识,但缺少的是软件工程的"行为"以及对于"工程"而言至关重要的人员问题和过程问题。在长期软件工程实践活动中已经积累了大量行之有效的经验和知识,其中有一些经过反复探讨和验证之后还被制定成了标准。SWEBOK是指南,不是软 工程知识本身,软件工程方面的知识已经存在。SWEBOK 指南的宗旨是在众多知识中圈定"属于"软件工程学科域的知识,规定软件工程教育和培训方面的要求和制定出评价原 则,并且在世界范围内求得公认。它还试图为从事软件实践的工程师和负责制定有关职业指导原则政策的官员提供指南;此外,制定高等院校课程认证规则、认可政策和职业实践指南的社会职业工作者和教育工作者以及从事软件工程职业学习的学生也可以从SWEBOK指南中得到收益。本文至今还没有发现SWEBOK指南应用于我国软件工程的教育实践。

第一届国际软件工程知识体系指南演化研讨会于2005年7月25日-28日在苏格兰的爱丁堡与COMPSAC 2005联合举行,研讨会的目标如下:①制定增删指南知识域的标准;②制定专门的增删指南专题标准的准则;③制定专门的取代、增加和删除指南的参考资料标准的准则;④推荐知识域范围的增加、删除或重大修改;⑤提名指南适应性修改的潜在起草人。本文认为我国相关的研究也亟待加强,不仅要从计算机工程和计算机科学本身以及其相关的六个学科入手,还需要从知识科学和系统科学的高度来研究。


【参考文献】(略)
文章选自《计算机应用研究 》(2006.10)

 

你可能感兴趣的:(软件工程知识体系指南综述*)