0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

软件工程中的软件开发方法和实施流程方法有哪些

发表时间:2023-09-19 20:01:20

文章来源:炫佑科技

浏览次数:181

菏泽炫佑科技

软件工程中的软件开发方法和实施流程方法有哪些

介绍

在软件工程中,软件开发方法(也称为系统开发方法、软件开发生命周期、软件开发过程、软件过程)是将软件开发工作划分为不同的阶段(或多个阶段),其中包含旨在获得更好性能的活动。 规划和管理。 它通常被认为是系统开发生命周期的一个子集。 该方法可以包括由项目团队创建和完成以开发或维护应用程序的特定可交付成果和工件的预定义。

常见的方法包括瀑布法、原型法、迭代增量开发、螺旋式开发、快速应用程序开发、极限编程和各种类型的敏捷方法。 有些人认为生命周期“模型”是一类方法的更通用术语,而软件开发“过程”是一个更具体的术语,指特定组织选择的特定过程。 例如,有许多特定的软件开发流程适合螺旋生命周期模型。

420px-.svg.png

这三种基本方法符合软件开发方法框架。

多年来,各种此类框架不断发展,每个框架都有其公认的优点和缺点。 一种软件开发方法框架可能并不适合所有项目。 根据各种技术、组织、项目和团队考虑,每个可用的方法框架*适合特定类型的项目。

软件开发组织实施流程方法来简化开发流程。 有时,承包商可能需要采用的方法(例如美国国防工业)需要根据流程模型进行评级才能获得合同。 描述选择、实施和监控软件生命周期的方法的国际标准是 ISO/IEC 12207。

长达数十年的目标是找到可重复、可预测的流程来提高生产率和质量。 有些人试图将看似不规则的软件设计系统化或形式化。 其他人应用项目管理技术来设计软件。 如果没有有效的项目管理,软件项目很容易延迟交付或超出预算。 由于大量软件项目在功能、成本或交付进度方面未能达到预期,因此缺乏有效的项目管理。

组织可以创建软件工程过程组(SEPG),它是过程改进的焦点。 该团队由具有不同技能的一线从业人员组成,是组织中参与软件工程流程改进的每个人协作努力的中心。

特定的开发团队还可能就编程环境细节达成一致,例如使用哪种集成开发环境,以及一种或多种主要编程范例、编程风格规则或特定软件库或软件框架的选择。 这些细节通常不是由模型选择或一般方法决定的。

历史

软件开发方法(也称为 SDM)框架直到 20 世纪 60 年代才出现。 根据(2004),系统开发生命周期(SDLC)可以被视为构建信息系统*古老的正式方法框架。 SDLC的主要思想是“以非常深思熟虑、有条理、有条理的方式开发信息系统,要求生命周期的每个阶段,从概念开始到*终系统交付,都严格执行并按顺序进行” ”在应用框架的范围内。 这个方法论框架在20世纪60年代的主要目标是“在大型企业集团时代开发大规模的功能性业务系统。

方法、流程和框架包括组织可以在日常工作中直接使用的特定禁止步骤,以及组织可以用来生成适合特定项目需求的自定义步骤的灵活框架。 团体。 在某些情况下,“赞助”或“维护”组织会分发一组描述该过程的官方文档。 具体例子包括:

20世纪70年代

1969 年以来的结构化编程

Cap SDM,*初出自,**个英文译本于1974年出版。SDM代表系统开发方法论

20世纪80年代

结构系统分析与设计方法 (SSADM) 自 1980 年

信息需求分析/软系统方法

20世纪90年代

面向对象编程 (OOP) 于 20 世纪 60 年代初开发,并在 20 世纪 90 年代中期成为主流编程方法

自 1991 年以来的快速应用程序开发 (RAD)

动态系统开发方法 (DSDM) 自 1994 年以来

Scrum,自 1995 年以来

团队软件流程,自 1998 年以来

(RUP),自 1998 年起由 IBM 维护

极限编程,始于 1999 年

2000年

敏捷(AUP)由 Scott 自 2005 年起维护

方式

自信息技术起源以来,已经使用了多种软件开发方法,分为两大类。 通常,管理层或开发团队会选择一种方法或多种方法的组合。

