软件工程方法与实践2-过程_第1页
软件工程方法与实践2-过程_第2页
软件工程方法与实践2-过程_第3页
软件工程方法与实践2-过程_第4页
软件工程方法与实践2-过程_第5页
已阅读5页,还剩42页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程方法与实践第2章软件过程电子教案第2章

软件过程2.1软件过程概述2.2典型的软件过程模型2.3面向对象的软件过程模型2.4小结2.1软件过程概述 软件工程是一种层次化技术,是建立在以质量焦点为基础的,分过程、方法和工具三个研究层次的综合技术。图2.1软件工程层次图工具方法过程质量焦点2.1.1过程、方法和工具

过程层(基础层)是方法和技术结合在一起的凝聚力。软件过程定义了一个关键过程区域(阶段)的划分,确立了各阶段之间的关系,其中规定了技术方法的采用、工程产品(模型、数据、文档等)的产生、质量的保证,以及对开发进程的适当管理。

方法层提供了建造软件在技术上“如何做”。软件工程方法涵盖在一系列开发过程的任务中。方法依赖于一组基本原则得以实施。这些原则控制了每一个技术区域的建模活动和其他描述技术。

工具层对过程和方法提供了自动化支持。2.1.2软件生存周期

软件生存周期(SoftwareLifeCycle):一个软件项目从问题提出开始,直到软件产品最终退役(废弃不用)为止。软件生存周期方法学把整个生存周期划分为多个相对独立的较小阶段,给每个阶段赋予确定而有限的任务,从而降低了整个软件工程的难度,提高了软件开发生产率;对软件生存周期的每个阶段采用科学的、规范的方法和管理,使软件开发全过程以一种有条不紊的方式进行,保证了软件质量,提高了软件的可维护性和软件开发的成功率。软件过程开发标准的要点 ①采用生存周期方法学开发软件,必须从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行。 ②划分阶段应遵循的基本原则是各阶段的任务彼此之间尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件开发过程的组织和管理。 ③每个阶段有相对独立的任务,前一个阶段任务的完成是后一个阶段任务开始的前提和基础,而后一阶段任务的完成是前一阶段提出“解”的进一步具体化和实现细节。软件过程开发标准的要点

④每一个阶段的开始和结束都有严格标准。对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。每一个阶段结束之前,都必须对这个阶段的成果进行严格的技术复审和管理审查。审查的主要对象是每个阶段都应该提交的、最新版本的、高质量的相关文档资料。 ⑤完成每个阶段的任务,应该采用适合该阶段任务特点的规范方法和系统化技术。2.1.3软件过程模型

软件过程模型(软件生存周期模型),是把软件生存周期中软件生产活动的有序流程用一个合理的框架——开发模型规范描述。 软件过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。 软件过程模型主要是根据软件的类型、规模,特别是软件的开发方法、开发环境等多种因素确立模型。 2.1.4软件过程各阶段任务

各种软件过程模型虽然有所不同,一般都由软件定义、软件开发和软件维护三个时期组成,每个时期又可由多个阶段(子阶段)组成。 软件定义时期的活动是弄清软件“做什么”,软件开发时期的活动是集中解决软件“怎样做”,软件维护时期的活动是聚焦于软件的“修改/完善”,它们的主要活动特征可以概括为“What-How-Change”。软件定义时期各阶段任务

软件定义时期是了解用户(或客户)提出的需求、确定项目的总目标、考察和分析项目的可行性、导出实现项目目标应该采用的策略,系统的功能,并估计该项目需要的资源和成本,制定工程进度表等。 软件定义时期可以划分成问题定义、可行性研究、需求分析和开发计划四个阶段,其中,最核心的是需求分析阶段,所以,软件定义时期也可以称为需求分析时期。问题定义和可行性研究

问题定义主要是弄清“用(客)户需要解决什么问题”,提交关于问题性质、工程规模的系统目标与范围的说明文档。

可行性研究是确定所定义的问题是不是能够实现,值不值得实现。为此必须从抽象的概念出发,对项目做一次简化的需求分析和粗略的系统概要设计,寻求一种至数种在技术、经济、运行和法律诸方面都可行的解决方案,并给出可行性论证报告。

