02软件过程

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

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

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

资源描述

软件工程第02章软件过程2019/11/1512019/11/151目标软件过程和软件过程模型的概念;三个一般的软件过程模型及何时可以使用它们;软件需求工程、软件开发、测试和进化中所涉及的活动概貌;理解为什么软件过程要有效地组织以应对软件需求和设计上的变更;Rational统一过程如何集成好的软件过程实践来产生一个现代的一般过程模型;22019/11/152019/11/152内容软件过程模型过程活动应对变更Rational统一过程32019/11/152019/11/153软件过程一个软件过程是一组引发软件产品生产的活动。软件描述;软件设计和实现;软件有效性验证;软件进化;软件过程模型--软件过程的抽象表示法。每个过程模型从一个特定的角度表现一个过程,只提供过程的某一侧面的信息。42019/11/152019/11/154软件过程描述过程描述包括:产品,这是软件过程活动的结果。角色,反映人在软件过程的职责。前置和后置条件,是指一个过程活动执行前后或产品生产的前后,陈诉语句为真。2019/11/155计划驱动过程和敏捷过程计划驱动的过程是提前计划好所有的过程活动,然后按计划去考核过程的执行。在敏捷过程中,计划是增量式的,而且很容易根据不断变化的客户需求变更过程。实际应用中,大多数过程都同时包含计划驱动和敏捷方法。没有所谓好的或坏的的软件过程2019/11/1562.1通用软件过程模型瀑布模型使用单独的过程阶段(如需求描述,软件设计,实现和测试等阶段)表现这些活动。增量式开发需要分析,设计与验证都是交错进行。面向复用的软件工程这个方法是基于已存在的很多可复用的组件。这三个模型相互不排斥,而且经常一起使用,尤其是对大型系统的开发。72019/11/152019/11/157瀑布模型82019/11/15需求分析和定义系统和软件设计实现和单元测试集成和系统测试运行和维护2019/11/158瀑布模型阶段瀑布模型也可以看成是软件的生命周期模型,它是计划驱动的软件过程的实例,也就是说,在开始工作之前,你必须对所有的过程活动制定计划并给出进度安排。瀑布模型中的主要活动包括:需求分析和定义系统和软件设计实现和单元测试集成和系统测试运行和维护92019/11/152019/11/159瀑布模型阶段每个阶段的结果是一个或多个经过核准的文件。直到上一个阶段完成,下一个阶段才能启动。在实际过程中,这些阶段经常是重叠和彼此间有信息交换的。生成和确认文档的成本很高,反复是昂贵且十分费事,但又在所难免。依据不同的项目需要采取不同的处理方法。102019/11/152019/11/1510瀑布模型的问题不能灵活划分为不同的阶段,难以应对不断变化的客户需求。只有在全面理解了需求,而且在系统开发过程中不太可能发生重大改变的时候,可以采用瀑布模型。很少有商业系统有稳定的要求。适合大型系统工程项目瀑布模型反映了在其他工程项目中使用的过程模型类型。112019/11/152019/11/15112.1.2增量式开发122019/11/15框架描述描述开发有效性验证初始版本中间版本最终版本2019/11/1512增量式开发(一)是敏捷方法的一个基本部分,对于商务、电子商务和个人系统来说更加适合探索式开发其目标是与用户一起工作,共同探索系统需求,直到最后交付系统。抛弃式原型这种开发方法的目标是理解用户需求,然后再给出系统的一个较好的需求定义。132019/11/152019/11/1513增量式开发的优点降低了适应用户需求变更的成本重新分析和修改文档的工作量较之瀑布模型要少很多在开发过程中更容易得到用户对于已做的开发工作的反馈意见用户可以评价软件的实现版本,并可以看到已实现了多少使更快的交付和部署有用的软件到客户方成为可能相比瀑布模型,用户可以更早地使用软件并创造商业价值2019/11/1514增量式开发的问题过程不可见;频繁文档交互伴随新功能增加,系统结构逐渐退化,导致结构通常较差;重构适用性小型或中型的交互式系统;大型系统的部件;生命周期比较短的系统。152019/11/152019/11/15152.1.3面向复用的软件工程面向复用的方法依赖可以存取的可复用软件组件以及能集成这些组件的框架。这些组件本身就是一个独立的能满足某种需要的系统(COTS或商业现成产品系统)。过程阶段组件分析;需求修改;使用复用的系统设计;开发和集成;162019/11/152019/11/1516面向复用开发172019/11/15需求描述组件分析需求修改使用复用的系统设计开发和集成系统有效性验证2019/11/1517在需求描述的基础上,搜寻能满足需求的组件。通常情况下,正好合适的组件很难获得。根据得到的组件信息分析需求,然后修改需求以反映可得到的组件。当需求修改无法做到的时候,就需要考虑其他替代方案。设计系统的框架或者重复使用一个已存在的框架。组件不能买到就需要自己开发,然后集成这些组件(自己开发和购买的)。软件组件类型通过标准服务开发的Web服务,可用于远程调用。对象的集合,作为一个包和组件框架。如.NET或者J2EE等集成在一起。独立的软件系统,通过配置在特定的环境下使用。2019/11/1518面向复用模型的特点优势是减少了需要开发的软件数量,这样可降低开发成本,自然降低开发中的风险。可使软件快速交付。由于需求妥协不可避免,这样可能导致交付的系统不符合用户真正的需要。对系统进化的控制能力降低或失效,因为可复用的组件新版本可能不受机构的控制。2019/11/15192.2过程活动软件过程是交织着技术、协作、管理等内容的一个活动序列,围绕一个总的目标:软件描述软件设计和实现软件有效性验证软件进化202019/11/152019/11/15202.2.1软件描述软件描述或需求工程主要是理解并定义系统需要哪些服务以及找出开发和运行期间受到哪些约束。需求工程过程有四个主要的阶段:可行性研究需求导出和分析需求描述需求有效性验证212019/11/152019/11/1521需求工程过程222019/11/15可行性研究可行性报告需求导出和分析系统模型需求描述需求有效性验证用户需求和系统需求需求文档2019/11/15222.2.2软件设计和实现软件开发的实现阶段是把系统描述转换成一个可运行的系统的过程。软件设计是对实现软件的结构,系统的数据,系统组件间的接口以及所用的算法的描述。软件实现是对上述设计转化为可执行的程序。设计和实现活动是联系紧密的,有时还是重叠和交叉的。232019/11/152019/11/1523设计过程的通用模型2019/11/1524设计过程活动体系结构设计识别系统的总体结构、基本组件、它们之间的关系以及它们是怎样分布的。接口设计定义系统组件之间的接口。组件设计针对每个系统组件设计它的运行方式。数据库设计设计系统数据结构,以及如何在数据库中表示这些数据结构。252019/11/152019/11/15252.2.3软件有效性验证软件有效性验证,或更一般地称为检验和有效性验证,是要看系统是否符合它的描述以及系统是否符合客户的预期目标。包括检查过程和从用户需求定义到程序开发的每个软件过程阶段。绝大多数的有效性验证成本发生在系统完成过程中和完成之后(测试环节)。262019/11/152019/11/1526测试过程272019/11/152019/11/1527测试阶段组件(或单元)测试测试单个的组件,以确保其操作的正确性。独立地测试每个组件,而不受其他系统组件的影响。系统测试测试系统的总体特性。接收测试用客户提供的真实数据测试系统。282019/11/152019/11/1528测试阶段292019/11/15需求描述模块,单元,代码,测试系统描述系统设计详细设计接收测试计划系统集成测试计划子系统集成测试计划子系统集成测试系统集成测试接收测试服务2019/11/15292.2.4软件进化软件本身是灵活的,可以改变的。由于不断变化的业务需求,通过改变该软件支持的业务也必须发展和变化。不再将软件工程看做开发和维护两个完全独立的过程,而是将其看做一个进化过程,即软件在其生命周期内不断地随着需求的变化而变更的进化式过程。302019/11/152019/11/1530系统进化312019/11/152019/11/15312.3应对变更在大型项目中,变更是无法避免的业务的改变新技术的出现平台的变化变更增加了软件开发的成本分析、设计和实现2019/11/1532降低返工成本变更避免,软件过程中预测变更的活动原型系统开发,要先给客户看系统的一些重要特征。变更容忍,设计过程使得变更以比较低的成本得到处理增量式开发。2019/11/15332.3.1原型构造原型是一个软件系统的最初版本,用于验证概念、试用设计选项、发现更多的问题和可能的解决方法。软件原型使用需求工程过程中,原型有助于启发和验证系统需求系统设计过程,原型探索特定软件的解决方案,支持用户接口设计测试过程中,执行回归测试2019/11/1534原型的作用提高系统的可用性贴近用户的真实要求提高设计质量提高系统可维护性减少开发难度2019/11/1535原型开发过程2019/11/1536建立原型目标包括用户界面、验证需求、可行性验证等。定义原型功能从成本和进度方面考虑要开发的原型及原型该放弃的非功能需求开发原型程序的可依赖性和质量方面的标准可以降低,忽略部分错误处理评估原型建立原型评估标准,对照目标要求进行评估。原型的开发基于快速原型语言或工具可能剔除一些功能关注于那些不是理解很清楚的区域错误检测和系统恢复一般不包括在原型中关注功能性的需求,而不是非功能性的需求,如,可靠性、安全性2019/11/1537抛弃式原型抛弃式原型不能当做正式的系统交付给用户,因为不可能调整原型以满足非功能性的要求原型系统没有完整的文档原型开发过程中的变更可能会破坏系统的结构原型系统一般不满足质量标准2019/11/15382.3.2增量式交付在增量开发过程中,客户大概地提出系统需要提供的服务,指明哪些服务是最重要的,哪些是最不重要的。当一系列交付增量被确定,每个增量提供系统功能的一个子集。对增量中服务的分配取决于服务的优先次序,最高优先权的服务首先被交付。392019/11/152019/11/1539增量式交付402019/11/15定义框架需求对增量指定需求设计系统体系结构开发系统增量增量有效性验证增量集成系统有效性验证2019/11/1540部署增量最终系统系统完成系统未完成增量式开发的好处客户无需等到整个系统的实现。客户可以将早期的增量作为原形,从中获得对后面系统增量的需求经验。项目总体性失败的风险比较低。因为具有最高优先权的服务被首先交付,而后面的增量也不断被集成进来,这就使得最重要的系统服务肯定接受了最多的测试。412019/11/152019/11/1541增量式交付的问题大多数系统需要一组基础设施,增量式开发很难确定全体增量所需要的公用设施。开发替换系统时,迭代开发比较困难。因为要替代的旧系统的功能无法在增量式开发的最初得以交互,用户会很难接受。软件描述和软件本身一起开发是迭代的本质,但实际实现比较难。2019/11/15422.3.3Boehm螺旋模型它不是将软件过程用一系列活动和活动间的回溯来表示,而是将过程用螺旋线表示。在螺旋线中,每个回路表示软件过程的一个阶段。最里面的回路可能与系统可行性有关,下一个回路与系统需求定义有关,再下一个回路与系统设计有关。432019/11/152019/11/1543软件过程的螺旋模型442019/11/152019/11/1544螺旋式模型回路螺旋开发中螺旋线中每个

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

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

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

×
保存成功