快速应用程序开发

什么是 RAD ?

快速应用程序开发(RAD)是一种专注于设计和原型设计阶段的开发方法,目的是获得用户的即时反馈。与先进行初始计划再进一步执行的传统开发模型不同,RAD 有着更多的灵活性。通过快速增量更新和即时用户反馈的不断迭代,使得最终能获得更好的产出结果。

詹姆斯·马丁(James Martin)于 1991 年定义了快速应用程序开发(RAD)的模型,提供了除瀑布式开发过程之外的另一种开发过程。经典的瀑布方式能完美地适应建筑领域和其他一些行业,这些行业中,需求范围一般很少变动,且变动的代价非常高。例如,如果开始建造一座桥梁,则不可能在完成一半时将其改建成一条渡轮。

相反,软件的开发过程却是比较灵活的。对同一业务需求的解决方案通常不止一个,且变换解决方案的成本较低。因此,基于瀑布式的详细设计和提前规划通常会输给快速试错的开发方式,还有,站在用户的角度,往往只有在看到具体的产品时,才能有思路并提供更好的反馈。

快速应用程序开发方法论的核心是从费时费力的计划工作转移到快速建立产品的原型上来。具体来说,RAD 模型将软件开发过程分为四个阶段:

快速应用程序开发
  1. 需求计划

在此阶段,用户和项目团队一起确定目标系统未来要达到的目标。主要关注于需要实现的业务目标,对于需求的严谨性没有太多要求。在原型设计阶段快速调整业务目标及需求的能力是关键。

  1. 用户设计

用户设计是快速应用程序开发方法的核心部分,是与瀑布模型相区别的关键点。这时,开发人员开始构建系统原型。目标是通过最快、成本最低的方式给用户提供一些可演示的内容。原型产品可以只满足一部分需求,或者只覆盖少数场景,并且,在代码编写时,也可以抄近路。

在原型准备好后,会拿给用户演示。开发团队尽可能收集所有的反馈,这里,原始需求会不可避免地发生改变:纸上似乎正确的东西在应用程序中可能完全不同。根据这些反馈,开发人员会重新修改原型,直到用户对结果感到满意。

  1. 软件开发

现在我们已经确切地知道了需要完成的内容。开始进行实质性地开发并测试,以便按期交付产品。这个阶段不能再走捷径了,需要关注产品的质量、可伸缩性、可维护性等等。并且,用户会一直参与对产品进行反馈,直到开发的最后阶段。在快速应用程序开发的周期的这个阶段,仍然可以接收需求的一些小调整。

根据我们选择的开发工具和其他因素,我们在设计阶段开发的原型可能会直接废弃不用。

  1. 部署上线

这是最后阶段,包括验收测试、产品上线和用户培训。

快速应用程序开发的优缺点

RAD 将天平从可预测性倾向至敏捷性,这样会带来一些正面和负面的影响。

优点

  1. 高质量

有了用户在原型阶段的深度参与,最终的完成的系统能更加贴合他们的需求,用户的满意度相对较高。

  1. 降低风险和成本

使用瀑布式开发方法,用户只能在项目交付时看到结果并提供反馈。在这一阶段如果再进行需求变更,将会费钱又费力。而使用 RAD 方法时,在原型阶段用户已经参与对成型的产品提供反馈,此时修改后面的需求开销不大。

缺点

  1. 缺乏可扩展性

RAD 开发模型需要开发团队与最终用户之间的紧密合作。当团队太大或利益相关者太多时,原型制作过程不可避免地会变慢。如果每个人都参与,对变更需求的频繁讨论也变得非常困难。因此,RAD 被认为是中小型团队的最佳选择。

  1. 软件设计不佳

在原型设计阶段偏重于特定的业务功能和走捷径的做法有时会导致整个解决方案设计不佳。

  1. 前期难以控制

显然,在项目完成原型开发阶段之前,是无法对项目范围、预算和时间进行预测。不过,仍然可以基于需求计划阶段的结果来确定一个大概的预期。

  1. 对用户依赖大

RAD 方法假设用户在项目生命周期的所有阶段都要参与,特别是需要深度了解需求的业务专家的参与,而他们通常是是公司中最忙的人。

RAD vs. Agile

如果您知道敏捷开发,此时,您也许觉得,快速应用程序开发与敏捷开发似乎是一样的?

RAD 这个术语的出现比敏捷早 10 年,而且也同样使用了迭代的方法,所以通常被认为是敏捷开发的前身。但事实上,RAD 是一种具体的方法论,而敏捷则涉及到哲学立场,不仅仅指软件开发。所以公平一点说,RAD 与 Scrum、KanBan、TDD 等开发方法一样,都属于敏捷软件开发方法学的内容。

