软件工程师-开发周期模型
2023-10-27 07:34:34 0 举报
AI智能生成
软件工程师-开发周期模型
作者其他创作
大纲/内容
瀑布模型
也称生命周期法,是生命周期法中最常用的开发模型,它把软件开发的过程分为
软件计划,需求分析,软件设计,程序编码,软件测试和运行维护 6个阶段
软件计划,需求分析,软件设计,程序编码,软件测试和运行维护 6个阶段
软件计划
主要确定软件的开发目标及其可行性
需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件开发项目的成功打下良好的基础
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件开发项目的成功打下良好的基础
软件设计
主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等。
软件设计一般分为总体设计(概要设计)和详细设计
软件设计一般分为总体设计(概要设计)和详细设计
程序编码
将软件设计的结果转换成计算机可运行的程序代码。在程序编写中必须制定统一,
符合标准的编写规范,以保证程序的可读性,易维护性,提高程序的运行效率
符合标准的编写规范,以保证程序的可读性,易维护性,提高程序的运行效率
软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
软件维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,
软件不能继续适应用户的要求,要延续软件的使用寿命,就必须对软件进行维护。
软件不能继续适应用户的要求,要延续软件的使用寿命,就必须对软件进行维护。
瀑布模型存在的缺陷
由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间间隔长,也增加了一定的风险
在软件开发前未发现的错误传到后面的开发活动中时,可能会扩散,进而可能导致整个软件项目开发失败
在软件需求分析阶段,完全确定用户的需求是比较困难的,甚至可以说是不可能的;
增量模型
增量模型融合了瀑布模型的基本成分和原型实现的迭代特征。
增量模型采用随着时间的进展而交错的线性序列,每一个线性的序列产生软件一个可交付的“增量”
当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布
客户对每一个增量的使用和评估,都作为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断重复,直到产生最终的产品
增量模型强调每一个增量均发布一个可操作的产品
增量模型将功能细化,分别开发的方法适用于需求经常改变的软件开发过程
优点
人员配置灵活,刚开始不用投入大量人力资源,当产品受欢迎,可以增加人力实现下一个增量
它提供了一种先推出核心产品的途径,这样就可以先发布功能给客户,对客户起到镇定剂的作用
有计划的管理技术风险
缺点
如果增量包之间存在相交的情况且不能很好的处理,就必须做全盘的系统分析
螺旋模型
螺旋模型将瀑布模型和变换模型相结合,它综合了两者的优点,并增加了风险分析。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈都经过定制计划,风险分析,实施工程,客户评价等活动,并开发原型的一个新版本。经过若干次的螺旋上升的过程,得到最终的系统。
喷泉模型
喷泉模型对软件复用和生命周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。“喷泉”一词体现了迭代和无间隙特征。系统的某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发过程中,分析,设计和编码之间不存在明显的边界;
智能模型
V模型
V模型宣称测试并不是一个事后弥补的行为,而是一个同开发过程同样重要的过程;V模型的价值在于它非常明确的表明了测试过程中存在的不同级别,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系。
需求分析 对应 验收测试
验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要
概要设计 对应 系统测试
系统测试主要针对概要设计,检查系统作为一个整体是否有效的得到运行
详细设计 对应 集成测试
集成测试的主要目的是针对详细设计中可能存在的问题,尤其是检查各单元与其他程序部分之间的接口上可能存在的错误
软件编码 对应 单元测试
单元测试的主要目的是针对编码过程中可能存在的各种错误
RAD模型
快速应用开发模型是一个增量型的软件开发过程,强调极短的开发周期。RAD 模型是瀑布模型的:“高速”变种,通过大量使用可复用构件,采用基于构件的方法赢得快速开发 。其流程是从业务建模开始,随后是数据建模,过程建模,应用生成,测试及反复;
业务建模
以什么信息驱动业务过程运作?要生成什么信息?谁生成它?信息流的去向,由谁处理。可以使用数据流图
数据建模
以支持业务过程的数据流,找数据对象集合,定义数据属性,与其他数据对象的关系构成数据模型,可使用E-R图
过程建模
使数据对象在信息流中完成业务功能。创建过程以描述数据对象的增删改查,细化数据流图的处理
应用程序生成
利用第四代语言(4GL)写出处理程序,复用已有构件或创建新的可重复构建,利用环境提供的工具自动生成并构造出整个应用系统
测试与交付
由于大量重用,所以只做整体测试,但新构件还是要测试的
如果一个业务能够被模块化使得其中每个主要功能均可以在不到三个月的时间内完成,那么他就是RAD 的一个候选者。每个功能可由单独的RAD 组来实现,最后集成起来形成一个整体
缺点
并非所有的应用都适用于RAD。RAD 模型对模块化要求比较高,如果有哪一项不能被模块化,那么建造RAD 所需要的构件就会有问题
如果高性能是一个指标,且该指标必须通过调整个接口使其适应系统才能赢得,RAD 方法也有可能不能奏效;
开发和客户必须在很短的时间内完成一系列的需求分析,任何一方配合不当都会导致RAD 项目失败
RAD 只能用于信息系统开发,不适合技术风险很高的情况。当一个新应用采用很多新技术或当新软件要求与已有的计算机程序有较高的互操作性时,这种情况就会发生。
CBSD模型
基于构件的模型
构件是一个具有可重用价值的,功能相对独立的软件单元。基于构件的软件开发模型是利用模块化方法,
将整个系统模块化,并在一定构件模型的支持下,复用构件库的一个或多个软件构件,通过组合手段高效率,高质量的构造应用软件系统的过程。
将整个系统模块化,并在一定构件模型的支持下,复用构件库的一个或多个软件构件,通过组合手段高效率,高质量的构造应用软件系统的过程。
构件工具
microsoft 的 Dcom
Sun 的 EJB
OMG 的 CORBA
优点
不再一切从头开始,开发的过程就是构件组装的过程,维护的过程就是构件升级,替换和扩充的过程;
软件的复用,提高开发效率
可由一方定义其规格说明,被另一方发现,然后提供给第三方使用
允许多个项目同时开发,降低了费用,提高了可维护性,可实现分布提交软件产品
缺点
采用自定义的组装结构标准,缺乏通用的组装结构标准,引入具有较大的风险;
可重用性和软件高效性不易协调 ,需要有经验的分析人员和开发人员
过分依赖于构件,构件库的质量影响了产品的质量
为了降低开发费用,提高生产率,以及在快速的技术演化面前提供受控的系统升级的开发方式,就催生了基于构件的开发CBSD
它通过有计划的集成现有的软件部分来进行软件开发。
它可以有效地遏制复杂性,缩短发布时间,提高一致性,更有效地利用本领域的最佳方法,提高生产率,增加项目进度的可视性,支持并行和分布式的开发,减少维护费用。
在面向对象方法中,一个构建由一组对象构成,包含了一些协作类的集合,他们共同工作来提供一种系统功能。
构件具有五个基本要素
规格说明
一个或多个实现
受约束的构件标准
包装方法
部署方法
原型方法
软件原型是提出的新产品的部分实现,建立原型的主要目的是为了解决在产品开发的早期阶段需求不确定的问题,
其目的是明确完善需求,探索设计选择方案,发展为最终的产品
其目的是明确完善需求,探索设计选择方案,发展为最终的产品
原型是否实现功能
水平原型
也成为行为原型,用来探索预期系统的一些特定行为,并达到细化需求的目的,是功能的导航,并未实现需求。
垂直原型
也成为结构化原型,实现了部分功能,用在复杂算法实现上
原型的最终结果
抛弃型原型 探索型原型
指达到预期目的后,原型本身被抛弃
演化型原型
演化型原型为开发增量式产品提供基础,是螺旋模型的一部分,也是面向对象软件开发过程的一部分。
主要用在必须易于升级和优化的项目,适用于Web项目
主要用在必须易于升级和优化的项目,适用于Web项目
原型法成败的关键及效率的高低在于模型的建立及建模的速度
XP方法
XP 是一种轻量(敏捷),高效,低风险,柔性,可预测,科学的软件开发方式。
P 由价值观,原则,实践,行为四个部分组成,
他们彼此相互依赖,关联,并通过行为贯穿整个生命周期
在更短的时间内,更早的提供具体,持续反馈信息
迭代的进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展他
依赖于自动测试程序来监控开发进度,并及早捕获缺陷
依赖于口头交流,测试和源程序进行沟通
倡导持续演进式的设计
依赖于开发团队的紧密合作
尽可能达到程序员短期利益和项目长期利益的平衡
4大价值观
沟通,简单,反馈,勇气
5个原则
快速反馈,简单性假设,逐步修改,提倡更改 ,优质工作
12个最佳实践
计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结
对编程、集体代码所有制、持续集成、每周工作40小时、现场客户、编码标准
小步快走的开发策略,因此工作质量不能打折扣,通常采用测试先行的编码方式来提供支持
RUP 模型
RUP是一个统一的软件开发过程,是一个通用过程框架,可以应付种类广泛的软件系统,不同的应用领域,不同的组织类型,不同的性能水平和不同的项目规模。
RUP 是基于构件的,RUP使用的统一建模语言 UML。
RUP 三个显著的特点
用例驱动
以基本架构为中心
迭代和增量
四个顺序阶段
初始阶段
细化阶段
构建阶段
交付阶段
每个阶段结束后都要安排一次技术评审,以确定这个阶段的目标是否已经满足
RUP 工作流程分为两个部分
核心工作流程
业务需求建模
分析设计
实施
测试
部署
核心支持工作流程
环境
项目管理
配置
变更管理
AUP 敏捷统一过程
采用“在大型任务上连续”以及“在小型任务上迭代”的原理来构建软件系统
采用经典的UP 阶段性活动
初始
精华
构件
转换
提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流
0 条评论
下一页