IDD是一种基于外部开发的软件设计和开发的迭代方法,它侧重于根据系统的外部使用来建模行为,同时保持业务组件的内部表示。
在阅读本文之前,我强烈建议您阅读以前的两篇博客文章:MVC,交付机制和领域模型以及外部开发案例。
大部分软件项目经过一段时间后很难维持和发展。企业不断抱怨,事情需要永远交付。开发人员抱怨代码是一团糟,他们很难理解它。他们说代码设计不好,不能反映业务概念和流程。更多的时候,他们自己编写代码。
开发团队通常没有一种有效的方法来分割业务功能和设计软件,以便可以递增地交付软件,同时使代码库与业务流保持一致并易于维护。
一个好的软件设计过程应该可以帮助开发人员清楚地表示其应用程序中的功能区域和业务流程,并将业务变化与各自的软件组件进行对比。业务领域的变化不应该导致系统的多个领域发生变化。识别系统中的行为应该是直截了当的,新开发人员不应该有任何问题来理解代码。
交互驱动设计(IDD)
IDD是一种基于Outside-In Development的软件设计和开发的迭代方法,它侧重于根据系统的外部使用进行建模行为,同时保持对内聚业务组件的内部表示。
IDD的前提是,应用程序只能存在以满足用户或服务的外部需求 - 称为角色。参与者和应用程序之间的每个交互表示对应用程序必须满足的参与者的需求。IDD的目标是反复设计和构建满足这些需求的应用程序。
IDD的影响
在坚实的软件设计基础的基础上,IDD受到了责任驱动设计,领域驱动设计,行为驱动开发以及其他许多设计原则,模式,方法和方法的启发。
国际发展研究所汇集了一整套新的和现有的方法,为软件设计和开发创造了一个更具说明性,但灵活的方法。
IDD范围
IDD专注于系统功能方面的设计和开发,包括架构,宏观和微观设计。
IDD方法总结
IDD专注于角色与应用程序之间的交互,以及应用程序内部不同行为之间的交互。内部行为是通过分解行为者触发的行为来发现的。对于每个被识别的行为重复这个过程,把它们分解成更小的行为,直到没有更小的行为。粗粒行为成为细粒行为的客户。每个行为都是为满足现有行为或外部需求的需求而创建的。这就是我们所说的外部设计。
行为发现
行为发现发生在五个层次上:跨应用程序功能,应用程序,应用程序功能,组件和单元。
- 交叉应用特性:由一组应用提供的行为,通常在分布式(微)服务体系结构中。
- 应用程序:将单个应用程序提供的行为收集到外部参与者。提供给外部世界的每个行为都被认为是一个特征。
- 应用程序特征:满足演员单一需求的行为。通常,一个功能编排不同组件(或功能区域)的行为。
- 组件:收集与单个功能区域有关的行为。
- 单位:不可分解的行为,组成部分。
功能区域
术语功能区域用于定义我们业务领域的一个区域。职能领域的例子将是产品,付款,客户或订单等。根据所使用的大小,复杂性和架构风格,功能区域可以映射到单个应用程序内的独立应用程序(服务)或业务组件。
外在行为发现
不管级别如何,行为发现主要是在外部进行的。唯一的区别是使用的抽象层次。
对于微服务环境中的交叉应用功能,我们首先会选择一些由主角触发的主要流程(用户旅程,业务流程)。对于每一个流程,我们都做到以下几点:
- 1. 定义将处理演员请求的应用程序(服务)。这是将“拥有”跨应用程序功能的应用程序。
- 2. 然后,我们将主要行为分解成更小的行为,确保它们都处于相似的抽象层次。
- 3. 下一步是定义哪些功能区将拥有较小的行为。
- 4. 如果一个合适的功能区域已经存在,那么行为就被添加到它。如果不是,我们需要创建一个,因为在我们的域中可能缺少一个域概念。
- 5. 对每个较小的行为重复这个过程,直到我们不能分解更多,或者我们到达一个不相关的抽象层次。
这个过程应该与整个团队合作完成,包括产品所有者和测试人员。表示此发现过程的最佳方法是在白板上绘制序列图。探索几个主要流程后发现的功能区域可以被合并,并成为自然人选,成为独立的应用程序(或服务)。
上述相同的过程可以用于较低级别的行为,如组件。不同之处在于,我们不是谈论高层次的行为,职能领域和服务,而是谈论低层次的行为,阶级和方法。
更多有关不同级别的行为发现的详细信息。
IDD迭代开发
IDD建议一个软件团队一次只能工作一个主题(史诗)。这最大限度地减少了团队之间的依赖关系,使团队专注于交付,并保持应用程序不同领域的设计稳定一致。
每个工作主题都被分解为特征,这些特征在团队的积压中排列优先级。该团队一次一个迭代地工作,一个功能。每个功能分为垂直切片,从传送机制一直到持久性或与其他应用程序的集成。简单的特征具有单个切片,其中复杂的特征可以被分成许多切片。该团队一次只能在一个切片上工作,只有切片部署到生产环境后才能切换到下一个切片。
在提交功能之前,团队必须了解演员如何与应用程序进行交互以从功能中受益。在将特征划分成小垂直切片之前,必须对投递机制进行水平探索。特征切片应该从外部到内部,换句话说,从传递机制到持续或集成点。
切片功能的不同策略将在以后的文章中介绍。
国际直拨发展进程和优先次序
使用IDD构建软件时,首先要确定将从我们的应用程序的功能中受益的参与者(用户或其他系统或服务)。每个功能都应该满足一个或多个参与者的需求。
一旦我们确定演员,我们分析演员将与系统的交互。在这个分析中,我们不会深入到应用程序的内部行为。我们保持肤浅,纯粹关注演员和应用程序之间的对话。actor和应用程序之间的每个交互都是一个特性。我们把这一步称为横向探索。
通过手头的功能列表,我们优先考虑它们,并垂直划分最高优先级功能。
从交付机制(用户界面,入站队列,API端点,控制器等)开始,逐渐向内部开发切片,直到整个切片被实现为止。
IDD设计和测试指导
在IDD,我们开始从输入(外部)到输出(内部)的设计和测试,以满足用户或其他系统的外部需求。
IDD将设计和测试驱动开发(TDD)与执行流程对齐。
概要
IDD是一种外在的软件设计方法,可帮助开发团队根据参与者与应用程序之间的交互以及应用程序中的行为来设计和构建软件。
IDD促进了开发人员和业务部门之间的迭代开发和紧密协作。软件的可持续发展和持续交付是IDD的一些主要目标,都是通过强调应用程序的设计和将工作分解成小的垂直切片来实现的。
在以后的文章中,我将详细描述IDD中的所有元素,包括需求收集,架构,测试,代码组织,需求分割等等。同时,您可以观看专注于IDD更多技术方面的演示。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.