我的项目能用 RAD 吗?

如上所述,RAD 无法在严苛的环境中使用,例如:

  • 需要预先知道预算和开发时间表
  • 用户无法定期参与或者用户不想过多消耗时间和精力
  • 项目范围大,参与团队多,利益相关者多

大型企业或政府组织的项目通常满足这些特点。但是,即使在这种情况下,也可以使用一些 RAD 的理念。例如,对于固定价格的项目,可以分割一部分预算用于原型和需求变更;如果有客户愿意参与,则将原型的范围限定在需求最难以确定的部分。

而另一方面,对于中小型企业或部门内的项目,则使用 RAD 会非常有效。在这些项目中,业务人员自己控制预算并且对项目成果非常用心。非常典型的例子就是各种业务线(LOB)应用系统,指的是业务流程自动化或者为了更有效地运行特定业务而开发的应用系统。

同样,对于创建网站这种项目来说,RAD 也非常适合。这种项目一般规模不大,涉及的相关人员也不多,但是需要他们尽早地参与,因为设计这个东西,是非常主观的,每个人的想法都不一样!

快速应用开发的工具

RAD 方法论的成功很大程度上依赖于快速地出原型以及紧密的协作,因此,选择合适的工具非常重要。

设计与原型制作

例如:Figma、Balsamiq、Invision、Sketch、Adobe XD。

使用诸如 Figma 和 InVision 之类的快速应用程序开发工具,图形设计师和用户体验专家能够快速完成原型,为用户提供完整的设计和可点击操作的原型来收集他们的反馈。一旦原型的某个迭代版本获得用户的认可,就可以将项目导出为前端开发人员可重用的格式,从而进入实质性的开发阶段。这些工具主要用于创建网站,但也可以为更复杂的应用系统或用户界面设计用户体验和原型。

快速应用程序开发

其他的一些工具,比如 Balsamiq,主要是业务分析师使用。通过简单的线框图设计业务原型,而漂亮的最终设计通常在后期完成。这类工具对于具有复杂用户交互功能的大型系统是不错的选择。

快速应用程序开发

软件开发

现阶段,软件开发仍然是创建应用系统中最耗时、最昂贵且最不确定的部分。因此,现代快速应用开发平台整合了坚实的基础体系框架、提供了实现典型功能的完备组件,当然,还有可以促进快速开发的工具。所有这些都是为了在项目的原型开发阶段和后续构建过程中更快地交付成果。

Gartner 和 Forrester 这样的咨询公司一直在引入新的术语来区分这些平台:低/零代码应用平台(LCAP)、高效率应用平台即服务(HPAPaaS)、多体验开发平台(MXDP)。但其实,这些可以按其目标受众进行分类。

低代码/零代码平台

例如:Mendix、Outsystems。

这些平台的核心理念是使没有开发技能的业务用户(指高级用户或业余开发人员)能够非常快速地交付可用的应用程序。当然,追求这种简单性的同时便意味着失去了灵活性,并且还有各种限制。我们在上一篇文章中介绍了这些限制和相关的风险。这种类型平台的产出要么是原型,要么是非常基础的系统。

快速应用程序开发

为专业开发人员服务的平台

例如:Embarcadero RAD Studio、Jmix、Ruby on Rails。

这些平台主要通过提供更高级别的 API 和代码生成来提升软件开发的速度和乐趣,开发人员无需编写重复的样板代码和通用基础功能。

Embarcadero RAD Studio(即以前的 Borland Delphi)是该领域的先驱之一,以可视化的 UI 设计器而闻名。诞生在网络时代之前,目前仍然能用于桌面和移动应用开发。

其他快速开发平台则更加关注 Web 应用的开发,因为现在用户主要通过 Web 进行交互。例如,在 Jmix 平台,我们尝试提供便利、快速的数据模型和界面的可视化设计,并结合了现代开源技术的强大功能。这种方式不仅可以提高原型制作速度,还可以将原型进行继续开发,成为可靠且可扩展的全功能企业应用系统。

快速应用程序开发

如果您有兴趣深入研究 RAD 平台,我们还有一篇关于 RAD 发展的文章供您阅读。

总结

快速应用程序开发是遵循敏捷哲学的开发方法之一。RAD 的关键原则是最终用户的紧密参与以及基于用户反馈的快速迭代原型设计。一旦用户对原型满意了,重点便转移到了交付最终成型的产品上。

在项目中快速制作原型和成功实施 RAD 方法的最重要因素就是选择正确的工具。针对不同类型的应用系统、项目阶段和团队技能,可选的工具和平台也相当多。

