云计算是一种新出现的趋势,越来越多的嵌入式设备正在连接到“云端”。以前在设备上实现的功能如今正在向云端转移,并作为服务提供。这种趋势不仅要求新的系统设计思路,而且催生了新的算法分析水平,使我们更接近于解开设备云的真正奥秘:数据可视化。为了支持这个结论,本文将讨论两个解决问题的方法,这些方法有助于我们了解嵌入式设计和移动设备云设计所面临的挑战和机会,这两种方法就是领域驱动(domain-driven)设计和蒙特卡罗方法(Monte Carlo method)。
领域驱动设计(DDD)可以帮助我们分解复杂的问题领域,并做出明智的设计决策:哪些功能应在设备中实现?哪些功能应交给云端实现?蒙特卡罗方法(MCM)给我们提供了表征数据的工具,而且能预测一系列设备上发生的事件,而在没有设备云基础设施的情况下我们是无法做到这一点的。
设备云
为了理解设备云在计算历史大潮中所处的位置,下面简单介绍一下1950年以来的事件年表。
集中计算(1950-1975):在这个时期,先进的电子技术催生了更大更快的计算机。由于元器件成本高,操作起来要求高度专业的技巧,因此集中计算是自然发展趋势。这段时期内的计算主要发生在学院、企业或***部门。当推出多任务和多用户系统时,则将哑终端用作连接中央处理单元的管道。
分布式计算(1975-2000):得益于电子元件成本的下降以及处理能力和存储密度的提升,将计算功能转移到普通家庭用户的手中成为可能。尽管学院、企业和***程序中的计算仍然是主要增长动力,但个人计算机革命造就了处理和存储的自然分布式趋势。
普适计算(2000-至今):得益于.com的盛行、联网设备的普及、成熟的通信基础设施以及蜂窝技术普及率的提高,今天我们生活在电脑无处不在的世界。现在我们最迫切的需求是设法将这些设备连接在一起,以有意义的方式在设备间共享数据和用户经验。而云计算就是一种可行的解决方案,可以帮助我们就此展开设计,并充分利用数量呈爆炸式增长的联网设备。从某种意义上看,云计算象征着前两代计算的混合,其逻辑推理是:从集中计算到云计算,从分布式计算到移动计算。
尽管联网设备的增长似乎是仅限于消费类市场的一种现象,但非消费类嵌入式系统的用户也可能是智能手机和平板电脑的用户。诸如护士、士兵、工程师、公务员、工人以及流动医疗设备的用户等都期望云服务的用户界面、功能、性能、尺寸、显示器、触摸屏技术和连接与他们口袋中的智能手机一样好用。
虽然设备云可以提供许多优点(例如转移设备中的处理和存储成本;减少对现场维护劳力的需求;更好的诊断机制),但有些重要问题仍需要回答:设备云面临哪些关键的设计挑战?如何克服这些挑战?设备云可以提供哪些以前无法想象的功能?设计师、开发人员和用户最终想从设备云系统中得到什么?为了帮助回答这些问题,我们来探讨两种解决方案的体系:领域驱动设计和蒙特卡罗方法。
领域驱动设计
当我们思考设备云所面临的设计挑战时,聪明的工程师可能从框架结构方面着手:我们应如何从设备处取得数据并送入云端?我们如何利用云端中的数据做有趣的事情?我们如何在多台设备上提供丰富的数据视图?这些问题问得都很好。然而,我们应该问自己许多深入事物本质的其它类型问题,将我们自己放在用户的角度去思考:谁在使用设备?用户需要执行什么任务?用户何时执行任务?用户在什么地方使用设备?用户为何使用设备?设备如何以未曾有过的方式帮助用户?这些问题只是涉及高可用性设计的表面,但能使我们深入思考系统设计决策如何影响用户体验。
领域驱动设计(DDD)最早是2003年Eric Evans在他的一本书中提出的,书名是《领域驱动设计:解决软件核心的复杂性》。领域驱动设计是一组技术和术语,提供了针对复杂领域中的软件系统作出设计决策的框架。领域驱动设计技术包括:
领域:对用户使用系统的环境的一种描述。领域包括人、进程以及用户用于完成一组任务的工具。
模型:一组相关的抽象概念,描述了问题领域的架构解决方案。理想的模型包括对象、行为、属性、关系、用例以及每种参数的静态和动态视图。
通用语言:一种专门开发的通用语言,用于帮助包括开发人员和领域专家在内的所有拥有者将软件连接到运行该软件的领域。这是领域驱动设计的关键部分,因为有些领域对常见单词有稍许不同的理解,或者采用全新的单词。定义和使用Ubiquitous语言有助于设计师更加投入地设计系统,并提高用户采纳率,因为系统功能和接口将紧密地匹配在它们领域中通用的语言。
上下文:一种使用通用语言中的术语或短语的环境。上下文对于交流来说非常重要,可用来告诉系统设计师和软件工程师在任务流程场景中某个术语是如何使用的。
通过思考这些概念,我们可以更加容易地分类设备云设计问题,并且收获额外优势,使设计师、开发人员和领域专家专注于在目标领域所存在的问题上。
蒙特卡罗方法
除了集中数据存储外,设备云还为我们打开了解决方案的空间,包括遥控设备、监视数据和趋势、实现丰富的诊断和支持、提供现场配置和软件更新功能、跟踪可用性统计等能力,并使资源受限的嵌入式设备具有强大的云处理能力。
借助所有这些额外优势,现在我们能够收集一批设备的大量数据。拥有众多设备的详细数据可支持两种类型的分析:
1)对单个设备的详细分析和诊断。这对于那些无需派维修技术人员实现客户支持、软件升级和诊断现场的问题来说具有重要意义。
2)对众多设备的统计分析。设计者对这类分析特别感兴趣,因此这类分析能够揭示优化用户体验、降低成本或减轻故障的新方法。
既然我们对来自大量设备的数据进行统计分析特别感兴趣,那么我们就可以把注意力转向蒙特卡罗方法(MCM)。
蒙特卡罗方法是物理学家们在20世纪40年代发明的,这些物理学家当时正在Los Alamos国家实验室研究核武器项目。具体地说,在研究辐射屏蔽物以预测中子可能透过各种材料的距离时就会用到蒙特卡罗方法。蒙特卡罗方法是一种基于随机技术的运算方法,可用于计算使用随机变量的复杂进程结果。您可以在从经济政策到核物理,再到城市区域交通流量的调节等各个方面见到蒙特卡罗方法的身影。
严格地说,为了把某个任务称为蒙特卡罗实验,您所要做的是使用随机数去检查问题。下面是使用蒙特卡罗方法解决问题的一些关键步骤:1)定义一个可能输入的领域;2)使用概率分布方式(如高斯)从领域中随机产生输入;3)使用输入执行确定性运算;4)将单个计算结果汇聚为最终结果。
为了便于描述,我们通过下面这个例子来理解如何使用蒙特卡罗方法估计π值:
1. 在地上画一个正方形,然后在内部画一个内切圆。根据平面几何原理我们知道内切圆的面积与正方形的面积之比等于π/4。
2. 在整个正方形内均匀地散布一些相同大小的物体。例如,米粒或沙子。
3. 由于两个面积之比为π/4,因此落在两个区域中的物体数量之比也接近这个值(均匀分布)
4. 计算圆圈内的物体数量,并除以正方形内的总数量,从而得出π/4的近似值。
5. 将结果乘以4就得到了π的近似值。
蒙特卡罗方法能以多种方式从设备云数据中获得真实含义:
用户体验提炼:通过表征用户如何在大量设备上使用系统,可以优化或巩固任务步骤以丰富用户体验。
故障预测:如果我们设计的设备云系统用于报告故障指示或性能数据,我们不仅能够使用它定位故障设备,还能结合其它故障设备确定变化趋势。例如,我们可能会认识到彼此间相邻一定距离的所有设备都存在较高的故障发生率。通过进一步分析设备位置数据,可以发现每个故障设备位于靠近容易腐蚀触点的海水地区。
降低风险:如果在炼油厂内的多个传感设备在很短时间内出现故障状态,可能存在将引起未来故障的更严重或系统性问题:蒙特卡罗方法可以帮助我们分析并预测这类问题。
节省成本:通过分析使用趋势,通信基础设施提供商可以对网络上的数据业务进行调整和设定优先级,并在成本、性能和功耗之间取得良好折衷。
蒙特卡罗方法是一组强大的技术,可以用来定量评估风险、预测故障或理解用户如何处理任务。领域驱动设计和蒙特卡罗方法可以使我们更好地实现设备云的真正价值:数据可视化。
数据可视化
到目前为止,我们已经讨论了两种有助于充分发挥设备云性能的技术。虽然这两种工具都非常有用,但都是达到目的的手段,我坚持认为设备云的最大价值是数据可视化。
可视化数据对系统的所有拥有者来说都非常重要:用户希望使用设备快速执行任务、监视状态指示器并快速取得对他们行动结果的反馈;维护人员除了可靠管理软件版本外,还希望很容易地再现、诊断和修复问题;设计师希望看到用户如何与系统交互。通过在软件中的关键位置放置标记,设备云能使可视化成为可能;赞助商希望看到他们的系统是如何使用的。观察这些数据有助于他们改变业务模型方向,或提示更具性价比的方式去管理设备群。
通过专注于问题领域、仔细作出智能系统设计选择,进而消除实现期间产生的分心事件,以及使用先进的算法分析技术,我们可以揭示出用于下一代联网设备的云计算的真正价值。
云计算是一种新出现的趋势,越来越多的嵌入式设备正在连接到“云端”。以前在设备上实现的功能如今正在向云端转移,并作为服务提供。这种趋势不仅要求新的系统设计思路,而且催生了新的算法分析水平,使我们更接近于解开设备云的真正奥秘:数据可视化。为了支持这个结论,本文将讨论两个解决问题的方法,这些方法有助于我们了解嵌入式设计和移动设备云设计所面临的挑战和机会,这两种方法就是领域驱动(domain-driven)设计和蒙特卡罗方法(Monte Carlo method)。
领域驱动设计(DDD)可以帮助我们分解复杂的问题领域,并做出明智的设计决策:哪些功能应在设备中实现?哪些功能应交给云端实现?蒙特卡罗方法(MCM)给我们提供了表征数据的工具,而且能预测一系列设备上发生的事件,而在没有设备云基础设施的情况下我们是无法做到这一点的。
设备云
为了理解设备云在计算历史大潮中所处的位置,下面简单介绍一下1950年以来的事件年表。
集中计算(1950-1975):在这个时期,先进的电子技术催生了更大更快的计算机。由于元器件成本高,操作起来要求高度专业的技巧,因此集中计算是自然发展趋势。这段时期内的计算主要发生在学院、企业或***部门。当推出多任务和多用户系统时,则将哑终端用作连接中央处理单元的管道。
分布式计算(1975-2000):得益于电子元件成本的下降以及处理能力和存储密度的提升,将计算功能转移到普通家庭用户的手中成为可能。尽管学院、企业和***程序中的计算仍然是主要增长动力,但个人计算机革命造就了处理和存储的自然分布式趋势。
普适计算(2000-至今):得益于.com的盛行、联网设备的普及、成熟的通信基础设施以及蜂窝技术普及率的提高,今天我们生活在电脑无处不在的世界。现在我们最迫切的需求是设法将这些设备连接在一起,以有意义的方式在设备间共享数据和用户经验。而云计算就是一种可行的解决方案,可以帮助我们就此展开设计,并充分利用数量呈爆炸式增长的联网设备。从某种意义上看,云计算象征着前两代计算的混合,其逻辑推理是:从集中计算到云计算,从分布式计算到移动计算。
尽管联网设备的增长似乎是仅限于消费类市场的一种现象,但非消费类嵌入式系统的用户也可能是智能手机和平板电脑的用户。诸如护士、士兵、工程师、公务员、工人以及流动医疗设备的用户等都期望云服务的用户界面、功能、性能、尺寸、显示器、触摸屏技术和连接与他们口袋中的智能手机一样好用。
虽然设备云可以提供许多优点(例如转移设备中的处理和存储成本;减少对现场维护劳力的需求;更好的诊断机制),但有些重要问题仍需要回答:设备云面临哪些关键的设计挑战?如何克服这些挑战?设备云可以提供哪些以前无法想象的功能?设计师、开发人员和用户最终想从设备云系统中得到什么?为了帮助回答这些问题,我们来探讨两种解决方案的体系:领域驱动设计和蒙特卡罗方法。
领域驱动设计
当我们思考设备云所面临的设计挑战时,聪明的工程师可能从框架结构方面着手:我们应如何从设备处取得数据并送入云端?我们如何利用云端中的数据做有趣的事情?我们如何在多台设备上提供丰富的数据视图?这些问题问得都很好。然而,我们应该问自己许多深入事物本质的其它类型问题,将我们自己放在用户的角度去思考:谁在使用设备?用户需要执行什么任务?用户何时执行任务?用户在什么地方使用设备?用户为何使用设备?设备如何以未曾有过的方式帮助用户?这些问题只是涉及高可用性设计的表面,但能使我们深入思考系统设计决策如何影响用户体验。
领域驱动设计(DDD)最早是2003年Eric Evans在他的一本书中提出的,书名是《领域驱动设计:解决软件核心的复杂性》。领域驱动设计是一组技术和术语,提供了针对复杂领域中的软件系统作出设计决策的框架。领域驱动设计技术包括:
领域:对用户使用系统的环境的一种描述。领域包括人、进程以及用户用于完成一组任务的工具。
模型:一组相关的抽象概念,描述了问题领域的架构解决方案。理想的模型包括对象、行为、属性、关系、用例以及每种参数的静态和动态视图。
通用语言:一种专门开发的通用语言,用于帮助包括开发人员和领域专家在内的所有拥有者将软件连接到运行该软件的领域。这是领域驱动设计的关键部分,因为有些领域对常见单词有稍许不同的理解,或者采用全新的单词。定义和使用Ubiquitous语言有助于设计师更加投入地设计系统,并提高用户采纳率,因为系统功能和接口将紧密地匹配在它们领域中通用的语言。
上下文:一种使用通用语言中的术语或短语的环境。上下文对于交流来说非常重要,可用来告诉系统设计师和软件工程师在任务流程场景中某个术语是如何使用的。
通过思考这些概念,我们可以更加容易地分类设备云设计问题,并且收获额外优势,使设计师、开发人员和领域专家专注于在目标领域所存在的问题上。
蒙特卡罗方法
除了集中数据存储外,设备云还为我们打开了解决方案的空间,包括遥控设备、监视数据和趋势、实现丰富的诊断和支持、提供现场配置和软件更新功能、跟踪可用性统计等能力,并使资源受限的嵌入式设备具有强大的云处理能力。
借助所有这些额外优势,现在我们能够收集一批设备的大量数据。拥有众多设备的详细数据可支持两种类型的分析:
1)对单个设备的详细分析和诊断。这对于那些无需派维修技术人员实现客户支持、软件升级和诊断现场的问题来说具有重要意义。
2)对众多设备的统计分析。设计者对这类分析特别感兴趣,因此这类分析能够揭示优化用户体验、降低成本或减轻故障的新方法。
既然我们对来自大量设备的数据进行统计分析特别感兴趣,那么我们就可以把注意力转向蒙特卡罗方法(MCM)。
蒙特卡罗方法是物理学家们在20世纪40年代发明的,这些物理学家当时正在Los Alamos国家实验室研究核武器项目。具体地说,在研究辐射屏蔽物以预测中子可能透过各种材料的距离时就会用到蒙特卡罗方法。蒙特卡罗方法是一种基于随机技术的运算方法,可用于计算使用随机变量的复杂进程结果。您可以在从经济政策到核物理,再到城市区域交通流量的调节等各个方面见到蒙特卡罗方法的身影。
严格地说,为了把某个任务称为蒙特卡罗实验,您所要做的是使用随机数去检查问题。下面是使用蒙特卡罗方法解决问题的一些关键步骤:1)定义一个可能输入的领域;2)使用概率分布方式(如高斯)从领域中随机产生输入;3)使用输入执行确定性运算;4)将单个计算结果汇聚为最终结果。
为了便于描述,我们通过下面这个例子来理解如何使用蒙特卡罗方法估计π值:
1. 在地上画一个正方形,然后在内部画一个内切圆。根据平面几何原理我们知道内切圆的面积与正方形的面积之比等于π/4。
2. 在整个正方形内均匀地散布一些相同大小的物体。例如,米粒或沙子。
3. 由于两个面积之比为π/4,因此落在两个区域中的物体数量之比也接近这个值(均匀分布)
4. 计算圆圈内的物体数量,并除以正方形内的总数量,从而得出π/4的近似值。
5. 将结果乘以4就得到了π的近似值。
蒙特卡罗方法能以多种方式从设备云数据中获得真实含义:
用户体验提炼:通过表征用户如何在大量设备上使用系统,可以优化或巩固任务步骤以丰富用户体验。
故障预测:如果我们设计的设备云系统用于报告故障指示或性能数据,我们不仅能够使用它定位故障设备,还能结合其它故障设备确定变化趋势。例如,我们可能会认识到彼此间相邻一定距离的所有设备都存在较高的故障发生率。通过进一步分析设备位置数据,可以发现每个故障设备位于靠近容易腐蚀触点的海水地区。
降低风险:如果在炼油厂内的多个传感设备在很短时间内出现故障状态,可能存在将引起未来故障的更严重或系统性问题:蒙特卡罗方法可以帮助我们分析并预测这类问题。
节省成本:通过分析使用趋势,通信基础设施提供商可以对网络上的数据业务进行调整和设定优先级,并在成本、性能和功耗之间取得良好折衷。
蒙特卡罗方法是一组强大的技术,可以用来定量评估风险、预测故障或理解用户如何处理任务。领域驱动设计和蒙特卡罗方法可以使我们更好地实现设备云的真正价值:数据可视化。
数据可视化
到目前为止,我们已经讨论了两种有助于充分发挥设备云性能的技术。虽然这两种工具都非常有用,但都是达到目的的手段,我坚持认为设备云的最大价值是数据可视化。
可视化数据对系统的所有拥有者来说都非常重要:用户希望使用设备快速执行任务、监视状态指示器并快速取得对他们行动结果的反馈;维护人员除了可靠管理软件版本外,还希望很容易地再现、诊断和修复问题;设计师希望看到用户如何与系统交互。通过在软件中的关键位置放置标记,设备云能使可视化成为可能;赞助商希望看到他们的系统是如何使用的。观察这些数据有助于他们改变业务模型方向,或提示更具性价比的方式去管理设备群。
通过专注于问题领域、仔细作出智能系统设计选择,进而消除实现期间产生的分心事件,以及使用先进的算法分析技术,我们可以揭示出用于下一代联网设备的云计算的真正价值。
举报