软件生存周期过程及其模型

  记录软件工程基础的学习过程,第二篇:软件生存周期过程及其模型。

软件生存周期过程

软件生存周期

   软件生存周期(software life circle)又称软件生命期,生存期。它是指从形成软件开发概念开始,到软件投入使用,再到软件失去价值而消亡的整个过程。

软件生存周期过程

   软件生存周期过程,是规定了获取供应开发操作维护软件时,要实施的过程活动任务(见下文)。它旨在提供一个公共的框架,方便使用“相同的语言”(可理解为相同的标准,规则)在自己的环境中创作和管理软件。

国标软件生存周期过程

   国标将软件生命周期可能执行的活动分为5个基本过程,9个支持过程,7个组织过程。每个过程可能会划分出若干活动,每个活动又可能划分出若干任务
   其中基本过程是不可或缺的,支持过程是支持基本过程的,而组织过程可以简单地理解为组织管理人财物。
   下面以国标GB/T8566-2007 和基本过程中的供应过程为例。

  国标软件生存周期过程只是为了我们划定了一个大的框架,软甲开发中要根据具体的情况采用其中部分活动,由此导出了各种软件生存周期模型。

软件生存周期模型

软件生存周期过程和模型的关系

  从上文也应该知道了,软件生存周期模型是选取了软件生存周期过程中的部分活动。因为在实际软件开发过程中,不能一味地照搬模板,而是要根据项目和应用的性质,采用合适的方法与工具,对软件进行开发和维护。由此催生了各种软件生存周期模型。

经典模型介绍

  下方的所有图片都是来自老师给的PPT截图,不是原创。

瀑布模型(最经典的模型)

瀑布模型特点:

  1. 阶段间具有有序性和依赖性。阶段必须完成之后,才能进行下一阶段。瀑布模型提出之前,软件开发是无序化的,这就导致了开发效率低的问题,而瀑布模型的出现使得软件开发变得有序,软件的效率和质量都大大地提高。
  2. 推迟实现。其实真正编码之前,会进行大量的分析与设计工作。在构建大型应用时,软件的维护消耗的精力与物力远远超过开发。所以为了减少问题的产生,降低维护的代价,所以会做好分析与设计工作,推迟编码。
  3. 文档驱动。每一个阶段都会产生文档。这样有两个好处,第一,每个阶段结束前都会对文档进行审查,审查严格之后才会交给下一阶段,这样是质量得到了保证,也为以后维护提供了宝贵的资料。第二,每一个阶段开始前,开发人员可以参考前一阶段的文档,快速开始本阶段的工作。

瀑布模型缺点:

  1. 瀑布模型的缺点主要在于在实际开发中不可能不会出现问题,一旦出现问题之后,回溯到前面阶段的代价实在太大,有可能会终止项目。
  2. 由于产品是一次性交付给用户,如果用户的需求与实际的产品不符,同样会产生上述回溯到前面阶段代价太大的问题。
原型模型

  基于用户的需求和实际产品不相符的情况,那就出现了一种模型叫做原型模型。

原型模型特点:

  1. 不断快速修改系统,以期尽早用户见面,用户提出意见后,又快速修改,交付给用户查看。
  2. 不注重维护和质量。

原型模型的缺点:

  1. 基于原型模型的特点,它是不可能作为最终系统交付给用户的,原型系统最终可能会被废弃,可以认为它的作用只是为了不断明确用户的请求。
  2. 不适合小型项目。简单来说,用原型不断修改以满足用户是需要代价的,如果是小型项目,受众不广,资金不足,只搞个原型估计就让项目夭折了。
RAD模型

  基于前面两个模型,你就知道这个模型是干啥的了。我如果能集合原型模型和瀑布模型的优点,不是很好?

  RAD模型的基本思想是采用大量的人力物力对软件的每个组件进行开发,然后集成成最终的产品交互给用户。

