快速应用程序开发 (RAD) 是一种软件开发方法,它侧重开发速度、迭代开发与用户反馈,而非详尽的前期规划。在快速应用开发 (RAD) 方法论中,开发工作会拆分为名为迭代的短周期推进。每个周期都会产出可运行的应用程序模块,可供用户测试并提交反馈。
用户在软件开发生命周期 (SDLC) 全程参与原型交互,能够在缩短上市周期的同时,产出质量更高的最终产品。
RAD 尤其适用于需要由用户界面 (UI) 需求主导开发的特定用例。既是界面尚在开发阶段,用户提前上手体验,也能在开发前期提供更有价值的反馈。这能够避免软件上线投入生产后,用户发现产品无法匹配需求而引发严重后果。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
以下是 IT 先驱 James Martin 定义的 RAD 迭代的四个典型阶段。RAD 的历史可以追溯到 20 世纪 80 年代中期,IBM 的 Martin 在其 1991 年出版的《快速应用程序开发》一书中将其正式确立为一种特定方法,尽管在此期间其他人也同时提出了其他 RAD 方法。这里介绍的四个阶段是由 Martin 专门定义的,但 RAD 作为软件开发的一种通用方法,不能仅归功于 Martin。
规划阶段的目标不是提前定义每项需求。相反,团队会尝试定义要解决的问题、目标用户、对用户最重要的功能以及开发的主要限制因素。这些限制包括预算、时间安排、与更广泛技术栈的整合以及合规问题。
该阶段不会生成庞大的需求文档,而是产生用户故事、线框图、功能列表、架构决策、项目目标和大致时间表。与其他方法相比,这种方法代表了最少的规划,这是有意的。规划有意保持轻量级,以便开发可以快速开始原型设计。
RAD 适配需求持续变更的场景,因为用户往往只有看到原型后,才能明确自身真实需求。在开发过程中实时沉淀经验,用于完善整体开发方案。本阶段仅作为过渡铺垫。
团队在设计阶段快速构建模型、可点击原型、早期用户界面流程和功能演示。这些用于验证想法和发现可用性问题。在此过程中会获取利益相关者的支持。随着流程明确重要和不重要的过程,抽象的需求也会得到澄清。错误的假设会及早暴露出来,对产品应实现的目标的统一理解也会逐渐形成。
重要的是,不能把原型看作是“只是为了展示”的东西。它可以作为构建的基础,通常会直接演变为最终产品。
它是核心开发阶段。原型稳定并形成统一目标后,开发人员就会通过小规模迭代、快速发布与集成,快速搭建各类功能。开发人员在短周期内并行作业,开展跨专业深度协作。团队不会完成一个模块后再开发下一个组件,而是同步推进全部开发内容。
例如,在更传统的方法中,首先由一个团队建立一个身份验证工具,然后再交给另一个团队建立一个报告工具。在 RAD 模式下,这将同时进行,两个团队将密切协作。
为了加快速度,快速应用程序开发工具通常包括低代码和无代码解决方案、自动化、可复用库、组件框架及其他预构建模板,而不是从零开始构建所有内容。这提高了交付速度,但有时会牺牲掉完美的架构、长期可维护性和文档记录。
已完成的、经过测试的应用程序将部署到实时生产环境中。这通常涉及迁移数据、用户培训和处理最后一刻出现的错误。由于在早期阶段进行了持续测试,因此与传统方法相比,过渡过程通常更平稳、更快速。
RAD 通常允许组织在预算范围内按时完成更多产品。但这种方法也有其缺点。
最主要的挑战可能是如何管理用户和开发人员之间的众多接触点。RAD 是作为对瀑布式方法的回应而开发的;瀑布式方法是 SDLC 的一种较早方法,需要在下一阶段开始之前完成一个个顺序阶段。瀑布模型源于桥梁和建筑等物理基础设施的传统工程设计。但软件的行为与现实系统不同。它更加灵活,在开发过程中可以根据用户的反馈进行修改。
在瀑布模式下,用户一般仅在前期定义需求,后续开发人员搭建方案时便不再参与。RAD 模式会让用户全程参与项目全流程。这意味着组织需要安排利益相关者参与测试并提供反馈。通常最适合提供有效反馈的人员日常工作繁忙,但如果缺少他们的参与,项目便会存在失败风险。这会带来 DevOps 层面的管理难题,需要项目经理做好统筹管控。
RAD 流程的灵活性使其非常实用,但这种灵活性往往是以牺牲控制力为代价的。瀑布式方法有严格的阶段,而 RAD 则有点混乱。因此,对于故障可能导致死亡或其他灾难的关键软件,或者对于有许多组件的大型系统来说,这种方法可能并不理想。
范围蔓延也是 RAD 的一个常见缺点。用户不断请求“锦上添花”的功能,导致时间延长和预算膨胀。在处理用户请求时,应优先考虑核心功能,这一点很重要。
快速应用开发 (RAD) 节奏高效,开发人员会降低文档编写优先级,保障整体开发速度。该模式的弊端在于长期维护难度较高,后续新增开发人员接手项目时门槛提升,长期积累安全风险。
快速原型制作通常意味着进展非常迅速,并且为了响应用户反馈要进行许多小的增量调整,以至于工程师们忽略了更大的架构问题。如果没有强有力的软件工程规范,系统设计可能会变得不一致,整合可能会一团糟,模型可能会发生漂移,软件项目的整体可能会与它们融入更大系统的方式脱节。在 RAD 模型下,可扩展性是一个关注点,因为大规模系统通常需要严谨的架构、规划和正式流程。
RAD 侧重开发速度,容易让团队优先处理即时需求、快速修复问题,形成短期导向思维,长期来看会衍生更多隐患。
RAD 与敏捷开发存在共通之处,二者均摒弃冗长固化的开发周期,重视迭代机制。但 RAD 主要优化应用程序交付速度,敏捷开发则侧重适配性强、可持续的软件开发模式。敏捷依托聚焦稳定交付节奏与冲刺迭代的 Scrum 框架,强调结构化可持续交付,通过规划迭代、明确目标、岗位与流程,保障长期工程体系稳定。
完全托管的单租户服务,用于开发和交付 Java 应用程序。
使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
云应用程序开发意味着一次构建、快速迭代和随处部署。