「敏捷建模」纪律之敏捷设计理念

2023-10-30 15:10

本文主要是介绍「敏捷建模」纪律之敏捷设计理念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文概述了敏捷软件开发团队的设计策略。这些策略对于扩展敏捷软件开发以满足现代IT组织的实际需求至关重要。敏捷的设计方法与传统方法截然不同,显然也更有效。重要的是要了解:

  • 敏捷设计实践

  • 敏捷设计理念

  • 整个敏捷生命周期的设计

1.敏捷设计实践

从高级架构实践到低级编程实践,有一系列敏捷设计实践,参见图1。这些实践中的每一个都很重要,如果您的团队要在敏捷设计方面有效,则每个实践都是必需的。

图1.敏捷设计实践。

501173d067f620f588aea0e371f4c9c8.png

2.敏捷设计理念

  1. 敏捷设计是紧急的,它们不是预先定义的。随着时间的推移,您的整体系统设计将不断涌现,不断发展以满足新的需求并酌情利用新技术。虽然在“迭代0”期间您经常会在项目的最初阶段进行一些初始架构建模,但这足以让您的团队继续前进。在您开始编码之前,敏捷者不需要获得完整记录的模型集(尽管有时,有时候,您可能需要执行前瞻性建模)。

  2. 您的单元测试构成了大部分详细的设计文档。使用测试驱动开发(TDD)开发方法,您可以编写测试,然后编写足够的域代码来完成测试。这种方法的一个重要副作用是,您的单元测试不仅验证您的代码,它们还以可执行规范的形式构成您的大部分设计文档。TDD是AMDD的补充,实际上是由AMDD扩展的。

  3. 设计模型需要勉强够用。您不需要对模型中的每个细节进行建模,模型不需要完美,并且它们当然不需要完整。还记得你最后一次从设计规范编码(如果你曾经做过)?你真的看过所有细粒度的细节吗?不,因为你有足够的能力自己处理细节。

  4. 多种型号。有效的开发人员意识到每种类型的模型都有其优点和缺点,因此他们需要为手头的工作应用正确的模型。由于软件开发很复杂,因此您很快意识到需要了解各种模型才能有效。本新闻稿中提到的所有模型等都在Agile Models Distilled页面中进行了描述。

  5. 您通常只需要模型的子集。虽然您可以使用许多建模技术,但事实是任何给定的项目团队只需要一个子集。可以这样想:在家里的工具箱里,你有各种各样的螺丝刀,扳手,钳子等等。对于任何给定的维修工作,您将只使用一些工具。不同的工作,不同的工具。您永远不需要同时使用所有工具,但随着时间的推移,您将以各种方式使用它们。

  6. 每种型号都可用于各种用途。UML类图可用于描述高级域模型或低级设计,更不用说介于两者之间的事物了。用例可用于模拟流程的基本性质或详细的系统使用描述,其中考虑了架构决策。永远不要低估模型的灵活性。

  7. 设计师也应该编码。每当模型被移交给其他人进行编码时,程序员就不会理解模型,会遗漏一些细微差别,甚至可能完全忽略模型以支持他们自己的方法。此外,即使交接成功,您也会发现模型中需要的细节远远多于您自己编写的细节。简而言之,将设计与编程分离是一个风险和昂贵的主张。在团队中推广可以设计和编码的专家是更有效的。

  8. 用代码证明它。永远不要假设你的设计有效相反,通过编写代码来确定它是否确实有效,从而获得具体的反馈。

  9. 反馈是你的朋友。永远不要忘记你和你团队中的其他人一样只是凡人。期待收到反馈 - 我建议您积极寻求 - 关于您的工作,并准备好考虑并采取相应行动。您的系统不仅会更好,您还可以在此过程中学到一些东西。

  10. 有时最简单的工具是复杂的CASE工具。在需求方面,我更喜欢纸和白板等包容性工具,但在设计方面,我倾向于使用复杂的工具(重新)为我生成代码。就像我的祖父总是说的那样,你应该使用合适的工具来完成工作。

  11. 迭代,迭代,迭代。使用迭代的开发方法,您可以根据需求进行一些工作,进行一些分析,进行一些设计,一些编码,一些测试,并根据需要在这些活动之间进行迭代。您还将在处理各种工件之间来回迭代,在正确的时间处理正确的工件。

  12. 设计非常重要,你应该每天都这样做。在构建之前,仔细思考如何构建某些东西,实际设计它是至关重要的。您的设计工作可以采用白板上的草图形式,使用复杂建模工具创建的详细模型,或者在编写业务代码之前编写的简单测试。敏捷开发人员意识到设计是如此重要以至于他们每天都在做,设计不仅仅是您在完成编写源代码的“实际工作”之前在项目早期所做的一个阶段。

  13. 明智地为您的实施环境设计。利用您的实施环境的功能,但要聪明一点。权衡是正常的,但要了解其影响并管理所涉及的风险。每次使用产品(例如数据库,操作系统或中间件工具)中的独特性能增强功能时,您可能会将系统与该产品耦合,从而降低其可移植性。为了最大限度地降低实施环境对系统的影响,您可以对软件进行分层并包装特定功能,使其对用户显得通用。

  14. 记录复杂的事情。如果它很复杂,那就彻底记录下来。更好的是,花时间设计它,这很简单。记住AM练习创建简单内容。

  15. 不要过度记录。您需要记录您的设计,但不应该过度记录。请记住,用户付钱给您构建系统,而不是记录它们。在记录和文档之间有一个细微的界限,只有通过经验才能找到它。在文档方面尽量保持敏捷。

  16. 不要被数据社区所牵制。不幸的是,数据社区中的许多人认为您需要采用串行方法进行设计,尤其是涉及数据库时。这种信念是由于不了解进化发展或某种被误导的需要来确定“一个真理高于一切”。诸如敏捷数据建模,数据库重构和数据库回归测试等进化数据库设计技术在实践中工作得非常好。

  17. 记住用户体验(UX)。对于最终用户,用户界面(UI)是系统。这意味着您的设计的一个重要方面是UX。有关更多信息,请参阅敏捷可用性简介以及如何将设计集成到敏捷过程中。

