如何把py文件引入交互式_引入交互驱动设计
如何把py文件引入交互式
在阅读本文之前,我强烈建议您阅读作为该博客基础的前两篇博客文章: MVC,交付机制和域模型以及“ 由内而外开发的案例” 。
一段时间后,大多数软件项目变得很难维护和发展。 企业一直在抱怨事情要永远交付。 开发人员抱怨代码很乱,他们难以理解。 他们说,该代码的设计不良,不能反映业务概念和各自的流程。 大多数情况下,他们通常是自己编写代码。
开发团队通常没有有效的方式来分割业务功能和设计软件,无法以渐进的方式交付软件,同时又使代码库与业务流程保持一致并易于维护。
良好的软件设计过程应有助于开发人员在其应用程序中清楚地表示功能区域和业务流程,使业务中的更改与各自的软件组件保持一致。 业务一个区域的更改不应导致系统的多个区域被更改。 识别系统中的行为应该很简单,并且新开发人员应该不会有任何问题来理解代码。
交互驱动设计(IDD)
IDD是一种基于“由内而外”开发的软件设计和开发的迭代方法,该方法着重于根据系统的外部使用情况对行为进行建模,同时保持内部业务组件的内部表示。
IDD的前提是仅应存在一个应用程序,以满足用户或服务(称为参与者)的外部需求。 参与者与应用程序之间的每次交互都代表了参与者必须由应用程序满足的需求。 IDD的目标是迭代设计和构建满足这些需求的应用程序。
IDD的影响
IDD建立在坚实的软件设计基础之上,其灵感来自于责任驱动设计,领域驱动设计,行为驱动开发以及许多其他可用的设计原理,模式,方法和方法。
IDD汇集了一系列新的和现有的方法,以创建一种更具规范性但更灵活的软件设计和开发方法。
IDD范围
IDD专注于系统功能方面的设计和开发,包括体系结构,宏和微观设计。
IDD方法摘要
IDD专注于参与者与应用程序之间以及应用程序内部不同行为之间的交互。 内部行为是通过分解参与者触发的行为来发现的。 对识别出的每个行为重复该过程,将其分解为较小的行为,直到没有较小的行为。 细粒度的行为成为细粒度行为的客户。 创建每种行为都是为了满足现有行为的需求或外部需求。 这就是我们所谓的由外而内的设计 。
行为发现
行为发现发生在五个级别:跨应用程序功能,应用程序,应用程序功能,组件和单元。
- 跨应用程序功能:通常由分布式(微)服务体系结构中的一组应用程序提供的行为。
- 应用程序:单个应用程序提供给外部参与者的行为的集合。 提供给外部世界的每种行为都被视为一种功能。
- 应用程序功能:满足演员单一需求的行为。 通常,特征会协调不同组件(或功能区域)的行为。
- 组件:与单个功能区域有关的行为的集合。
- 单位:不可分解的行为,是组件的一部分。
功能区
术语功能区域用于定义我们业务领域的区域。 功能领域的示例包括产品,付款,客户或订单。 根据使用的大小,复杂性和体系结构样式,功能区域可以映射到单个应用程序中的独立应用程序(服务)或业务组件。
由内而外的行为发现
无论级别如何,行为发现通常都是由内而外进行的。 唯一的区别是使用的抽象级别。
对于微服务环境中的跨应用程序功能,我们首先选择由参与者触发的一些主要流程(用户旅程,业务流程)。 对于每个流程,我们执行以下操作:
- 定义将处理参与者的请求的应用程序(服务)。 这是将“拥有”跨应用程序功能的应用程序。
- 然后,我们将主要行为分解为较小的行为,以确保它们都处于相似的抽象级别。
- 下一步是定义哪些功能区域将拥有较小的行为。
- 如果已经存在合适的功能区域,则将行为添加到其中。 如果没有,我们需要创建一个域,因为我们的域中可能缺少域概念。
- 对每个较小的行为重复该过程,直到无法分解更多,或者达到不相关的抽象级别为止。
此过程应与包括产品所有者和测试人员在内的整个团队共同完成。 表示此发现过程的最佳方法是在白板上绘制序列图。 在探索了几个主要流程后发现的功能领域可以合并,并且将自然成为独立应用程序(或服务)的候选对象。
可以将上述相同过程用于较低级别的行为,例如组件。 区别在于,我们不是在谈论高级行为,功能区域和服务,而是在谈论低级行为,类和方法。
有关不同级别的行为发现的更多详细信息,请参见单独的文章。
IDD迭代开发
IDD建议软件团队一次应对一个工作主题(史诗)进行工作。 这样可以最大程度地减少团队之间的依赖性,使团队专注于交付,并保持应用程序不同区域的设计稳定一致。
每个工作主题都分解为功能,这些功能在团队的待办事项列表中优先排列。 团队以迭代的方式工作,一次只有一个功能。 从交付机制一直到持久性或与其他应用程序集成,每个功能都按垂直切片划分。 简单要素只有一个切片,而复杂要素可以分为多个切片。 该团队一次只处理一个切片,只有在将切片部署到生产中后才移至下一个切片。
在提交功能之前,团队必须了解参与者如何与应用程序进行交互才能从功能中受益。 在将特征分割成小的垂直切片之前,必须对传送机制进行水平探索。 应该从外部到内部进行特征切片,换句话说,应该从传递机制到持久性或集成点。
切片功能的不同策略将在以后的文章中介绍。
IDD开发流程和优先级
使用IDD构建软件时,第一步是确定将从我们的应用程序功能中受益的参与者(用户或其他系统或服务)。 每个功能都应满足一个或多个参与者的需求。
一旦确定了参与者,就可以分析参与者与系统之间的交互。 在此分析中,我们不会更深入地研究应用程序的内部行为。 我们将其保持肤浅,仅关注演员和应用程序之间的对话。 参与者与应用程序之间的每个交互都是一个功能。 我们将此步骤称为水平探索 。
通过手边的功能列表,我们对它们进行优先级排序,并垂直分割最高优先级的功能。
每个切片都是由内而外开发的,从交付机制(用户界面,入站队列,API端点,控制器等)开始,然后逐渐向内移动,直到实现整个切片。
IDD设计和测试指导
在IDD中,我们根据用户或其他系统的外部需求开始从输入(外部)到输出(内部)的设计和测试。
IDD使设计和测试驱动的开发(TDD)与执行流程保持一致。
摘要
IDD是一种由外而内的软件设计方法 ,可帮助开发团队根据参与者与应用程序之间的交互以及应用程序内的行为来设计和构建软件。
IDD促进迭代开发以及开发人员与业务之间的紧密协作。 软件的可持续发展和持续交付是IDD的一些主要目标,而这两者都是通过高度关注应用程序设计并将工作分割成小的垂直切片来实现的。
在以后的文章中,我将更详细地描述IDD内的所有元素,包括需求收集,体系结构,测试,代码组织,需求切片等等。 同时,您可以观看有关IDD技术方面的演示 。
翻译自: https://www.javacodegeeks.com/2017/12/introducing-interaction-driven-design.html
如何把py文件引入交互式