软件的生命周期的若干阶段
要做好一个软件,要了解软件的生命周期,在什么阶段,要做好什么事情!
在了解软件的生命周期之前,先了解一下软件工程。
软件工程
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
定义
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己认可的定义:
BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。
其它定义:
1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。
2.程序能够满意地处理信息的数据结构。
3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。
软件生命周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。旧的解释是周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。生命周期的每一个周期都有确定的任务,并产生一定规格的文档(资料),提交给下一个周期作为继续工作的依据。按照软件的生命周期,软件的开发不再只单单强调“编码”,而是概括了软件开发的全过程。软件工程要求每一周期工作的开始只能必须是建立在前一个周期结果“正确”前提上的延续;因此,每一周期都是按“活动 ── 结果 ── 审核 ── 再活动 ── 直至结果正确”循环往复进展的。
随着新的面向对象的设计方法和技术的成熟,早期软件生命周期设计方法的指导意义正在逐步减少或需要调整。 不过从另一种意义来说,面向对象本身也是一种软件生命周期,传统的软件生命周期的概念仍是所有软件工程师非常重要的知识基础和工作指导。
软件生命周期的解释也应当调整。
以上旧的解释与下文的生命周期模型是不相容的,只与瀑布型生命周期模型及其衍生模型(比如V模型,W模型)相符合,而与迭代为基本特征的生命周期模型是不符合的。新的情况应当是把迭代加入到阶段当中,如下:软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段,即迭代作为生命周期的阶段。
阶段
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
通常,软件生存周期包括:
一、问题定义。要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认。
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
二、可行性研究。一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性分析。
三、需求分析。弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
四、开发阶段。开发阶段由四个阶段组成:
1、概要设计
2、详细设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。软件设计的核心在于把握好那些决定“服务质量”的因素,比如软件的性能,可扩展性,安全性,怎样划分模块的组成,怎样组织和封装软件的组件,以及其他一些虽然不作为软件主要应用的方面但会对其支持方面有所影响的方方面面。软件设计的原理包括抽象,分解和模块化,耦合和内聚,封装,充分性,完整性和原始性。软件设计主要关注软件的兼容性、可扩展性、容错性、可维护性、模块化、可靠性、可重用性、健壮性、安全性、可用性和互操作性。耦合和内聚是两个用来评估软件设计质量的方法。
3、实现:根据选定的程序设计语言完成源程序的编码。
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
4、测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、集成测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
五、维护:维护包括四个方面
1、改正性维护:在软件交付使用后,由于开发测试时的不彻底、不完全、必然会有一部分隐藏的错误被带到运行阶段,这些隐藏的错误在某些特定的使用环境下就会暴露。
2、适应性维护:是为适应环境的变化而修改软件的活动。
3、完善性维护 :是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。
4、预防性维护:是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
模型
从概念提出的那一刻开始,软件产品就进入了软件生命周期。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。
典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型。
瀑布模型
迭代式模型
快速原型模型
螺旋模型
1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
(1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;
(4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:
(1) 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
(2) 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
(3) 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险
根据软件生命周期,区分阶段,采用适合的开发模式,做好该做的事,将能更好的完成软件的生命周期,更好的做好软件。
软件的生命周期的若干阶段相关推荐
- 一文弄懂软件发布生命周期中各阶段名称及代表含义
什么是软件发布生命周期 软件发布生命周期是指开发.测试和发布软件产品的过程.不同阶段代表了不同的稳定级别(Stability levels). 软件发布生命周期的各个阶段名称及含义 Pre-alpha ...
- 软件开发生命周期-2-每个阶段的利益相关方
记录下一点自己的心得体会,分享给大家,有不足之处,望指教. 下面我只提及每个阶段所涉及到的利益相关方,关于利益相关方的利害关系分析以及如何寻求平衡之道有一个作者认为比较合理的方法论,会在后面的章节专门 ...
- 软件开发生命周期中的设计阶段_软件的生命周期——测试人员必须了解的事
软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与 ...
- 9分钟内完成软件开发生命周期
软件在开发过程中要经历几个阶段,包括计划.需求分析.设计.编码.测试.部署.维护等.这个由计划开始,直至维护结束的完整周期称为软件开发生命周期. 9分钟完成软件开发生命周期 01 计划阶段 客户或者用 ...
- 科创项目日记(1)—对软件开发生命周期的一些小总结
最近在做一个科创项目,该项目中,我们的第一个任务就是总结一下软件生命周期各个阶段的任务以及自行网上收集各种软件生命周期文档的编写模版.经过这几天的资料收集,技术顾问的指导,加上自己过滤整理,终于有了现 ...
- sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法
sdlc 瀑布式 生命周期 When I decided to teach myself how to code almost four years ago I had never heard of, ...
- 软件开发生命周期有几个阶段?
关注+星标公众号,不错过精彩内容 作者 | 情报小哥 ID | 嵌入式情报局 很多初学软件编程的小伙伴,只顾着"编程",其他开发相关的一些"技能"很少关注.如果 ...
- 软件的生命周期(软件工程各阶段的工作)
其实软件工程是一个非常大的概念,我们的软件测试也好,软件开发也好,软件运维也好,其实都是属于软件工程的范畴. 今天就讲一讲软件工程和我们软件测试相关的一些内容. 我们今天三个主要的节点: 1.软件 ...
- 软件开发生命周期中的设计阶段_软件开发分为几个阶段
软件开发生命周期,亦叫做软件生命周期或者系统开发生命周期,是直到生命周期结束的软件生成生命周期.有问题定义,可行性分析,总体描述,系统设计,编码,调试和测试,验收.运行,维护和升级到过时,这种分时的思 ...
最新文章
- 删除maven仓库中的LastUpdated文件
- 【Qt】Qt样式表(Style Sheet):官网说明及例子
- TinyFrame升级之八:实现简易插件化开发
- linux有三个查看文件的命令:more、cat、less
- Mysql8 group replication组复制集群单主多主模式切换
- layui绑定json_认识定制:JSON绑定概述系列
- c++面向对象高级编程 学习十 function-like classes
- 当 Egg 遇到 TypeScript,收获茶叶蛋一枚 #27
- Django之Model操作
- 记一次网站无法访问解决过程,服务器80端口问题解决过程
- win10 系统下获取系统版本号为6.2的问题
- ARM、MCU、DSP、FPGA、SOC你知道是什么吗?
- 最新 9个免费建站空间 网站均免备案
- 风格迁移数据集_北科大Nature子刊:材料数据太少怎么办? 风格迁移来解决
- Excel最大值和最小值的提取问题
- 鼠标驱动之-sys节点-input子系统
- 在Windows下安装BIND作为DNS服务器
- SSM智能家居产品销售管理毕业设计源码161618
- -在c语言中什么含义
- 117、 交换机的基本配置方法
热门文章
- rnqoj-99-配置魔药-dp
- 罗丹明RB/四甲基罗丹明标记软骨素chondroitin, Rhodamine B/TRITC labeled;Rhodamine B/TRITC-chondroitin
- js中的的GO和AO
- 阿里云冲出亚马逊:亚太市场份额排名第一
- Qualcomm msm8974 编译
- awk打印除某列之外的所有列
- 登录系统与人事系统结合c语言,基于ASP的人事管理系统分析
- 全景分割(Panoptic Segmentation)(CVPR 2019)
- 推荐系统实战4——EasyRec 搭建DSSM召回模型实现CTR点击平台
- Postgresql中的large object