《二级C语言第3章 软件工程基础.ppt》由会员分享,可在线阅读,更多相关《二级C语言第3章 软件工程基础.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、二级C语言第3章 软件工程基础 Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-date 软件定义与软件特点软件定义与软件特点 软件危机与软件工程软件危机与软件工程 软件工程过程与软件生命
2、周期软件工程过程与软件生命周期 软件工程的目标和与原则软件工程的目标和与原则3.1 软件工程基本概念软件工程基本概念 软件定义与软件特点软件定义与软件特点 计算机软件是包括程序、数据及相关文档的完整集合。计算机软件是包括程序、数据及相关文档的完整集合。 软件的特点包括:软件的特点包括:(1 1)软件是一种逻辑实体;)软件是一种逻辑实体;(2 2)软件的生产与硬件不同,它没有明显的制作过程;)软件的生产与硬件不同,它没有明显的制作过程;(3 3)软件在运行、使用期间不存在磨损、老化问题;)软件在运行、使用期间不存在磨损、老化问题;(4 4)软件的开发、运行对计算机系统具有依赖性,受计算)软件的开
3、发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;机系统的限制,这导致了软件移植的问题;(5 5)软件复杂性高,成本昂贵;)软件复杂性高,成本昂贵;(6 6)软件开发涉及诸多的社会因素。)软件开发涉及诸多的社会因素。软件危机与软件工程软件危机与软件工程软件危机泛指在计算机软件开发和维护过程中所软件危机泛指在计算机软件开发和维护过程中所遇到的一系列严重问题,主要表现为成本、质量、遇到的一系列严重问题,主要表现为成本、质量、生产率等问题。生产率等问题。软件工程定义:软件工程定义: 软件工程是应用于计算机软件的定义、开发和维护的软件工程是应用于计算机软件的定义、开发和维护的
4、一整套方法、工具、文档、实践标准和工序。(一整套方法、工具、文档、实践标准和工序。(GB) 软件工程是建立并使用完善的工程化原则,以较经济软件工程是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一的手段获得能在实际机器上有效运行的可靠软件的一系列方法。(系列方法。(Fritz Bauer) 将系统化的、规范的、可度量的方法应用于软件的开将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。发、运行和维护的过程,即将工程化应用于软件中。(IEEE) 软件工程包括软件工程包括3个要素:方法(完成软件工程项目的技个要素:方法(完
5、成软件工程项目的技术手段)、工具(支持软件的开发、管理、文档生成)术手段)、工具(支持软件的开发、管理、文档生成)和过程(支持软件开发的各环节的控制、管理)。和过程(支持软件开发的各环节的控制、管理)。软件工程过程软件工程过程软件工程过程是把输入转化为输出的一组彼此相关的资源和活动.软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个层面,软件工程过程通常包含4种基本活动: (1)Plan软件规格说明; (2)Do软件开发; (3)Check软件确认; (4)Action软件演进。从软件开发的观点,软件工程过程就是使用适当的资源(包括人员、硬软件工具、
6、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品) 软件生命周期软件生命周期软件生命周期:软件产品从提出、实现、使用维护到停止使软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程。用退役的过程。软件生命周期三个阶段软件生命周期三个阶段: :软件定义、软件开发、运行维护,主软件定义、软件开发、运行维护,主要活动阶段是:要活动阶段是:(1 1)可行性研究与计划制定;)可行性研究与计划制定;(2 2)需求分析;)需求分析;(3 3)软件设计;)软件设计;(4 4)软件实现;)软件实现;(5 5)软件测试;)软件测试;(6 6)运行和维护。)运行
7、和维护。软件工程的目标和与原则软件工程的目标和与原则目标:在给定成本、进度的前提下,开发出具有有效目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。需求的产品。基本目标:付出较低的开发成本;达到要求的软件功基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。较低的费用;能按时完成
8、开发,及时交付使用。基本原则:抽象、信息隐蔽、模块化、局部化、确定基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。性、一致性、完备性和可验证性。软件工程的理论和技术性研究的内容软件工程的理论和技术性研究的内容软件工程的理论和技术性研究的内容主要包括:软件工程的理论和技术性研究的内容主要包括:软件软件开发技术和软件工程管理。开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境。具和软件工程环境。软件工程管理包括:软件管理学、软件工程经济学、软件软件工程管理包括:软件管理学、软件工程
9、经济学、软件心理学等内容。心理学等内容。v软件管理学包括人员组织、进度安排、质量保证、配软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。置管理、项目计划等。软件开发工具与软件开发环境软件开发工具与软件开发环境 软件开发工具软件开发工具软件开发方法的有效实施必须得到相应工具的支持,软件开发方法的有效实施必须得到相应工具的支持,否则方法将难以有效实施。否则方法将难以有效实施。 软件开发环境软件开发环境软件开发环境或软件工程环境是全面支持软件开发软件开发环境或软件工程环境是全面支持软件开发全过程的软件工具集合。这些软件工具按照一定的全过程的软件工具集合。这些软件工具按照一定的方法或
10、模式组合起来,支持软件生命周期内的各个方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。阶段和各项任务的完成。 计算机辅助软件工程(计算机辅助软件工程(CASE)CASE将各种软件工具、开发机器和一个存放开发将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环过程信息的中心数据库组合起来,形成软件工程环境。境。软件开发方法是软件开发过程所遵循的方法和步骤,其目软件开发方法是软件开发过程所遵循的方法和步骤,其目的在于有效得到一些工作产品,即程序和文档,并且的在于有效得到一些工作产品,即程序和文档,并且满足质量要求。满足质量要求。软件开发方法包括分析方
11、法、设计方法和程序设计方法软件开发方法包括分析方法、设计方法和程序设计方法结构化分析方法结构化分析方法需求分析需求分析软件需求是指用户对软件在功能软件需求是指用户对软件在功能, ,行为行为, ,性能性能, ,设计约束等设计约束等方面的期望方面的期望. .IEEEIEEE定义:定义:用户解决问题或达到目标所需的条件或权能用户解决问题或达到目标所需的条件或权能系统或系统部件要满足合同、标准、规范或其他正式系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;规定文档所需具有的条件或权能;一种反映一种反映 、所描述的条件或职能的文档说明。所描述的条件或职能的文档说明。需求分析阶
12、段的工作需求分析阶段的工作需求获取需求获取需求分析需求分析编写需求规格说明书编写需求规格说明书需求评需求评审审需求分析方法需求分析方法需求分析方法有需求分析方法有 (1 1)结构化需求分析方法;)结构化需求分析方法; 面向数据流面向数据流(SAStructured analysis),(SAStructured analysis),面向数据面向数据结构结构(JSDJackson system development method),(JSDJackson system development method),面面向数据结构的结构化数据系统开发方法向数据结构的结构化数据系统开发方法(DSSDDa
13、ta (DSSDData structured system development method)structured system development method) (2 2)面向对象的分析的方法()面向对象的分析的方法(OOAObject-Oriented OOAObject-Oriented method)method)。 从需求分析建立的模型的特性来分从需求分析建立的模型的特性来分 静态分析静态分析 动态分析动态分析结构化分析方法结构化分析方法结构化分析方法的实质:着眼于数据流,自顶向下,结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数
14、据逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具字典为主要工具, ,建立系统的逻辑模型。建立系统的逻辑模型。结构化分析的常用工具结构化分析的常用工具 (1 1)数据流图()数据流图(DFDData Flow Diagram)DFDData Flow Diagram) (2 2)数据字典)数据字典(DD)(DD) (3 3)判定树)判定树 (4 4)判定表)判定表 数据流图 描述数据处理过程的工具,是需求理解的逻辑模型的描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。图形表示,它直接支持系统的功能建模。 图形元素图形元素 建立数据流图的步骤:建立数
15、据流图的步骤: 由外向里:先画系统的输入输出,再画系统的外部由外向里:先画系统的输入输出,再画系统的外部自顶向下:顺序完成顶层、中间层、底层数据流图自顶向下:顺序完成顶层、中间层、底层数据流图逐层分解。逐层分解。数据字典数据字典 数据字典是结构化分析的核心数据字典是结构化分析的核心 数据字典的作用是对数据字典的作用是对DFDDFD中出现的被命名的图形元素的中出现的被命名的图形元素的确切解释确切解释 通常数据字典包含的信息有:名称、别名、何处使用通常数据字典包含的信息有:名称、别名、何处使用/ /如何使用、内容描述、补充信息等如何使用、内容描述、补充信息等 在数据字典的编制过程中,常使用定义方式
16、描述数据在数据字典的编制过程中,常使用定义方式描述数据结构结构需求分析阶段的最后成果需求分析阶段的最后成果-软件需求规格说明书软件需求规格说明书软件需求规格说明书的特点:软件需求规格说明书的特点:(1 1)正确性;)正确性;(2 2)无岐义性;)无岐义性;(3 3)完整性;)完整性;(4 4)可验证性;)可验证性;(5 5)一致性;)一致性;(6 6)可理解性;)可理解性;(7 7)可追踪性。)可追踪性。3.3 结构化设计方法结构化设计方法软件设计是开发阶段最重要的步骤,是将需求准确地软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。转化为完整的软件产品或系统
17、的唯一途径。从工程管理角度来看,软件设计分为概要设计和详细从工程管理角度来看,软件设计分为概要设计和详细设计。设计。 概要设计概要设计:确定软件体系结构确定软件体系结构,系统级接口系统级接口,全局数据结构或全局数据结构或 数据库模式数据库模式. 详细设计详细设计:确立模块的实现算法和局部数据结构确立模块的实现算法和局部数据结构.衡量软件模块独立性的标准衡量软件模块独立性的标准衡量软件模块独立性使用衡量软件模块独立性使用耦合性和内聚性耦合性和内聚性两个定性的度量两个定性的度量标准。标准。在程序结构中各模块的内聚性越强,则耦合性越弱。优秀在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内
18、聚,低耦合。软件应高内聚,低耦合。 功能内聚功能内聚 非直接耦合非直接耦合 序列内聚序列内聚 数据耦合数据耦合 通信内聚通信内聚 标记耦合标记耦合 内聚内聚 过程内聚过程内聚 耦合耦合 控制耦合控制耦合 时间内聚时间内聚 外部耦合外部耦合 逻辑内聚逻辑内聚 公共耦合公共耦合 偶然内聚偶然内聚 内容耦合内容耦合软件概要设计的基本任务软件概要设计的基本任务(1 1)设计软件系统结构;)设计软件系统结构;(2 2)数据结构及数据库设计;)数据结构及数据库设计;(3 3)编写概要设计文档;)编写概要设计文档; (4 4)概要设计文档评审。)概要设计文档评审。常用的软件设计工具是结构图(常用的软件设计工
19、具是结构图(SCStructure Chart)SCStructure Chart)。结构图的基本形式:基本形式、顺序形式、重复形式、选择结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。形式。结构图有四种模块类型:传入模块、传出模块、变换模块和结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。协调模块。 典型的数据流类型有两种:典型的数据流类型有两种:变换型和事务型变换型和事务型。变换型系统结构图由输入、中心变换、输出三部分变换型系统结构图由输入、中心变换、输出三部分组成。组成。事务型数据流的特点是:接受一项事务,根据事务事务型数据流的特点是:接受一项事务,根据事务处理的
20、特点和性质,选择分派一个适当的处理单元,处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。然后给出结果。面向数据流的设计方法面向数据流的设计方法详细设计是为软件结构图中的每一个模块确定实现详细设计是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。算法和数据结构的细节。常见的过程设计工具有:图形工具(程序流程常见的过程设计工具有:图形工具(程序流程图图,N-S,PAD,HIPO,N-S,PAD,HIPO)、表格工具(判定表)、语言)、表格工具(判定表)、语言工具(工具(PDLPDL)。)。
21、详细设计详细设计3.4 软件测试软件测试软件测试定义:使用人工或自动手段来运行或测定软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:软件测试的目的:发现错误而执行程序的过程。发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。未发现的错误的测
22、试。软件测试方法:软件测试方法:静态测试和动态测试。静态测试和动态测试。 静态测试包括代码检查、静态结构分析、代码质量度量。静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。不实际运行软件,主要通过人工进行。 动态测试:是基本计算机的测试,主要包括动态测试:是基本计算机的测试,主要包括白盒测试方法白盒测试方法和黑盒测试方法。和黑盒测试方法。 白盒测试:在程序内部进行,主要用于完成软件内部操作白盒测试:在程序内部进行,主要用于完成软件内部操作的验证。主要方法有逻辑覆盖、基本基路径测试。的验证。主要方法有逻辑覆盖、基本基路径测试。 黑盒测试:主要诊断功能不对或遗漏
23、、界面错误、数据结黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错,构或外部数据库访问错误、性能错误、初始化和终止条件错,用于软件确认。主要方法有等价类划分法、边界值分析法、用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法、因果图等。错误推测法、因果图等。软件测试方法软件测试方法软件测试过程一般按软件测试过程一般按4 4个步骤进行:个步骤进行:单元测试单元测试-模块测试模块测试集成测试集成测试-增量与非增量方式增量与非增量方式验收测试验收测试验证软件的功能和性能是否满验证软件的功能和性能是否满足需求足需求系统测试系统测试软件测
24、试过程软件测试过程驱动模块被测单元桩模块桩模块程序调试的任务是程序调试的任务是诊断和改正程序中的错误诊断和改正程序中的错误,主,主要在开发阶段进行。要在开发阶段进行。程序调试的基本步骤:程序调试的基本步骤:(1 1)错误定位;)错误定位;(2 2)修改设计和代码,以排除错误;)修改设计和代码,以排除错误;(3 3)进行回归测试,防止引进新的错误。)进行回归测试,防止引进新的错误。35 程序的调试程序的调试软件调试可分表静态调试和动态调试。静态调试软件调试可分表静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试。是主要的设计手段,而动态调试是辅助静态调试。主要调试方法有:主要调试方法有:(1 1)强行排错法;)强行排错法;(2 2)回溯法;)回溯法; (3 3)原因排除法。)原因排除法。 软件调试的方法软件调试的方法