《中科院研究生院软件工程课件》由会员分享,可在线阅读,更多相关《中科院研究生院软件工程课件(22页珍藏版)》请在金锄头文库上搜索。
1、中科院研究生院软件工程课件Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望n n软件软件与与硬件硬件、数据库数据库、人人、过程过程等共同构等共同构成计算机系统。成计算机系统。n n软件种类可以从六个方面进行划分软件种类可以从六个方面进行划分:uu按功能分类按功能分类应用软件应用软件系统软件系统软件支撑软件支撑软件软件的概念软件的概念2uu按规模分类按规模分类 微型微型 小型小型 中型中型 大型大型 甚大型甚大型 极大型极大型uu按工作方式分类按工作方式分类 分时软件分时软件 实时软件
2、实时软件 交互式软件交互式软件 批处理式软件批处理式软件3uu按服务对象分类按服务对象分类 项目软件项目软件 产品软件产品软件uu按使用频度分类按使用频度分类 一次性使用软件一次性使用软件 频繁使用软件频繁使用软件uu按失效影响分类按失效影响分类 高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件n n每一类软件在管理方面要求程度不同。每一类软件在管理方面要求程度不同。4n n软件的发展经历了三个阶段软件的发展经历了三个阶段uu程序设计程序设计阶段阶段 50至至60年代年代uu程序系统程序系统阶段阶段 60至至70年代年代uu软件工程软件工程阶段阶段 70年代以后年代以后n n软件工程概念
3、的出现源自软件危机。软件工程概念的出现源自软件危机。软件的发展软件的发展5n n软件工程定义为软件工程定义为“运用现代科学技术知识运用现代科学技术知识来设计并构造计算机程序及为开发、运行来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文档资料。和维护这些程序所必须的相关文档资料。” n n软件工程学定义为软件工程学定义为 “建立并使用完善的建立并使用完善的工程化原则工程化原则, 以较经济的手段获得能在实以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方际机器上有效运行的可靠软件的一系列方法。法。”n n软件工程包括三个要素:软件工程包括三个要素:方法方法、工具工具和和过
4、过程程。软件工程定义软件工程定义6n n软件工程需要解决的问题主要有:软件工程需要解决的问题主要有:软件工程需要解决的问题主要有:软件工程需要解决的问题主要有:软件成本软件成本软件成本软件成本、软件可靠性软件可靠性软件可靠性软件可靠性、软件维护软件维护软件维护软件维护、软件生产率软件生产率软件生产率软件生产率和和和和软件软件软件软件复用复用复用复用。 n n软件工程需要达到的基本目标:软件工程需要达到的基本目标:软件工程需要达到的基本目标:软件工程需要达到的基本目标:uu付出较低的开发成本付出较低的开发成本付出较低的开发成本付出较低的开发成本uu达到要求的软件功能达到要求的软件功能达到要求的软
5、件功能达到要求的软件功能uu取得较好的软件性能取得较好的软件性能取得较好的软件性能取得较好的软件性能uu开发的软件易于移植开发的软件易于移植开发的软件易于移植开发的软件易于移植uu需要较低的维护费用需要较低的维护费用需要较低的维护费用需要较低的维护费用uu能按时完成开发,及时交付使用能按时完成开发,及时交付使用能按时完成开发,及时交付使用能按时完成开发,及时交付使用软件工程的目标软件工程的目标7n nISO 9000定义:软件过程是定义:软件过程是把输入转化为把输入转化为输出的一组彼此相关的资源和活动输出的一组彼此相关的资源和活动。n n从软件开发的观点看,它就是从软件开发的观点看,它就是使用
6、适当的使用适当的资源资源(包括人员、硬软件工具、时间等),(包括人员、硬软件工具、时间等),为开发软件进行的一为开发软件进行的一组开发活动组开发活动,在过程,在过程结束时结束时将输入将输入(用户要求)(用户要求)转化为输出转化为输出(软件产品)(软件产品)。软件工程过程软件工程过程8n n软件工程过程定义了软件工程过程定义了: 方法使用的顺序、方法使用的顺序、 要求交付的文档资料、为保证质量和适应要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完变化所需要的管理、软件开发各个阶段完成的里程碑成的里程碑n n软件工程过程包含四种基本的过程活动:软件工程过程包含四种基本的过程
7、活动:uu Plan 软件规格说明软件规格说明uu Do 软件开发软件开发uu Check 软件确认软件确认uu Action 软件演进软件演进9n n软件有一个孕育、诞生、成长、成熟、软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为软件的衰亡的生存过程。这个过程即为软件的生存期生存期n n软件生存期包含三个阶段:软件生存期包含三个阶段:软件定义软件定义、软件开发软件开发及及软件运行维护软件运行维护。 n n软件生存期模型是软件工程思想的具体软件生存期模型是软件工程思想的具体化,是跨越软件生存期的系统开发、运化,是跨越软件生存期的系统开发、运行、维护所实施的行、维护所实施的全部活
8、动全部活动和和任务任务的的过过程框架程框架。软件生存期软件生存期10n n常用的软件生存期模型有常用的软件生存期模型有uu 瀑布模型瀑布模型uu 演化模型演化模型uu 螺旋模型螺旋模型uu 增量模型增量模型uu 喷泉模型喷泉模型uu 智能模型智能模型 软件生存期模型软件生存期模型11瀑布模型瀑布模型需求定义需求定义系统与软件设计系统与软件设计集成与系统测试集成与系统测试实现与单元测试实现与单元测试运行与维护运行与维护n各各项项活活动动按按自自上上而而下下,相相互互衔衔接接的的固固定定次次序序,如如同同瀑瀑布布逐逐级级下下落落。每每项项活活动动均均处处于于一一个个质质量量环(输入环(输入- -处
9、理处理- -输出输出- -评审)中。评审)中。12演化模型演化模型需求的采集需求的采集需求的采集需求的采集与细化与细化与细化与细化客户评价原型客户评价原型快速设计快速设计建造原型建造原型建造原型建造原型加工原型加工原型加工原型加工原型产生样品产生样品产生样品产生样品停止停止开始开始n n先开发一个先开发一个先开发一个先开发一个“ “原型原型原型原型” ”软件,完成部分主要功能,软件,完成部分主要功能,软件,完成部分主要功能,软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终展示给用户并征求意见,然后逐步完善,最终展示给用户并征求意见,然后逐步完善,最终展示给用户并征求意见,然后逐
10、步完善,最终获得满意的软件产品。获得满意的软件产品。获得满意的软件产品。获得满意的软件产品。13螺螺旋旋模模型型决定目标、决定目标、方案和限制方案和限制评价方案、评价方案、识别风险、识别风险、弱化风险弱化风险开发、验证、开发、验证、下一级产品下一级产品计划下一阶段计划下一阶段集成测试14螺旋模型螺旋模型n螺旋模型将瀑布模型与演化模型结合起来,螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。并且加入两种模型均忽略了的风险分析。n螺旋模型沿着螺线旋转,自内向外每旋转螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。一圈便开发出更完善的一个新版本。 u制定
11、计划制定计划 确定软件目标,选定实施方确定软件目标,选定实施方案,弄清项目开发的限制条件;案,弄清项目开发的限制条件;u风险分析风险分析 分析所选方案,考虑如何识分析所选方案,考虑如何识别和消除风险;别和消除风险;u实施工程实施工程 实施软件开发实施软件开发u客户评估客户评估 评价开发,提出修正建议。评价开发,提出修正建议。15增量模型增量模型n n把软件产品分解成一系列的增量构件,在增量开把软件产品分解成一系列的增量构件,在增量开把软件产品分解成一系列的增量构件,在增量开把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入。发迭代中逐步加入。发迭代中逐步加入。发迭代中逐步加入。 n n
12、每个构件由多个相互作用的模块构成,并且能够每个构件由多个相互作用的模块构成,并且能够每个构件由多个相互作用的模块构成,并且能够每个构件由多个相互作用的模块构成,并且能够完成特定的功能。完成特定的功能。完成特定的功能。完成特定的功能。n n增量开发方法的新演进版本叫做增量开发方法的新演进版本叫做增量开发方法的新演进版本叫做增量开发方法的新演进版本叫做 “ “极限程序设极限程序设极限程序设极限程序设计(计(计(计(eXtreme ProgrammingeXtreme Programming)” ”。 定义定义基本需求基本需求将需求赋予将需求赋予增量构件增量构件设计系统设计系统体系结构体系结构开发开
13、发增量构件增量构件确认确认增量构件增量构件集成集成增量构件增量构件确认系统确认系统16喷泉模型喷泉模型n n体现了迭代和无间隙的特性。体现了迭代和无间隙的特性。n n系统某个部分常常重复工作多次,相关系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件对象在每次迭代中随之加入演进的软件成分。成分。n n无间隙是指在各项开发活动,即分析、无间隙是指在各项开发活动,即分析、设计和编码之间不存在明显的边界。设计和编码之间不存在明显的边界。n n喷泉模型是对象驱动的过程。喷泉模型是对象驱动的过程。 17需求阶段需求阶段分析阶段分析阶段设计阶段设计阶段编程阶段编程阶段集成与测试阶段集成与
14、测试阶段维护与演进阶段维护与演进阶段18智能模型智能模型n智能模型是基于知识的软件开发模型,智能模型是基于知识的软件开发模型,它把它把瀑布模型瀑布模型和和专家系统专家系统综合在一起。综合在一起。n该模型在各个开发阶段都利用了相应的该模型在各个开发阶段都利用了相应的专家系统来帮助软件人员完成开发工作。专家系统来帮助软件人员完成开发工作。n为此,建立了为此,建立了各个阶段的知识库各个阶段的知识库,将模,将模型、相应领域知识和软件工程知识分别型、相应领域知识和软件工程知识分别存入数据库。以软件工程知识为基础的存入数据库。以软件工程知识为基础的生成规则构成的专家系统与包含应用领生成规则构成的专家系统与
15、包含应用领域知识规则的其他专家系统相结合,构域知识规则的其他专家系统相结合,构成该应用领域的开发系统。成该应用领域的开发系统。19用户要求用户要求需求分析需求分析概要设计概要设计详细设计详细设计程序编码程序编码测试测试维护维护支持需求支持需求 分析的分析的专家系统专家系统支持软件支持软件 设计的设计的专家系统专家系统支持测试支持测试的专家系统的专家系统支持维护支持维护的专家系统的专家系统20n n在软件开发过程中必须遵循的软件工在软件开发过程中必须遵循的软件工程原则有:程原则有:uu抽象与自顶向下、逐层细化抽象与自顶向下、逐层细化uu信息隐蔽和数据封装信息隐蔽和数据封装uu模块化模块化uu局部化局部化uu确定性确定性uu一致性和标准化一致性和标准化uu完备性和可验证性完备性和可验证性 软件工程原则软件工程原则21n n软件工程的基本原理有:软件工程的基本原理有:uu按软件生存期分阶段制定计划并认按软件生存期分阶段制定计划并认真实施;真实施;uu坚持进行阶段评审;坚持进行阶段评审;uu坚持严格的产品控制;坚持严格的产品控制;uu使用现代程序设计技术;使用现代程序设计技术;uu明确责任,使得工作结果能够得到明确责任,使得工作结果能够得到清楚的审查;清楚的审查;uu用人少而精;不断改进开发过程。用人少而精;不断改进开发过程。软件工程的基本原理软件工程的基本原理22