版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程方法与实践
第2章软件过程
第2章软件过程
O2.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
软件定义时期各阶段任务
软件定义时期是了解用户(或客户)提出的需求、确定
项目的总目标、考察和分析项目的可行性、导出实现项
目目标应该采用的策略,系统的功能,并估计该项目需
要的资源和成本,制定工程进度表等。
软件定义时期可以划分成问题定义、可行性研究、需求
分析和开发计划四个阶段,其中,最核心的是需求分析
阶段,所以,软件定义时期也可以称为需求分析时期。
问题定义和可行性研究
问题定义主要是弄清“用(客)户需要解决什么问题”,
提交关于问题性质、工程规模的系统目标与范围的说明
文档。
可行性研究是确定所定义的问题是不是能够实现,值不
值得实现。为此必须从抽象的概念出发,对项目做一次
简化的需求分析和粗略的系统概要设计,寻求一种至数
种在技术、经济、运行和法律诸方面都可行的解决方案,
并给出可行性论证报告。
需求分析和开发计划
需求分析(阶段)的任务是分析用户对软件系统的全部
需求,确定目标系统的逻辑模型,即目标系统是“做什
么”的,并通过需求规格说明文档准确地表达。
开发计划的任务是在软件项目经过可行性研究和需求分
析之后,制定出主要包括成本估计、资源配置、工程进
度安排的软件项目开发和管理文档。
软件开发时期各阶段任务
软件开发时期的任务是设计和实现已定义的,并经过需
求分析的软件系统。
软件开发时期通常划分成软件设计、软件实现和软件测
试三个阶段。
软件测试也可以分解到软件实现的各个活动中,可重新
划分成编码和单元测试、集成测试、系统测试三个阶段。
甚至,还可以认为软件测试不是一个独立的阶段,因为
它应该和所有软件生产活动并行进行。
软件设计阶段任务
软件设计阶段是为目标系统的逻辑模型设计出一种
(不惟一的)软件实现模型,确定软件的总体结构、
数据结构、算法细节和用户界面,并给出软件设计的
详尽的软件设计说明文档。
软件设计阶段分成总体设计和详细设计两个子阶段。
总体设计是从需求规格说明文档导出软件结构图。
详细设计为软件结构图中的各个模块的数据结构、算
法和模块接口等进行细节设计,并给出过程性描述。
软件实现阶段任务
软件实现阶段的任务是把软件的设计用一种程序设计语
言实现。实现阶段一般分成编码和系统集成两个步骤
(或子阶段)进行。
编码是根据目标系统的性质和实际开发环境,选取一种
适当的程序设计语言,把详细设计的模块过程性描述
“翻译”成所选定程序语言的源程序。
对于多模块的系统集成是把所有的程序模块,按照它的
软件结构组装(集成)成一个完整的软件系统。
软件测试阶段任务
软件测试阶段完成产品交付前的“找错”和“改错”两
大任务,其测试过程必须通过测试报告文档反映。
按照测试活动的目标,软件测试可细分为单元(模块)
测试、综合(集成)测试、确认测试和系统(验收)测
试等多个测试层次。
软件测试是对开发活动的技术复审,也可以分解到软件
实现阶段的各个活动环节。
软件维护时期(阶段)任务
软件维护时期(阶段)任务是在整个软件运行时期内,
当发现错误时加以改正,以确保运行正常;当环境改
变时修改软件,以适应新的环境;当用户有新要求时
及时改进软件,以满足需求等一系列维护活动。
每一项维护活动一般都经过提出(或报告)维护问题、
分析维护要求、提出维护方案、审批维护方案、确定
维护计划、修改软件设计、修改程序、测试/验收、维
护报告等一系列环节(维护活动实质是一次压缩和暂
化了的软件定义和开发过程)。L
2.2典型的软件过程模型
软件工程的前20年,软件过程模型的特征是“线性思维”,
即把软件的开发活动分解成一系列线性的描述、开发、有
效性验证和软件进化等基本过程活动,并且用单独的过程
阶段来表现这些活动。
随着软件规模的不断增长,大型而复杂的软件采用渐增式
或迭代式的开发理念,即把软件的描述、开发、有效性验
证等主要开发活动交替进行,让开发的软件在迭代过程中
逐步完成和完善。
2.2.1瀑布模型
瀑布模型(WaterfallModel)也称线性顺序模型。
瀑布模型把开发过程分成固定的、相对独立的各个阶段,
每个阶段都有确定的、有限的任务,而且在各个阶段采用
一些规范的开发方法和管理手段,力求保证软件质量和提
高软件生产率。
瀑布模型各个阶段的工作顺序展开,恰如“奔流不息、拾
级而下”的瀑布,故而得名。
瀑布模型
问题定义
需求分析
图2.2软件过程的瀑布模型
瀑布模型的特点
L阶段的“里程碑”标志
2.阶段间的顺序性和依赖性
3.复审/验证环节
4.瀑布模型的适用于预先确定型系统
2.2.2快速原型模型
快速原型模型(RapidPrototypeModel,简称原型模型)
打破了瀑布模型的“线性”特征,是一种系统原型化的子
集扩展式开发模式。
原型模型方法采用合理的抽象,快速建立一个旨在展示目
标系统主要功能的软件“样品”——原型系统,取代形
式的、僵硬的(不易更改的)的规格说明,用户通过实际
试用原型系统而提供真实的反馈意见。
抛弃式原型模型
图2.3软件过程的抛弃式原型模型
抛弃式原型模型的特点
抛弃式原型模型建立原型的目的是,评价目标系统的某一
个或某一些特性,以便更准确地确定需求,或者更严格地
验证设计方案。使用完之后就把该原型系统抛弃掉,然后
再重新构造正式的目标系统。
抛弃式原型模型本质上仍属于瀑布模型,建立原型系统只
不过是“需求分析”和“有效性验证”的一种辅助手段,
需求分析阶段结束时原型系统的生存周期也就终止。
演化式原型模型
图2.4软件过程的演化式原型模型
演化式原型模型的特点
①演化式的原型开发,必须从对用户需求把握准确的部分
做起,优先处理这部分工作,而对用户需求把握程度较差
的部分和模糊的需求靠后安排,可以在用户明确要求之后
再处理。
②原型系统的演化过程,可以有效提高系统可靠性、健壮
性和可维护性。
③有效地快速进行原型的建立和迭代,提高开发效益。
④原型的开发提高系统与用户的友善性,并能提早进行实
际系统的应用培训。
2.2.3增量模型
增量模型(IncrementalModel)把软件描述、设计、实
现活动分解成一系列相互有联系的增量构件的迭代开发,
是瀑布模型顺序特征和快速原型模型迭代特征相结合的
一种软件构件化的模型。
增量式的开发过程,首先根据客户需要提供的服务的优
先次序,确定一系列交付增量,每个增量提供系统功能
的一个子集。随着开发过程的进展,每次迭代产生一个
可发布的(可执行的)软件增量构件。
增量模型
系统未
完成
开发增
量i:
图2.5软件过程的增量模型
2.2.4螺旋模型
螺旋模型(SpiralModel)是增加了风险分析和规避措
施的“原型+瀑布”的迭代式开发模型,由于一系列
活动和活动间的回溯过程用螺旋线描述,故而得名。
螺旋模型是一种迭代模型,每迭代一次,螺旋线就前
进一周。当项目开发过程沿螺旋线按顺时针方向前进
时,每一个螺旋周期都包括风险分析(开发的中、后
期实际是设计或实现的风格分析)。
螺旋模型
2.3.1面向对象的基本概念
为了提高软件系统的稳定性、可维护性和复用性,人们
在实践中逐渐创造出软件工程的一种新途径——面向对
象方法学。
从20世纪80年代末开始,面向对象的软件开发得到快速
发展,特别是90年代中期出现的统一建模语言
(UML),把各种面向对象分析方法和设计方法综合
成一个统一标准,使面向对象方法学成为一种主流型的
软件工程方法。
对象的基本概念
⑴对象(Object)
对象是现实世界中任何有意义的、与所要解决的问题有
关系的个体或事物的抽象表示,是它的属性(静态的)
和相关操作(动态的)的统一封装体。属性表示对象的
性质,属性值规定了对象所有可能的状态。对象的操作
(或称做行为)是该对象可以实现的外部服务(响应外
部发来的消息,提供服务)。
对象的定义,一般采用以下格式描述:
对象::=vID,MS,DS,MI>
对象的基本概念
⑵类(Class)
人类习惯于把现实世界中有相似特征的事物归为一类,
所以分类是认识客观世界的基本方法。
类是对具有相同属性和相同操作行为的一组相似对象的
抽象描述,通常这种描述也包括对怎样创建该类的新对
象的说明。所以,类用于表示某些对象的属性和行为的
共同特征。
对象的基本概念
⑶实例(Instance)
类是现实世界中并不真正存在的一组相似对象的抽象。
实例是由某个特定的类所描述的一个具体的对象,也就
是说,对象是类的一个实例。
实际上,类是建立对象时使用的“样板”,按照这个样
板建立的是一个个具体的对象。使用“对象”,既可以
指一个具体的对象,也可以泛指一般的对象;而使用
“实例”,必然是指一个具体的对象。
对象的基本概念
(4)继承(Inheritance)
继承在面向对象方法中表示类之间的内在联系,以及对
属性和行为的共享。
类之间可以存在继承机制,即类共享基类中定义的数据
和方法。类的继承具有传递、单继承和多重继承性质。
在面向对象方法中,大量存在的“部分一整体”关系,
表示为类之间的聚集关系。在聚集关系下,类组成了一
个有“部分一整体”层次结构的系统。“部分”类的对
象是“整体”类对象的一个组成部分。
对象的基本概念
(5)消息(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版港口工程保险合同3篇
- 二零二五版涵洞工程环保监测合同3篇
- 二零二五版反担保合同模板:供应链金融3篇
- 二零二五年计时工劳动合同管理与心理关怀协议3篇
- 二零二五年度软件开发项目合同及其廉洁规定2篇
- 二零二五版教育SaaS平台软件服务合同3篇
- 二零二五版粉煤灰运输安全规范与应急预案编制合同3篇
- 二零二五年度特种饲料原料采购合同模板2篇
- 二零二五年防火墙安全防护系统集成与维护合同3篇
- 二零二五年度大数据中心建设与运营劳务分包合同3篇
- 2024版塑料购销合同范本买卖
- 【高一上】【期末话收获 家校话未来】期末家长会
- JJF 2184-2025电子计价秤型式评价大纲(试行)
- 二年级下册加减混合竖式练习360题附答案
- 2021年道路交通安全法期末考试试题含答案
- 股东变更情况报告表
- 自带药物治疗告知书
- 房产中介门店6S管理规范
- 吞咽解剖和生理研究
- TSG11-2020 锅炉安全技术规程
- 异地就医备案个人承诺书
评论
0/150
提交评论