软件开发方法

news2024/11/18 10:53:42

软件开发方法

  • 瀑布方法
    • 优势
  • 敏捷法
    • 优势
    • 敏捷软件开发原则
  • 激进(Scrum)
    • 优势
  • 极限编程
    • 优势
  • 精益
    • 优势
  • 看板
    • 优势
  • 迭代
  • 增量模型

创建软件并不是一件简单的事情:通常,开发应用程序需要不同技能的团队协同努力。如果没有战略管理,这种复杂性很快就会陷入混乱。因此,实施结构化开发方法对于高效完成任何软件项目至关重要。

软件开发中有多种流行的方法论,它们都具有吸引人的特点。我们将讨论六种最常用的软件开发方法。

虽然这些方法有很大不同,但它们都很受欢迎。

瀑布方法

瀑布方法是我们将讨论的最传统的开发方法,包括一系列连续执行的阶段。从概念化到构建、实施和维护,每个阶段都流向下一个阶段(因而得此名称)。

该过程由有序进展定义:一旦一个阶段完成,通常不鼓励重复修改。虽然一些团队喜欢既定轨迹的清晰性和一致性,但批评者认为这种方法僵化,且不切实际。

事实上,瀑布式流程适用于具有明确和不变要求的简单项目,而不是涉及许多支点和潜在陷阱的工作。 ‍

优势

  • 规划清晰:通过为每个项目预先确定的轨迹,经理和团队成员可以在每个阶段规划他们的贡献。
  • 交错执行的机会:如果您的团队同时处理多个项目,瀑布方法可能允许不同的团队成员,在不同阶段专注于单独的项目。
  • 所有利益相关者的简单性:因为瀑布方法相对简单,所以很容易传达给团队成员、经理和客户。您不需要丰富的开发经验就可以理解项目所在的位置。
    在这里插入图片描述

敏捷法

敏捷最好被理解为一种思维方式,而不是一种单一的软件开发方法。事实上,许多其他方法都受到敏捷哲学的启发,敏捷哲学是作为对瀑布模型的明确对立,而发展起来的。

从本质上讲,敏捷方法要求开发人员优先考虑迭代改进,而不是谨慎的爬行启动。最初的目标是生成“最小可行产品”,并根据有关用户需求和偏好的不断变化的信息不断改进它。

在敏捷模型中,软件开发团队通常会确定一个问题或优先事项,在有时间限制的“冲刺”中协同工作,以实现解决方案,然后继续迎接下一个挑战。

与瀑布式方法相比,团队的开发过程没有缓慢的、固定的进展。该团队灵活地处理增强和变化,响应新出现的需求。

优势

  • 对变化的响应:如果用户需要决定新的优先级或内部方向发生变化,使用敏捷方法的团队可以相应地进行调整。
  • 支持战略优先级排序:当整个团队专注于一个优先事项时,将会在重要领域产生结果。不再将团队分散得太细,让紧急需求得不到解决。
  • 流程不会阻碍生产力:开发人员喜欢解决问题,但严格的流程要求会阻止他们这样做。敏捷方法旨在阻止官僚主义,让团队做最擅长的事情。

敏捷软件开发原则

敏捷软件开发有十二个原则:

  • 更快地,持续地交付有价值的软件,提高客户满意度。
  • 欢迎不断变化的需求,即使是在后期开发中。
  • 频繁交付工作软件(数周而不是数月)
  • 业务人员和开发人员之间密切、日常的合作
  • 项目是围绕积极的个人建立的,他们应该被信任
  • 面对面交谈是最好的交流方式(共址)
  • 工作软件是进度的主要衡量标准
  • 可持续发展,能够保持恒定的步伐
  • 持续关注卓越的技术和良好的设计
  • 简单性是必不可少的
  • 最佳架构、需求和设计来自组织团队
  • 团队定期反思如何提高效率,并做出相应调整

激进(Scrum)

如果敏捷方法是一个广义的概念导向,那么Scrum可以理解为它的具体应用。使用 Scrum 框架,团队将软件项目分解为要完成的特定工作增量。然后,这些目标在有时间限制(通常为 2 到 4 周)内完成,在此期间,团队成员将注意力集中在手头的特定挑战上。

在这些冲刺之后,团队和主要利益相关者审查进展,注意到必要的改进和关键学习。 Scrum 团队然后转移到另一个冲刺,这可能与他们的最后一个冲刺直接相关,也可能不相关。

