架构设计
文章平均质量分 87
pumpkin84514
这个作者很懒,什么都没留下…
展开
-
如何利用UML进行领域建模
利用UML进行领域建模时,识别核心实体、定义实体间的关联关系、处理复杂的多对多关系都是非常重要的步骤。通过引入中间实体,复杂的多对多关系可以被拆分成两个简单的一对多关系。此外,完善业务规则和建立领域词汇表对模型的准确性至关重要。领域建模是一项需要不断实践的技能,建议将这些概念应用到实际项目中,通过反复练习来提升掌握度。原创 2024-09-15 21:32:34 · 797 阅读 · 0 评论 -
DDD的主要流程
DDD 开发流程分为和两大部分,接下来是具体的流程讲解以及流程图。原创 2024-09-15 15:13:46 · 230 阅读 · 0 评论 -
Mermaid说明
在 Mermaid 中,注释使用%%符号添加。这些注释在生成的图形中不会显示,它们仅用于在 Mermaid 源代码中添加额外的说明或文档。可以根据具体的图类型在适当的位置添加注释,以提高代码的可读性和可维护性。原创 2024-09-12 00:12:51 · 1265 阅读 · 0 评论 -
SEELE 框架是
SEELESensing(感知)Experimenting(实验)Evaluating(评估)Learning(学习)和Executing(执行)。它强调通过不断的感知、实验、评估和学习来推动组织的执行,实现持续优化和进步。SEELE 框架特别适用于不确定性高、变化快的环境,通过快速的反馈循环帮助组织更好地应对挑战。SEELE 框架是一种面向持续改进和创新的管理工具。通过感知、实验、评估、学习和执行的循环,它帮助团队不断优化,适应快速变化的环境。原创 2024-09-11 00:05:56 · 1051 阅读 · 0 评论 -
软件开发如何利用LLM提效
LLM 在软件开发中提高效率的方式取决于认知模式。清晰认知模式下,LLM 能通过自动化任务和知识复用显著提高效率。复杂认知模式下,虽然 LLM 的效率提升可能不如预期,但在团队环境中,LLM 的应用能通过优化知识传递和缩短反馈周期来提升整体效率。通过合理选择 LLM 的使用场景和交互模式,可以全面提升知识工程中的效率。原创 2024-09-10 00:01:50 · 414 阅读 · 0 评论 -
如何使用 LLM 辅助用户故事编写
利用 LLM 辅助用户故事编写可以大大提升工作效率和准确性。通过提供整体解决方案和用户旅程作为业务背景,LLM 可以生成基础用户故事卡,并通过主动提问和回答进一步细化用户故事及其验收条件。针对 LLM 提出的问题,可以通过重新定义业务背景、修改用户故事或回答细节问题来优化用户故事。自动化实现 TQA 还可以通过定义明确的任务、设计提问策略和使用自动化工具来提高效率和精度。这样,团队可以更好地理解用户需求,并将其转化为具体的功能要求和验收标准。原创 2024-09-10 00:01:00 · 550 阅读 · 0 评论 -
如何编写用户故事
在 LLM 时代,用户故事的编写应始终优先聚焦于问题定义,即角色-价值对,避免直接陷入解决方案的细节。通过有效地拆分用户故事,设计合理的整体解决方案和用户旅程,能够确保开发工作始终围绕用户的核心需求展开。原创 2024-09-09 00:05:27 · 990 阅读 · 0 评论 -
LLM辅助建模
在最开始的时候,我们完全使用复杂认知模式(Complex),依靠反馈循环辅助我们完成建模的过程。我们知道在建模的过程中,最重要的就是发掘系统中的存在的概念,并建立概念与概念之间的关联。那么在实际建模的过程中,对于概念的提炼就是重中之重了。通常在建模的过程中,我们会维护一个概念字典(Glossary),其中包含对于系统非常重要的业务概念,以及对于这些概念的基本解释。当然我们也可以使用其他的建模方法,比如催化剂方法(Catalysis)、实体目标法、事件风暴法(Event Storming)等等。原创 2024-09-07 00:02:05 · 303 阅读 · 0 评论 -
使用 LLM 辅助理解业务知识
通过上述步骤和模板,您可以有效地利用 LLM 辅助理解业务知识。使用领域模型描述业务实体,利用用户故事定义需求,并通过验收场景和任务生成样例数据。结合 Mermaid 图表和自然语言描述,能够为 LLM 提供清晰的上下文,从而帮助它生成符合业务需求的结果。原创 2024-09-07 00:01:28 · 1056 阅读 · 0 评论 -
RAML学习
RAML(RESTful API Modeling Language)是一种基于 YAML 的语言,用于定义 RESTful API。它的主要目的是在编写代码之前定义 API 的结构和行为,从而简化设计、开发和维护 API 的过程。通过 RAML,开发者和设计师可以明确 API 的各个方面,包括资源、方法、请求和响应格式。RAML 是一种基于 YAML 的 API 设计语言,可以帮助团队在开发 API 前就明确其结构和行为。原创 2024-09-06 21:35:54 · 697 阅读 · 0 评论 -
从知识视角理解软件开发
业务知识是关于如何解决现实问题的知识,包括业务的目标、规则、限制、和已有的解决方案。它定义了“正确的软件”是什么,即软件应实现哪些功能来满足业务需求。业务知识的来源与特点问题驱动:业务知识源于对现实世界问题的理解,是为了在软件中解决这些问题。不等同于功能点:业务知识并非直接对应软件的功能点,而是表现为待解决的问题、规则和限制条件。在软件实现中,业务知识才映射为功能点。例如,同样的审批流程,现实中可能用邮件、微信群完成,而在软件中可能通过OA系统的特定工作流实现。组织与流程的影响。原创 2024-09-06 21:34:41 · 731 阅读 · 0 评论 -
软件架构设计——微服务、伪微服务及其构造
微服务是一种软件架构风格,它将应用程序拆分为多个小而独立的服务模块,每个服务模块专注于某个特定的业务功能。每个微服务独立部署、独立运行,通过网络(通常是 RESTful API)与其他微服务进行通信。这种架构具有高度的灵活性、可维护性和扩展性。业务独立性:每个微服务专注于一个业务领域,独立开发、测试、部署,减少了系统的复杂性。技术多样性:每个微服务可以使用不同的技术栈来实现,允许使用最合适的工具来解决特定的问题。弹性和容错性:微服务可以独立扩展和容错,一个服务的失败不会影响到其他服务的运行。伪微服务。原创 2024-09-05 06:17:45 · 801 阅读 · 0 评论 -
软件架构设计——8X Flow
8X Flow 建模方法是一种以业务为核心的建模方法,通过明确业务逻辑与领域逻辑的区别,将业务系统和领域系统分离,保证它们各自拥有不同的知识边界和弹性边界。8X Flow 强调在建模过程中完全围绕业务问题进行设计,避免以技术为出发点去定义业务问题,从而更高效、灵活地支持业务系统的变化和优化。8X Flow 建模方法从业务出发,强调上下文边界的清晰划分和逻辑的复用,通过合理的架构设计应对复杂多变的业务需求。原创 2024-09-05 06:17:13 · 531 阅读 · 0 评论 -
软件架构设计——DCI 范型
DCI(Data, Context, and Interaction)范型是一种软件架构设计模式,旨在更清晰地表达系统的行为和状态。DCI试图通过将系统的结构(数据)与行为(交互)分离开来,以便更好地解决业务逻辑的复杂性,并提高代码的可读性和可维护性。DCI范型由三个主要组成部分:数据(Data)、上下文(Context)和交互(Interaction)。数据(Data)数据部分表示系统中的持久性状态和结构。它通常由类和对象组成,类似于传统面向对象编程中的实体类。原创 2024-09-04 00:02:54 · 1076 阅读 · 0 评论 -
迪米特法则
迪米特法则,也叫“最少知识原则”(Law of Demeter),是一种编程设计原则。一个对象应该尽量少地了解其他对象,特别是它的内部细节。迪米特法则的目的是降低代码的复杂性和耦合度,让代码更容易维护和扩展。通过遵循这个法则,你可以设计出更模块化、易于理解的系统,减少因修改代码而引发的问题。原创 2024-09-02 00:28:45 · 315 阅读 · 0 评论 -
Cynefin框架
Cynefin框架帮助我们从认知行为模式的角度来看待问题和应对策略,而不是简单地对问题进行分类。这种方法强调了根据情境的不同,人们如何选择合适的行为模式,以便更加灵活、有效地解决问题。这一框架的实用性在于它不仅指导个人和组织在不同情境下的决策,还帮助我们识别问题的复杂性,从而选择适当的应对方式。原创 2024-08-31 00:47:01 · 1245 阅读 · 0 评论 -
软件架构设计——弹性边界
弹性边界是指系统中某个部分的可伸缩性范围。这个范围决定了在面对负载变化时,系统的哪个部分可以独立扩展或收缩。弹性边界的设计是否合理,直接影响到系统的性能、可靠性和成本效益。弹性边界本质上是一个架构概念,它定义了系统中各个组件的独立扩展能力。每个组件都应当具备在负载增加时单独扩展的能力,而不影响其他组件的正常运行。弹性边界和弹性优先原则是云平台架构设计中的关键概念。通过合理设计弹性边界,我们可以确保系统具备良好的扩展性和灵活性。原创 2024-08-29 00:02:31 · 598 阅读 · 0 评论 -
软件架构设计——将领域模型实现为 RESTful API
RESTful API(表述性状态转移)是一种设计 Web 服务的标准方式,允许不同系统通过互联网进行通信。它使用 HTTP 方法(如 GET、POST、PUT 和 DELETE)与资源交互,通常以 JSON 或 XML 格式来表示数据。将领域模型实现为 RESTful API 涉及从定义 URI 到确保 API 覆盖所有必要的业务流程的周密计划。每个步骤对于交付一个健壮且易于使用的 API 都至关重要。原创 2024-08-29 00:02:06 · 985 阅读 · 0 评论 -
软件架构设计——四色建模法(事件建模法)
四色建模法通过将业务逻辑分解为四种颜色编码的对象原型,从业务的收入流和成本结构出发,系统化地构建领域模型。这种方法不仅解决了事件风暴法中存在的随机性和过度依赖主持人的问题,还通过结构化、直观和全面的方式,确保了模型的准确性和一致性。通过电商平台下单流程的具体示例,我们展示了四色建模法的实际应用过程,从识别关键现金流、构造凭证、回溯现金流来源,到关联关键指标、细化模型、确定角色和添加描述信息,逐步构建了一个完整的领域模型。这一过程不仅帮助我们深入理解业务逻辑,还为系统设计和业务优化提供了坚实的基础。原创 2024-08-28 00:13:03 · 693 阅读 · 0 评论 -
软件架构设计——事件风暴法(事件建模法)
事件风暴法是一种从业务需求出发,通过系统化分析事件、命令、行动者、策略等领域元素,逐步构建领域模型的方法。在在线订餐平台的示例中,我们通过头脑风暴找出领域事件,分析命令和行动者,确定策略和系统触发的命令,最终构建出一个详细的领域模型。事件风暴法不仅帮助我们捕捉业务逻辑,还确保了系统设计的准确性和一致性。原创 2024-08-28 00:12:22 · 593 阅读 · 0 评论 -
软件架构设计——催化剂建模法&角色-目标-实体法
催化剂建模法是一种帮助你从业务流程的角度来设计系统架构的方法。它的核心思想是把业务的各个流程“展开”,让你更清楚地看到每一步都在处理什么,涉及哪些数据和操作。角色-目标-实体法是一种帮助你分析系统中的不同角色(比如用户、管理员),他们的目标(比如购买书籍、管理库存),以及实现这些目标所需要处理的数据(比如订单、书籍、库存)的方法。通过催化剂建模法,你能够清楚地看到每个业务流程需要的数据和操作,从而设计出更加贴合实际业务的系统模型。原创 2024-08-27 00:23:54 · 1095 阅读 · 0 评论 -
软件架构设计——能力供应商模式
首先,我们定义一个接口(Repository),表示存储订单的能力。这个接口定义了领域层需要的存储操作,而不关心具体的存储方式。# 定义能力供应商接口"""保存实体对象"""pass"""通过ID查找实体对象"""pass解释Repository是一个抽象类(ABCsave和find_by_id。这些方法是领域层所需的基本操作。save方法用于保存一个实体对象(如订单)。find_by_id方法用于通过ID查找一个实体对象。原创 2024-08-27 00:23:11 · 827 阅读 · 0 评论 -
软件架构设计——引入角色对象和引入上下文对象(解决上下文过载)
是指为领域对象分配不同角色,每个角色只负责某一特定的业务逻辑。这种分离方式可以使得领域对象更加简洁,易于理解和维护。原创 2024-08-26 00:28:44 · 896 阅读 · 0 评论 -
软件架构设计——关联对象
关联对象是在软件架构设计中,用来表示两个或多个对象之间的关系。这种关联可以是单向的,也可以是双向的,具体取决于业务需求。:一个对象知道另一个对象的存在,但另一个对象不知道第一个对象的存在。例如,订单知道它属于哪个客户,但客户并不需要知道它的所有订单。:弱引用关系,一个对象包含另一个对象的引用,但它们的生命周期是独立的。:强引用关系,一个对象包含另一个对象,并且它们的生命周期是绑定的。通过合理设计关联对象,系统可以有效地表达复杂的业务逻辑,提升性能,同时保持系统的可维护性。:两个对象都知道彼此的存在。原创 2024-08-26 00:26:18 · 709 阅读 · 0 评论