具有不同阶段(例如瀑布)的“传统”方法有时称为软件开发生命周期(SDLC)方法,尽管该术语也可以更普遍地用来指代任何方法。 具有不同阶段的“生命周期”方法与定义迭代过程的敏捷方法形成鲜明对比,但设计、构建和部署的不同部分可以同时发生。

瀑布式开发

220px-.svg.png

瀑布模型中表示的软件开发过程的活动。 还有其他几个模型可以代表这个过程。

瀑布模型是一种顺序开发方法,其中开发被视为稳定地向下流动通过几个阶段(如瀑布),通常:

需求分析导致软件需求规格说明

软件设计

实现

测试

集成,如果有多个子系统

部署(或安装)

维护

该方法的**个正式描述经常被 W. Royce 在 1970 年的一篇文章中引用,尽管 Royce 在这篇文章中没有使用术语“瀑布”。 基本原则是:

项目分为连续的阶段,阶段之间有一些重叠和反弹是可以接受的。

重点是整个系统的一次性规划、时间表、目标日期、预算和实施。

通过大量的书面文档、正式审查和用户批准/签字,以及在大多数阶段结束时开始下一阶段之前进行的信息技术管理,在整个项目生命周期中保持严格的控制。

瀑布模型是应用于软件工程的传统工程方法。 严格的瀑布方法不鼓励在完成后重新访问和修改任何先前的阶段。 纯瀑布模型中的这种“缺乏灵活性”一直是其他更“灵活”模型的支持者批评的根源。 它因多个大型政府项目超出预算而受到广泛指责,而且随着时间的推移,有时由于大规模的设计前端方法而无法满足要求。 除了合同要求之外,瀑布模型已在很大程度上被专为软件开发开发的更灵活和通用的方法所取代。 请参阅瀑布模型的批评。

瀑布模型通常每周一都会播放助记符“黑暗中的舞蹈”,代表分析、设计、实施、测试、文档和执行以及维护。

原型

软件原型是软件开发过程中的一种开发方法,创建原型,即正在开发的软件程序的不完整版本。

基本原则是:

不是一种独立的、完整的开发方法,而是一种处理更大、更传统的开发方法(即增量、螺旋或快速应用程序开发(RAD))的选定部分的方法。

尝试通过将项目分解为更小的部分来降低固有的项目风险,并提供更多在开发过程中轻松更改的能力。

用户参与整个开发过程,这增加了用户接受*终实现的可能性。

通过迭代修改过程开发系统的小规模模型,直到开发出满足用户要求的原型。

虽然大多数原型在开发时都预期它们会被丢弃,但在某些情况下,有可能从原型系统发展为工作系统。

对基本业务问题有基本的了解对于避免解决错误的问题是必要的。

渐进式发展

可以采用各种方法来组合线性和迭代系统开发方法,每种方法的主要目的是通过将项目分解为更小的部分来降低项目的固有风险,并在开发过程中提供更轻松的更改。

基本原则是:

执行一系列迷你瀑布,其中瀑布的所有阶段都在系统的一小部分上完成,然后再继续下一个增量,或者

在进行系统的单独增量演化、迷你瀑布式开发或

*初的软件概念、需求分析以及架构和系统核心的设计是通过瀑布定义的,然后是迭代原型,*后是*终原型(即工作系统)的安装。

迭代增量开发

迭代开发要求*初构建较小但逐渐增大的软件项目部分,以帮助每个参与人员及早发现重要问题,避免问题或错误假设导致灾难。

螺旋式发展

400px-988.svg.png

螺旋模型(Boehm,1988)

1988年,Barry Boehm发表了正式的软件系统开发“螺旋模型”,该模型结合了瀑布模型和快速原型方法的一些关键方面,结合了自上而下和自下而上概念的优点。 它强调了许多人认为被其他方法忽视的一个关键领域:有意的迭代风险分析,特别适用于大规模复杂系统。

基本原则是:

重点是风险评估和通过将项目分解为更小的部分并在开发过程中提供更多的可变性来*小化项目风险,以及提供评估风险和考虑整个生命周期中项目延续性的机会。