需求分析和开发计划

需求分析(阶段)的任务是分析用户对软件系统的全部需求,确定目标系统的逻辑模型,即目标系统是“做什么”的,并通过需求规格说明文档准确地表达。 开发计划的任务是在软件项目经过可行性研究和需求分析之后,制定出主要包括成本估计、资源配置、工程进度安排的软件项目开发和管理文档。

软件开发时期各阶段任务

软件开发时期的任务是设计和实现已定义的,并经过需求分析的软件系统。

软件开发时期通常划分成软件设计、软件实现和软件测试三个阶段。

软件测试也可以分解到软件实现的各个活动中,可重新划分成编码和单元测试、集成测试、系统测试三个阶段。甚至,还可以认为软件测试不是一个独立的阶段,因为它应该和所有软件生产活动并行进行。

软件设计阶段任务

软件设计阶段是为目标系统的逻辑模型设计出一种(不惟一的)软件实现模型,确定软件的总体结构、数据结构、算法细节和用户界面,并给出软件设计的详尽的软件设计说明文档。 软件设计阶段分成总体设计和详细设计两个子阶段。

总体设计是从需求规格说明文档导出软件结构图。

详细设计为软件结构图中的各个模块的数据结构、算法和模块接口等进行细节设计,并给出过程性描述。软件实现阶段任务

软件实现阶段的任务是把软件的设计用一种程序设计语言实现。实现阶段一般分成编码和系统集成两个步骤(或子阶段)进行。

编码是根据目标系统的性质和实际开发环境,选取一种适当的程序设计语言,把详细设计的模块过程性描述“翻译”成所选定程序语言的源程序。 对于多模块的系统集成是把所有的程序模块,按照它的软件结构组装(集成)成一个完整的软件系统。软件测试阶段任务

软件测试阶段完成产品交付前的“找错”和“改错”两大任务,其测试过程必须通过测试报告文档反映。 按照测试活动的目标,软件测试可细分为单元(模块)测试、综合(集成)测试、确认测试和系统(验收)测试等多个测试层次。

软件测试是对开发活动的技术复审,也可以分解到软件实现阶段的各个活动环节。软件维护时期(阶段)任务

软件维护时期(阶段)任务是在整个软件运行时期内,当发现错误时加以改正,以确保运行正常;当环境改变时修改软件,以适应新的环境;当用户有新要求时及时改进软件,以满足需求等一系列维护活动。 每一项维护活动一般都经过提出(或报告)维护问题、分析维护要求、提出维护方案、审批维护方案、确定维护计划、修改软件设计、修改程序、测试/验收、维护报告等一系列环节(维护活动实质是一次压缩和简化了的软件定义和开发过程)。2.2典型的软件过程模型 软件工程的前20年,软件过程模型的特征是“线性思维”,即把软件的开发活动分解成一系列线性的描述、开发、有效性验证和软件进化等基本过程活动,并且用单独的过程阶段来表现这些活动。 随着软件规模的不断增长,大型而复杂的软件采用渐增式或迭代式的开发理念,即把软件的描述、开发、有效性验证等主要开发活动交替进行,让开发的软件在迭代过程中逐步完成和完善。2.2.1瀑布模型

瀑布模型(WaterfallModel)也称线性顺序模型。 瀑布模型把开发过程分成固定的、相对独立的各个阶段,每个阶段都有确定的、有限的任务,而且在各个阶段采用一些规范的开发方法和管理手段,力求保证软件质量和提高软件生产率。 瀑布模型各个阶段的工作顺序展开,恰如“奔流不息、拾级而下”的瀑布,故而得名。瀑布模型

问题定义软件维护(运行时期)图2.2软件过程的瀑布模型退役需求分析软件设计软件实现软件测试瀑布模型的特点

1.阶段的“里程碑”标志 2.阶段间的顺序性和依赖性 3.复审/验证环节 4.瀑布模型的适用于预先确定型系统2.2.2快速原型模型

