软件工程概论-2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程概论SoftwareEngineering贾恒彬E-mail:jiahengbin@uniwin.com.cn李恒E-mail:liheng@uniwin.com.cn回顾软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。软件危机软件工程三要素:方法、工具、过程。1.3软件生命周期把软件从产生、发展到成熟、直至衰亡为止特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。需求分析问题定义可性行研究计划时期概要设计详细设计编码测试开发时期运行与维护运行时期1.3软件生命周期制定计划1、确定要开发软件系统的总目标;2、给出功能、性能、可靠性以及接口等方面的要求;3、完成该软件任务的可行性研究;4、估计可利用的资源(硬件,软件,人力等)、成本、效益、开发进度;5、制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。1.3软件生命周期需求分析和定义当完成制定计划之后,需要对用户的需求去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言表达出来。其主要任务是:•对用户提出的要求进行分析并给出详细的定义;•编写软件需求说明书及初步的系统用户手册,提交管理机构评审。1.3软件生命周期软件设计其主要任务是:概要设计:把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应;详细设计:对每个模块要完成的工作进行具体的描述,为源程序编写打下基础;编写设计说明书,提交评审。1.3软件生命周期程序编写其主要任务和要求是:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”;写出的程序应当是结构良好、清晰易读的,且与设计相一致的。1.3软件生命周期软件测试其主要过程是:单元测试:查找各模块在功能和结构上存在的问题并加以纠正;组装测试:将已测试过的模块按一定顺序组装起来;按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用。1.3软件生命周期运行/维护保证正常而可靠地运行,并能使软件不断得到改善和提高,充分发挥其作用。软件维护有四种类型,它们分别完成以下各自的任务:改正性维护:运行中发现了软件中的错误而进行的修正工作;适应性维护:为了适应变化了的软件工作环境,而做适当的变更;完善性维护:为了增强软件的功能而做的变更;预防性维护:为未来的修改与调整奠定更好的基础而进行的工作。1.3软件生命周期制定计划____解决什么问题,目标及其可行性(技术、人员、财力、社会)需求分析____做什么、验收标准总体设计____怎么做详细设计____具体怎么做程序编写____实现软件测试____保证软件质量运行/维护____保证正常而可靠地运用1.3软件生命周期基本原则(1)用户参与的原则;(2)“先逻辑,后物理”的原则;(3)“自顶向下”的原则;(4)工作成果描述标准化的原则。1.3软件生命周期核心思想(1)严格区分工作阶段。(2)自顶层向下层逐层开发,结构化,模块化。(3)建立面向用户的观点,充分预料可能发生的外部环境、内部处理、用户需求的变化。(4)加强调查研究和系统分析,推迟编程和保证开发质量。1.3软件生命周期软件生命周期的内容管理策略部分软件开发的规划、进程安排、评估、监控和反馈。开发策略部分任务分解结构(各阶段)优先级结构(软件开发所遵循的基本过程模型)开发经验软件开发标准(活动、职责、文档、质量检验)瀑布模型原型模型增量模型螺旋模型喷泉模型混合模型敏捷模型1.4软件过程模型1.4.1瀑布模型瀑布模型(waterfallmodel)是由W.Royce于1970年提出来的。又称为软件生存周期模型。瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。1.4.1瀑布模型特点:1.阶段间具有顺序性和依赖性2.推迟实现的观点3.质量保证的观点维护阶段退役需求阶段验证规格说明阶段验证设计阶段验证实现阶段测试集成阶段测试已变更的需求验证瀑布模型优点提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。瀑布模型缺点1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。3)作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。瀑布模型适应场合瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。1.4.2原型模型原型模型(prototypingmodel)的基本框架是软件开发人员根据用户提出的软件基本需求快速开发一个原型,以便向用户展示软件系统应有的部分或全部功能和性能,在征求用户对原型的评价意见后,进一步使需求精确化、完全化,并据此改进、完善原型,如此迭代,直到软件开发人员和用户都确认软件系统的需求并达成一致的理解为止。软件需求确定后,便可进行设计,编码、测试等以后的各个开发步骤。加工原型原型快速分析和设计建造原型客户评价原型1、原型系统仅包括未来系统的主要功能,以及系统的重要接口。2、为了尽快向用户提供原型,开发原型系统时应尽量使用能缩短开发周期的语言和工具。1.4.2原型模型快速原型的开发途径有三种:1)仅模拟软件系统的人机界面和人机交互方式。2)开发一个工作模型,实现软件系统中重要的或容易产生误解的功能。3)利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能。总之,建造原型应尽量采用相应的软件工具和环境,并尽量采用软件重用技术,在运行效率方面可做出让步,以便尽快提供。同时,原型应充分展示软件系统的可见部分,如人机界面、数据的输入方式和输出格式等。原型模型的适应场合原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。1.4.3增量模型增量模型--把软件产品作为一系列的增量构件来设计、编码、集成和测试。分解构件的方法:第一个增量构件:核心功能第二个增量构件:完善核心功能第三……N个增量构件:按照功能的重要性以此分解。增量模型优点:在较短时间内可以提供部分工作的产品在逐步增加产品功能的同时给用户学习的时间困难及维护的方便性:软件体系结构是开放的,加入新构件必须简单。总体设计更加精细,代价较高。增量模型风险更大的增量模型1.4.4螺旋模型螺旋模型综合了瀑布模型和原型模型的优点,即将两者结合,并加入了风险分析机制。其基本思想是使用原型及其他方法来降低风险。可以把它看作每个阶段都加了风险分析过程的快速原形模型。生命周期计划需求计划风险分析原型1原型2原型3可操作的原型建模模拟评价操作概念软件需求需求确认开发计划组装测试计划风险分析风险分析风险分析软件产品设计设计验证与确认详细设计编码单元测试组装测试验收测试实现成本顺时针为进展方向计划:明确目标、约束条件选择方案风险分析构造原型工程实现用户评价;阶段评审图1-4-4螺旋模型验收测试计划需求精化计划需求评价评审决策实现计划1.4.4螺旋模型螺旋模型的每一个周期都包括计划(需求定义)、风险分析、工程实现和评审4个阶段。1.计划(需求定义)第一周期开始利用需求分析技术理解应用领域,获取初步用户需求,制定项目开发计划(即整个软件生命周期计划)和需求分析计划。经过一个周期后,根据用户和开发人员对上一周期工作成果评价和评审,修改、完善需求,明确下一周期软件开发的目标、约束条件,并据此制定新一轮的软件开发计划。1.4.4螺旋模型2.风险分析根据本轮制定的开发计划,进行风险分析,评估可选方案,并构造原型进一步分析风险,给出消除或减少风险的途径。此时根据风险分析的结果决策项目是否继续。所以,螺旋模型是一个风险驱动的模型。3.工程实现利用构造的原型进行需求建模或进行系统模拟,…,直至实现软件系统。1.4.4螺旋模型4.用户评价与阶段评审将原型提交用户使用并征求改进意见。开发人员应在用户的密切配合下进一步完善用户需求,直到用户认为原型可满足需求,或对软件产品设计进行评价或确认等。螺旋模型从第一个周期的计划开始,一个周期、一个周期地不断迭代,直到整个软件系统开发完成。螺旋模型的优点支持用户需求的动态变化。这就要求构造的原型的总体结构、算法、程序、测试方案应具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。螺旋模型的优点螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。螺旋模型的缺点和适应场合缺点:①如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;②使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。1.4.5喷泉模型喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙优点:该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。缺点:由于喷泉模型在各个开发阶段是重叠的,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。1.4.6混合模型混合模型(hybridmodel)过程开发模型又叫混合模型(hybridmodel),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型或混合模型。实际上一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。1.4.7敏捷开发与极限编程极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。极限编程把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程,确立了测试-编码-重构(设计)的软件开发管理思路。聆听测试编码设计极限编程的12个实践是极限编程者总结的实践经典:1、小版本为了高度迭代,与客户展现开发的进展,小版本发布是一个可交流的好办法,客户可以针对性提出反馈。但小版本把模块缩得很小,会影响软件的整体思路连贯,所以小版本也需要总体合理的规划。2、规划游戏就是客户需求,以客户故事的形式,由客户负责编写。极限编程不讲求统一的客户需求收集,也不是由开发人员整理,而是采取让客户编写,开发人员进行分析,设定优先级别,并进行技术实现

1 / 61
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功