“每个周期都涉及到产品的每个部分和每个细化级别,从整体操作概念文档到每个单独程序的编码,都经历相同的步骤序列。”

围绕螺旋的每次旅行都会遍历四个基本象限: (1) 确定迭代的目标、替代方案和约束; (2) 评估替代方案; 识别并解决风险; (3) 根据迭代结果开发并验证可交付成果; (4) 计划下一次迭代。

通过确定利益相关者及其“获胜条件”来开始每个周期,并以审查和承诺结束每个周期。

快速应用开发

220px-.JPG

快速应用程序开发 (RAD) 模型

快速应用程序开发 (RAD) 是一种软件开发方法,有利于迭代开发和快速构建原型,而不是广泛的前期规划。 使用 RAD 开发的软件的“规划”与编写软件本身交织在一起。 缺乏广泛的前期规划通常会导致软件编写速度更快并且需求更容易更改。

快速开发过程从使用结构化技术开发初步数据模型和业务流程模型开始。 在下一阶段,原型设计用于验证需求并*终完善数据和流程模型。 这些阶段一遍又一遍地重复; 进一步的开发导致了“构建新系统的全面业务需求和技术设计声明”。

该术语*初用于描述 James 在 1991 年引入的软件开发过程。根据(2003),它将各种结构化技术(尤其是数据驱动的信息工程)与原型技术相结合,以加速软件系统的开发。

快速应用开发的基本原则是:

主要目标是以相对较低的投资成本快速开发和交付高质量的系统。

尝试通过将项目分解为更小的部分来降低固有的项目风险,并提供更多在开发过程中轻松更改的能力。

旨在快速生产高质量的系统,主要通过迭代原型设计(在开发的任何阶段)、积极的用户参与和计算机化开发工具。 这些工具可能包括图形用户界面(GUI)构建器、计算机辅助软件工程(CASE)工具、数据库管理系统(DBMS)、第四代编程语言、代码生成器和面向对象技术。

重点是满足业务需求,而不是强调技术或工程卓越性。

项目控制包括确定开发的优先顺序和定义交付期限或“时间盒”。 如果项目开始下滑,重点是减少要求以适应时间范围,而不是增加*后期限。

通常涉及联合应用程序设计(JAD),用户通过在结构化研讨会中达成共识或促进电子交互来积极参与系统设计。

积极的用户参与势在必行。

迭代生产生产软件而不是一次性原型。

生成必要的文档以方便将来的开发和维护。

标准系统分析和设计方法可以适应该框架。

敏捷开发

“敏捷软件开发”是指一套基于迭代开发的软件开发方法,通过自组织的跨职能团队协作开发需求和解决方案。 该术语是在 2001 年敏捷宣言制定时创造的。

敏捷软件开发以迭代开发为基础,但比传统方法提倡更轻松、更以人为本的视角。 敏捷流程从根本上结合了迭代和持续反馈,从而提供软件系统的持续改进和交付。

敏捷方法有很多,包括:

动态系统开发方法(DSDM)

看板

混乱

代码和修复

由于软件开发人员的日程压力,“编码和修复”开发并不是一个经过深思熟虑的策略。 程序员无需太多设计即可立即开始生成代码。 在某个时刻软件工程中的软件开发方法和实施流程方法有哪些,测试开始(通常在开发周期的后期),然后在产品发布之前修复不可避免的错误。 没有计划外设计的编程也称为牛仔编码。

轻量级方法

轻量级方法的规则数量很少。 其中一些方法也被认为是“敏捷”的。

Jim 的自适应软件开发,在他 1999 年出版的《自适应软件开发》一书中进行了描述

清晰的一系列方法,

极限编程(XP),由 Kent Beck 等人推广。 在极限编程中,与旧的“批处理”过程相比,各个阶段以极小的(或“顺序”)步骤执行。 (故意不完整)**次执行这些步骤可能需要一天或一周的时间,而不是瀑布模型中每个完整步骤需要数月或数年的时间。 首先,编写自动化测试来提供具体的开发目标。 接下来是编码(由程序员结对工作,一种称为“结对编程”的技术),这是在所有测试都通过并且程序员无法想到需要任何测试时完成的。 设计和架构来自重构,并在编码后出现。 写代码的人也做设计。 (只有*后一个功能 - 合并设计和代码 - 对于所有其他敏捷流程都是通用的。)一个不完整但功能齐全的系统被部署或演示给(某些)用户(至少其中一个是开发团队成员)。 此时,从业者再次开始为系统的下一个*重要的部分编写测试。

