使用蒙特卡罗方法设计领域驱动的设备云
时间:11-16
来源:互联网
点击:
作者:Mark Benson,软件策略总监,Logic PD公司
云计算是一种新出现的趋势,越来越多的嵌入式设备正在连接到“云端”。以前在设备上实现的功能如今正在向云端转移,并作为服务提供。这种趋势不仅要求新的系统设计思路,而且催生了新的算法分析水平,使我们更接近于解开设备云的真正奥秘:数据可视化。为了支持这个结论,本文将讨论两个解决问题的方法,这些方法有助于我们了解嵌入式设计和移动设备云设计所面临的挑战和机会,这两种方法就是领域驱动(domain-driven)设计和蒙特卡罗方法(Monte Carlo method)。
领域驱动设计(DDD)可以帮助我们分解复杂的问题领域,并做出明智的设计决策:哪些功能应在设备中实现?哪些功能应交给云端实现?蒙特卡罗方法(MCM)给我们提供了表征数据的工具,而且能预测一系列设备上发生的事件,而在没有设备云基础设施的情况下我们是无法做到这一点的。
设备云
为了理解设备云在计算历史大潮中所处的位置,下面简单介绍一下1950年以来的事件年表。
集中计算(1950-1975):在这个时期,先进的电子技术催生了更大更快的计算机。由于元器件成本高,操作起来要求高度专业的技巧,因此集中计算是自然发展趋势。这段时期内的计算主要发生在学院、企业或政府部门。当推出多任务和多用户系统时,则将哑终端用作连接中央处理单元的管道。
分布式计算(1975-2000):得益于电子元件成本的下降以及处理能力和存储密度的提升,将计算功能转移到普通家庭用户的手中成为可能。尽管学院、企业和政府程序中的计算仍然是主要增长动力,但个人计算机革命造就了处理和存储的自然分布式趋势。
普适计算(2000-至今):得益于.com的盛行、联网设备的普及、成熟的通信基础设施以及蜂窝技术普及率的提高,今天我们生活在电脑无处不在的世界。现在我们最迫切的需求是设法将这些设备连接在一起,以有意义的方式在设备间共享数据和用户经验。而云计算就是一种可行的解决方案,可以帮助我们就此展开设计,并充分利用数量呈爆炸式增长的联网设备。从某种意义上看,云计算象征着前两代计算的混合,其逻辑推理是:从集中计算到云计算,从分布式计算到移动计算。
尽管联网设备的增长似乎是仅限于消费类市场的一种现象,但非消费类嵌入式系统的用户也可能是智能手机和平板电脑的用户。诸如护士、士兵、工程师、公务员、工人以及流动医疗设备的用户等都期望云服务的用户界面、功能、性能、尺寸、显示器、触摸屏技术和连接与他们口袋中的智能手机一样好用。
虽然设备云可以提供许多优点(例如转移设备中的处理和存储成本;减少对现场维护劳力的需求;更好的诊断机制),但有些重要问题仍需要回答:设备云面临哪些关键的设计挑战?如何克服这些挑战?设备云可以提供哪些以前无法想象的功能?设计师、开发人员和用户最终想从设备云系统中得到什么?为了帮助回答这些问题,我们来探讨两种解决方案的体系:领域驱动设计和蒙特卡罗方法。
领域驱动设计
当我们思考设备云所面临的设计挑战时,聪明的工程师可能从框架结构方面着手:我们应如何从设备处取得数据并送入云端?我们如何利用云端中的数据做有趣的事情?我们如何在多台设备上提供丰富的数据视图?这些问题问得都很好。然而,我们应该问自己许多深入事物本质的其它类型问题,将我们自己放在用户的角度去思考:谁在使用设备?用户需要执行什么任务?用户何时执行任务?用户在什么地方使用设备?用户为何使用设备?设备如何以未曾有过的方式帮助用户?这些问题只是涉及高可用性设计的表面,但能使我们深入思考系统设计决策如何影响用户体验。
领域驱动设计(DDD)最早是2003年Eric Evans在他的一本书中提出的,书名是《领域驱动设计:解决软件核心的复杂性》。领域驱动设计是一组技术和术语,提供了针对复杂领域中的软件系统作出设计决策的框架。领域驱动设计技术包括:
领域:对用户使用系统的环境的一种描述。领域包括人、进程以及用户用于完成一组任务的工具。
模型:一组相关的抽象概念,描述了问题领域的架构解决方案。理想的模型包括对象、行为、属性、关系、用例以及每种参数的静态和动态视图。
通用语言:一种专门开发的通用语言,用于帮助包括开发人员和领域专家在内的所有拥有者将软件连接到运行该软件的领域。这是领域驱动设计的关键部分,因为有些领域对常见单词有稍许不同的理解,或者采用全新的单词。定义和使用Ubiquitous语言有助于设计师更加投入地设计系统,并提高用户采纳率,因为系统功能和接口将紧密地匹配在它们领域中通用的语言。
上下文:一种使用通用语言中的术语或短语的环境。上下文对于交流来说非常重要,可用来告诉系统设计师和软件工程师在任务流程场景中某个术语是如何使用的。
通过思考这些概念,我们可以更加容易地分类设备云设计问题,并且收获额外优势,使设计师、开发人员和领域专家专注于在目标领域所存在的问题上。
云计算是一种新出现的趋势,越来越多的嵌入式设备正在连接到“云端”。以前在设备上实现的功能如今正在向云端转移,并作为服务提供。这种趋势不仅要求新的系统设计思路,而且催生了新的算法分析水平,使我们更接近于解开设备云的真正奥秘:数据可视化。为了支持这个结论,本文将讨论两个解决问题的方法,这些方法有助于我们了解嵌入式设计和移动设备云设计所面临的挑战和机会,这两种方法就是领域驱动(domain-driven)设计和蒙特卡罗方法(Monte Carlo method)。
领域驱动设计(DDD)可以帮助我们分解复杂的问题领域,并做出明智的设计决策:哪些功能应在设备中实现?哪些功能应交给云端实现?蒙特卡罗方法(MCM)给我们提供了表征数据的工具,而且能预测一系列设备上发生的事件,而在没有设备云基础设施的情况下我们是无法做到这一点的。
设备云
为了理解设备云在计算历史大潮中所处的位置,下面简单介绍一下1950年以来的事件年表。
集中计算(1950-1975):在这个时期,先进的电子技术催生了更大更快的计算机。由于元器件成本高,操作起来要求高度专业的技巧,因此集中计算是自然发展趋势。这段时期内的计算主要发生在学院、企业或政府部门。当推出多任务和多用户系统时,则将哑终端用作连接中央处理单元的管道。
分布式计算(1975-2000):得益于电子元件成本的下降以及处理能力和存储密度的提升,将计算功能转移到普通家庭用户的手中成为可能。尽管学院、企业和政府程序中的计算仍然是主要增长动力,但个人计算机革命造就了处理和存储的自然分布式趋势。
普适计算(2000-至今):得益于.com的盛行、联网设备的普及、成熟的通信基础设施以及蜂窝技术普及率的提高,今天我们生活在电脑无处不在的世界。现在我们最迫切的需求是设法将这些设备连接在一起,以有意义的方式在设备间共享数据和用户经验。而云计算就是一种可行的解决方案,可以帮助我们就此展开设计,并充分利用数量呈爆炸式增长的联网设备。从某种意义上看,云计算象征着前两代计算的混合,其逻辑推理是:从集中计算到云计算,从分布式计算到移动计算。
尽管联网设备的增长似乎是仅限于消费类市场的一种现象,但非消费类嵌入式系统的用户也可能是智能手机和平板电脑的用户。诸如护士、士兵、工程师、公务员、工人以及流动医疗设备的用户等都期望云服务的用户界面、功能、性能、尺寸、显示器、触摸屏技术和连接与他们口袋中的智能手机一样好用。
虽然设备云可以提供许多优点(例如转移设备中的处理和存储成本;减少对现场维护劳力的需求;更好的诊断机制),但有些重要问题仍需要回答:设备云面临哪些关键的设计挑战?如何克服这些挑战?设备云可以提供哪些以前无法想象的功能?设计师、开发人员和用户最终想从设备云系统中得到什么?为了帮助回答这些问题,我们来探讨两种解决方案的体系:领域驱动设计和蒙特卡罗方法。
领域驱动设计
当我们思考设备云所面临的设计挑战时,聪明的工程师可能从框架结构方面着手:我们应如何从设备处取得数据并送入云端?我们如何利用云端中的数据做有趣的事情?我们如何在多台设备上提供丰富的数据视图?这些问题问得都很好。然而,我们应该问自己许多深入事物本质的其它类型问题,将我们自己放在用户的角度去思考:谁在使用设备?用户需要执行什么任务?用户何时执行任务?用户在什么地方使用设备?用户为何使用设备?设备如何以未曾有过的方式帮助用户?这些问题只是涉及高可用性设计的表面,但能使我们深入思考系统设计决策如何影响用户体验。
领域驱动设计(DDD)最早是2003年Eric Evans在他的一本书中提出的,书名是《领域驱动设计:解决软件核心的复杂性》。领域驱动设计是一组技术和术语,提供了针对复杂领域中的软件系统作出设计决策的框架。领域驱动设计技术包括:
领域:对用户使用系统的环境的一种描述。领域包括人、进程以及用户用于完成一组任务的工具。
模型:一组相关的抽象概念,描述了问题领域的架构解决方案。理想的模型包括对象、行为、属性、关系、用例以及每种参数的静态和动态视图。
通用语言:一种专门开发的通用语言,用于帮助包括开发人员和领域专家在内的所有拥有者将软件连接到运行该软件的领域。这是领域驱动设计的关键部分,因为有些领域对常见单词有稍许不同的理解,或者采用全新的单词。定义和使用Ubiquitous语言有助于设计师更加投入地设计系统,并提高用户采纳率,因为系统功能和接口将紧密地匹配在它们领域中通用的语言。
上下文:一种使用通用语言中的术语或短语的环境。上下文对于交流来说非常重要,可用来告诉系统设计师和软件工程师在任务流程场景中某个术语是如何使用的。
通过思考这些概念,我们可以更加容易地分类设备云设计问题,并且收获额外优势,使设计师、开发人员和领域专家专注于在目标领域所存在的问题上。
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)