1软件工程王勇2个人介绍王勇Tel:13808669081Email:yongwang@cug.edu.cn地理信息系统软件开发网格与分布式系统地理信息系统网格软件过程改进3本章学习内容1.掌握软件的生命周期的概念2.掌握各种生命周期模型的特点与适用范围4软件的过程过程一系列按顺序组成的任务叫作过程这些一些列的步骤涉及:活动、限制、资源等一个过程涉及一系列的工具和技术5软件的过程过程具有的特点1.过程规定了所有主要活动2.过程利用资源产生中间产品和最终产品,同时受一定限制3.过程可以由子过程组成4.每个过程活动有入口和出口标准,活动的开始和结束清楚可知5.活动按顺序组织6.这些一些列的步骤涉及:活动、限制、资源等7.每个过程有一系列指导原则,解释每个活动的目标6软件的过程软件过程软件过程是为了获得高质量软件所需要完成的一些列任务的框架,它规定了完成各项任务的工作步骤过去我们将软件过程叫作软件生命周期7软件的生命周期软件生命周期软件的生命周期指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代而停止该软件的使用的全过程。8软件的生命周期软件生命周期作用从时间的角度,对软件开发和维护的复杂过程进行了有效的划分,把整个生命周期划分为若干个互相区别而又彼此联系的阶段,给每个阶段赋予确定而有限的任务。9软件的生命周期软件生命周期作用这样就便于每个阶段都采用经过验证行之有效的管理技术和方法,从技术和管理的角度进行严格审查,以达到保证软件质量、降低成本、合理使用资源,进而提高软件开发生产率的目的。10软件的生命周期软件生命周期任务1、软件定义2、软件开发3、运行和维护11软件的生命周期每个时期又可以进一步划分成若干个阶段1、问题定义2、可行性研究3、需求分析4、概要设计5、详细设计6、编码和单元测试7、综合测试8、软件维护12软件生命周期模型软件生命周期模型把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件生命周期模型(过程模型)。13软件生命周期模型软件生命周期模型软件生命周期模型是从一个特定的角度表现一个过程,主要根据软件的类型、规模,特别是软件的开发方法、开发环境等多种因素确立过程模型。14软件生命周期模型瀑布模型15软件生命周期模型瀑布模型的特点:阶段性阶段评审文档管理瀑布模型适用于具有以下特征的一类系统:在开发时期内没有或很少有需求变化;开发者对应用领域很熟悉;低风险项目,如开发者对目标和开发环境很熟悉;除了在早期阶段,用户对开发工作参与很少;系统编程要求使用面向过程的程序设计语言。16软件生命周期模型瀑布模型的缺点阶段与阶段划分固定,阶段间产生大量的文档,极大地增加了工作量;由于开发模型呈线性,当开发成果尚未经过测试时,用户无法看到软件的效果,这些问题往往会导致开发出来的软件不是用户真正需要的软件;无法通过开发活动澄清本来不够确切的软件需求,因此,需要返工或者不得不在维护中纠正需求的偏差;由于固定顺序,前期工作中造成的差错越到后期阶段所造成的损失越大,为了纠正偏差,需要付出高昂的代价。17软件生命周期模型一个真实的瀑布模型软件需求需求分析设计编码设计测试运行维护18软件生命周期模型改进的瀑布模型19软件生命周期模型原型模型——1.快速原型方法快速原型方法是原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求分析上的模糊认识。20软件生命周期模型原型模型快速原型法的特点:快速原型是用来获取用户需求的,或是用来试探某种设计是否有效。一旦需求或设计确定下来,原型就将被抛弃。21软件生命周期模型快速原型是暂时使用的,因此并不要求完整。它往往针对某个局部问题建立专门原型,如界面原型、工作流原型、查询原型等。快速原型不能贯穿软件的整个生命周期,它需要和其他的过程模型相结合才能产生作用。22软件生命周期模型改进的瀑布模型23软件生命周期模型对于一个大型复杂的系统,如果不经过分析来进行整体性划分,想直接用屏幕来一个一个地模拟是很困难的;对于大量运算、逻辑性较强的程序模块,快速原型方法很难构造出模型来供人评价。24软件生命周期模型原型方法只适用于小型、简单、处理过程比较明确、没有大量运算和逻辑处理过程的系统。25软件生命周期模型2.原型进化模型需求描述建立/完善原型使用原型系统系统充分交付目标系统否是26软件生命周期模型2.原型进化模型原型进化模型将软件的需求细节定义、产品开发和有效性验证放在同一个工作进程中交替或并行运作。因此,在获得了软件需求框架以后,就可以直接进入到对软件的开发中。原型进化模型是通过不断发布新的软件版本而使软件逐步完善的,因此,这种开发模式特别适合于那些用户急需的软件产品开发。27软件生命周期模型增量模型定义需求框架按照构件组成及其关系设计软件系统体系结构将构件集成进系统验证系统系统已完成最终系统开发增量构件细化构件需求设计构件实现构件验证构件否是28软件生命周期模型1.增量模型的三个阶段(1)在系统开发的前期阶段,为了确保所建系统具有优良的结构,仍需要针对整个系统进行需求分析和总体设计,需要启动系统的基于增量构件的需求框架,并以需求框架中构件的组成及关系为依据,完成对软件系统的体系结构设计。29软件生命周期模型1.增量模型的三个阶段(2)在完成软件体系结构设计之后,可以进行增量构件的开发。这时需要对构件进行需求细化,然后进行设计、编码测试和有效性验证。30软件生命周期模型1.增量模型的三个阶段(3)在完成了对某个构件的开发之后,需要将该构件集成到系统中去,并对已经发生了改变的系统重新进行有效性验证,然后再继续下一个增量构件的开发。31软件生命周期模型2.增量模型的作用(1)开发初期的需求定义只是用来确定软件的基本结构,这使得开发初期,用户只需要对软件需求进行大概的描述,而对于需求的细节描述,则可以延迟到增量构件开发时进行,以增量构件为单位逐个地进行需求补充。32软件生命周期模型2.增量模型的作用(2)软件系统可以按照增量构件的功能安排开发的优先顺序,并逐个实现和交付使用。这不仅有利于用户尽早地用上系统,能够更好地适应新的软件环境,而且用户在以增量方式使用系统的过程中,还能够获得对软件系统后续构件的需求经验。33软件生命周期模型2.增量模型的作用(3)软件系统是逐渐开展的,因此开发者可以通过对诸多构件的开发,逐步积累开发经验。实际上增量式开发还有利于技术复用(4)增量式开发还有利于从总体上降低软件项目的技术风险。34软件生命周期模型2.增量模型的缺点开放的软件体系结构导致软件设计难度增加增量模型本事是矛盾的35软件生命周期模型螺旋模型36软件生命周期模型螺旋模型在笛卡尔坐标的4个象限上分别表达各方面的活动:制订计划:确定软件目标,选定实施方案,弄清项目开发限制条件。风险分析:分析所选方案,考虑如何识别和消除风险。实施工程:实施软件开发。用户评估:评价开发工作,提出修正建议。37软件生命周期模型螺旋模型适用于内部开发大型软件项目风险驱动可以规避风险需要丰富的风向评估经验和知识38软件生命周期模型喷泉模型1.迭代是软件开发过程中普遍存在的一种内在属性2.在面向对象范型中比结构化范型更常见3.喷泉这个词体现了面向对象软件开发过程迭代和无缝的特性4.两个活动可以重叠,保证各项开发活动的无缝过度39软件生命周期模型喷泉模型需求分析面向对象分析面向对象设计编码测试运行进一步开发维护40面向对象的方法学在软件工程过程中应用面向对象的技术41面向对象的方法学面向对象的技术的基本观点客观世界是由对象组成的。具有相同的数据和相同的操作的对象可以归并为一类,对象是类的一个实例。类可以产生对象。类可以派生子类,子类继承父类的特性。对象之间通过消息传递相互联系。42面向对象的方法学面向对象的软件工程方法面向对象的分析(OOA)面向对象的设计(OOD)面向对象的编程(OOP)面向对象的测试(OOT)面向对象的维护(OOSM)43面向对象的方法学需求分析软件设计编码测试与维护OOAOODOOP其他A其他D其他P44面向对象的方法学面向对象技术的应用45面向对象的方法学用稳定把不稳定包装起来46面向对象的方法学1.按照人类的自然思维方式,面对客观世界建立软件系统模型。有利于对问题域和系统责任的理解,有利于人员交流。2.对需求变化的适应性。把最稳定的部分,即对象作为构筑系统的基本单位,而把容易发生变化的部分,既属性与服务,封装在对象之内,对象之间通过接口联系,使得需求变化的影响尽可能地限制在对象内部。47面向对象的方法学可维护性好支持软件重用48面向对象的方法学面向对象的软件开发语言与工具1981推出的Smalltalk-80面向对象的C++、Java等MicroSoft公司的C#计算机辅助软件工程(CASE—ComputerAidedSoftwareEngineering)RationalRose—一个面向对象的且支持UML语言的CASE工具49面向对象的方法学面向对象与面向功能的例子图书馆信息系统面向对象的分析与设计结构化的分析与设级按照对象或概念分解按照功能或过程分解图书目录图书管理员书图书馆System借书管理职工管理统计汇总50参考资料张海藩,软件工程,人民邮电出版社软件过程改进CMM面向对象的软件工程软件配置管理Internet51Question&AnswerThankyou