Scrum 方法需要纪律,因为它鼓励您的团队始终专注于给定的工作。一些专业人士喜欢这种不受干扰的自由;其他人更喜欢在优先级之间切换的能力。

优势

  • 全神贯注:通过将团队的精力集中在设定的时间段内,Scrum 方法将开发人员从对时间的外围需求中解放出来。
  • 协作友情:Scrum 团队不断地沉浸在共同的优先事项中。因此,他们在追求共同目标时,相互帮助和依赖。 ‍
  • 频繁的反馈:因为每个特定工作,都以建设性的审查结束,所以 Scrum 团队不断地适应利益相关者的需求。如果发生需求变化或沟通不畅,很快就会发现。

极限编程

极限编程是敏捷方法的另一个分支,它强调限时循环中的迭代开发。然而,与 Scrum 框架相比,极限编程对软件开发实践提出了更具体的建议,包括编写和审查代码的方式。

极限编程的精神和名称反映了这种方法论强调在“极端”程度上实现广泛接受的价值观。对于接受其规则的程序员来说,极限编程似乎是合理开发原则的典范。

例如,基于频繁的代码审查,限制错误影响,极限编程建议团队成对编码,以在错误发生时捕捉错误。同样,基于频繁测试使代码与客户需求保持一致的想法,极限编程要求开发人员在编写代码以后,进行测试之前,设计测试。

这个过程是多方面的,而且非常微妙,所以在选择这种方法之前,你应该考虑做大量的研究。

优势

  • 综合指南:极限编程提供如何进行编程的详细指南。对于一些团队来说,这是非常有建设性的。
  • 强调持续改进:极限编程的核心原则之一是,承诺定期更新代码。随着小的改进不断发生,每个人都可以从最新版本开始工作,团队可以从持续进步中获得鼓励。
  • 提高团队参与度:与某些方法不同,极限编程有明确的说明,可以与其他团队成员合作并促进反馈。软件开发过程的这些元素与工作的技术方面一样重要。

精益

精益方法是敏捷方法的另一个产物,旨在减少软件开发过程各个阶段的浪费。常见的浪费来源包括不必要的功能和臃肿的代码、错误的沟通和重复的工作、模糊表达的需求以及破坏后续进展的质量问题。

为了应对这些常见挑战,使用精益方法的团队经常使用极限编程中的一些相同技术,包括对编程和测试驱动开发。它还强调持续改进和快速交付可行的产品。

但是精益方法包括它自己的概念,例如随着项目的推进,推迟重大决策,以保持团队的选择开放。另一个关键组成部分是尊重开发人员的自主权。精益方法领导者不是强迫他们的团队遵循自上而下的指令,而是允许开发人员创建自己的解决方案。

优势

  • 强调效率:精益方法将每个人的注意力转向精简核心流程。在开发团队中,这种精神可以成为强大的促进剂。
  • 向前迈进的灵活性:精益团队从一开始就不会承诺对他们的项目有一个坚定的愿景。相反,他们将备选方案摆在桌面上,直到必须做出决定。在不断变化或不确定的环境中,这种适应性对团队成员和利益相关者都非常有价值。
  • 尊重团队:开发人员可以做的不仅仅是执行他人的指令。精益方法认为他们的洞察力至关重要,并赋予他们独立解决问题的能力。

看板

看板方法是一种用于组织和执行软件开发任务的系统,可以独立使用,也可以与我们已经讨论过的方法结合使用。看板是一种可视化识别和解决出现的瓶颈的方法,改编自最初用于汽车制造的工作流管理系统。

这种方法的关键元素是看板,它由表示给定目标生命周期中,不同阶段的列组成,例如“编码”、“代码审查”和“代码修订”。

当团队成员完成一个阶段时,他们会将目标移到下一列。此可视化突出显示工作流程中的中断并促进调整。事实上,当指定数量的目标被卡在一个列中时,团队必须集中解决这些问题。

优势

  • 共享的进步参考点:无论是物理的,还是数字的,看板让每个人都对团队的努力保持一致。
  • 公平分配:如果团队的工作量分布不均,看板会清楚地说明这个问题。此外,团队成员可能会改变他们的工作重点来帮助他们负担过重的团队成员。
  • 可访问视觉处理器:许多程序员和其他创意人员都是以视觉为导向的思想家。看板以电子表格或口头更新可能无法满足的方式满足他们的需求。

迭代

