《可穿戴计算:基于人体传感器网络的可穿戴系统建模与实现》 —2.2 开发BSN应用
2.2 开发BSN应用
尽管BSN领域已有十多年的研究历史,但编程的复杂性仍然在阻碍这类系统在实际应用中得到更广泛的传播。
若要在基于BSN的系统上开发软件,需要开发人员面对许多不同方面的编程问题,从有效管理传感器平台的非常有限的硬件资源(功耗、存储容量和计算能力),到将全球分布式的网络内应用行为转换为一组每节点的功能和交互通例。如果没有灵活的开发支持工具,那么在处理平台、网络和应用程序诸级别的实现和调试步骤时,很可能会导致在客户端应用程序准备好部署之前,出现耗时且容易出错的烦琐任务。
遗憾的是,尚未有一种标准和通用的方法,能够有效降低管理传感器平台和网络基础架构的例行工作的复杂性,从而达到用户对应用的高级需求。而且,由于提供给用户的功能和服务越来越高级,致使应用程序的复杂性不断增加,而将不同传感器架构与其他类型的设备集成的需求又导致进一步的挑战,即在更加不同类型和普遍的环境中平台缺乏互通性。
今天,典型的单用户BSN系统需要与其他计算范式和基础架构进行集成,才能建立更加智能和以人为中心的环境,并支持更为复杂的服务来改善人类福祉,对此,本书的部分章节将进行更深入的讨论。为适应这些新场景,需要开发增强型BSN,而这就需要采用新颖的系统设计方法,这些方法基于高级别和更标准化的抽象,例如,面向智能体的BSN(见第6章)、多BSN协作系统(第7章)、BSN与建筑传感器网络的集成(第8章)以及支持云的可穿戴系统(第9章)。
截至今天,可以采用以下几种开发方法来构建BSN应用程序[1]:特定于应用程序和平台的编程、自动代码生成以及基于中间件的编程。
2.2.1 特定于应用和平台的编程
特定于应用和平台的编程是指开发针对特定目的而定制的应用程序。因为它们是专门用来满足特定需求,并完成明确定义的任务的,所以能够为在部署后实现高性能而对它们进行优化。通过标准编程语言(比如C),并利用平台专用的应用程序编程接口(API),开发人员在特定操作系统或软件栈上实现他们的应用程序。通过这种方式,由于与嵌入式操作系统和硬件控制组件的直接交互,最终结果是一个由与网络协议事务以及其他服务紧密耦合的应用逻辑所组成的单独的软件程序。这样的设计策略虽然可以在功耗和计算性能方面产生高度优化的代码,但应用程序与底层支持软件之间的强耦合成为一个主要问题。这导致了专门用于完成固定任务的整段代码片段,并且通常只针对单个传感器平台,从而导致基础架构死板且很难重复使用,没有能被不同应用程序共享的便于重用的软件组件。虽然这种方法可能仍然是一种开发简单应用程序的可行解决方案,但如果没有适当的通用开发工具,很难实现当今的复杂系统。实际上,当前可用的平台API更倾向于把许多较为底层的相关方面留给开发人员,这些相关方面涉及硬件控制(例如访问板载传感器驱动程序)、事件处理,以及为有效使用稀缺节点资源而进行的节点内任务调度和代码优化。而且,某些操作系统原始状态下未将常见的BSN功能(即传感器配置和采样、多节点通信模式或分布式数据处理)作为现成、可定制的软件组件提供给开发者。结果,对全局应用逻辑的编码变成单个节点的行为,这意味着需要应付各种烦琐的任务,比如节点间的进程同步和数据完整性,以及为了交换和解析消息而与支持节点的网络协议进行明确的接口处理。因此,BSN开发人员不得不花费大部分开发时间来实现独特例程,以处理各种底层细节,而不是专注于应用程序核心逻辑。由于实现过程受到特定传感器节点架构以及一组特定的传感器驱动程序的约束,因此,造成在需要使用不同平台的情况下,最终的代码不能重复使用,或不容易修改。
关于在传感器平台的操作系统上直接开发特定平台应用程序的困难和限制已经在参考文献[2]中做了调查。该文献特别关注了TinyOS[3]、MANTIS[4]和Ember ZigBee栈[5]。
关于BSN的早期工作主要集中在小型而简单的应用上,不存在相关的开发问题。但是,正如已经讨论过的那样,随着应用程序复杂性的逐渐增加,缺乏适当的高级编程工具成为一个严重的限制因素。尤其是近期有很多应用领域需要多个互连的基于互联网的传感器网络,这种网络需要更复杂的多平台应用,从而实现所声称的物联网范式(IoT)[6]。在不久的将来,更广泛、更强大的编程接口对于更好地支持无处不在的计算系统至关重要。基于这些考虑,人们对于能简化BSN应用程序开发的软件工具非常感兴趣。
- 点赞
- 收藏
- 关注作者
评论(0)