《软件工程概念课件.ppt》由会员分享,可在线阅读,更多相关《软件工程概念课件.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1第1页,此课件共65页哦第一章第一章 软件工程概念软件工程概念1.1 软件的定义与分类软件的定义与分类1.2 软件的发展软件的发展1.3 软件工程定义软件工程定义1.4 软件工程过程与软件生存周期模型软件工程过程与软件生存周期模型1.5 软件开发范型软件开发范型1.6 软件工程原理和原则软件工程原理和原则第3页,此课件共65页哦1.1 软件的定义与分类软件的定义与分类n软件的定义:软件由计算机程序、数据及文档组成。软件的定义:软件由计算机程序、数据及文档组成。程序程序是按事先设计的功能和性能要求执行是按事先设计的功能和性能要求执行的指令序列的指令序列数据数据是使程序能正常操纵信息的数据结构是
2、使程序能正常操纵信息的数据结构文档文档是与程序开发,维护和使用有关的图是与程序开发,维护和使用有关的图文材料文材料n软件与硬件、数据库、人、过程等共同构成计算软件与硬件、数据库、人、过程等共同构成计算机系统。机系统。第4页,此课件共65页哦软件的特点软件的特点n软件是一种逻辑实体,而不是具体的物理实体。因而软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性它具有抽象性n软件的生产与硬件不同,在它的开发过程中没有软件的生产与硬件不同,在它的开发过程中没有明显的制造过程明显的制造过程n在软件的运行和使用期间,没有硬件那样的机械磨损,在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题老
3、化问题n软件的开发和运行常受到计算机系统的限制,对软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性第5页,此课件共65页哦n软件的开发至今尚未完全摆脱手工艺的开发方式软件的开发至今尚未完全摆脱手工艺的开发方式n软件本身是复杂的软件本身是复杂的实际问题的复杂性实际问题的复杂性程序逻辑结构的复杂性程序逻辑结构的复杂性 n软件成本相当昂贵软件成本相当昂贵n相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素第6页,此课件共65页哦软件的分类软件的分类n按软件的功能进行划分:按软件的功能进行划分:u 系统软件系统软件p 操作系统操作系统p
4、数据库管理系统数据库管理系统p 设备驱动程序设备驱动程序p 通信处理程序等通信处理程序等u支撑软件支撑软件p文本编辑程序文本编辑程序p文件格式化程序文件格式化程序第7页,此课件共65页哦p程序库系统程序库系统p支持需求分析、设计、实现、测试和支持支持需求分析、设计、实现、测试和支持管理的软件管理的软件u 应用软件应用软件p 商业数据处理软件商业数据处理软件p 工程与科学计算软件工程与科学计算软件p 计算机辅助设计制造软件计算机辅助设计制造软件p 智能产品嵌入软件智能产品嵌入软件p 事务管理、办公自动化软件事务管理、办公自动化软件p 计算机辅助教学软件计算机辅助教学软件第8页,此课件共65页哦n
5、按软件规模进行划分:按软件规模进行划分:类别类别 参加人员数参加人员数 研制期限研制期限 源程序行数源程序行数 微型微型 1 14周周 0.5k 小型小型 1 16月月 1k2k 中型中型 25 12年年 5k50k 大型大型 520 23年年 50k100k 甚大型甚大型 1001000 45年年 1M(=1000k)极大型极大型 20005000 510年年 1M10M第9页,此课件共65页哦n按软件工作方式划分:按软件工作方式划分:实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件 批处理软件批处理软件n按软件服务对象的范围划分:按软件服务对象的范围划分:u 项目软件项目软
6、件u 产品软件产品软件第10页,此课件共65页哦n按使用的频度进行划分:按使用的频度进行划分:一次使用一次使用 频繁使用频繁使用n按软件失效的影响进行划分:按软件失效的影响进行划分:u 高可靠性软件高可靠性软件u 一般可靠性软件一般可靠性软件第11页,此课件共65页哦1.2 软件发展阶段软件发展阶段n程序设计阶段程序设计阶段 1950 至至 60 年代年代计算机软件发展的初期,其主要特征是程序生产方计算机软件发展的初期,其主要特征是程序生产方式为个体手工方式。式为个体手工方式。主要采用批处理技术,没有任何其它形式的文档资料主要采用批处理技术,没有任何其它形式的文档资料保留下来,开发出的程序根本
7、无法维护。保留下来,开发出的程序根本无法维护。n程序系统阶段程序系统阶段 60至至70年代年代程序的规模已经很大,需要多人分工协作,软件的程序的规模已经很大,需要多人分工协作,软件的开发方式由开发方式由“个体生产个体生产”发展到了发展到了“软件作坊软件作坊”。第12页,此课件共65页哦“软件作坊软件作坊”基本上沿用了软件发展早期所形成的基本上沿用了软件发展早期所形成的个体化的开发方式,软件的开发与维护费用以惊人个体化的开发方式,软件的开发与维护费用以惊人的速度增加。许多软件产品根本不能维护,最终导的速度增加。许多软件产品根本不能维护,最终导致出现了严重的致出现了严重的“软件危机软件危机”。n软
8、件工程阶段软件工程阶段 70年代以后年代以后软件的开发以工程化的思想为指导,用工程化的原软件的开发以工程化的思想为指导,用工程化的原则、方法和标准来开发和维护软件。则、方法和标准来开发和维护软件。软件工程概念的出现源自软件危机。软件工程概念的出现源自软件危机。软件危机的主要特征软件危机的主要特征v 软件价格在整个项目投入中的比例不断升高软件价格在整个项目投入中的比例不断升高;第13页,此课件共65页哦v 软件开发成本严重超标软件开发成本严重超标;v 软件开发周期大大超过规定日期软件开发周期大大超过规定日期;v 软件质量难于保证;软件质量难于保证;v 软件修改、维护困难软件修改、维护困难;v 失
9、败的根本原因在于:开发人员写出的东西失败的根本原因在于:开发人员写出的东西达不到用户要求达不到用户要求(人的问题、技术问题人的问题、技术问题)n为了解决软件危机,人们借鉴其他领域的经验和知识,为了解决软件危机,人们借鉴其他领域的经验和知识,从而认识到从而认识到“摆脱软件危机的出路在于软件开发的标摆脱软件危机的出路在于软件开发的标准化和工程化准化和工程化”,出现了,出现了“软件工程软件工程”的概念。的概念。第14页,此课件共65页哦1968 年德国人年德国人 Bauer 在北大西洋公约组织会议上在北大西洋公约组织会议上的定义:的定义:建立并使用完善的工程化原则建立并使用完善的工程化原则,以较经以
10、较经济的手段获得能在实际机器上有效运行的可靠软件济的手段获得能在实际机器上有效运行的可靠软件的一系列方法的一系列方法。1983 年年 IEEE 的软件工程定义:的软件工程定义:软件工程是开发,软件工程是开发,运行运行,维护和修复软件的系统方法维护和修复软件的系统方法。1993 年年 IEEE 的一个更加综合的定义:的一个更加综合的定义:将系统化将系统化的,规范的,可度量的方法应用于软件的开发的,规范的,可度量的方法应用于软件的开发,运行运行和维护的过程,即将工程化应用于软件中和维护的过程,即将工程化应用于软件中。1.3 软件工程定义软件工程定义第15页,此课件共65页哦软件工程框架软件工程框架
11、可可用用性性性性性性确确正正合合算算选取适宜的开发模型选取适宜的开发模型采用合适的设计方法采用合适的设计方法提供高质量的工程支持提供高质量的工程支持重视软件工程的管理重视软件工程的管理基基本本过过程程支支持持过过程程组组织织过过程程目标目标过程过程原原则则第16页,此课件共65页哦n软件工程框架给出了软件工程三个主要方面。软件工程框架给出了软件工程三个主要方面。n软件工程目标软件工程目标包括可用性、正确性和合算性,规定包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;了软件工程实践的结果(即软件)应具有的基本性质;n软件工程过程软件工程过程包含的基本活动有需求、分
12、析与设计、包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;实现、确认与测试、维护与支持;n软件工程的四条原则软件工程的四条原则-采用适宜的开发模型,使用采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。活动,以实现软件工程目标。第17页,此课件共65页哦软件工程的知识结构软件工程的知识结构2001年年5月月ISO/IEC JTC 1发布了发布了 SWEBOK指南指南V0.95(试用版)(试用版),即,即 Guid
13、e to the Software Engineering Body of Knowledge。SWEBOK把软件工程学科的主体知识分为把软件工程学科的主体知识分为10个知识领个知识领域。这域。这10个领域包括:个领域包括:软件需求软件需求 软件设计软件设计 软件构造软件构造 软件测试软件测试 软件维护软件维护 软件配置管理软件配置管理 软件工程管理软件工程管理 软件工程过程软件工程过程 软件工程工具和方法软件工程工具和方法 软件质量软件质量第18页,此课件共65页哦nISO 9000定义:定义:软件工程过程是把输入转化为输出的软件工程过程是把输入转化为输出的一组彼此相关的资源和活动一组彼此相
14、关的资源和活动。n从软件开发的观点看,它就是使用适当的资源(包从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。转化为输出(软件产品)。1.4 软件工程过程与软件生存周期软件工程过程与软件生存周期第19页,此课件共65页哦n软件工程过程定义了软件工程过程定义了:方法使用的顺序、要求交付的方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、文档资料、为保证质量和适应变化所需要的管理、
15、软件开发各个阶段完成的里程碑。软件开发各个阶段完成的里程碑。n软件工程过程包含四种基本的过程活动:软件工程过程包含四种基本的过程活动:v plan:软件规格说明软件规格说明v do:软件开发软件开发v check:软件确认软件确认v action:软件演进软件演进第20页,此课件共65页哦n软件生存周期包含三个阶段:软件定义、软件开发软件生存周期包含三个阶段:软件定义、软件开发及软件运行维护。及软件运行维护。n软件生存周期模型是软件工程思想的具体化,是跨越软软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动件生存周期的系统开发、运行、维护所实施的全
16、部活动和任务的过程框架。和任务的过程框架。n常用的软件生存周期模型有瀑布模型,演化模型,螺常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发(旋模型,增量模型,喷泉模型,快速应用开发(RAD)模型。)模型。第21页,此课件共65页哦瀑布模型瀑布模型n各项活动按自上而下,相互衔接的固定次序,如同各项活动按自上而下,相互衔接的固定次序,如同瀑布逐级下落,每项活动均处于一个质量环(输入瀑布逐级下落,每项活动均处于一个质量环(输入-处理处理-输出输出-评审)中。评审)中。n阶段间具有阶段间具有顺序性顺序性和和依赖性依赖性。n推迟实现的观点。推迟实现的观点。n每个阶段
17、必须完成规定的文档;每个阶段结束前完每个阶段必须完成规定的文档;每个阶段结束前完成文档审查。成文档审查。第22页,此课件共65页哦需求定义需求定义系统与软件设计系统与软件设计集成与系统测试集成与系统测试实现与单元测试实现与单元测试运行与维护运行与维护第23页,此课件共65页哦演化模型演化模型n演化模型是演化模型是迭代迭代的,软件必须经过不断的,软件必须经过不断演化演化才能才能完善。完善。n演化模型先开发一个演化模型先开发一个“原型原型”软件,完成部分主要功软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。得满意的软
18、件产品。n业务和产品需求在变化中,采用线性开发方式是不实业务和产品需求在变化中,采用线性开发方式是不实际的。际的。n快速实现和提交一个有限的版本,可以应付市场竞争快速实现和提交一个有限的版本,可以应付市场竞争的压力。的压力。第24页,此课件共65页哦需求的采集需求的采集与细化与细化客户评价原型客户评价原型快速设计快速设计建造原型建造原型建造原型建造原型加工原型加工原型产生样品产生样品停止停止开始开始第25页,此课件共65页哦螺旋模型螺旋模型n螺旋模型将瀑布模型与演化模型结合起来,并且加入螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的两种模型均忽略了的风险分析风险分析。n螺旋模
19、型沿着螺线旋转,自内向外每旋转一圈便螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。开发出更完善的一个新版本。制定计划制定计划 风险分析风险分析 实施工程实施工程 客户评估客户评估第26页,此课件共65页哦决定目标、决定目标、方案和限制方案和限制评价方案评价方案识别风险识别风险弱化风险弱化风险开发、验证、开发、验证、下一级产品下一级产品计划下一阶段计划下一阶段集成测试第27页,此课件共65页哦增量模型增量模型n增量模型是增量模型是迭代迭代和和演进演进的过程。的过程。n增量模型把软件产品分解成一系列的增量构件,增量模型把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入
20、。在增量开发迭代中逐步加入。n每个构件由多个相互作用的模块构成,并且能够完每个构件由多个相互作用的模块构成,并且能够完成特定的功能。成特定的功能。n早先完成的增量可以为后期的增量提供服务。早先完成的增量可以为后期的增量提供服务。n增量开发方法的新演进版本叫做增量开发方法的新演进版本叫做 极限程序设计极限程序设计(eXtreme Programming)。第28页,此课件共65页哦定义基定义基本需求本需求将需求将需求对应到对应到各增量各增量设计系设计系统架构统架构开发其开发其中一个中一个增量增量检验和检验和确认该确认该增量增量将增量将增量集成到集成到系统中系统中确认集确认集成后的成后的系统系统第
21、29页,此课件共65页哦日历时间日历时间分析分析 增量增量1 增量增量1交付交付设计设计 编码编码 测试测试 分析分析 增量增量2 增量增量2交付交付设计设计 编码编码 测试测试 分析分析 增量增量3 增量增量3交付交付设计设计 编码编码 测试测试 分析分析 增量增量4 增量增量4交付交付设计设计 编码编码 测试测试 系统和信息工程系统和信息工程第30页,此课件共65页哦喷泉模型喷泉模型n体现了体现了迭代迭代和和无间隙无间隙的特性。的特性。n系统某个部分常常重复工作多次,相关对象在每系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。次迭代中随之加入演进的软件成分。n无间
22、隙是指在各项开发活动,即分析、设计和编码无间隙是指在各项开发活动,即分析、设计和编码之间不存在明显的边界。之间不存在明显的边界。n喷泉模型是对象驱动的过程。喷泉模型是对象驱动的过程。第31页,此课件共65页哦需求阶段需求阶段分析阶段分析阶段设计阶段设计阶段编程阶段编程阶段集成与测试阶段集成与测试阶段维护与演进阶段维护与演进阶段第32页,此课件共65页哦变换模型变换模型n变换模型是一种基于形式化规格说明语言及程序变变换模型是一种基于形式化规格说明语言及程序变换的软件开发模型。换的软件开发模型。n它采用形式化的软件开发方法,对形式化的软件规格它采用形式化的软件开发方法,对形式化的软件规格说明进行一
23、系列自动的或半自动的程序变换,最终映说明进行一系列自动的或半自动的程序变换,最终映射成为计算机系统能够接受的程序系统。射成为计算机系统能够接受的程序系统。n多步程序变换过程的重要性质是:每一步程序变多步程序变换过程的重要性质是:每一步程序变换的正确性仅与该步变换所依据的规范换的正确性仅与该步变换所依据的规范 Mi 以及以及对变换后的假设对变换后的假设 Mi+1 有关。有关。第33页,此课件共65页哦软件需求软件需求形式化说形式化说明明(M0)软件设计软件设计形式化说形式化说明明(M1)(M2)(Mn)模型检查模型检查程序变换程序变换程序变换程序变换程序变换程序变换n在此意义上,变换步骤独立于其
24、他变换步骤。这称为在此意义上,变换步骤独立于其他变换步骤。这称为变换的独立性。变换的独立性。n该模型只适合于软件的形式化开发方法;需要严该模型只适合于软件的形式化开发方法;需要严格的数学理论和形式化技术支持;需要一整套开格的数学理论和形式化技术支持;需要一整套开发环境(如程序变换工具、定理证明工具等)的发环境(如程序变换工具、定理证明工具等)的支持。支持。第34页,此课件共65页哦基于第四代技术的模型基于第四代技术的模型n第四代语言第四代语言(4GL)是在大型数据库管理系统的基是在大型数据库管理系统的基础上发展起来的,是一种面向结果的非过程性语础上发展起来的,是一种面向结果的非过程性语言。它独
25、立于具体的处理机,有丰富的软件工具言。它独立于具体的处理机,有丰富的软件工具支持,能统一利用和管理各种数据资源并能适应支持,能统一利用和管理各种数据资源并能适应不同水平用户的需要。不同水平用户的需要。n以以4GL为核心的软件开发技术成为第四代技术为核心的软件开发技术成为第四代技术(4GT),采用,采用4GT的软件开发模型如图。的软件开发模型如图。n软件开发人员在定义软件需求,给出需求规格说软件开发人员在定义软件需求,给出需求规格说明之后,明之后,4GT工具可将该需求规格说明自动工具可将该需求规格说明自动第35页,此课件共65页哦转换为程序代码。这大大减少了分析、设计、编码转换为程序代码。这大大
26、减少了分析、设计、编码和测试的时间。和测试的时间。n以以4GL为核心的软件开发技术成为第四代技术为核心的软件开发技术成为第四代技术(4GT),采用,采用4GT的软件开发模型如图。的软件开发模型如图。收集需求收集需求“设计设计”策略策略用用“4GL”实现实现测试测试第36页,此课件共65页哦快速应用开发(快速应用开发(RAD)模型)模型n快速应用开发模型是一种增量开发模型,该模型开快速应用开发模型是一种增量开发模型,该模型开发软件大量使用了可复用的构件。发软件大量使用了可复用的构件。n每一个增量的开发经历五个阶段:每一个增量的开发经历五个阶段:业务建模业务建模 对业务功能的信息流建模。对业务功能
27、的信息流建模。数据建模数据建模 对业务的数据对象和关系建模。对业务的数据对象和关系建模。过程建模过程建模 描述完成业务功能的数据变换。描述完成业务功能的数据变换。应用生成应用生成 应用构件和自动化工具建造。应用构件和自动化工具建造。测试与反复测试与反复 对新构件和接口进行测试。对新构件和接口进行测试。第37页,此课件共65页哦业务建模业务建模数据建模数据建模过程建模过程建模应用生成应用生成测试及反复测试及反复小组小组1#业务建模业务建模数据建模数据建模过程建模过程建模应用生成应用生成测试及反复测试及反复小组小组2#2#业务建模业务建模数据建模数据建模过程建模过程建模应用生成应用生成测试及反复测
28、试及反复小组小组3#3#6090天天第38页,此课件共65页哦Rational统一开发过程统一开发过程1.最佳软件开发实践最佳软件开发实践 为了以一种更好的、迭代的、可预测的方式开发软件为了以一种更好的、迭代的、可预测的方式开发软件产品,总结了软件开发的最佳实践:产品,总结了软件开发的最佳实践:1)迭代式软件开发;迭代式软件开发;2)需求管理;需求管理;3)基于构件的软件体系结构;基于构件的软件体系结构;4)建立软件可视化模型;建立软件可视化模型;5)不断验证软件质量;不断验证软件质量;6)控制变更。控制变更。第39页,此课件共65页哦2.Rational统一开发过程统一开发过程 软件开发过程
29、的作用是:软件开发过程的作用是:1)成为开发组活动顺序的向导。成为开发组活动顺序的向导。2)详细说明需要开发哪些制品,何时开发。详细说明需要开发哪些制品,何时开发。3)指导每一个成员及整个开发组的工作。指导每一个成员及整个开发组的工作。4)提供监控和度量项目产品和活动所依据的准则。提供监控和度量项目产品和活动所依据的准则。如果没有一个良好定义的过程,开发组将各行其如果没有一个良好定义的过程,开发组将各行其是,开发成功与否完全依赖个别优秀的人才,这是,开发成功与否完全依赖个别优秀的人才,这不是能够长久的。不是能够长久的。第40页,此课件共65页哦nRational统一开发过程(统一开发过程(RU
30、P,Rational Unify Process)描述了如何在软件开发组织中严格分配任务)描述了如何在软件开发组织中严格分配任务和职责的方法。和职责的方法。nRUP 是一个过程产品,是一个过程产品,软件过程也是软件。软件过程也是软件。nRUP 采用二维的过程结构:采用二维的过程结构:横轴表明过程的生存周期,它反映了过程被横轴表明过程的生存周期,它反映了过程被激活时的动态情况,用周期、阶段、迭代和激活时的动态情况,用周期、阶段、迭代和里程碑表示。里程碑表示。纵轴表明过程的静态状况,通过过程构件、纵轴表明过程的静态状况,通过过程构件、活动、工作流、制品和工作人员描述过程。活动、工作流、制品和工作人
31、员描述过程。第41页,此课件共65页哦初始初始细化细化构造构造移交移交阶阶 段段初始化初始化细化细化#1细化细化#2构造构造#1构造构造#2构造构造#3移交移交#1 移交移交#2迭代迭代 工作流工作流业务建模业务建模需求需求 分析与设计分析与设计实现实现测试测试实施实施配置和变更管理配置和变更管理项目管理项目管理环境环境沿时间轴的组织结构沿时间轴的组织结构沿沿内内容容轴轴的的组组织织第42页,此课件共65页哦3.过程的静态描述:过程模型过程的静态描述:过程模型 过程模型中的主要模型元素有过程模型中的主要模型元素有 4 种:种:v工作人员:谁做(工作人员:谁做(Who)v活动:怎么做(活动:怎么
32、做(How)v制品:做什么(制品:做什么(what)v工作流:何时做(工作流:何时做(when)1)过程的中心概念是工作人员,工作人员不是过程的中心概念是工作人员,工作人员不是指某一个人,而是指完成工作的角色。工作指某一个人,而是指完成工作的角色。工作人员定义人们应履行的行为和职责。人员定义人们应履行的行为和职责。第43页,此课件共65页哦2)活动定义了工作人员所执行的工作。有活动定义了工作人员所执行的工作。有 3 类类步骤:步骤:a)思考步骤思考步骤b)执行步骤执行步骤c)评审步骤评审步骤3)制品是过程生产、修改或使用的一些信息。制品是过程生产、修改或使用的一些信息。RUP 的制品分为的制品
33、分为 5 个信息集。个信息集。a)管理集管理集:计划制品、操作制品:计划制品、操作制品b)需求集需求集:构想文档、项目相关人员需求、:构想文档、项目相关人员需求、用例模型和业务模型用例模型和业务模型第44页,此课件共65页哦c)设计集设计集:设计模型、软件体系结构描述、测:设计模型、软件体系结构描述、测试模型试模型d)实现集实现集:源代码和可执行程序、相关数据结:源代码和可执行程序、相关数据结构和数据文档构和数据文档e)实施集实施集:安装资料、用户文档、培训材料:安装资料、用户文档、培训材料4)工作流用来描述生成结果的活动序列,用工作流用来描述生成结果的活动序列,用以描述工作人员之间的交互。在
34、以描述工作人员之间的交互。在 RUP 中共中共有有 9 个核心过程工作流,包括个核心过程工作流,包括 6 个核心工个核心工程工作流和程工作流和 3 个核心支持工作流。个核心支持工作流。第45页,此课件共65页哦a)业务建模工作流业务建模工作流:描述业务过程的本质和执:描述业务过程的本质和执行情形。行情形。b)需求工作流需求工作流:定义系统构想,使用用例模型:定义系统构想,使用用例模型和补充规格说明定义系统软件需求,管理和补充规格说明定义系统软件需求,管理系统范围和需求变更。系统范围和需求变更。c)分析和设计工作流分析和设计工作流:研究实现环境和系统构件:研究实现环境和系统构件的效用,定义软件的
35、组织结构,把需求获取结的效用,定义软件的组织结构,把需求获取结果转化为实现规格。果转化为实现规格。d)实现工作流实现工作流:建立代码的分层结构,实现类和建立代码的分层结构,实现类和对象,进行单元测试和系统集成。对象,进行单元测试和系统集成。第46页,此课件共65页哦e)测试工作流测试工作流:根据事先定义的度量和准则检根据事先定义的度量和准则检查产品,确认产品是否满足或者超出事先查产品,确认产品是否满足或者超出事先定义并被一致接受的需求。定义并被一致接受的需求。f)实施工作流实施工作流:在实际使用环境中测试软件、在实际使用环境中测试软件、包装要交付的软件、发布软件产品、培训包装要交付的软件、发布
36、软件产品、培训最终用户及销售人员。最终用户及销售人员。n核心支持工作流有核心支持工作流有a)项目管理工作流项目管理工作流b)配置和变更管理工作流配置和变更管理工作流c)环境环境工作流工作流第47页,此课件共65页哦4.过程的动态描述:迭代开发过程的动态描述:迭代开发将一个大项目分解为可连续应用瀑布模型将一个大项目分解为可连续应用瀑布模型的几个小部分。在对一部分进行分析、设的几个小部分。在对一部分进行分析、设计、实现并确认后,再对下一部分进行分计、实现并确认后,再对下一部分进行分析、设计、实现和确认。以此进行下去,析、设计、实现和确认。以此进行下去,直到整个项目完成。在直到整个项目完成。在 RU
37、P 中,迭代过程中,迭代过程分为几个阶段。分为几个阶段。初始初始细化细化构造构造移交移交生存周期生存周期构架里程碑构架里程碑生存周期生存周期目标里程碑目标里程碑最初运行最初运行能力里程碑能力里程碑产品发布产品发布里程碑里程碑时间时间第48页,此课件共65页哦1)初始阶段初始阶段:确定最终产品的构想及其用例,定义项:确定最终产品的构想及其用例,定义项目范围。目范围。2)细化阶段细化阶段:计划需完成活动和资源,详细说明产:计划需完成活动和资源,详细说明产品特性并设计软件体系结构。品特性并设计软件体系结构。3)构造阶段构造阶段:构造整个产品,逐步完善软件体系:构造整个产品,逐步完善软件体系结构和计划
38、,直到产品(完整的构想)已完全结构和计划,直到产品(完整的构想)已完全准备好交付给用户。准备好交付给用户。4)移交阶段移交阶段:移交产品给用户,包括制造,交付,:移交产品给用户,包括制造,交付,培训,支持及维护产品。培训,支持及维护产品。第49页,此课件共65页哦n这这 4 个阶段构成开发周期,周期结束时产生一个阶段构成开发周期,周期结束时产生一代新的软件产品。代新的软件产品。n软件产品产生于初始开发周期,随着重复执行同样软件产品产生于初始开发周期,随着重复执行同样的过程,软件发展到下一代产品,这一时期即为软的过程,软件发展到下一代产品,这一时期即为软件的进化周期。件的进化周期。I E C T
39、I E C TI E C TV1V2V3初始开发周期初始开发周期进化周期进化周期第50页,此课件共65页哦5.Rational统一过程的特点:统一过程的特点:v用例驱动的、以体系结构(架构)为中心的、用例驱动的、以体系结构(架构)为中心的、迭代和增量的过程。迭代和增量的过程。v用例建模技术可以用为大多数项目相关人员用例建模技术可以用为大多数项目相关人员理解的形式来表述问题。理解的形式来表述问题。参与者(参与者(Actor)用例(用例(Use Case)场景场景(scenario)事件流(事件流(event flow)Actoruse case第51页,此课件共65页哦n用例和参与者的事例用例和
40、参与者的事例 银行储户通过自动取款机(自动柜员机)提款,银行储户通过自动取款机(自动柜员机)提款,转账或检查账户余额。用一组用例表达如下:转账或检查账户余额。用一组用例表达如下:转账转账提款提款检察账户余额检察账户余额储户储户第52页,此课件共65页哦n用例模型用例模型将整个系统或子系统的所有用例,以及与将整个系统或子系统的所有用例,以及与之交互的参与者集合起来构成系统的用例之交互的参与者集合起来构成系统的用例模型。模型。用例模型给出系统预期功能模型和系统上用例模型给出系统预期功能模型和系统上下文环境模型,它成为开发人员和用户之下文环境模型,它成为开发人员和用户之间的契约。间的契约。用例模型的
41、目的是确保系统能处理所有的用例模型的目的是确保系统能处理所有的功能性需求。功能性需求。第53页,此课件共65页哦n用例驱动的过程用例驱动的过程“用例驱动用例驱动”指开发过程是基于用例,从指开发过程是基于用例,从一个工作流向下一个工作流,逐步前进的。一个工作流向下一个工作流,逐步前进的。开发初期,人们使用用例获取用户需求,建开发初期,人们使用用例获取用户需求,建立用例模型,描述系统的全部功能。立用例模型,描述系统的全部功能。基于用例模型,人们创建一系列实现这些用基于用例模型,人们创建一系列实现这些用例的分析模型、设计模型和实现模型。例的分析模型、设计模型和实现模型。测试人员测试实现确保系统正确实
42、现了用例。测试人员测试实现确保系统正确实现了用例。第54页,此课件共65页哦n以体系结构为中心的过程以体系结构为中心的过程用例的选择不是孤立的,它与软件的体系结构用例的选择不是孤立的,它与软件的体系结构是密切相关的。是密切相关的。软件体系结构的作用与一个建筑的体系结构类似。软件体系结构的作用与一个建筑的体系结构类似。对于一个建筑,可以从框架结构、供热、上下水、对于一个建筑,可以从框架结构、供热、上下水、供电、天然气、其他服务管线等不同角度来考察它。供电、天然气、其他服务管线等不同角度来考察它。使得施工人员在施工前就能全面了解这个建筑。使得施工人员在施工前就能全面了解这个建筑。软件的体系结构也从
43、不同角度描述了即将构造软件的体系结构也从不同角度描述了即将构造的系统,包括系统的的系统,包括系统的静态特征静态特征和和动态特征动态特征。第55页,此课件共65页哦每一种产品都有功能和表现形式两个方面。每一种产品都有功能和表现形式两个方面。用例就是功能用例就是功能,体系结构就是表现形式体系结构就是表现形式。在开发过程中,必须兼顾功能和表现形式,在开发过程中,必须兼顾功能和表现形式,做出适当权衡,才能得到好的产品。因此,做出适当权衡,才能得到好的产品。因此,用例和体系结构必须在迭代中并行演进用例和体系结构必须在迭代中并行演进。为了找到可以演进的体系结构,设计师必须为了找到可以演进的体系结构,设计师
44、必须从全面了解系统的主要功能(即主要用例)从全面了解系统的主要功能(即主要用例)入手。入手。第56页,此课件共65页哦1.5 软件开发范型软件开发范型(Paradigm)n范范型型又又称称为为风风范范。通通常常认认为为范范型型就就是是开开发发模模型型(Model)或或开开发发模模式式(Pattern),实实际际上上它它与与方方法法(Methodology)一一样样,都都被被视视为为一一种种开开发发技技术术。范范型型支支配配了了设设计计方方法法、编编码码语语言言、测测试试和和检检验验技技术术的的选选择。择。n过过程程性性范范型型把把软软件件视视为为处处理理流流,定定义义成成由由一一系系列列步步骤
45、骤构构成成的的算算法法。每每一一步步骤骤都都是是带带有有输输入入和和输输出出的的一一个个过过程程,把把这这些些步步骤骤串串联联在在一一起起可可产产生生贯贯通通于于整个程序的控制流。整个程序的控制流。第57页,此课件共65页哦n面面向向对对象象范范型型把把标标识识和和模模型型化化问问题题领领域域中中的的实实体体做做为为系系统统开开发发的的起起点点,面面向向对对象象系系统统中中的的对对象象是是数数据据抽象与过程抽象的综合。抽象与过程抽象的综合。n逻逻辑辑性性范范型型是是基基于于规规则则的的,它它把把有有关关问问题题的的知知识识分解成一组具体规则分解成一组具体规则(如如prolog语言语言)。n面面
46、向向进进程程范范型型把把一一个个问问题题分分解解成成独独立立执执行行的的模模块块。让让不不只只一一个个程程序序同同时时运运行行。这这些些进进程程互互相相配配合合,解决问题。解决问题。n面面向向存存取取范范型型是是一一种种在在构构造造用用户户界界面面方方面面很很有有用用的的技技术。术。第58页,此课件共65页哦n函函数数型型范范型型是是基基于于规规则则的的,它它把把有有关关问问题题的的知知识识分分解解成成一一组组具具体体规规则则,用用语语言言的的“if_then”等等结构来表示这些规则。结构来表示这些规则。n说明性范型说明性范型。n每种开发范型都有它的支持者和用户:每种开发范型都有它的支持者和用
47、户:每种开发范型都特别适合于某种类型的问每种开发范型都特别适合于某种类型的问题或子问题;题或子问题;每种开发范型都用不同的方式考虑问题;每种开发范型都用不同的方式考虑问题;每种开发范型都使用不同的方法来分解问每种开发范型都使用不同的方法来分解问题题第59页,此课件共65页哦每种开发范型都导致不同种类的块、过程、每种开发范型都导致不同种类的块、过程、产生规则。产生规则。n系统开发时通常把大型问题分解成一组子问题。系统开发时通常把大型问题分解成一组子问题。对于每个子问题采用适当的软件开发范型。对于每个子问题采用适当的软件开发范型。第60页,此课件共65页哦n软件工程原则有:软件工程原则有:1)抽象
48、与自顶向下、逐层细化抽象与自顶向下、逐层细化 采用分层抽象采用分层抽象的方法,有效控制软件开发的复杂性。的方法,有效控制软件开发的复杂性。2)模块化模块化 把问题分解为若干较小的较易解决把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。的模块,有助于信息隐蔽和抽象。3)信息隐蔽和数据封装信息隐蔽和数据封装 将模块中的软件设计将模块中的软件设计决策封装在模块内部,使得模块实现与使用决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。抽象与自顶分离,有助于控制修改局部化。抽象与自顶向下、逐层细化向下、逐层细化1.6 软件工程原则软件工程原则第61页,此课件共65页哦4)局部
49、化局部化 在一个物理模块内集中逻辑上相互关在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的联的计算机资源,促使聚合具有特定目的的事物。事物。5)一致性一致性 整个软件系统的模块使用一致的设计整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。明与系统行为的一致性。6)完备性完备性 软件系统中不丢失任何成分。软件系统中不丢失任何成分。7)可验证性可验证性 系统分解应当遵循易检查、易测试系统分解应当遵循易检查、易测试和易评审
50、的原则,以保证系统的正确性。和易评审的原则,以保证系统的正确性。第62页,此课件共65页哦n软件工程的基本原理有:软件工程的基本原理有:1)按软件生存期分阶段制定计划并认真实施按软件生存期分阶段制定计划并认真实施 把整个软件开发过程视为一项工程,把工程把整个软件开发过程视为一项工程,把工程划分为若干阶段,分别制定每个阶段的计划,划分为若干阶段,分别制定每个阶段的计划,逐个实施。逐个实施。2)坚持进行阶段评审坚持进行阶段评审 前一阶段的结果将成为前一阶段的结果将成为下一阶段的依据。坚持阶段的评审才能保证下一阶段的依据。坚持阶段的评审才能保证错误不传播到下一阶段。错误不传播到下一阶段。第63页,此