迭代开发方法是一种将大型应用程序的软件开发分解为更小的块的方法。在迭代开发中,特征代码是在重复循环中设计、开发和测试的。在每次迭代中,都可以设计、开发和测试附加功能,直到有一个功能齐全的软件应用程序准备好部署给客户。

通常,迭代开发与增量开发结合使用,在增量开发中,较长的软件开发周期被拆分为相互构建的较小部分。

迭代和增量开发是敏捷开发方法中的关键实践。在敏捷方法中,较短的开发周期,称为迭代或冲刺,是有时间限制的(限于一定的时间增量,例如两周)。在迭代结束时,预计可以为客户演示工作代码。

迭代开发与传统的瀑布方法形成对比,在传统的瀑布方法中,软件开发生命周期的每个阶段都是“门控”的。在整个软件应用程序的设计完成并通过阶段门审查之前,不会开始编码。同样,在编码完成并通过必要的阶段门审查之前,测试不会开始。

迭代工作的目的是为更改提供更大的灵活性。当主要应用程序的需求和设计以传统方法(有时称为 BDUF 或 Big Design Up Front)完成时,可能会出现无法预料的问题,直到开发开始。通过迭代工作,项目团队会经历一个循环,他们对每次迭代进行评估,并确定需要进行哪些更改才能产生令人满意的最终产品。

增量模型

在增量模型中,整个需求分为不同的构建。多个开发周期在这里发生,使生命周期成为“多瀑布”循环。周期被分成更小、更容易管理的模块。增量模型是一种软件开发模型,如 V 模型、敏捷模型等。

在这个模型中,每个模块都经历了需求、设计、实现和测试阶段。软件的工作版本是在第一个模块期间生成的,因此您在软件生命周期的早期就有了工作软件。该模块的每个后续版本都会向先前版本添加功能。该过程一直持续到实现完整的系统。

然后,他开始构建它,在第一次迭代中,应用程序或产品的第一个模块完全准备就绪,可以向客户演示。

同样,在第二次迭代中,另一个模块已准备就绪并与第一个模块集成。同样,在第三次迭代中,整个产品已准备就绪并已集成。因此,产品一步一步准备就绪。

增量模型的缺点:

  • 需要良好的规划和设计。
  • 需要对整个系统进行清晰完整的定义,然后才能对其进行分解和增量构建。
  • 总成本高于瀑布。
  • 何时使用增量模型:

当完整系统的需求被明确定义和理解时,可以使用该模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1867675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个去掉PDF背景水印的思路

起因 昨天测试 使用“https://github.com/VikParuchuri/marker” 将 pdf 转 Markdown的过程中,发现转换后的文件中会保护一些背景图片,是转换过程中,程序把背景图识别为了内容。于是想着怎么把背景图片去掉。 背景水印图片的特征 我这里拿…

2024软件设计师笔记之考点版(一考就过):26-39