Jeff De Luca 和 Peter Coad 开发的功能驱动开发 (FDD) (1999)

-基于UML的对象建模、用例、轻量级前身

其他

其他先进的软件项目方法包括:

混沌模型 - 主要规则是始终首先解决*重要的问题。

增量资金方法——迭代方法

结构化系统分析与设计方法——的具体版本

慢速编程是较大的慢速运动的一部分,强调详细和渐进的工作,没有(或很少)时间压力。 缓慢的编程旨在避免错误和过快的发布计划。

V-模型(软件开发)——瀑布模型的扩展

(UP)是一种基于统一建模语言(UML)的迭代软件开发方法框架。 UP 将软件开发分为四个阶段,每个阶段都包含开发阶段中软件的一个或多个可执行迭代:开始、详细信息、构建和指南。 有许多工具和产品可以促进 UP 实施。 UP 更流行的版本之一是统**程 (RUP)。

流程元模型

一些“流程模型”是用于评估、比较和改进组织所采用的特定流程的抽象描述。

ISO/IEC 12207 是一个描述选择、实施和监控软件生命周期方法的国际标准。

能力成熟度模型集成 (CMMI) 是领先的模型之一,基于*佳实践。 独立评估对组织遵循其定义的流程的情况进行评估,而不是对这些流程或所生产的软件的质量进行评估。 CMMI 取代了 CMM。

ISO 9000 描述了正式组织的产品制造流程的标准以及管理和监控进度的方法。 尽管该标准*初是为制造业创建的,但 ISO 9000 标准也已应用于软件开发。 与 CMMI 一样,ISO 9000 认证不保证*终结果的质量,只保证正式的业务流程。

ISO/IEC 15504 信息技术-过程评估,也称为软件过程改进能力识别(SPICE),是一个“评估软件过程的框架”。 该标准旨在为流程比较建立一个清晰的模型。 SPICE 与 CMMI 非常相似。 它对管理、控制、指导和监控软件开发的过程进行建模。 然后软件开发,该模型用于衡量开发组织或项目团队在软件开发过程中实际执行的操作。 分析这些信息以找出弱点并推动改进。 它还确定了可以继续或集成到组织或团队的通用实践中的优势。

软系统方法 - 改进管理流程的通用方法

方法工程 - 改进信息系统流程的通用方法

形式化方法

形式化方法是在需求、规范和设计层面解决软件(和硬件)问题的数学方法。 形式化方法*有可能应用于安全关键或安全关键的软件和系统,例如航空电子软件。 软件安全保证标准(例如 DO-178B、DO-178C 和通用标准)需要*高级别的正式分类方法。

对于顺序软件,形式化方法的示例包括 B 方法、自动定理证明中使用的规范语言、RAISE 和 Z 表示法。

随着对象约束语言(以及 Java 建模语言等专业化)的应用,软件开发的形式化也正在兴起,特别是允许执行设计(如果不是规范)的模型驱动架构。

对于并发软件和系统,Petri 网、过程代数和有限状态机(基于自动机理论 - 请参阅虚拟有限状态机或事件驱动的有限状态机)允许可执行软件规范,可用于构建和验证应用程序行为。

软件开发中的另一个新兴趋势是以某种形式的逻辑(通常是一阶逻辑(FOL)的变体)编写规范,然后像程序一样直接执行该逻辑。 基于描述逻辑(DL)的OWL语言就是一个例子。 还有一些工作可以自动将某些版本的英语(或其他自然语言)与逻辑进行映射,并直接执行逻辑。 例如,逻辑学,他们并不寻求控制词汇或语法。 支持双向英语逻辑映射和直接执行逻辑的系统的一个特点是可以在商业或科学层面用英语解释其结果。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多