热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

软件生命周期模型zz

我们把软件的开发过程分成了这样几个阶段:需求规格阶段,概要设计阶段,详细设计阶段,代码阶段,单元测试阶段,集成测试阶段,以及系统测试阶段。也就是说,在实际的开发过程中,我们要逐一完成每个阶段
    我们把软件的开发过程分成了这样几个阶段:需求规格阶段,概要设计阶段,详细设计阶段,代码阶段,单元测试阶段,集成测试阶段,以及系统测试阶段。也就是 说,在实际的开发过程中,我们要逐一完成每个阶段的工作,当完成最后一个阶段的工作后也就完成了整个软件项目。像这样组织软件开发过程的规则,就可以称为 软件生命周期模型。一个定义良好的软件生命周期模型,可以很好的指导我们的开发工作,使漫长的开发工作易于控制。事实上,我们可以任意定义自己喜欢的软件 生命周期模型。但是,如果生命周期模型定义不合理,却会制约我们的开发过程。软件开发人员在长期开发过程已经总结出了几种常用的软件生命周期模型,我们可 以根据项目的特点来选择一个合适的模型,然后在此基础上再加以裁减。这些生命周期模型是:
1)瀑布模型,
2)快速原型模型,
3)渐增模型,
4)演进模型。
下面我们重点阐述前3种常用的生命周期模型。
 
2.1瀑布模型
   顾名思义,该模型就是像瀑布一样。这是一个最传统的生命周期模型,是一种顺序的模型,自顶向下把一个软件开发过程分为:系统定义、需求分析、设计、编码、 测试和维护等阶段。在开发过程中这些阶段顺序进行,就像是一个飞流直下的瀑布,因此得名。该模型可以用下面的图形来表示。
        系统定义
          /|/
        需求分析
          /|/
         设计
          /|/
         编码
          /|/
         测试
          /|/
         维护
   有时,根据项目的特点,设计又可分为概要设计和详细设计。
  上图中各阶段所要完成的工作在一般的论述软件工程的书籍中都有描述,这里就不再细述。
  虽然上面的阶段是顺序进行的,但是这并不是限定我们的软件项目必须在完成了上个阶段的工作后才能进行下个阶段的工作。在实际的开发过程中,我们常常会遇到这样的情况:阶段反复和重叠。
   在前面的需求管理部分我们曾经阐述过需求变更管理。也就是说,在软件开发的某个阶段可能发生需求变更,而一旦软件需求发生变化,就势必会造成软件设计的改 变,因此,如果该软件项目已经进行到了测试阶段,那么我们就必须回过头来重新进行需求分析、概要设计、详细设计和编码。像这种在后面的阶段又返回来做前面 阶段工作的情形,就成为阶段反复。当然,也有可能因为开发人员前面的工作做得不够准确而导致阶段反复。阶段反复常常会造成进度延迟,但是,只要严格控制好 每个阶段的输入和输出,我们还是可以有效的控制软件项目的开发过程。
  在实际的开发过程中我们还会遇到这种情况:如果一个软件项目规模较大,而 且各功能模块相对独立,那么,我们就没有必要要求所有模块的进度都一致,也就是说,模块1可能很快就能完成概要设计和详细设计,而模块2由于太复杂概要设 计可能就需要很长的时间。对于这种情况,只要控制好模块1各阶段的输入和输出,完全可以让模块1先行,直到完成或者必须停下来等待其他模块。像这种情况, 一个软件项目的各模块可能处于不同的阶段,就成为阶段重叠。出现这种情况,必须是某些模块比较独立,否则就不可能比其他模块先行。
  虽然阶段的 重叠和反复是允许的,但是我们却不能允许这种情况随意发生。比如说,需求分析和设计可以重叠,但是如果需求分析和编码也重叠就很难说代码会写成什么样了; 编码阶段可以因为需求变更回过头来进行需求分析和设计,但是如果已经进行系统测试了还在进行阶段反复,这就等于又开发一个新项目了。因此,为了更好的控制 软件开发过程,要尽量减少阶段重叠和反复,如果实在不可避免,应该对所有的变更进行严格控制,这样才能保证我们的开发过程陷入无序状态。
  另外,在该模型的基础上,还衍生出了强调测试活动的V模型。它把瀑布模型的测试阶段进行细分,并于前面的阶段进行对应。细分出来的这些阶段分别为:单元测试阶段、集成测试阶段和系统测试阶段。V模型的结构图如下。
 
     系统定义                           维护
------/------------------------------/------------
 
         需求分析       .....       系统测试
              /                      /
            概要设计    .....   集成测试
                 /               /
               详细设计  ...  单元测试
                      /       /
                        编码
 
  与需求分析对应的是系统测试。因为需求分析的工作是分解用户的功能和性能需求并规格化,所以系统测试的工作主要就是测试这些功能和性能指标是否都在软件中正确实现。
该 测试把软件作为一个黑盒,针对每个需求规格组织各种输入并根据软件输出来判断该需求规格是否正确实现,因此系统测试属于黑盒测试。与概要设计对应的是集成 测试。因为概要设计的工作主要是根据功能把大的系统进行模块分解,所以集成测试的工作主要是,把各模块逐步集成在一起,来测试数据是否能够在各模块间正确 流动,以及各模块能否正确同步。因为这种测试依赖于软件的架构但又不关心每个函数的实现细节,所以该测试又常称为灰盒测试。与详细设计对应的是单元测试。 它主要是详细设计中的每个功能单元(通常是函数或过程)进行逻辑覆盖测试,因此这种测试属于白盒测试。与从需求到设计、统测试,于是就形成了一个V字形的 结构。
  与在瀑布模型中描述的一样,这些测试活动也是顺序进行的,并遵循一定的输入和输出规则(具体的测试在以后的章节中会详细描述),但是这些阶段也同样可以重叠和反复。
 
  瀑布模型的优点是清楚地标识出了软件开发的阶段。它采用自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制开发过程。当所有的阶段都完成之后,该软件的开发过程也随之结束。
  瀑布模型的缺点正是它自身的顺序性所导致的。实际的开发过程中,在需求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会导致阶段反复,而且都要重复需求、设计、编码、测试等过程。
  实际的开发过程中,用得较多的就是瀑布/V模型,只是可以根据实际需要进行阶段合并与裁减。 
推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • tcp/ip 高清大图
    为什么80%的码农都做不了架构师?转载于:https:my.oschina.netgsbhzb ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
一直都在囚禁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有