快速原型模型(RapidPrototypeModel,简称原型模型)打破了瀑布模型的“线性”特征,是一种系统原型化的子集扩展式开发模式。 原型模型方法采用合理的抽象,快速建立一个旨在展示目标系统主要功能的软件“样品”————原型系统,取代形式的、僵硬的(不易更改的)的规格说明,用户通过实际试用原型系统而提供真实的反馈意见。抛弃式原型模型需求分析软件维护(运行时期)图2.3软件过程的抛弃式原型模型退役原型开发原型评价软件设计软件实现用户反馈抛弃式原型模型的特点

抛弃式原型模型建立原型的目的是,评价目标系统的某一个或某一些特性,以便更准确地确定需求,或者更严格地验证设计方案。使用完之后就把该原型系统抛弃掉,然后再重新构造正式的目标系统。 抛弃式原型模型本质上仍属于瀑布模型,建立原型系统只不过是“需求分析”和“有效性验证”的一种辅助手段,需求分析阶段结束时原型系统的生存周期也就终止。演化式原型模型是交付目标系统建立/完善原型系统充分吗?否图2.4软件过程的演化式原型模型使用原型系统需求抽象描述演化式原型模型的特点

演化式原型模型是一种迭代式的动态开发方法。 ①演化式的原型开发,必须从对用户需求把握准确的部分做起,优先处理这部分工作,而对用户需求把握程度较差的部分和模糊的需求靠后安排,可以在用户明确要求之后再处理。 ②原型系统的演化过程,可以有效提高系统可靠性、健壮性和可维护性。 ③有效地快速进行原型的建立和迭代,提高开发效益。 ④原型的开发提高系统与用户的友善性,并能提早进行实际系统的应用培训。2.2.3增量模型

增量模型(IncrementalModel)把软件描述、设计、实现活动分解成一系列相互有联系的增量构件的迭代开发,是瀑布模型顺序特征和快速原型模型迭代特征相结合的一种软件构件化的模型。 增量式的开发过程,首先根据客户需要提供的服务的优先次序,确定一系列交付增量,每个增量提供系统功能的一个子集。随着开发过程的进展,每次迭代产生一个可发布的(可执行的)软件增量构件。 增量模型

图2.5软件过程的增量模型增量设计规格说明实现和测试与系统集成开发增量i:目标系统增量需求需求分析设计系统结构开发增量系统验证系统未完成2.2.4螺旋模型

螺旋模型(SpiralModel)是增加了风险分析和规避措施的“原型+瀑布”的迭代式开发模型,由于一系列活动和活动间的回溯过程用螺旋线描述,故而得名。 螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。当项目开发过程沿螺旋线按顺时针方向前进时,每一个螺旋周期都包括风险分析(开发的中、后期实际是设计或实现的风格分析)。螺旋模型需求分析确定目标,选择方案,设定约束条件计划下一阶段风险(风格)分析,风险解决开发、验证本级产品开发原型,原型评价定义仿真或模型、基准测试图2.6软件过程的螺旋模型规格说明设计测试实现2.3.1面向对象的基本概念

为了提高软件系统的稳定性、可维护性和复用性,人们在实践中逐渐创造出软件工程的一种新途径——面向对象方法学。 从20世纪80年代末开始,面向对象的软件开发得到快速发展,特别是90年代中期出现的统一建模语言(UML),把各种面向对象分析方法和设计方法综合成一个统一标准,使面向对象方法学成为一种主流型的软件工程方法。 对象的基本概念

⑴

对象(Object)

对象是现实世界中任何有意义的、与所要解决的问题有关系的个体或事物的抽象表示,是它的属性(静态的)和相关操作(动态的)的统一封装体。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作(或称做行为)是该对象可以实现的外部服务(响应外部发来的消息,提供服务)。 对象的定义,一般采用以下格式描述:对象∷=<ID,MS,DS,MI>对象的基本概念

⑵类(Class)

人类习惯于把现实世界中有相似特征的事物归为一类,所以分类是认识客观世界的基本方法。 类是对具有相同属性和相同操作行为的一组相似对象的抽象描述,通常这种描述也包括对怎样创建该类的新对象的说明。所以,类用于表示某些对象的属性和行为的共同特征。对象的基本概念