所以,RAD模型具有如下特点:

  1. 开发周期短。(兼具原型快速的优势)
  2. 产品质量高。(每个组件的开发其实就看得出来瀑布模型的影子)

  但是,RAD模型就完美了吗?
  不是 ,RAD模型需要大量的人力和物力,软件开发过程不止注重技术更看重管理。如果有一个小组撂挑子,说我不干了,那么整个软件的开发不就得推迟?所以,RAD模型的这一个特点就不满足之前Boehm提出的开发人员应该小而精的观点。

  上面所述的模型都有一个显著的特征,即都是一次性交付给用户,这样做是具有风险的,因为技术有革新,市场有变化,当你的产品开发出来之后,可能就不符合时代的需求了。所以,又有另外的模型被相继地提出。

增量模型

增量模型的特点:

  1. 原型特点:由于是不开发增量,然后和客户见面,开发增量,然后和客户见面。这样就能符合客户的需求,顺应市场变化。
  2. RAD特点:每项工作都有相应的小组。这样就兼顾了快速的特点。
  3. 瀑布模型特点:这就不啰嗦了,基本每一个模型都能或多或少看到瀑布模型的影子。
  4. 不需要大量的人力:这里应该和前面的RAD做出区别,这里的增量并不是一次性共同开发,而是根据用户需求逐次开发,所以上一阶段个增量的开发小组仍可以接手下一个增量的开发。
  5. 代价低:即时开发的增量不满足用户需求,那么对一个增量进行修改,相比对整个软件进行修改的代价要小得多。

  但是增量模型有缺点没有?
  还是有的,我们要考虑增加一个增量时是否对原来的软件造成影响,如果影响过大,那么这个增量反而不好。
  但是,采用增量模型是可取的,为了规避开发不合适的增量,那么就得在设计上话功夫,但是这种牺牲是值得的。

螺旋模型

螺旋模型的特点:

  1. 风险驱动:每一个阶段(看图可理解为一圈为一个阶段)都会开发一个原型来进行风险分析,当风险分析合格时才会进行下一阶段。
  2. 瀑布模型特点:从环内到环外,可看到瀑布模型的特点。
  3. 增量模型特点:每一次螺旋可看做是一次增量。

螺旋模型的缺点:
  螺旋模型是风险驱动的,项目越大,风险越大。原型进行风险分析是需要代价的,如果砸在风险分析的钱太多,那么就可能导致项目终止。所以,螺旋模型适用于内部开发。