RAD 是一个古老的概念,但如今随着数字化转型的趋势以及快速推出产品的需求推动,它正在经历着复兴。对于适合的项目类型和团队配置,RAD 方法有助于在降低风险和缩短交付时间的同时提高用户满意度。

如果对我们提供的内容有意见或者建议,欢迎联系我们:
blog:https://blog.abmcode.com
wechat:abmcode_gh

Original: https://www.cnblogs.com/abmcode/p/what_is_rad.html
Author: 世开Coding
Title: 快速应用程序开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644219/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 小爱音响PC蓝牙方式连接配置

    直接连接是连接不上的,需要在小爱音响APP上进行如下配置,打开下面的配置 “音箱蓝牙可被发现”后,PC的蓝牙再去搜索,即可连上的同时,安装蓝牙音响的驱动。 …

    技术杂谈 2023年5月31日
    0271
  • Qt Creator pro文件常见配置

    HEADERS:指定项目的头文件(.h) SOURCES:指定项目的源文件(.cpp) FORMS:指定协议UIC处理的由Qt Designer生成的.ui文件 RESOURCES…

    技术杂谈 2023年7月11日
    095
  • vite2 打包的时候vendor-xxx.js文件过大的解决方法

    vite2是一个非常好用的工具,只是随着代码的增多,打包的时候 vendor-xxxxxx.js 文件也越来越大,这就郁闷了。 输出文件名字/static/vendor.9b569…

    技术杂谈 2023年5月31日
    094
  • odbc 驱动开发的一些资料

    dremio 以前版本的odbc 当前是已经不支持直接下载了,早期版本的odbc 是基于了drill 的odbc 驱动,利用了SimbaEngine sdk以下是整理的一些资料可以…

    技术杂谈 2023年5月30日
    0105
  • delphi StringGrid 表格的复制粘贴

    //参考如下代码~~uses Clipbrd; function StringGridSelectText(mStringGrid: TStringGrid): string;va…

    技术杂谈 2023年5月31日
    093
  • netlify跳转

    Redirecting to Netlify Original: https://www.cnblogs.com/1314h/p/16661326.htmlAuthor: Naih…

    技术杂谈 2023年6月21日
    092
  • 浅析Python中的asyncio

    asyncio理解 最近突然想了解一下Python的异步编程,于是乎就去了解了下asyncio的使用。借用官网的话 asyncio 是用来编写并发代码的库,使用 async/awa…

    技术杂谈 2023年7月23日
    069
  • [转]私有笔记部署

    故事的起源是一个由于线性代数期末考几道计算题卡住算不出来折腾半天而考后看某课代表提前交卷又感觉人均 AK 了以致十分 emo 想要暂时逃避学习的下午。 TL;DR 思源笔记最好。快…

    技术杂谈 2023年5月30日
    0126
  • php: 单下划线函数意义

    待完善参考 posted @2022-09-21 09:42 CodeWater 阅读(24 ) 评论() 编辑 Original: https://www.cnblogs.com…

    技术杂谈 2023年7月25日
    074
  • html大文件传输思路

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制。 PC端全平台支持,…

    技术杂谈 2023年5月30日
    094
  • 02 Transformer 中 Add&Norm (残差和标准化)代码实现

    python/pytorch 基础 培训机构(Django 类似于 Transformers) 首先由一个 norm 函数 norm 里面做残差,会输入( x 和 淡粉色z1,残差…

    技术杂谈 2023年5月31日
    0116
  • 导航规划之CH算法介绍

    1 CH算法的基本原理 CH(Contraction Hierarchies)算法是 Robert Geisberger、Peter Sanders、Dominik Schulte…

    技术杂谈 2023年5月31日
    0123
  • 线上事故

    前言 前段时间,我们线上系统出现了一个事故:用户创建了商品,在商城的商品列表页看不到,也搜索不到。、 这个问题持续了大概半个小时,最后发现竟然是我的锅。 这个事情怎么说呢,完全是我…

    技术杂谈 2023年5月31日
    076
  • 聊聊我们是如何做技术保障的

    原创不易,求分享、求一键三连 资料地址:https://files.cnblogs.com/files/yexiaochai/%E4%BF%9D%E9%9A%9C.zip?t=16…

    技术杂谈 2023年6月1日
    095
  • 面试腾讯遇到这道题也是不容易呀

    问题描述 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 示例: 输入:nums = [10,2] 输出:”210&#824…

    技术杂谈 2023年7月25日
    060
  • 3-在Django中使用使用数据库

    数据库设置 在上一章节中学习了如何创建Django项目,在Django项目中创建web应用,以及如何在Django主程序的URL中引用web应用中的URL。下面来了解如何在Djan…

    技术杂谈 2023年7月10日
    060
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球