软件设计师之一考就过:成绩版 考点26:类、封装、继承、多态 真题1:在面向对象方法中,两个及以上的类作为一个类的超类时,称为(多重继承),使用它可能造成子类中存在(二义性)的成员。 真题2:在面向对象方法中,多态指的是(客户类无需知道所调用方法的特定子类的实现…

SwiftUI 6.0(iOS/iPadOS 18)中全新的 Tab 以及 Sidebar+悬浮 TabView 样式

概览 看来苹果一直对 iPadOS 中标签栏(TabView)不甚满意。这不,在 WWDC 2024 中苹果又对 TabView 外观做了大幅度的进化。 现在我们可以在顶部悬浮条和左侧的 Sidebar 两种不同布局之间恣意切换 TabView 的外观啦。而且,这在 Swi…

ubuntu 18 虚拟机安装(3)安装mysql

ubuntu 18 虚拟机安装(3)安装mysql 参考 https://cloud.tencent.com/developer/article/1700780 技术分享 | MySQL 设置管理员密码无法生效一例 https://cloud.tencent.com/developer/article/2014384 在Ubuntu18.04上安装MySQL | 超级详细…

字节豆包 MarsCode:AI 开发工具

MarsCode 是豆包旗下的智能编程助手,类似 GitHub Copilot 提供以智能代码补全为代表的核心能力,简单试用了下,免费,使用时需要手机号登录,代码补全还算 ok,聊天功能就有点差了。 还包括一个 AI 原生 IDE&am…

EPLAN批量修改文字大小

在项目设计过程中,往往要批量调整文字的大小,如何批量修改文字大小: 点击需要调整的相同类的文字 右键 “属性”,然后在分配里找到“属性放置,设备标识符”这一栏 看下文字的属性在第几层 在项目数据找到层管理&…

道路救援入驻派单小程序开源版开发

道路救援入驻派单小程序开源版开发 1、用户立即救援 2、后台收到救援通知,派单救援师傅. 道路救援入驻派单小程序通常会包含一系列功能,旨在方便救援服务提供商、用户和后台管理系统之间的交互。以下是一个可能的功能列表: 用户端功能&…

前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的前端打包(Bundling)和前端构建工具(Build Tools)的作用1. 引言2. 前端打包(Bundling)2.1 概述2.2 常见的打包工具2.2.1 Webpack2.2.2 Parcel 2.3 …

合约期VS优惠期,搞明白他们的区别才能避免很多坑!

在购买流量卡时,相信大家也都发现了,市面上的不少套餐都是有合约期和优惠期的,尤其是联通和移动,那么,什么是合约期?什么又是优惠期呢? ​ 其实,目前很多在网上办理的大流量卡都是有…

静态图和动态图中的自动求导机制详解

01 静态图与动态图的区别 之前在 [1] 中提到过,自动求导(AutoDiff)机制是当前深度学习模型训练采用的主要方法,而在静态图和动态图中对于自动求导的处理是不一样的。作为前置知识,这里简单进行介绍。 我们都知道静态…

【深度学习】tensorboard的使用

目前正在写一个训练框架,需要有以下几个功能: 1.保存模型 2.断点继续训练 3.加载模型 4.tensorboard 查询训练记录的功能 命令: tensorboard --logdirruns --host192.168.112.5 效果: import torch import torch.nn as nn impor…

排序算法(2)之选择排序----直接选择排序和堆排序

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 排序算法(2)之交换排序----冒泡排序和堆排序 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论…

【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)

目录 一、信息安全的概念 1.1 信息安全的基本要素和范围 1.2 信息存储安全 1.3 网络安全 二、信息安全系统的组成框架 2.1 技术体系 2.2 组织机构体系 2.3 管理体系 三、 信息加解密技术 3.1 数据加密 3.2 对称加密技术 3.3 非对称加密算法 3.4 数字信封 3.5 信…

信息系统项目管理师(项目管理师)

项目管理者再坚持“聚焦于价值”原则时,应该关注的关键点包括:1价值是项目成功的最终指标;2价值可以再整个项目进行期间、项目结束或完成后实现;3价值可以从定性和/或定量的角度进行定义和衡量;4以成果为导向&#xff…

鸿蒙开发系统基础能力:【@ohos.pasteboard (剪贴板)】

剪贴板 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import pasteboard from ohos.pasteboard;属性 系统能力: 以下各项对应的系统能力均为SystemCapability.MiscServices.Pasteb…

ubuntu 18 虚拟机安装(1)

ubuntu 18 虚拟机安装 ubuntu 18.04.6 Ubuntu 18.04.6 LTS (Bionic Beaver) https://releases.ubuntu.com/bionic/ 参考: 设置固定IP地址 https://blog.csdn.net/wowocpp/article/details/126160428 https://www.jianshu.com/p/1d133c0dec9d ubuntu-18.04.6-l…

相亲交友微信小程序系统源码

开启浪漫邂逅新篇章 相亲交友——随着年龄的增长,越来越多的人开始关注自己的婚姻问题,为了提高相亲服务的质量,这款应用就可以拓宽在线社交网络范围。​ 💑 引言:邂逅爱情的新方式 在繁忙的都市生活中,寻…

《梦醒蝶飞:释放Excel函数与公式的力量》6.1 DATE函数

6.1 DATE函数 第一节:DATE函数 1)DATE函数概述 DATE函数是Excel中的一个内置函数,用于根据指定的年、月、日返回对应的日期序列号。这个函数非常有用,尤其是在处理日期数据时,它可以帮助你构建特定的日期&#xff0…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及氢储能与需求响应的路域综合能源系统规划方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

DOOPRIME:美联储降息何时到来?经济数据是关键

摘要: 美联储理事库克在纽约经济俱乐部的演讲中表示,降息时机取决于未来的经济数据和通胀走势。她预期,明年通胀将显著放缓,其中核心商品通胀可能保持轻微负增长,剔除住房的核心服务通胀将逐步放缓。尽管市场对降息时…