RUP模型

  RUP模型相当复杂,我简单写写。RUP可以看做是一个二维的图。横向划分了四个阶段:初始,细化,构造,交付。纵向是若干工作流。
  RUP的特点为迭代式增量开发,用例驱动,以体系架构为中心。如果体系架构做得不好,迭代式开发就不好开展。
  RUP的一个缺点就是整个模型比较麻烦,不好操作。想了解更多,可以参考百度百科RUP

  总之,针对不同的开发应用场景,应当采用合适的模型进行开发。
  点此到顶部TOP

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
序   前言   第1篇面向过程软件工程   第1章软件危机、 软件工程   11软件工程的发展史   111程序设计时代   112程序系统时代   113软件工程时代   12软件危机主要表现形式   13产生软件危机的原因及解决途径   131产生软件危机的原因   132解决软件危机的途径   14软件软件工程   141软件   142软件工程   15软件质量   16软件生存周期及开发模型   161软件生存周期   162软件开发模型   17习题   第2章可行性研究   21可行性研究的目的与任务   22可行性研究的步骤   23系统流程图   231系统流程图的符号   232系统流程图示例   24成本-效益分析   241货币的时间价值   242投资回收期   243纯收入   25可行性研究报告的主要内容   26习题   第3章软件需求分析   31需求分析的任务和步骤   311需求分析的任务   312需求分析的步骤   32需求获取的常用方法   321常规的需求获取方法   322快速建立软件原型来获取需求   33需求分析的方法   331功能分解方法   332结构化分析方法   333信息建模方法   334面向对象的分析   34结构化分析方法   341自顶向下逐层分解的分析策略   342结构化分析描述工具   343数据流图   344数据字典   345加工逻辑的描述   35需求分析图形工具   351层次方框图   352Warnier图   353IPO图   36SA 方法的应用   37习题   第4章软件总体设计   41软件总体设计的目标和任务   42软件设计的概念和原理   421模块和模块化   422抽象   423信息隐蔽和局部化   424模块独立性及其度量   43软件结构设计准则   44软件结构设计的图形工具   441软件结构图   442层次图   443HIPO图   45结构化设计方法   451数据流图的类型   452结构化设计方法的步骤   453变换型分析设计   454事务型分析设计   46习题   第5章软件详细设计   51详细设计的目的与任务   52结构化程序设计   53详细设计工具   531程序流程图   532NS图   533PAD图   534过程设计语言   54习题   第6章软件编码   61程序设计语言的分类   611基础语言   612结构化语言   613面向对象的语言   62程序设计语言的选择   63程序设计风格   631程序内部文档   632数据说明   633语句构造   634输入/输出   635效率   64习题   第7章软件测试   71软件测试的目标   72软件测试的原则   73软件测试方法   731静态测试与动态测试   732黑盒测试法与白盒测试法   74软件测试用例的设计   741白盒技术   742黑盒技术   75软件测试过程   751单元测试   752集成测试   753确认测试   754系统测试   76调试   761调试的目的   762调试技术   77习题   第8章软件维护   81软件维护的分类   82软件维护的特点   821结构化维护与非结构化维护   822维护的代价   823软件维护中存在的问题   83软件可维护性   831软件可维护性的定义   832软件可维护性的度量   833提高软件可维护性的方法   84维护的副作用   85软件再工程   851软件再工程与逆向工程的概念   852实施软件再工程的原因   853软件再工程技术   86习题   第2篇UML与面向对象的软件工程   第9章UML简介   91UML概述   911UML的组成   912UML的特点和用途   913UML的模型视图简介   92UML软件开发工具简介   921Rational Rose   922Visio简介   93习题   第10章面向对象的概念   101面向对象的方法学   1011面向对象建模   1012面向对象的方法与传统软件方法的比较   102对象与类及其UML表示   1021对象   1022类与实例   1023对象属性与操作   1024对象类的关联   103聚集、 组合、 继承和多态   1031聚集与组合   1032抽象与继承   1033多态   104习题   第11章对象设计模式   111对象设计模式概念   1111历史背景   1112对象设计模式   1113设计模式的分类   112几种典型的对象设计模式及应用   1121行为型模式中的职责键模式及应用   1122结构型模式中的外观模式及应用   1123创建型模式中的抽象工厂模式及应用   113对象类的高级概念   1131抽象类、 参数对象类、型与实现对象类   1132接口   1133版型   114组件、 包和结点   1141组件   1142包和包图   1143结点   115习题   第12章面向对象的软件开发过程   121RUP概述   1211RUP的历史   1212RUP的特色   122RUP软件开发生命周期和建模   1221RUP软件开发的生命周期   1222RUP的动态结构   1223RUP的静态结构   1224RUP的建模   123面向对象软件开发过程的案例分析   1231系统需求   1232系统的静态结构模型   1233顺序图和协作图   1234状态图和活动图   1235组件图和部署图   124习题   第13章软件开发工具Rose   131Rose的用例图与类图   1311用例图   1312类图   132Rose的交互图与状态机图   1321交互图   1322状态机图   133包、 组件图与部署图   1331包   1332组件图   1333部署图   134Rose的代码生成和逆向工程   1341代码生成   1342逆向工程   135Rose应用举例   136习题   第14章Rose及其应用   141Rose的主要功能   142Rose的使用   1421Rose主菜单窗口   1422模型与工作方式的组织   143教学管理系统的分析与设计   1431系统需求分析   1432系统问题领域分析   1433静态结构模型的建立   1434动态行为模型的建立   1435物理模型的建立   144UML类图与VB代码的转换   1441VB代码生成属性   1442Rose模型—VB代码的生成   1443VB代码的逆向工程   145UML类图与Java代码的转换   1451UML类图—Java代码的生成   1452Java代码的逆向工程   146习题   第15章面向对象的软件体系结构   151软件体系结构概述   152流程处理与客户机/服务器体系结构   1521流程处理   1522客户机/服务器体系结构   153三层和多层体系结构   1531三层体系结构   1532浏览器/服务器体系结构风格   1533多层体系结构   1534团聚与串行   154公共对象请求代理体系结构   155基于层次消息总线的体系结构风格   156异构结构风格   157习题   第16章软件工程新技术   161软件复用技术   1611软件复用概念及分类   1612软件复用的关键技术和复用粒度   162中间件技术   1621中间件概念及特点   1622中间件的分类   163组件技术   1631组件与组件化   1632组件模型及描述语言   1633组件的检索与组装   164计算机辅助软件工程技术   1641CASE的基本概念   1642CASE工具与集成CASE环境   165软件产品线技术   1651软件产品线基本概念   1652软件产品线方法   1653北大青鸟工程   166软件过程与标准化   1661软件过程及其改进   1662ISO 9000标准   1663软件能力成熟度模型   167习题   第3篇软件工程实验   第17章软件工程实验大纲   171面向过程软件工程实验   1711实验1图书馆图书管理系统的可行性分析   1712实验2图书馆图书管理系统的项目开发计划   1713实验3图书馆图书管理系统的需求分析   1714实验4图书馆图书管理系统的总体设计   1715实验5图书馆图书管理系统的详细设计及编码实现   1716实验6图书馆图书管理系统的系统测试   1717实验7图书馆图书管理系统用户手册的撰写   1718实验8图书馆图书管理系统项目开发总结报告的撰写   172面向对象的软件工程实验   1721实验1浏览器系统的可行性分析   1722实验2浏览器系统的项目开发计划   1723实验3浏览器系统的需求分析   1724实验4浏览器系统的体系结构设计   1725实验5采用面向对象方法进行浏览器系统的详细设计   1726实验6利用Rational Rose正向工程功能完成编码的实验   1727实验7利用Rational Rose逆向工程完成修改设计的实验   1728实验8浏览器系统的测试   1729实验9浏览器系统用户手册的撰写   17210实验10浏览器系统项目开发总结报告的撰写   附录   附录AUML图总结   附录BUML中定义的常用版型、 约束和标记   附录CGOF给出的软件设计模式
软件生存周期V模型通常包括以下8个阶段: 1. 需求分析阶段:在此阶段,团队与客户合作,收集并分析软件的功能需求和非功能需求,以确保对软件的期望有清晰的了解。 2. 系统设计阶段:在此阶段,开发团队根据需求分析阶段的结果,设计软件的系统架构和模块。此阶段关注软件的整体设计和组织。 3. 组件设计阶段:在此阶段,开发团队制定软件的各个组件的详细设计方案。此阶段关注软件的功能、接口和数据流等方面的设计。 4. 编码阶段:在此阶段,开发团队按照组件设计阶段的规范,将软件的代码实现。开发人员通过编码来实现软件的功能和逻辑。 5. 单元测试阶段:在此阶段,开发团队对软件的各个单元(如函数、类等)进行测试,以确保其符合设计规范。此阶段关注软件的各个单元的正确性和完整性。 6. 集成测试阶段:在此阶段,开发团队将各个单元组合成整个软件,并对整个软件进行测试,以确保各个组件能够正确地协同工作。 7. 系统测试阶段:在此阶段,开发团队对整个软件系统进行测试,以验证其是否符合用户需求和设计规范。此阶段关注软件的功能、性能和稳定性。 8. 验收测试阶段:在此阶段,软件交付给客户进行最终的验收测试,以确定软件是否满足客户的需求和期望。此阶段关注软件的整体功能和质量。 在V模型中,左边的阶段代表开发过程,右边的阶段代表测试过程。每个开发阶段都与相应的测试阶段相关联,确保软件在开发过程中得到充分的验证和确认。通过使用V模型,开发团队可以更好地管理软件生命周期中的开发和测试过程,以确保开发的软件质量和功能的符合度。同时,V模型还提供了对需求分析和设计的持续性改进,以使软件开发过程更加高效和可靠。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值