⑶实例(Instance)

类是现实世界中并不真正存在的一组相似对象的抽象。实例是由某个特定的类所描述的一个具体的对象,也就是说,对象是类的一个实例。 实际上,类是建立对象时使用的“样板”,按照这个样板建立的是一个个具体的对象。使用“对象”,既可以指一个具体的对象,也可以泛指一般的对象;而使用“实例”,必然是指一个具体的对象。对象的基本概念

⑷继承(Inheritance)

继承在面向对象方法中表示类之间的内在联系,以及对属性和行为的共享。 类之间可以存在继承机制,即类共享基类中定义的数据和方法。类的继承具有传递、单继承和多重继承性质。 在面向对象方法中,大量存在的“部分—整体”关系,表示为类之间的聚集关系。在聚集关系下,类组成了一个有“部分—整体”层次结构的系统。“部分”类的对象是“整体”类对象的一个组成部分。对象的基本概念

⑸消息(Message)

消息是某个对象执行它的类所定义的某个操作的规格说明。消息传递是对象与其外部世界相互关联的惟一途径。 对象可以向其他对象发送消息以请求服务,也可以响应其他对象传递的消息,完成自身某些操作,从而服务于其他对象。

面向对象方法的特点

面向对象方法是综合运用对象、类、继承、消息四个核心概念进行软件开发的方法。面向对象=对象+分类+继承+消息通信 ①与人类习惯思维方法的一致性 ②稳定性好 ③可复用性好 ④

可维护性好

面向对象软件的开发特点 ◆面向对象方法并不是基于某个开发模式的技术,它适用于任何开发模式。 ◆面向对象方法的开发活动在软件生存周期的分析、设计和实现阶段之间反复迭代,重点是放在的分析阶段。这是因为,面向对象方法在开发早期就定义了一系列面向问题的对象,即建立了一个对象模型。整个开发过程统一使用了这些对象,并不断地充实和扩充对象模型。不仅如此,所有其他概念,如功能、关系、事件等,也都是围绕对象模型组成的。面向对象软件的开发特点 ◆为了保证从分析阶段得到的对象信息,在以后的开发阶段被使用,并被不断地充实和扩充,面向对象开发过程的各个阶段使用统一的概念和描述符号。那么,各个阶段的划分自然就不重要、不明显了。因此,开发阶段界限模糊,或者说开发过程是“无缝”连接的。这有利于实现开发过程的逐步求精、开发活动的多次反复迭代。

2.3.2软件开发统一过程

软件开发统一过程(RUP,RationalUnifiedProcess)是基于面向对象统一建模语言UML的一种面向对象的软件过程模型。 RUP遵循了逐步求精的、迭代的开发策略。RUP是以使用实例(用例)为驱动,以系统架构为中心的一个迭代式的增量过程。 RUP分成初始、细化、构造和移交四个阶段,每个阶段又分成若干次迭代,每次迭代都经过一个核心工作流程。RUP初始阶段的主要工作

初始阶段确定所设立的项目是否可行。 ①对需求有一个大概的了解,确定系统中的大多数角色和用例(简要的)。 ②划分主要子系统,给出系统的体系结构概貌。 ③分析项目执行的风险。 ④考虑时间、经费、技术、项目规模和效益等因素。 ⑤

制定出开发计划。RUP细化阶段的主要工作

细化阶段识别出剩余的大多数用例。对当前迭代的每个用例进行细化,分析用例的处理流程、状态细节,以及可能发生的状态改变。

①分析项目是否存在需求、技术、技能、政策等风险。 ②进行高层分析和设计,并做出结构性决策。建立简要体系结构,包括用例列表、领域概念模型和技术平台等。 ③

为构造阶段制定计划。

RUP构造和移交阶段的主要工作

构造阶段识别出最后剩余的用例。每一次迭代开发都对用例进行分析、设计、编码、测试和集成过程,所得到产品满足项目需求的一个子集。 在代码完成后,要保证其符合标准和设计规则,并要进行质量检查。对于新出现的变化,要通过逆向工具把代码转换为模型,对模型进行修改,再重新产生代码,以保证软件与模型同步。

移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论