3.整个生命周期的设计

图2描绘了通用敏捷软件开发生命周期。为了便于讨论,需要注意的重要一点是,传统主义者不熟悉设计阶段,也没有需求阶段。敏捷开发人员将在迭代0期间进行一些高级架构建模,也称为预热阶段,在开发迭代期间甚至在最终游戏期间(如果需要)进行详细设计。

图2. Agile SDLC(单击以展开)。

058bf9a1846376e5f819e0e971c8c7c4.png

图3描绘了敏捷模型驱动开发(AMDD)生命周期,其重点是建模如何适应整个敏捷软件开发生命周期。在项目早期,您至少需要了解如何构建系统。它是大型机COBOL应用程序吗?一个.Net应用程序?J2EE?别的什么?在迭代0期间,项目的开发人员将聚集在一个房间,通常围绕白板,讨论,然后勾勒出系统的潜在架构。这种架构可能会随着时间的推移而发展,它不会非常详细(它现在只需要足够好),并且需要编写很少的文档(如果有的话)。目标是确定架构策略,而不是编写大量文档。

图3. AMDD生命周期。

016d189e30e8c561f04b2b6edb09e2b7.png

当开发人员有新的实施要求时,他们会问自己是否理解要求的内容。如果没有,那么他们会做一些即时(JIT)“模型风暴”来确定实施要求的策略。这种模型风暴通常在迭代开始时在迭代的详细规划工作期间完成,或者在迭代期间的某个时间如果他们意识到他们需要进一步探索需求。这种建模工作的一部分将是对需求的分析以及解决方案的设计,这通常会在几分钟的时间内发生。在极限编程(XP)中,他们将此称为“快速设计会话”。

如果团队采用测试驱动开发(TDD)方法,则详细设计被有效地指定为开发人员测试,而不是详细模型。因为在编写足够的生产代码来完成测试之前编写测试,实际上在编写测试时会考虑生产代码的设计。您不是创建必然会过时的静态设计文档,而是编写一个可执行规范,开发人员可以通过该规范来保持最新,因为它实际上为它们提供了价值。该策略是单一采购信息的AM实践的一个示例,其中信息被捕获一次并用于多种目的。在这种情况下,详细规范和确认测试。

当你停下来思考它时,特别是在图2中,TDD有点用词不当。虽然您的开发人员测试正在“推动”代码的设计,但您的敏捷模型正在推动您的整体思考。

本文:https://pub.intelligentx.net/agilemodeling-agile-design

讨论:请加入知识星球或者小红圈【首席架构师圈】或者小号【jiagoushi_pro】

本文
讨论:知识星球【首席架构师圈】或者加微信小号【cea_csa_cto】或者加QQ群【792862318】
公众号

【jiagoushipro】
【超级架构师】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
a8be2693d7f85d22490094e028a191c6.png
微信小号

【cea_csa_cto】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

8aaa44b1c9b007a39bcece88942bb3ef.png

QQ群

【792862318】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

0b158c4e1758333e18fcc77d74450902.png

视频号【超级架构师】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

f6c450977f34caa7a6572642bb14d3a9.png

知识星球向大咖提问,近距离接触,或者获得私密资料分享。知识星球【首席架构师圈】
喜马拉雅路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
微博【智能时刻】智能时刻
哔哩哔哩【超级架构师】
抖音【cea_csa_cto】超级架构师
快手【cea_csa_cto】超级架构师
小红书【cea_csa_cto】超级架构师首席架构师智库



谢谢大家关注,转发,点赞和点在看。

这篇关于「敏捷建模」纪律之敏捷设计理念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308768

相关文章

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

Spring 理念

Spring 的成功来源于理念,而不是技术,它最核心的理念就是IoC(控制反转)和AOP(面向切面编程),其中IoC是Spring的基础,而AOP则是其重要的功能,最为典型的当属数据库事务的使用。 那么Spring做到什么呢? Rod Johnson(倡导者)当初的描述如下: We believe that: J2EE should be easier to

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在