软件工程的知识体系SWEBOK.ppt
软件工程知识体系SWEBOK,姓名:段元波计算机系统结构201530310004,SWEBOK项目目标,SWEBOK是IEEE计算机学会职业实践委员会主持的一个项目,其目标为:1、促进世界范围内对软件工程的一致观点2、阐明软件工程相对其它学科(如计算机科学、项目管理、计算机工程 和数学等)的位置,并确立它们的分界;3、刻画软件工程学科的内容;4、提供使用知识体系的主题;5、为开发课程和个人认证与许可材料,提供一个基础。,SWEBOK相关学科(7个),计算机工程计算机科学管理数学项目管理质量管理系统工程,SWEBOK的知识域,软件需求 Software Requirements 软件设计 Software Design 软件构造 Software Construction 软件测试 Software Testing 软件维护 Software Maintenance 软件配置管理 Software Configuration Management 软件工程管理 Software Engineering Management 软件工程过程 Software Engineering Process 软件工程工具和方法 Software Engineering Tools and Methods 软件质量 Software Quality,软件需求 Software Requirements,软件需求用来描述解决现实世界某个问题的软件产品及对软件产品的约束,涉及需求获取、需求分析、建立需求规格说明和确认,领域问题建模,软件开发的技术、经济和时间可行性分析。软件需求的好坏直接影响软件开发全过程。,需求被定义为解决现实问题所必须展示的特性。它包含六个知识子域:,1)需求工程过程:与整个软件工程过程吻合,描述过程模型、过程参与人、过程支持和管理、过程质量改进。,2)需求启发:描述从何处获取需求及需求工程师收集需求的方法,包括需求来源与启发技术。3)需求分析:描述分析需求的过程,如发现并解决需求之间的冲突,发现系统边界和系统必须怎样与环境相互作用,详细了解系统需求等。4)软件需求说明书(SRS):描述需求文档的结构、质量和标准,包括系统需求定义文档和软件需求说明书两类。5)需求验证:目的是在提交需求分析结果之前找出问题,保证需求文档定义了正确的(用户所期望的)系统,该子域描述审查需求文档的过程。6)需求管理:是一个跨越整个软件生命周期的活动,从本质来说是关于需求的维护和需求的变更管理的知识,目的是保证需求说明准确地反映了待开发的或已经开发的软件。,软件设计 Software Design,软件设计是软件工程最核心的内容。软件设计由软件体系结构设计、软件详细设计两种活动组成。它涉及软件体系结构、构件、接口,还涉及软件设计质量分析和评估、软件设计的表示、软件设计策略和方法等。,软件设计知识域包括六个知识子域:,1)软件设计基本概念:理解软件设计的作用和范围的基础,包括软件设计的一般概念、软件设计的内容、设计过程和可采用的技术。,2)软件设计关键问题:包括并发性、分布性、事件控制和处理、错误和异常处理、交互式系统和持续性等问题3)软件设计结构和系统结构:按特定的构造结构和观点看,系统结构的风格、设计模式、以及程序及其构架的最终划分和组合.4)软件设计质量分析和评价:包括软件设计的质量属性、质量分析和评估工具(包含子域:软件设计评审、静态分析、仿真和原型制作)和度量(包含子域:面向功能/结构的设计度量和面向对象的设计度量).5)软件设计符号:包括结构描述(静态观)和行为描述(动态观)6)软件设计策略和方法:包括一般设计策略、面向功能的方法、面向对象的方法、面向数据结构的方法、其他方法,如形式方法和变换方法。,软件构造 Software Construction,通过编码、单元测试、集成测试、调试、确认等活动,生成可用的、有意义的软件。软件构造除要求符合设计功能外,还要求控制和降低程序复杂性、预计变更、进行程序验证和制定软件构造标准。软件构造与软件配置管理、工具和方法、软件质量密切相关。,软件构造是软件工程的基本活动,其任务是通过编码、验证和单元测试构造出有意义的、可工作的软件产品。最重要的是认识对软件构造影响最强的四项原则,即:,1、复杂度消减:包括软件构造期间用于减小复杂度的三个主要技术:复杂度消除、复杂度自动化消减和复杂度局部化消减。2、变化预计:对软件在生存期间发生各种变化的预测.在构造软件时预测变化的三个主要技术是:普遍化、实验法和局部化。3、结构化验证:以结构化方式建立软件,这种方式能够容易地在单元测试和后继的测试活动期间检出错误和遗漏。4、使用外部标准:专用语言建立的软件在被长期使用的过程中会遇到很多间题,如难以理解进而难以维护等.因此,应当采用符合外部标准的构造语言,如一般编程语言所用的标准。否则须提供足够详细的“语法”说明,使该构造语言过后能被其他人所理解.,软件测试 Software Testing,测试是软件生存周期的重要部分,涉及测试标准、技术、度量和测试过程。测试的目的是标识缺陷和问题,改善产品质量。软件测试覆盖整个软件开发过程。正确的软件工程质量观是预防、避免缺陷和问题。测试的重点是建立一个有限的测试用例集,动态地验证程序是否达到预期行为。,软件测试是用有限的测试用例集合对照预期指定的行为对程序实际的行为进行动态证明的过程,测试用例通常是从无限执行域中适当挑选的.该知识域包含下述五个子域:1)基本概念:包括测试术语、测试理论基础以及测试与其他活动的关系。,2)测试级别:包括测试目标(单元、集成、系统)和测试目的(接受测试、安装测试、回退测试、恢复测试等等)。3)测试技术:包括测试用例选取标准,测试技术(白盒、黑盒技术等等)本身,以及如何选用适当的技术。4)测试相关的度量:包括对被测试的程序的评价和对所进行的测试的评价。5)测试过程管理:包括测试管理关注问题和测试活动。,软件维护 Software Maintenance,软件维护是软件生存周期的组成部分。软件维护要支持系统快速地、便捷地满足新的需求。基于服务的软件维护越来越受到重视。软件组织力图使软件运营时间更长,软件维护成为令人关注的焦点。,一旦软件交付用户使用,软件生命期的维护阶段即开始。维护活动的任务包括发现软件运行中的错误,响应运行环境变化和用户新的要求。软件维护知识子域包括:,1)基本概念:包括软件维护的定义、主要活动和问题。2)维护过程:描述基于IEEE1219 和ISO/IEC14764标准的维护过程3)关键问题:包括技术、管理、费用、预算和度量等问题。4)维护技术:包括程序理解、再工程、逆向工程和效果分析等。,软件配置管理 Software Configuration Management,软件配置管理是一种标识、组织和控制修改的技术,维护整个系统生命周期中软件配置的一致性和可追踪性。内容包括配置管理过程的管理、软件配置鉴别、配置管理控制、配置管理状态记录、配置管理审计、软件发布和交付管理等。,软件配置管理包括六个知识子域:1)配置过程管理:关于软件配置的组织环境、限制和指南、计划和计划制定、监督等。,2)软件配置识别:确定要控制的配置项,为配置项及其版本建立标识方案;建立在采集和管理所控制的配置项中要用的工具和技术.3)软件配置控制:对软件生命期中的变化进行管理,包括软件变化的请求、评估和批准,软件变化的实现。软件变化的偏离和放弃等三个知识子域。4)软件配置状态审计:包括软件配置状态信息和软件配置状态报告。5)软件配置审计:包括软件功能配置审计、软件物理配置审计、在进行中的软件基线审计。6)软件发行管理和交付使用:包括软件建立和软件发行管理。,软件工程管理 Software Engineering Management,运用管理活动,如计划、协调、度量、监控、控制和报告,确保软件开发和维护是系统的、规范的、可度量的。它涉及基础设施管理、项目管理、度量和控制计划三个层次。度量是软件管理决策的基础。近年来软件度量的标准、测度、方法、规范发展较快。,包括三个知识子域:,1)组织管理:再分解为政策管理、个人管理、沟通管理、协调管理、采购管理等。2)过程/项目管理:包括项目启动和范围定义、制定计划、建立规定、项目评审和评价、项目结束等.3)软件工程度量:包括软件度量的一般原理,如:度量程序的目标、度量的选择、软件度量及其发展、数据收集和软件计量模型。,软件工程过程 Software Engineering Process,软件工程过程是生产一个最终能满足用户需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。,1)过程基础建设:建设软件工程过程小组和经验工厂.2)过程度量:评价过程的方法和范例。3)过程定义:包括过程定义类型、生命期框架模型、软件生命期过程模型、过程定义符号、过程定义方法和自动化。4)量化分析:包括过程定义评审和原因分析。5)过程实施和变更:包括过程实施和变更的范例、指南和效果评价等。,软件工程工具和方法 Software Engineering Tools and Methods,软件工程工具分为:需求工具、设计工具、构造工具、测试工具、维护工具、配置管理工具、工程管理工具、工程过程工具、软件质量工具等。软件工程方法分为:启发式方法,包括结构化方法、面向数据方法、面向对象方法和特定域方法;形式化方法;原型方法,原型方法帮助确定软件需求、软件体系结构、用户界面等,软件质量 Software Quality,软件质量涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程等。,软件质量是贯穿于整个软件工程活动的关注点,它包括四个知识子域:1)质量概念:包括质量值的度量,ISO/9126的质量描述,特殊类型的系统和质量要求。2)软件质量保证(S Q A)和证明与确认(V&V)的目的和计划制定。3)S Q A 和V&V 包含的活动,用于S Q A 和V&V的动态技术和静态技术。4)S Q A 和V&V 采用的度量方法.,SWEBOK V3的新特征,一、将10个基本知识域扩展到了15个新添加的包括:软件工程职业实践 软件工程教育基础知识域(1)软件工程经济学(2)计算基础(3)数学基础(4)工程基础,二、现有知识域的主要修改1.在软件设计和软件测试中新增了人机界面的内容。2.更突出了架构设计和详细设计的不同。3.在软件设计中增加了硬件问题的新主题。4.在软件设计中增加了面向方面(aspect-oriented)设计的讨论。5.更多地讨论了建模和敏捷方法。,