设计系统

36 篇文章 0 订阅
32 篇文章 0 订阅

Designing Systems

设计系统

在我的上一篇文章中,我解释说,作为一名开发人员,您并不创建应用程序,而是创建系统,即对其环境做出响应的活实体(浏览器、服务器、……)。在这篇文章中,我将描述一个为了创建系统您可以遵循的过程。这个过程是受到了Donella H.Meadows的出色工作的启发,B-Method是我在大学里学过的,并且是领域驱动设计。

这个过程由5个步骤组成:
1. 确认需求
2. 设计系统
3. 确认设计
4. 精细化设计
5. 生成系统

1.确认需求

永远记住你是人

为了创建系统,你首先需要意识到你感知事物并把世界理解为人类发出的哔哔声。这意味着,当我们思考一个特定的问题时,我们用我们自己对世界的精神表现来解决它。我们在思考的时候从不客观。我们受到我们的文化,生活经验,母语,…我们可能会错过有用的信息,因为我们不能从自己的角度来看待它们。因此,你越想解决一个问题,你就会得到越好的解决方案。所以,创建最多样化的团队,并邀请他们参加一个会议,开始设计系统。

包罗万象

首先,要不要打断那些要求一个特性/解决一个问题/……的人。然后一些关于上下文的问题。得到尽可能多的信息,让所有的团队对话。这非常重要。每个人都需要在会议期间发言,以便能够毫无困难地分享自己对背景的理解。

用同一种语言交流

项目中的主要问题始终是沟通,所以要确保每个人用同一种语言交流,用户能理解的语言,而不是使用一些技术名词。为了这个目的,在纸上写上你用来定义上下文和定义的所有单词。好让每个人都知道你在说什么。

2. 设计系统

拿一张纸和一支笔

因为如果你不能设计它,你就不能向别人解释它。

创建边界

xiaohuoni

一个表示系统边界的大圆。然后把你列出的单词都写下来

在圆周内写出你认为是系统的一部分的概念。把你认为不是系统的一部分的概念写在圆圈外。

边界取决于您对系统的理解,并且可以从一个角度改变到另一个角度。例如:在设计一个web应用程序时,您可以在系统中包含服务器……或者不包含。这取决于你把这个边界放在哪里。

找出引起系统响应的事件是什么

xiaohuoni

然后看看您放在系统外部的概念。考虑这些概念如何与您的系统交互。

为每个可以发送到系统的消息创建进入系统的箭头。并命名负责此消息的事件

设计模型

xiaohuoni

现在,看看你在系统中输入的所有单词。在每个单词周围创建一个正方形。然后在你认为相关的每个正方形之间画一条线。不要在链接上添加信息,只要画一条线就可以了。其目的是对这些概念及其关系有一个全局概览。

查找核心组件

xiaohuoni

命名要启动系统所需的组件,并绘制表示这些组件的小圆圈。我们称它们为核心组件。

3. 确认设计

现在我们对该系统有了一个完整的概述。我们知道:
* 系统的边界是什么,
* 引起系统反应的事件是什么?
* 该系统的模型是什么?
* 系统的核心组件是什么?

确保每个人都同意设计,并了解系统是如何组成的

4. 精细化设计

描述模型

既然每个人都同意这个设计,你就可以更精确地描述这个模型。要做到这一点,你需要问:
* 模型的属性是什么?
* 模型的行为是什么?
* 什么是链接的类型。它们是收集,继承,…?
* 模型发送的事件是什么?

我鼓励您使用UML来定义模型。但要保持简单,就像我们以前做的那样。总是使用每个人都能理解的设计

xiaohuoni

找出核心组件的初始状态

找出系统核心组件的初始值。您必须回答的问题很简单:要启动系统,需要在哪个状态下完成核心组件?

我鼓励您在一个JSON对象中描述这些值。您可以轻松地更新它是人类可读的格式。

xiaohuoni

定义消息

定义发送到系统并由系统返回的消息的类型。

还可以使用UML来定义消息的结构。
xiaohuoni

5. 生成系统

现在您已经定义了模型,并找到了核心组件的初始状态,然后从模型生成系统。不要开始编写代码,否则您的代码将总是与您的模型不同步。然后从生成的代码中实现系统的行为

结论

设计一个系统是一项复杂的任务,需要每个人的努力。设计一个系统不需要技术技能,但是人工技能是必须的

这是我创建系统时使用的过程的一个快速概述。我没有详细说明,我只是描述了这一过程的主要步骤,以便你能使它适应你的工作。

在我的下一篇文章中,我将更深入地讨论模型设计过程,并解释如何使模型与您的运行系统同步。

原文地址:https://dev.to/ecarriou/designing-systems-17po

原作者:Erwan Carriou

翻译:小虎Oni

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(本文档为软件开发设计文档模版,由项目设计人员编写,主要读者为项目需求提出者、项目设计人员、项目开发人员、项目测试人员等,通过本文档要能使读者初步了解项目内容及最终成果) 1 项目背景与目标 (简要叙述本项目的背景及本项目最终要达到的目标) 研发xxx系统。根据用户需求,提供安全、简单和使用友好的B2C电商系统,该系统包括: (1) XXX子系统:XXXX(简述主要功能和作用); (2) XXX子系统:XXXX(简述主要功能和作用)。 2 系统总体目标 2.1 系统建设原则 (逐条列举网站的建设原则,并对每一原则做简要说明) (1) 统筹规划,统一设计 ……………… (2) 功能实用 项目建设要力争做到技术先进,根据实际需求确定项目各项功能。 (3) …… …………………………………… 2.2 性能及要求 (简述网站对性能方面的要求,并作简要说明,如兼容性、安全性等等) 兼容性:对硬件要求低,对软件依赖少。 配置灵活:………………………… 安全性:………………………… XXX:…………………… …………………… 3 系统总体架构 3.1 系统逻辑架构图 (简要叙述本系统的构成部分有哪些,然后以图的方式绘制出系统整体架构) 根据XXX系统的建设需求,应用软件平台主要包括XXX子系统、XXX子系统、XXX子系统和XXX子系统。整个系统的逻辑结构如图 1所示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值