软件系统分析与设计 | 软件开发模型理解

一、瀑布模型、增量模型、螺旋模型(含原型方法)

瀑布模型

瀑布模型的开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段。

优点:
1、为项目提供了按阶段划分的检查点。
2、当前一阶段完成后,只需要去关注后续阶段。
3、可在迭代模型中应用瀑布模型。
4、提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
缺点:
1、各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
2、由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3、通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4、瀑布模型的突出缺点是不适应用户需求的变化。

增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
优点:
1、将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
2、以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
3、开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
缺点:
1、增量模型对软件设计有更高的技术要求,特别是对软件体系结构,要求它具有很好的开放性与稳定性,能够顺利地实现构件的集成。
2、在把每个新的构件集成到已建软件系统的结构中的时候,一般要求这个新增的构件应该尽量少地改变原来已建的软件结构。

原型模型

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。
优点:
1、设计上的灵活性,可以在项目的各个阶段进行变更。
2、以小的分段来构建大型系统,使成本计算变得简单容易。
3、客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4、随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
5、客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点:
很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

二、统一过程三大特点

(1)统一过程是用例驱动的

用户(User) :软件系统是为了解决用户的需求的,因此对于一个系统必须首先确定它的用户(User),即参与者。这个User不仅仅指人,也可以是其他系统。即用户是与系统进行交互的事物。
用例(User Case) :是用户对系统的业务需求,即用例是能够像用户提供有价值结果的系统中的一种功能。
所有的用户和用例组合在一起就是用例模型,它描述了系统的全部功能。用例图促使我们从系统对用户的价值方面来考虑问题,是站在用户的角度出发,以人为本。并且用例图不仅能确定用户的需求,还可以驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。用例驱动表明开发过程是沿着一个流——一系列从用例得到的工作流前进的:用例被确定、用例被设计、最后用例又称为测试人员构造测试用例的基础

(2)统一过程是以架构为中心的

什么是软件架构?
软件架构的作用与建筑架构所起的作用类似。软件系统的架构是从不同的角度描述即将构造的系统。

注意:软件架构(software architecture),是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。它描述的对象是直接构成系统的抽象组件,各个组件之间的连接明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,在面向对象领域中,组件之间的连接通常用接口来实现。
软件架构包含了系统中最重要的静态和动态特征。架构刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特性,然而“究竟什么是重要的”部分依赖于判断,而判断由来自于经验,所以架构的价值也就依赖于执行该任务的人的素质,在架构的过程中可以帮助架构师确定正确的目标。

用例和架构之间是什么关系?
每一种产品都具有功能和表现形式两个方面,其中功能与用例相对应,表现形式与架构相对应。因此用例在实现时必须适应于架构,然而随着系统的发展,用例也在不断的进化,所以架构必须设计得使系统能够进化,不仅要考虑系统的初始开发,而且要考虑将来的发展。为了能够找到这样的一种表现形式(架构),架构师必须从全面了解系统的主要功能(即主要用例)入手,这些主要的用例构成了系统的核心功能。

架构应该遵循什么步骤?
首先,从不是专门针对用例的那部分架构开始,如平台,创建一个粗略的架构轮廓。
其次,着手处理已经确定重要的用例子集,这些用例代表着即将开发系统的主要功能,详细描述每一个用例,并通过子系统、类和构件来实现。随着用例的描述趋于完善,架构的更多部分便会显现出来,从而也使更多的用例趋于完善。
最后,迭代这个工程直到确信得到一个稳定的架构为止。

(3)统一过程是迭代和增量的过程

软降开发是一项复杂的过程,因此可以将这些项目划分为切实可行并能够产生一个增量的迭代过程。

什么是迭代和增量?
迭代:工作流中的步骤;
增量:产品中增加的部分。

迭代的原则是什么?
为了获得最佳的效果,迭代过程必须是受控的(Controlled),也就是说他们必须按照计划好的步骤有选择地执行。

如何确定迭代过程中要实现的目标呢?
首先迭代过程就是用来处理一组用例的,这些用例组合起来就能够扩展所开发产品的可用性。其次迭代过程要解决最突出的风险问题。只有这样后续的迭代过程才能建立在前一次迭代过程的基础上。

迭代的过程是什么?
以选定的架构为向导,用构件来实现设计前期已经标识并详细描述好的有关用例。如果一次迭代达到了目的,就可以进入下一次迭代,如果一次迭代没有带到预期的目标,那么必须重新审核前面的方法,并尝试一种新的方法。

对增量的理解
一个增量不一定是对原有制品的增加,在生命周期初始期,增量是对最初简单设计的完善和改进;而在以后的阶段增量通常是对原有制品的增加。

与面向对象的关系

统一过程是基于架构的,它采用新的可视化建模标准,即统一建模语言(UML),它依赖三个关键概念——用例驱动、以架构为中心及迭代和增量式的开发。而这些都建立在面向对象的基础之上。

三、统一过程四个阶段

每次迭代分为四个阶段:初始、细化、构造和移交。

每次迭代都要经历一定的时间,这个迭代的时间又可以分为四个阶段:初始、细化、构造和移交。而在每个阶段,管理人员或开发人员又可以将本阶段的工作进一步划分为多次迭代过程以及每次迭代过程所产生的增量。每个阶段都以一个里程碑作为结束标记,并可以获得一组可用的制品来定义每个里程碑。
初始阶段(inception phase)
主要回答下列问题:

  • 系统向每个主要用户提供什么基本功能?(确定参与者和用例)
  • 该系统的基本粗略构架是什么?(包括主要子系统的大致轮廓)
  • 开发该产品的计划是什么?
  • 开销多大?(可行性分析)

里程碑:这个阶段最主要的是确定项目的风险及其优先次序,并对细化阶段进行详细规划和对整个项目进行粗略计算。

细化阶段(elaborattion phase)
根据主要的用例描述设计出详细的系统构架。构架包括了用例模型、分析模型、设计模型、实现模型(包含一些构件)和实施模型的视图。

里程碑:这个阶段主要是解决用例、构架和计划是否足够稳定可靠,风险释放得到充分控制,以便能够按照合同的规定完成整个开发任务。

构造阶段(construction phase)
在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。

里程碑:构造出最终产品。

移交阶段(transition phase)
包括产品进入beta版后的整个阶段。开发人员改正用户报告产品的缺陷和不足。

里程碑:确定最终目标 是否实现,是否应该开始产品下一个版本的另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段相重合。

四、软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

采用统一过程,将软件开发过程的每次迭代分为四个阶段:初始、细化、构造和移交,明确了不同阶段迭代的里程碑与目标;支持 CI/CD 的版本交付;为固定项目周期提供了可能。利用软件产品范围的弹性,合理规划范围(20%业务决定80%满意度),使得软件生产按 固定节奏 运行,固定迭代周期、固定开发周期、固定升级周期。

给企业管理带来的好处

  • 每个迭代产品在增量(制品是可运行的),利于及时交付给客户使用并反馈,提高企业竞争力;
  • 固定的迭代周期(等量的人月),利于量化团队/个人生产率
  • 建立了简洁和清晰的过程结构,为开发过程提供较大的通用性
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值