轻量级模式(精选7篇)
轻量级模式 篇1
在通信产业从导入期向拓展期演进的今天, 面对用户消费模式的变迁大潮, 面对互联网的骨灰级创新模式以及新媒体的广泛传播, 甚至还有IT厂商、内容整合者与消费电子厂商向运营领域的渗透, 运营商正在采取一种积极的融合、开放的态度, 努力尝试开放其电信能力, 集思广益, 发挥第三方企业与个人的创新能力, 打造丰富的增值应用。
同时, 运营商也希望借用这种电信服务的二次分发渠道, 促进基本电信服务的销售。尤其是终端与软件厂商在在线应用商店市场的竞争烽烟四起之时, 运营商必须利用电信能力 (可靠的通信服务、用户数据、情境、认证、计费等) 打造一条新的差异化道路。
运营商的积极尝试
在开放电信能力方面, 全球范围内多数大运营商已经开始了积极尝试。比如, Orange早在2004年5月就启动了Partner计划, 这可能是目前最大的第三方生态体系, 据称已拥有超过6万名开发者会员。Telefonica从2009年开始在西班牙、英国推广Mashup (混搭) 应用, 在西班牙已经有超过1800个开发团体, 并且预计前5年API带来的收入平均每年会增长130%。此外, 像at&t、BT、Vodafone以及国内的大运营商也都正在开展相关的行动, 具体内容见表1。
多种方案齐绽放
表1里面出现了很多和开放电信能力相关的术语, 比如RES T、GSMA OneAPI等, 下面我们就来对这些术语以及相关的解决方案与组织进行阐释。
其实开放电信能力并非什么新想法, 早在1998年Parlay组织的成立正是致力于为电话网络开发API。借助这些API, 第三方机构可以创建自己的应用。Parlay组织在这方面做了统一的标准化工作, 制定了基于CORBA的Parlay/OSA API, 对各种电信能力的使用进行编程方面的统一工作。另外Parlay/OSA API也获得ETSI与3GPP共同协助。在3GPP中, Parlay被当成开放服务架构 (OSA) 的一部分。
Parlay X
Parlay/OSA API的调用比较复杂, 应用虽然可以做到跨平台, 但如果要实现比较复杂的电信能力调用, 那么开发者就需要具备相当的电信知识。于是在2003年, Parlay组织发布了一套名为Parlay X的Web服务, 制定了基于Web服务的Parlay X API, 使得应用对电信能力的使用做到进一步的抽象和简化, 屏蔽了电信协议和控制逻辑的原始性和复杂性, 因此这些API使用起来非常方便。例如, 应用开发人员可以调用单个Web服务请求, 获取某移动设备的位置或者拨打电话。该API集适用于大部分开发人员。目前, Parlay X规范由开放移动联盟 (OMA) 负责管理。
在W e b2.0领域, 支持A j a x技术的API相对应用比较广泛, 风格为REST (REpresentational State Transfer, 表示性状态转移, 是2000年Roy Fielding博士在博士论文中提出来的一种软件架构风格。REST不是一种新技术, 也不是一种标准, 而是一组设计原则) 。
与基于SOAP的Web服务 (Parlay X就是基于SOAP的Web服务) 相比, REST API更加轻量级, 具有更优良的开发者友好性, 便于Web应用的开发和Mashup。因此越来越多的Web服务开始采用REST风格设计和实现。例如, Amazon.com提供接近REST风格的Web服务进行图书查找, 雅虎提供的Web服务也是REST风格的 (维基百科) 。
因此就诞生了Parlay REST (面向Parlay X的RESTful约束) , 它是开放移动联盟OMA颁发的一套标准规范, 旨在为OMA中的Parlay X Web服务规范 (子) 集指定REST Web服务约束。
REST风格API的目标用户是典型的Web开发商。这些开发商对电信服务不是非常了解, 但是可以像使用Google或亚马逊服务一样轻松地使用REST服务。
GSMA OneAPI
在开放电信能力方面, GSMA也曾经制定过一项计划, 致力于为移动运营商定义一个通用API, 即OneAPI, 这样Web以及其他应用开发商便可以自由访问网络能力。这些API将同时使用RESTful和Web服务接口。执行该计划的基础是3GPP在TS29.199中定义的Parlay X。计划实施的第一批API将面向消息传送和定位功能。开发商可从中获得巨大的优势, 他们的应用能够以统一的方式从多个支持OneAPI的运营商那里获得相关资源。
从根本上讲, OneAPI是GSMA第三方访问项目提议的API集, 已被作为OMA Parlay REST标准化活动的内容提交。该提议目前仍处于初期阶段, 不过项目团队将尽力让运营商和第三方开发商针对接口定义达成一致, 鼓励运营商积极实施, 促进第三方开发商广泛使用这些接口。
OneAPI计划的真正焦点并不是API技术创新, 而是部署第三方门户的约束和商业/法规要求, 包括安全模式、策略实施、支付调解、商业战略、业务模式等等。
迎合Web发展趋势
上面提到了两种类型的电信能力开放方案:Parlay X与REST模式, 下面来比较一下两种方案的优劣。
P a r l ay X是一套典型的基于WS-*的Web服务。WS-*是指一系列Web服务的协议与标准, 例如WS-Notification、WS-Security、WSDL和SOAP。业界也称之为“大Web服务”, 与轻量级的REST式Web服务相对。
使用WS-*来开发Web服务并不足够简单。WS-*栈的复杂度通常需要中间件协助开发。互操作性方面也存在一些问题, 虽然WS-*栈为互操作性作了充分的考虑, 但实际上由于中间件的实现和对规范的理解不同, 用不同中间件实现的客户端和服务端之间的通信因此往往比较脆弱。另外, 简单的脚本语言例如Javascript调用WS-*服务有一定难度。而本质上, WS-*历史上源于RPC, HTTP只是作为传输层协议, 因此WS-*并没有充分利用Web得以成功的优点。WS-*与REST的比较如表2所示。
通过表2的对比, 我们可以看出REST的电信API比Parlay X更加简单, 并且其Web服务更加贴合Web的特点;另外从开发商的角度来看, REST更加受青睐。甚至REST式的电信API更适合Web 2.0 Widget轻量级应用与Mashup的开发, 比较迎合Web应用的发展趋势。
为应对电信能开放的趋势, 爱立信已经推出相关产品:业务能力开放网关 (SIG) , 支持以REST或SOAP方式开放API。基于SIG解决方案, 爱立信推出Web IMS业务平台, 将IMS通信能力与业务引擎以REST风格的Open API对用户和第三方应用开发者开放。爱立信的SIG、Web IMS解决方案已经在全球范围内获得运营商的广泛认可。
电信业务赖以成功的核心因素之一就是标准化以及网络的兼容性。在电信能力开放API方面, 我们同样需要相关行业组织积极努力, 制定出统一的、多数运营商可以遵守的标准, 避免运营商各自为政, 最终难以实现规模化的运作。爱立信则希望通过业务能力开放网关产品, 去服务运营商, 帮助他们开辟新的市场。
轻量级模式在房态图的应用 篇2
目前,在国内有几款酒店管理系统运用得比较好,主要有西软科技酒店管理系统、千里马系统,华软科技。在这些系统里面都有对房间状态进行管理的功能,并且都是采用房态图的方式。而且这些系统的房态图都有各自的优势,但是其中的一部分系统效率不是很高。我们想综合这些方面的技术,然后重新设计一款酒店管理系统的房态图。主要采用了两种方式:第一种就是基于对象的方式,每个房间初始化一个对象,但是效率仍然很低;第二种是基于轻量级模式的方式,轻量级模式是设计模式中的一种,采用这种方式来表示房态图,取得了较好的效果、满足了速度的要求。
2. 轻量级模式概述
2.1 定义
轻量级模式是运用共享技术有效地支持大量细粒度的对象。系统只使用少量的对象,而这些对象都相近,状态变化很小,对象使用次数增多。
2.2 具体讲解
类和对象的关系:
Flyweight:抽象轻量级,声明一个接口,通过它可以接受外来的参数(状态),并对新状态做出处理(作用)。
ConcreteFlyweight:具体轻量级类,实现Flyweight的接口,并为内部状态(如果有的话)增加存储空间。ConcreteFlyweight对象必须是可以共享的,它所存储的状态必须是内部的,即它独立存在于自己的环境中。
UnsharedConcreteFlyweight:不共享具体轻量级类,不是所有的Flyweight子类都需要被共享,Flyweight的共享不是强制的。在某些Flyweight的结构层次中,UnsharedConcrete Flyweight对象通常将ConcreteFlyweight对象作为子节点。
FlyweightFactory:轻量级类工厂,创建并管理flyweight对象,确保享用flyweight,当用户请求一个flyweight时,FlyweightFactory提供一个已创建的实例或者创建一个实例(如果不存在)。
Client:客户应用程序,维持一个队flyweight的引用。计算或存储一个或多个flyweight的外部状态。
3. 房间状态图需求分析
对酒店的每个房间设置一个房态图,用于管理房间状态的变化,其中房间状态又分为以下几种:干净房、脏房、住净房、住脏房、维修房、锁定房。要求在房态图上,不同的房态用不同的颜色标记。对于房态图上的每一房间,当执行右键点击的时候需要提供如下功能:散客等级、散客预定、设定临时房等等。
在每一个房态图上,有两个指示灯用来标识EA(本日将到)、ED(本日将离开),这两个指示灯的位置是可以进行系统配置的。
本系统主要采用三层结构来设计:UI层、DAL层、BLL层,还有一个中间连接层MODEL。下面对这些层次间的基本功能以及在本系统中的主要功能进行简要分析:
UI层:界面显示层,主要负责将数据写显示给用户。在本系统中,所展现出来的效果就是操作员直接看到的效果房态图。
DAL层:数据存取层,主要负责该系统与数据库进行通信。在本系统中,主要用来返回一个酒店的所有房间。如果对相应的房间做了修改,那么它可以直接对修改的房间进行保存。
BLL层:业务逻辑层,主要负责对系统的业务逻辑的处理。在本系统中,主要用来返回所有的房间,然后将房间按照一定的顺序进行组合。在保存修改的时候,将房间的前台状态(前台操作员看到的房间状态)、管家房态(客房管理中心看到的房态)组合成组合房态。
MODEL层:数据层,该层被三层结构中的其它三层调用,主要用来进行数据间的通信。在本系统中,主要用来保存房间信息。一个房间对应一个MODEL。
三层结构之间的调用关系如下:(1)UI层调用BLL层已经处理好的数据,并显示到界面上;(2)BLL层调用DAL层的数据进行处理;(3)MODEL主要负责这三层之间的通信。
4. 解决方案与实现原理
4.1 方案一:采用一个房间一个对象的方式设计
在WINFORM开发中,我们用一个BUTTON来表示一个房间,现有600个房间,那么在每次初始化的时候,就需要创建600个BUTTON对象。然后右键点击对应BUTTON的时候,在弹出如下功能按钮:散客入住、设置临时房、设置矛盾房等等。
用该办法实现功能的过程中,新建一个FORM对象,然后在该FORM中添加一个CONTEXTMENUSCRIPT用来显示右键点击时候弹出的功能框,主要包括如下功能:散客预定、散客登记、续住处理。
在FORM的LOAD函数里面,实现房态的初始化。我们用一个BUTTON来表示一个房间,现有600个房间,那么在每次LOAD的时候就需要创建600个BUTTON对象。然后动态添加BUTTON的右键CLICK事件。在事件里面分别调用散客入住、散客登记等功能界面的弹出。
4.2 方案二:采用轻量级模式的方式设计
设计原理:首先要创建一个FloorFlyweight接口,该接口主要用来定义各种函数,使用该函数来接受外来的参数,并执行相应的处理。然后创建FloorConcreteFlyweight类,该类来实现具体的FloorFlyweight,该类实现后是被共享的,在房态图中,600多个房间,就通过FloorConcreteFlyweight来表示。轻量级模式中还有一个Unshare ConcreteFlyWeight类,该类主要用来创建不被共享的实例化对象,但是在房态图的设计过程中,不会用到该类,因此不创建此类。完成上面基本类型的创建,再创建一个FlyweightFactory类来调用这个轻量级类。
完成上面类型的创建还是不能实现房态图的创建,因为每个类型并不是完全相同的,比如它们的界面展示描述、显示的位置等都不一样。因此我们需要将这些个性化的信息保存起来。创建一个List
系统显示的时候,就会循环遍历整个list然后读取相应的信息,将各个对象画在界面上,就实现了我们的房态效果图。
点击鼠标右键的时候,我们也会循环遍历整个list然后得到它的x、y坐标,然后将鼠标事件的x、y与得到的list中的事件进行比较,来判断是否相同,如果相同就取出房间信息和客人预定信息等,对其进行处理,以实现我们想要的效果。
4.3 两种方案测试结果比较
方案一:采用多个对象生成的方式,600个房间就需要初始化600次对象,每次WINFORM初始化的时候消耗了系统大量的内存、话费时间在15分钟左右;
方案二:采用轻量级模式以后,只初始化了一个对象,在不同地方显示,节约了系统资源、初始化一次话费的时间不到3毫秒。
5. 结束语
在酒店管理系统的实际开发过程中遇到了房态图效率很低的情况。分析原因在于各个房态对象太多。采用设计模式中的轻量级模式,大大减少了房态图中的对象,从而大大提高了效率,也满足了客户性能需求。
参考文献
[1]李英军,马晓星,蔡敏等.设计模式:可复用面向对象软件的基础[M].北京:机械工业出版社,2004.
[2]Eric Freeman,ElElisabeth Freeman.HEADFIR ST设计模式(中文版)[M].北京:中国电力出版社,2007.
[3]程杰.大话设计模式[M].北京:清华大学出版社,2007.
[4]赵敏.C#程序设计基础[M].北京:电子工业出版社,2011.
[5]王小科,赵会东.C#程序开发范例宝典(第3版)[M].北京:人民邮电出版社,2012.
[6](美)贝里.深入浅出SQL(中文版)[M].南京:东南大学出版社,2009.
[7]王浩.零基础学SQL Server2008[M].北京:机械工业出版社,2010.
[8]J.Han,M.Kamber.Data Mining:Concepts and Techniques[M].San Francisco:Academic Press.2001.
[9]W.H.Inmon.数据结构[M].北京:机械工业出版社,2000.
轻量级无线通信接口设计 篇3
随着传感器技术、无线通信技术、自动控制技术、移动互联网技术的高速发展, 智能家居的应用越来越广泛, 智能家居正从小型化向大型化、单一式向立体式范围扩张[1,2,3]。
无线智能终端网络可以建立自动采集转发数据的智能家居检测平台, 其部署形式自由、数据采集全面、可靠性高;利用Zig Bee和WLAN无线传输技术可以进行组网并实现具有双层网络结构的智能家居多媒体控制系统;为了解决多数智能家居控制系统安装部署困难、成本较高问题, 可以借助Wi Fi构建智能插座系统;利用Ir DA、WLAN、UWB、Z-ig Bee、Z-Wave、Bluetooth以及家庭无线控制技术 (HomeRF) , 可以实现智能家居网络连接[4,5,6,7,8,9,10,11]。为了实现智能家居控制系统信息远程共享与控制, 本文将应用以太网技术作为无线传输补充, 以LWIP协议栈为基础, 实现μC/OSⅡ操作系统, 并通过Wi-Fi和Ethernet两种方式结合完成终端数据传输, 设计一种针对智能家居使用的通信接口。
2 系统总体结构
智能家居的设备要求快速高效的连接;此外, 根据使用者的需求还要对设备进行信息远程共享与控制。本文运用以太网和Wi-Fi技术, 研制一种轻量级无线通信接口。系统架构见图1, 由终端、控制端和路由构成。终端提供两种搭载方式:无线组网无线接入网络以及无线组网有线接入网络。无线组网灵活自由, 不受地理位置影响。根据具体环境和需求设置, 该模式可扫描周围的网络, 选择、配置后接入, 设计三种无线方式:ADHOC、STATION和AP模式;考虑到任务切换的频率, 设计了热切换功能, 方便无线网络的切换;考虑到数据的安全性和简便性, 采用WEP、WPA/WPA2安全认证和TKIP、AES等加密模式, 用户只需要配置好用户名和密码;考虑到系统功耗和系统稳定性, 添加深度睡眠和待机模式等低功耗功能, 开发系统掉线自动重连程序;考虑到后期将扩展以太网模块, 设计了两种组网方式:星型和总线型结构, 控制器接收数据后采用Ethernet和Wi-Fi上报数据。该设计可以满足智能家居在不同环境的应用, 将手机、智能家电等设备构成室内终端互连网络。
3 硬件平台的设计
3.1 硬件设计
硬件结构见图2, 分三大模块:终端接入模块、中心控制模块、数据接入模块。
中心控制模块是控制器的核心, 采用ARM Cortex M3系列的STM32F103芯片, 运行应用层用户程序和底层驱动程序, 可管理各外设部件和网络模块, 实现数据的采集以及用户配置、数据格式封装;为了与室内终端建立无线连接, 采用88W8782无线模组及具有IEEE 802.11标准的网卡, 具有极高的兼容性, 无线连接快速、方便。数据接入模块采用Ethernet、JLINK、USB等接口, Ethernet可按照10BASE-T标准传输数据。
3.2 数据接入方案设计
为了方便用户对控制器进行调试, 扩展了USB模块, 可查询控制器状态信息;扩展的以太网模块提供了高效、稳定的数据传输。
(1) USB模块:利用USB转UART转换电平与电脑通信, 用户直接在PC端查看控制器的运行状态, 内嵌的CP2102模块可对系统进行供电。
(2) 以太网模块:以太网控制器采用ENC28J60芯片, 相比无线传输, 其数据传输更加稳定, 降低了数据丢失风险。经过后期优化, 互相补充的组网方式可进一步满足用户不同环境的使用需求。
4 软件体系设计
软件体系结构见图3, 采用分层设计思想, 由下往上依次为物理层与MAC驱动、操作系统层、应用层, 下层为上层提供服务, 这种服务以接口的形式在工作中体现, 上层无需了解下层具体实现细节, 只需关注功能的实现。
4.1 物理层与MAC驱动
该层主要包括ARM Cortex M3系列的硬件平台以及支持该平台运行的相关驱动程序。基于μC/OSⅡ操作系统的平台, 需要移植、兼容硬件驱动, 包括88w8782无线模块、ENC28J60以太网网卡模块等驱动。驱动源可在相应的网站下载。
88w8782模块, os_workqueue_thread是其驱动的核心, 为了系统任务的有序切换, 创建一个workqueue (工作队列) , 当系统调用workqueue进行队列初始化, 内核将为用户分配工作对象, 并将其链接到全局的工作队列。操作系统根据处理器状态匹配任务 (workque-ue_struct) 并分配内核线程。μC/OSⅡ自带的定时器未定义延迟函数, 此处建立一个定时线程保证系统时间的准确性。驱动数据收发的流程见图4。
4.2 操作系统层
(1) μC/OSⅡ嵌入式操作系统
因系统的小型化与低集成度, 任务切换频率少、复杂度低, 选择μC/OSⅡ作为嵌入式操作系统。μC/OSⅡ是一个嵌入式多任务、可移植、可裁剪内核, 代码量少, 适合根据不同的要求进行裁剪, 应用到实际系统。
为了对系统硬件进行程序描述, 完成了目标处理器和定时器的封装, 处理器承担了大量计算任务, 必须正确的编写处理器文件。系统文件结构包括三个部分:程序初始化配置文件、STM32F103硬件描述文件以及系统配置文件, 程序初始化配置的OS_CPU.H、OS_CPU_A.C、OS_CPU_A.ASM三个文件描述了STM32F103的环境适配内容, OS_CFG.H、INCLUDES.H设置了操作系统初始化配置, 其他一些文件具有通用性, 与硬件载体无关。根据系统的需要, μC/OSⅡ中的一个进程可以化为多种相互配合的单元运行并共享系统资源, 不同任务采用任务控制块描述。
图5中, 控制块第一个字段OSTCB-_LWIP (OSTCBStk Ptr) 指向堆栈栈顶, 堆栈保存了任务执行地址, 与系统任务唯一映射。为了提高系统任务的切换效率, 将堆栈指针字段放在整个控制块最前面;此时, 任务控制块地址就是堆栈指针地址, 系统寻址速度得以提高。
系统对堆栈进行动态分配, 释放内存:
*OS_TASK.C:
i.增加#include"memory", 引用空间配置器, 调用构造函数并定义相关头文件。
ii.创建OSTask Creat.Ext函数与INT8U need_free_stack参数, 指示μC/OS-Ⅱ线程退出是否释放堆栈内存;
iii.添加OSTCBPRIOTBl[prio]->need_free_stack=need_free_stack函数, 赋予任务优先级。
iv.添加If (ptcb->need_free_stack) {
Mem_free (ptcb->OSTCBStk Bottom) ;
Ptcb->need_free_stack=0;}, 决定内存释放工作。
*ucos_ii.h中添加struct os_tcb结构与INT8U need_free_stack函数。
为构建系统任务链表, 定义了OSTPCBNext和OSTPCBPrev字段, 该字段将系统的多个任务连接成双向链表OSTCBList;系统调用定时函数, 遍历此链表进行延迟操作, 保证任务执行时间。
*ucos_ii, 添加以下链表结构定义:
typedef struct_LIST_ENTRY
{struct_LIST_ENTRY*p Next;}
LIST_ENTRY, *PLIST_ENTRY;
并增加LIST_ENTRY p Obj、void*priv成员变量。
*os_tmr.c:
添加系统软中断内容if (ptmr->priv) Timer_tasklet_callback (ptmr->priv) 。
(2) 协议栈
LWIP (Light Weight IP) 协议是由瑞典计算机科学院开发的嵌入式系统的开源TCP/IP协议栈, 最大的优势在于可移植到操作系统或在无操作系统时独立运行, 结构精简、功能齐全, 适合小型低端嵌入式的应用场合, 选择LWIP作为系统协议栈。
LWIP有两种实现方式:其一, 单独移植内核核心, 用户应用程序编写只能基于Raw/Callback API进行;其二, 移植内核核心和上层API函数模块, 用户可以使用所有的API (三种) 进行编程, 控制器有多任务的切换需求, 采用第二种方式。
编写协议栈的头文件, 完成内部数据类型、宏、大小端定义及其内核参数配置;模拟层对sys_arch.c、sys_arch.h进行编写, 为协议栈提供邮箱、信号量、互斥量等机制;配置LWIP为系统进程, 完成初始化后, 终止程序并将其驻留在邮箱进行监听。
网卡与协议栈交换数据, 将数据进行封装后传递给内核;设计三类函数:
*协议栈初始化函数调用88w8782的初始函数对无线网卡进行配置;
*协议栈输出函数调用88w8782输出函数进行数据解析向下层传递应用消息;
*协议栈输入函数调用88w8782输入函数, 对数据进行格式封装并向上层传递, 开发的相关文件见图6。
4.3 应用层
包括Wi-Fi应用、Yeelink物联网应用、One Net物联网应用等。
Wi-Fi应用:为无线网卡开发终端STA和AP模式。由于AP和STA无法共存, 模式切换时, 通过软件设计关闭Wi-Fi;在程序的目标结构体中加入WEP、WPA、WPA2属性值, 实现了三种加密方式。
STA模式, 定义回调接口进行异步调用, 扫描周围热点;AP模式, 为了调用802.11接口, 定义netdev_ops接口, 为了给接入中心控制器的设备分配IP地址, 开发DHCP服务器, 为了使控制中心节能, 定义三个参数:CAM关闭省电模式 (参数0) 、DTIM省电模式 (参数1) 以及INACTIVITY省电模式 (参数2) 。
Yeelink与One Net物联网应用:设计TCP客户端进行通信服务并建立任务线程维护系统时间上报服务, 同时实现了EDP协议;为了完成数据上报和M2M通信, 开发Socket接口并引用Jeason格式进行数据封装, 封装的内容有:服务器地址、设备号、状态码等用户请求信息。
5 针对Yeelink和One Net物联网平台的接入
Yeelink与One Net是一种开放的通用物联网平台, 主要提供终端数据的接入、存储和展现服务。
Yeelink数据流通道的建立采用状态码 (status_str) 与用户码 (api_key) 双重验证, 为了建立通道, 申请了服务器入口, 并将该入口地址封装在数据帧内, 通信过程见图7。
One Net入口的申请包括系统的device_id与device_API-KEY标识码, 平台利用标识码对数据进行验证;One Net支持数据多样化显示, 是一种自上而下的实时控制平台。
为了动态的添加终端数据类型, 采用双端配置:
(1) 服务器端, 添加后端的设备数据并进行绑定, 储存设备请求信息。
(2) 客户端, 增加前端的数据类型并赋值, 完成数据分类、封装。
为了实现M2M (终端设备互连) 并提高数据库的安全系数, 设计一对验证码, 包括终端专属设备ID和Api Key。系统流程见图8。
6 实验与分析
为了验证该通信接口在室内应用的性能, 构建了室内带宽实验系统, 可分为Jperrf软件终端设备、通信接口样机、路由器三个模块。首先测试原型机AP、STATION模式的无线带宽, 分析了距离与障碍物对数据传输的影响, 开展了三组对比试验, 无障碍物1米、无障碍物10米、有障碍物10米 (在相邻两间房间) ;最后检验了以太网接口的传输性能。
AP、STA模式的测试分别得到三组结果, 见图9与图10;为了分析以太网接口性能, 实验得到了数据延迟与带宽实验数据, 见图11。表1为实验所得数据。
处于AP模式时, 室内1米的数据作为参考, 10米无障碍和10米有障碍的环境下带宽分别减少21%、23.3%;处于STA模式时, 10米无障碍物和10米有障碍物的环境下带宽分别减少了76.5%、79.6%;证明STA模式的数据容易受到距离和障碍物的影响, 后期优化将重点研究提高STA无线传输效率的方法。
以太网模块测试, 字节数据平均延迟14毫秒, 带宽测试折线图相对平稳, 表明有线传输能够维持较大带宽, 保证数据平稳输出, 采用有线方式作为补充是有意义的。
7 结语
本文设计和研制了智能家庭内部使用的轻量级无线通信接口, 以STM32F103微处理器、WIFI模块, 以及扩展的以太网模块构成的硬件载体, 实现了室内局域网的接入与数据共享;通过μC/OSⅡ嵌入式操系统与LWIP协议栈的嵌入实现了数据动态管理, 并接入了One Net与Yeelink物联网平台。研制的样机经不同场景测试, 性能稳定、可靠, 达到了设计要求。随着设计的不断完善、STA带宽的提升, 该通信接口方案具有广阔的应用前景。
参考文献
[1]Sehoon Kim, Jin-Young Hong, seil Kim, Sung-Hoon Kim, Jun-Hyung Kim, Jake Chun.RESTFUL Design and Implementation of Smart Appliation for Smart Home[J].2014 IEEE 11th International Conference on Ubiquitous Intelligence and Computing, 2014:717-722.
[2]朱向军, 应亚萍, 应绍栋, 冯志林.基于Zig Bee和WLAN的智能监控系统的设计[J].电信科学, 2009:45-50.
[3]张婷, 彭敦陆, 邹萌萍.基于REST的Wi Fi智能插座家居系统[J].计算机工程, 2016, 42 (2) :70-76.
[4]W.J.Li, X.Tan, D.H.K.Tsang.Smart home energy management systems based on non-intrusive load monitoring[J].2015 IEEE International Conference on Smart Grid Communications (Smart Grid Comm) , 2015:885-890.
[5]H.K.Nguyen, J.B.Song, Z.Han.Distributed Demand Side Management with Energy Storage in Smart Grid[J].IEEE Transactions on Parallel and Distributed Systems, 2015, 26 (12) :3346-3357.
[6]M.H.Asghar, A.Negi, N.Mohammadzadeh.Principle application and vision in Internet of Things (Io T) [J].2015 International Conference on Computing, Communication&Automation, 2015:427-431.
[7]Y.E.Wu, K.C.Huang.Smart Household Environment Illumination Dimming and Control[J].Journal of Display Technology, 2015, 11 (12) :997-1004.
[8]G.Luca, M.Benedetta, F.Nardecchia, F.Bisegna, G.Chiara.Home smart grid device for energy saves and failure monitoring[J].2015 IEEE 15th International Conference on Environment and Electrical Engineering, 2015:671-676.
[9]M.Vanouni, N.Lu.Improving the Centralized Control of Thermostatically Controlled Appliances by Obtaining the Right Information[J].IEEE Transactions on Smart Grid, 2015, 6 (2) :946-948.
[10]S.Nasrin, P.J.Radcliffe.Novel protocol enables DIY home automation[J].2014 Australasian Telecommunication Networks and Applications Conference, 2014:212-216.
轻量级软件项目管理方案 篇4
关键词:项目管理,配置管理,代码自动化生成,.NET
“软件危机”是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。“软件危机”于1968年由北大西洋公约组织的计算机科学家第一次提出,并随之诞生了“软件工程”这一学科。软件工程主要目的是研究用工程化方法构建和维护有效的、实用的和高质量的软件,从而避免“软件危机”。
“软件危机”已经提出40多年来,软件工程领域研究成果显著,取得了较大的成就。由于微电子技术的发展和计算机应用的普及,软件成本在计算机成本中所占的比例持续增长,软件项目日趋复杂,软件开发效率的提高也远远落后于信息化普及速度。因此导致“软件危机”问题不仅没有解决,而且愈演愈烈。对于软件工程的研究依然是一个比较热门的领域。软件项目的管理方法研究是软件工程学的研究领域之一,良好的软件项目管理模式对于对提高项目的成功率,减少开发成本和提升软件质量具有促进作用。
软件项目管理主要包括进度管理、成本管理、质量管理、风险管理与配置管理等。要进行有效的过程管理,必须制定科学的管理办法和使用有效的软件项目管理工具。
软件工程发展至今,陆续诞生了CMM(软件能力成熟度模型)、CMMI(能力成熟度模型集成)、RUP(统一软件开发过程)与MSF(微软解决方案框架)等成熟管理模型。这些解决方案对项目管理进行了全面的定义,一定程度上缓解了软件危机问题。诸如,CMMI中定义了详细的项目管理及过程管理模型,适合研发团队进行规范化设计。但对于不具有很高的复杂程度软件研发项目,完全按照CMMI或其它成熟的模型不切合实际,但是又必须以成熟模型为主要参考目标。本文根据实际软件项目管理与研发经验,提出了一种适合于中小型项目的轻量级项目管理解决方案。该方案主要适用于采用Microsoft.NET平台进行开发的项目团队。
1 轻量级项目管理过程
轻量级项目管理过程包括计划、需求、设计、编码、测试、发布与维护5个阶段。
计划阶段主要工作为调研用户需求,分析系统目标,分析系统开发的可行性,制定初步的项目计划。
需求阶段主要工作内容为与用户沟通,编写完善的“需求规格说明书”。“需求规格说明书”包括软件的功能需求、性能需求、非功能性需求、环境约束和外部接口等。
设计阶段主要包括概要设计和详细设计两个部分,由架构师针对软件的需求设计出系统总体流程、子系统、数据与对象描述、算法和程序接口等。
编码阶段的主要工作内容为将设计描述为可编译的源程序。
测试阶段的主要工作任何为根据需求规格和设计文档,对软件的功能进行验证。测试与需求阶段同步开始,到项目验收前结束。
发布阶段的主要工作是,对于软件产品进行安装部署,发布以后还需要根据用户要求和产品实际情况进行维护。
轻量级软件项目管理解决方案的目标是针对中小型软件项目运作的实际情况,建立行之有效的管理体系和沟通机制,提供项目开发效率,保障产品质量,确保项目能如期交付。主要管理的内容是开发过程中的各类文档、进度控制管理、BUG跟踪与代码同步协作开发。
2 轻量级项目管理实施
笔者所在的团队主要以Microsoft.NET为基础开发平台,数据库采用Sql Server系列,软件项目管理方案主要基于以上经验获得。因此本方案主要适用于使用.NET平台的开发的各类中小型项目,B/S与C/S项目均可。方案主要内容为:
2.1 项目计划管理
软件项目管理的目的主要是确定项目的范围、进度和费用。项目计划就是要对项目整个实施过程的目标、任务、进度和责任委派做出具体的规定和部署,它在项目管理中处于中心地位。项目计划主要包括设计工作分解结果。此阶段主要使用的工具为:Microsoft Project等。
2.2 配置管理
配置管理过程是对处于不断演化、完善过程中的软件产品的管理过程。其最终目标是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合。它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。常见的用于支持配置管理的工具有CVS、Subversion、VSS、Star Team、CC等等。我们选择VSS2005为团队配置管理工具。主要原因是:VSS为轻量级平台,便于部署和迁移;VSS与微软发布的产品Visual Studio.NET2008/2010等兼容性非常好。
配置管理模板包括PP(项目计划)、RD(需求)、TS(设计)、V&V(验证与确认)等环节的各类文档,如需求规格说明书、项目计划、RD_用例报告、TS_概要设计说明书、详细设计说明书、数据库设计说明书、安装维护手册、测试计划、测试方案与单元测试记录等。
2.3 项目建模
方案采用的建模工具有Enterprise Architect与Power Designer。
Enterprise Architect是以目标为导向的软件系统。它覆盖了系统开发的整个周期,除了开发类模型之外,还包括事务进程分析,使用案例需求,动态模型,组件和布局,系统管理,非功能需求,用户界面设计,测试和维护等。Enterprise Architect是一个完全的UML分析和设计工具,它能完成从需求收集经步骤分析、模型设计到测试和维护的整个软件开发过程。它基于多用户Windows平台的图形工具可以帮助您设计健全可维护的软件。除此,它还包含特性灵活的高品质文档输出。用户指南可以在线获取。
Sybase Power Designer是一个"一站式"的企业级建模及设计解决方案,它能帮助企业快速高效地进行企业应用系统构建及再工程(Re-engineer)。使用该工具可以设计数据流程图、概念数据模型与物理数据模型,包括了数据库建模的全过程。该工具在项目中主要用于数据库建模。支持数据库的正向和反向工程,便于数据字典维护与调整。
2.4 需求管理与Bug跟踪
我们采用Mantis作为项目管理和Bug跟踪平台。Mantis是一款基于Web的Php+Mysql的开源BUG管理系统,一款简单实用的系统,具有截图功能和强大的报表功能。Mantis还具有良好电子邮件支持,可将需求与Bug的各种状态定义按照预定设置发送到项目组相应邮箱。
对于新增需求变更,经历提出需求、确认需求、开发需求、测试需求到发布需求五个阶段,这五个阶段分别由需求工程师、开发工程师、测试工程师与配置管理工程师进行完成。通过Mantis提供的基于Web的协作系统,可以很方便的进行需求变更管理和跟踪。
对于已发布的项目所产生的Bug,通过Mantis也可以进行记录、跟踪。其邮件提醒功能使得Bug状态一旦发生改变,会立即通知到相关责任人进行处理。同时,其强大的统计和报表功能也便于统计各项目的Bug量,统计测试人员报告的数量等关键值。
2.5 代码自动化生成
轻量级项目均采用三层结构进行设计。三层结构模式如图2。
三层结构包含:表示层(UI),业务逻辑层(BLL),数据访问层(DAL),各层特点如下:
数据访问层:主要是对原始数据的操作层。可以操作数据库、文本文档或XML文件等多种数据格式,执行对数据库的增、删、查、改操作。数据访问层还可以通过OR映射进行扩充。
业务逻辑层:是系统的核心层,位于数据层和表示层中间,主要实现业务规则制定与业务流程实现。业务逻辑层直接调用数据层,并接受表示层的调用,起到承上启下的作用。
表示层:表示层是与用户直接交互的一层,主要处理用户的输入操作,提供交互式接口。在项目实现过程中,表示层一般为Web Form或Win Form等形式。
三层结构的划分,体现了“高内聚、低耦合”的设计思想,有效降低层与层之间的依赖,增强各层的复用性,有利于标准化开发。但三层结构也存在着降低性能、级联修改等问题。但轻量级项目一般侧重于业务流程,对于系统性能要求不高,而且计算机芯片的发展使得项目开发效率越来越比性能更重要。因此,轻量级软件项目均采用三层结构设计。
除此之外,还有业务实体层(Model),这个层主要内容是存放可持久化的实体类;通用工具类库(Common),主要用于存放通用的管理类库。类库的存在形式一般为Static类和Static方法。由于开发模式基本相似,所以开发过程中的大量相似代码,如:实体类、数据库操作类、UI界面,均可采用工具生成。.NET平台下比较优秀的代码生成工具有李天平的动软.NET代码生成器Codematic和国外成熟的代码生成器Code Smith。
轻量级项目采用动软.NET代码生成器为主要生成工具。动软.NET代码生成器Codematic是一款为.net程序员设计的自动代码生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,结合了微软Petshop中经典的思想和设计模式,可以通过反射支持多数据库,支持对连接字符串加密等。Codematic在项目中主要针对数据库中的表或视图生成表示层、业务层、数据层及实体等代码。使得开发人员完全从重复的录入过程中解脱。最新版本的Codematic还支持模板语法,开发人员可根据实际项目需要生成相应的表示层或数据层的SQL代码。以下是动软.NET生成器生成的Visual Studio.NET2010解决方案结构。
3 结束语
本文根据中小型研发项目实际需要,提出了一种轻量级开发的项目管理解决方案。方案主要针对项目计划管理、配置管理、项目建模、需求管理与Bug跟踪、代码自动化生成5个方面进行了定义和分析,给出了各过程中最佳的解决方案和管理工具。轻量级的项目管理解决方案已经大量应用于团队所承担的各类研发项目中,与方案实施前相比,开发更高效、项目进度可控,能有效的提高软件产品质量。
参考文献
[1]季丽萍.浅谈.NET三层结构及其应用[J].福建电脑,2009(6).
[2]李立芳,周小平.软件项目管理活动浅析[J].中国科技信息,2010(10).
[3]范振钧.基于ASP.net的三层结构实现方法研究[J].计算机科学,2007(4).
[4]孙继红.基于.NET三层架构的网上商城设计与实现[J].电脑编程技巧与维护,2008(16).
[5]于红波.三层结构各层次的实现技术研究[J].山东纺织科技,2008(1).
[6]刘宇翔.软件项目管理的流程设计分析[J].科技资讯,2010(36).
[7]邹晖.软件项目管理开发与应用[J].中小企业管理与科技:上旬刊,2011(5).
轻量级模式 篇5
这只是二维码应用的一个案例,现在,二维码的应用正变得日渐丰富。就在日前,灵动快拍推出了二维码食品溯源方案,该方案实现了对食品安全“从田间到餐桌”的监控,并且使用起来非常简便。
开放式的系统
食品溯源其实并非一个新鲜业务,早在几年前该业务就已经出现,不过,该业务并没有在国内普及。灵动快拍产品总监张浩鹏分析,过去的食品溯源是一个相对封闭的系统,由执法部门推动,相关企业配合。过去的系统采取的大部分是DM码和QR码,这种码需要特殊的终端来扫码,这种终端比较笨重,花费较多,因此部分超市里布置了几台这样的终端,用户使用起来往往需要排队。此外,这种终端的操作比较麻烦,超市需要在人员培训和维护上投入资金和精力。由于用户和超市方面使用起来都不方便,所以过去的食品溯源系统推广的规模相当有限。
“能不能有一种方式,让每个老百姓都有一台扫码机呢?”灵动快拍创始人兼首席执行官王鹏飞反复思索,认为方便用户使用是问题的关键所在,而智能手机和二维码的普及给了王鹏飞灵感,将二维码和食品溯源系统结合,就诞生了灵动快拍近日推出的方案。
“我们新推的系统有两个特点,第一个是解决了‘最后一公里’,让老百姓真正用起来;第二是系统非常大众化,与原有笨重的终端设备相比更轻量级一些,只要农户有电脑或者手机,就可以方便地输入信息,而用户只要有一台手机就可以扫码查询。”
多头并进的市场策略
为了打破传统的食品溯源系统政府主推、用户反应冷淡的“剃头担子一头热”的局面,灵动快拍在方案的推广上采取了多方并举的措施。
“首先我们要和监管部门合作,由这些部门来推进,可以增加项目的公信力,避免可能发生的安全问题,在这其中我们会和运营商进行合作;其次,我们会向农户做宣传,让他们了解食品溯源系统的作用;最后,我们会向最终用户做工作,提高他们的食品安全意识,由他们来倒逼系统的推广。”王鹏飞坦言,食品溯源在中国还是一项新业务,在市场推广初期,灵动快拍的首要任务是教育市场,而要做到这一点,就需要多方面同时推进,其中教育最终用户非常重要。
K-1轻量级王者——大和哲也 篇6
松本芳道淘汰“美龙”
轻量级首轮淘汰赛在“美龙”上松大辅与新日本踢拳联盟旗下高手松本芳道之间展开。在5月2日的预选赛中,上松大辅1分09秒重拳K0韩国冠军权在喜,成为当晚的最大亮点。台型出彩,拳法过硬的上松大辅此战后也被认为是魔裟斗的接班人。而松本芳道此前3回合击败夺冠呼声颇高的重炮手大月晴明,令人刮目相看。比赛开始,上松大辅采用了和魔裟斗类似的打法,以低扫破坏对手平衡,同时近身打拳法组合攻击,不过上松大辅的拳腿组合在力度和流畅性上还是差了魔裟斗1个档次。松本芳道防守严密,嗅觉敏锐,上松大辅进攻中稍露空隙他就立刻打出反击,更多次上演飞膝绝技。第2回合上松大辅跃起膝击时被松本芳道精准的迎击拳击中下巴倒地。读秒后的上松大辅为了追回比分,攻势更盛,一路猛冲猛打,但勇猛有余,准度却不足。这种“虚火”自然压不住松本芳道,松本防住对方的组合拳,以飞膝打出有力反击。双方的战局在最后1个回合愈加激烈,上松孤注一掷发起全力猛攻,左右重炮不断,松本也寸步不让与之展开激烈对攻。虽然在拳法技术上上松更加纯熟,不过相比上松单一的左右拳法连击,松本打法更加立体,先以飞膝压制对手炮火随后发起近距离的摆拳连击,双方对搏下互不让步,攻势一波猛过一波,重拳撞击下血汗纷飞。此时技术已经不是决定胜负的关键,双方拼的是意志力与体能。上松体能下降后头部防守出现漏洞,松本的上钩拳得手,率先撕破对手防线,随后松本一鼓作气拳打膝撞令上松毫无还手之力。第3回合2分45秒,松本芳道TKO上松大辅,杀入半决赛。上松大辅虽然拳法突出,冲劲十足,但是却缺乏了魔裟斗的沉稳和老练,最终败在更加老辣的松本芳道拳下。
第2战23岁的前NJKF和WPMO双料冠军久保优太3回合恶斗跆拳道选手尾崎圭司,最终一分险胜,杀入四强之列。随后大诚塾弟子才贺纪左卫门3回合大比分击败日本青春塾弟子石川直也,顺利晋级。
大和哲也压哨KO
8强战最后一场在裕树与WBC曰本区泰拳冠军大和哲也之间展开。裕树在预选赛中高扫K0竹内裕二表现不俗,但大和哲也击败夺冠大热门藤原敏男弟子山本真弘,更爆出了开赛来最大冷门。两强相遇必然碰撞出绚烂火花。双方一碰面就展开快节奏的对攻,裕树左扫腿不断扫向对手,大和哲也以双拳还以颜色,一秒钟3发以上的激烈对攻令战局急剧升温。面对对手的强劲连续低扫,大和哲也拳法压迫之余,使用正蹬拉开距离,破坏对方重心和节奏。如此一来裕树的扫腿难以发挥,只得靠拳法杀出一条血路。不过大和哲也的拳法路线丰富,在连续性和力量上更占优势,第1回合将要结束时,大和哲也一轮11拳的组合拳猛轰狠狠击中裕树头部,裕树瘫倒在地。这个精彩的压哨KO引爆了现场观众的欢呼声,大和哲也杀人半决赛。
长岛卷土重来
8强争霸告一段落,为了给选手更多休息的时间,接下来上演的是K-1Max16强选拔赛。首场便是巴西杀手安德尔·阿玛德对战目前日本最当红的“变装男"长岛雄一郎。安德尔是前巴西著名MMA搏击俱乐部 ChuteBoxe轻量级主将,曾获得过 Hero's轻量级GP亚军,在MMA比赛中重拳将宇野薰颚骨打裂,在2009年的16强预选赛中安德尔的重拳甚至击倒过播求,实力自然不可小觑。说到“变装男"大家更不会陌生,这位喜欢穿着女装的长岛雄一郎曾在2009年K-1总决赛中被盛华选手徐琰1分04秒重拳K0,但2010年长岛卷土重来,3战3胜2次K0O一举拿下了日本站冠军头衔,人气如日中天。不过此战面对爆裂铁拳安德尔,长岛如何过关呢?比赛开始后,为了避免被重拳秒杀的情况再次发生,长岛始终将战局控制在中远距离之外,这样不仅能发挥自己臂展优势,同时也更有利于撤出对手的炮火范围,真正做到可进可退。安德尔MMA赛事出身,虽然拳力强劲,但步法和节奏控制上毕竟比不上专业的站立格斗选手,他只有在中近距离对攻时才能完全发挥自己的火力。长岛正是看准了安德尔的这一弱点,采用中远距离的突击战术,远距离大跨步拳法进攻后迅速后撤到安全距离,不给对手阵地炮火发挥的余地。安德尔空有一双铁拳,却找不到爆发点,比赛节奏落入长岛手中。长岛虽然有女装癖好,不过他曾创下75%的KO率,重拳力量也十分了得。细心的观众发现长岛在出后手拳时,身体向斜下方顺势俯冲,这样的拳法看起来有些凌乱,实则能最大程度地增加攻击距离和力度,同时还能避免被对手的直线迎击拳命中。在精心设计的战术指导之下,长岛与安德尔展开了拳法大战,激战3回合不落下风。反倒是安德尔在第3回合体能下降,一度出现被长岛追打之势。3回合后,长岛以2:0的比分判决击败对手,进入16强席位。
随后登场的是佐藤嘉洋与山本优弥两位70公斤级老将,两人都是K-1Max级别中日本一线选手,佐藤嘉洋更以KO播求而名声鹊起。组织方安排这场日本内战,一来是因为欠薪事件国外高手纷纷出走,旗下可选择的好手不多,二来两人对决至少可保证有一个日本选手顺利进入16强。魔装斗退役后,日系江山坍塌,万一没有日本选手能打入总决赛,那对于原本不景气的K-1票房必然是雪上加霜。在种种考虑之下,K-1最终促成这场日本选手之间的对抗,佐藤嘉洋与山本优弥实力相近,3回合比赛后佐藤嘉洋以2:0的点数优势晋级16强。
半决赛KO连连
两场70公斤选拔赛之后,轻量级半决赛再次擂响战鼓。首场半决赛在松本芳道与久保优太之间展开。面对连续压下大月晴明与上松大辅两位人气选手的松本芳道,久保优太毫无惧色,开场就积极组织攻势,其灵活的步法和快速的移动令人印象深刻。在久保优太快速的撤闪下,松本芳道的拳腿多次打空。一时间失去节奏的松本芳道有些手足无措,防守出现漏洞,久保优太敏锐把握瞬间的战机,翻腰甩胯一个左高扫重重砸中松本芳道头部,松本芳道应声倒地。随着医务人员的登场,久保优太毫无争议地KO胜出,此时比赛仅仅进行了1分21秒。
第2场半决赛登场的是才贺纪左卫门与大和哲也。今年21岁的才贺纪左卫门是新一代的格斗偶像,腿法飘逸潇洒,打法极具观赏性,年轻帅气的他还曾为著名的格斗漫画做过代言。开局才贺纪就不断运用蹬扫腿法抑制大和哲也的近身拳法,几次漂亮的接腿动作也让大和哲也出腿开始犹豫。在双方中远距离腿法大战中,才贺纪打出一波高潮,转身踢加下劈腿连续命中对手,面对大和哲也的正蹬反击,才贺纪抓住对手的攻击腿后非常聪明的变线90度侧闪,将对手的重心拖动后,连打带扫踢倒大和哲也。第2回合大和哲也发起坦克战术,不断前压,不给才贺纪拉开距离的机会,在中近距离不断以组合拳施压。在对手的逼迫下才贺纪很不明智地与大和哲也斗起拳法,乱战中才贺纪在出左钩拳的瞬间被大和哲也的左摆拳击中耳根倒地。第2回合2分23秒,大和哲也再次拳法KO对手,以2战全KO的战绩杀入总决赛。
初代王者的回归
总决赛之前进行的是最后一场70公斤级别的16强选拔赛,由K-1Max初代王者阿尔伯特·克劳斯对上日本选手中岛弘贵。30岁的克劳斯活跃K-1擂台8年,虽然巅峰期已过,但雄厚的底子尚在,在最近6场比赛中他胜了5场。22岁的中岛弘贵出道不久,此前创下过11连胜的纪录,K-1战绩2胜1负,在今年的日本站中被长岛K0落败。比赛开始,中岛弘贵展现出年轻选手的冲劲与斗志,在积极的移动中不断以低扫和直拳向初代冠军发起攻击,打算在外围捞足点数。体型有些发福的克劳斯近身重炮和杀手直觉尚存,一旦逮住对手便能打出极具威胁的组合重击。中岛弘贵退闪时防御手臂略低,克劳斯一个右高扫踢在中岛弘贵的头部将其踢翻在围绳上。读秒后舆片中岛咬牙再战。不过他在打击力量上和克劳斯差距明显,单发式的低扫和直拳对克劳斯造成不了什么威胁,感觉不到压力的克劳斯越打越放松,原本很少使用腿法的他在比赛中秀起了腿法,多次使出转身踢和高扫。中岛转变战术,希望能用近身的膝法压制克劳斯的重拳,但这除了让他尝到更多的重击之外,还因为多次楼抱被扣了1分。比赛结束前克劳斯甚至放下双手引诱对手攻击,不过中岛依旧没能把握住最后的机会。3回合结束,克劳斯以绝对的点数优势获胜。不过击败中岛弘贵这样的新人,对于克劳斯来说原本是小菜一碟,在比赛中克劳斯表现出来的移动速度和攻击流畅性,相比以往并不能令人满意。当播求,魔裟斗、乔洛祖等一线好手纷纷退出之时,克劳斯能不能把握这个机会重回巅峰就看他自己的努力了。
轻量级总冠军诞生
进入当晚的轻量级冠军总决赛,首届63公斤级的日本王者将在此战诞生。久保优大与大和哲也狭路相逢,面对近在眼前的轻量级冠军宝座,谁都不肯让步。久保优太半决赛高扫KO对手,信心大增,开场就不断施展势大力沉的扫踢,激战中数次踢中大和哲也的支撑腿将其踢倒。一旦大和哲也的注意力被扫腿所吸引,久保优太的重拳就趁势爆发,近战中3记重拳连续击中大和哲也头部,一姿将其击倒。不过这个突如其寒的打击并没有击溃大和哲也的斗志,读秒后大和哲也羡性与对手打起了拳法对攻。久保优太的拳法不弱,速度与力度兼备,加上大和哲也之前受创,在反应上稍逊一筹,一轮拳法激战后久保优太继续保持领先。第1回合久保获得10:8的优势比分。不过大和哲也很快就展现出了他过人的沉稳,在开局不利的情况下第2回合他依旧稳扎稳打,不急不躁不断压进,逐渐化解对手在移动速度上的优势。久保优太虽然出拳迅猛凌厉,但是重攻不重守,动作的规范性和连击能力上也略逊对手,大和哲也即使乱战中依旧保持规范的拳架,攻守平衡,几轮交锋后久保开始出现疲态。第3回合大和哲也火力全开,久保优太对攻中动作变形,防御体系崩溃,大和哲也一鼓作气重拳连击击倒对手。不过这个击倒也是付出了相当的代价,击倒对手后的大和哲也脸频被打破,血流满面。久保优太读秒后表示可以继续战斗。战局再开,久保优太孤注一掷,连续施展飞膝和高扫,希望能压制对手的气势。大和哲也毫不松懈,重拳发威不断轰向对手头部,久保优太毫不示弱挥拳还击,在互换了10拳重击之后,久保最终不敌大和哲也的铁拳,第2次被击倒在地。此时的他已经拚尽了最后一丝体力,无力起身。大和哲也第3回合1分26秒K0。这场总决赛互有击倒,一波三折,最终大和哲也坚持到了最后,捧起了首个轻量级冠军奖杯。
几种轻量级加密算法的比较研究 篇7
无线识别射频技术 (RFID) 具有非接触扫描, 体积小型化, 抗污染能力强, 可重复使用, 穿透性强, 识别距离远等优点, 在物流监管, 门禁系统, 电子自动收费等领域得到了迅猛地发展[1]。它的信息安全问题也越来越受到人们的关注[2]。以往经典的加密算法如高级加密标准 (AES) , 侧重的是提供高级别加密性能, 而没有过多的考虑硬件资源开销问题[3]。显然, 在RFID这种硬件资源极端受限的环境下, 采用高性能的加密算法是不明智的选择。
轻量级 (lightweight) 加密算法在密钥长度, 加密轮数等方面作了改进, 使之对处理器计算能力的要求和对硬件资源的开销均有不同程度上的降低, 却足以提供所要求的加密性能[4]。在很多RFID低成本无源电子标签 (如RFID门票) 中, 所进行的加密算法只是为了换取一个时间代价, 即只要能够保证标签内的信息在所要求的一个时间段内安全即可。
流密码中的RC4算法和分组密码中的PRESENT算法, 都属于对称加密算法即加密和解密使用相同的密钥, 故能较容易做到算法的轻量化, 而椭圆曲线加密算法是不对称加密算法[5,6,7]。本文利用ATmaga⁃32单片机在AVR Studio.4仿真平台上, 对这三种算法的运行效率和密码破译时间进行分析比较。得出在硬件资源同样极端受限的环境下, 椭圆曲线加密算法的运行效率要高于另外两种, 所生成的密码最难被破译, 证明了非对称加密算法同样可以做到轻量化。
1 算法介绍
1.1 椭圆曲线加密算法
1.1.1 椭圆曲线概述
椭圆曲线加密算法属于公开密钥加密算法, 加密和解密使用不同的密钥。椭圆曲线定义:椭圆曲线是指在射影平面上满足Weierstrass方程的一条光滑曲线和一个无穷远点0∞的集合[8]。本文所选取的这条光滑曲线可以表示为E:Y2=X3+a X+b, 此时方程的特征值为大于3的素数。点加运算是椭圆曲线上一条很重要的运算规则, 具体规则如下:任意选取椭圆曲线上两点P, Q (若P, Q两点重合, 则做P点的切线) 做直线交于椭圆曲线的另一点R′, 过R′做y轴的平行线交于R, 则有P+Q=R。图1给出了椭圆曲线的加法运算法则。根据这个法则, 可以知道椭圆曲线内无穷远点0∞与曲线上任一点P有:0∞+P=P, 故把无穷远点0∞称为零元。同时可以得出如下结论:如果椭圆曲线上的三个点A, B, C, 处于同一条直线上, 那么他们的和等于零元, 即A+B+C=0∞。k个相同的点P相加, 记作k P。如, P+P+P=2P+P=3P。
1.1.2 椭圆曲线加密流程
首先确定一个有限域Fp, 这个域只有p (p为素数) 个元素, 在这取p=79。
(1) 用户A在这个有限域中选定一条椭圆曲线Ep (a, b) , 并取椭圆曲线上一点, 作为基点G。
(2) 用户A在1~p-1之间随机选择一个素数作为私有密钥k, 并根据加法则, 生成公开密钥K=k G。
(3) 用户A将Ep (a, b) 和点K, G传给用户B。
(4) 用户B接到信息后, 将待传输的明文编码到Ep (a, b) 上一点M, 并产生一个随机整数r (r<n) 。
() 用户计算点C1=M+rK;C2=r G。
(6) 用户B将C1, C2传给用户A。
(7) 用户A接到信息后, 计算C1~k C2, 结果就是点M, 再对点M进行解码就可以得到明文。在这个通信过程, 偷窥者只能看到Ep (a, b) , K, G, C1, C2, 而通过K, G求k或通过C2, G求r都是十分困难的。这正是椭圆曲线加密所基于的数学难题, 因此偷窥者无法得到用户A, B间传送的明文信息。本文选用密钥为79 b的椭圆曲线加密算法。图2给出椭圆曲线算法的加解密流程。
1.2 流密码加密算法
1.2.1 流密码概述
流密码 (stream cipher) 也称为序列密码, 按位或字节对数据流进行处理, 加密和解密使用相同的密钥, 是对称密码算法的一种。本文选取的是流密码中的RC4算法。RC4算法是一个面向字节操作、密钥长度可变的流密码 (stream cipher) 。算法的基本原理可描述为:对于n位长的数据, 有共N=2n个可能的内部置换状态矢量S=S[0], S[1], …, S[N-1], 这些状态是保密的。密钥流K由S中的2n个元素按一定方式选出一个元素而生成, 每生成一个密钥值, S中的元素就重新置换一次, 置换后的S自始至终都包含从0~N-1的所有n位比特数, 这体现了“一次一密”的加密体制[9]。
1.2.2 流密码加密流程
内部状态矢量S的初始化:把S中的元素按升序从0~N-1赋值, 即S[0]=0, S[1]=1, S[N-1]=N-1。同时建立一个临时矢量T, 如果密钥K的长度为N字节, 则将K赋给T否则, 若密钥长度为keylen字节则将K的值赋给T的前keylen个元素, 并循环重复用K的值赋给T剩下的元素, 直到T的所有元素都被赋值。
用类C伪代码可表示如下:
密钥流的生成:矢量S一旦完成初始化, 输人密钥就不再被使用。密钥流的生成是从S[0]~S[N-1], 对每个S[i], 根据当前S的值, 将S[i]与S中的另一字节置换。当S[N⁃1]完成置换后, 再从S[0]开始继续重复操作。用类C伪代码可表示如下:
加密时, 将k的值与下一明文字节异或;解密时, 将k的值与下一密文字节异或。
1.3 PRESENT算法
1.3.1 PRESENT算法概述
PRESENT是分组密码, 分组大小是64位, 根据密钥的大小可分为PRESENT⁃80和PRESENT⁃128两种参数版本, 密钥长度分别为80位和128位, 因此, 在这里选用PRESENT⁃80。
1.3.2 PRESENT算法流程
图3为PRESENT⁃80的算法流程图。
PRESENT⁃80算法要经过31轮加密, 每一轮都经过一个SP结构, 每个SP结构都是由add Round Key、s Box⁃Layer和p Layer三步操作组成[10]。add Round Key操作是将PRESENT⁃80的分组数据与轮密钥Ki按位进行异或操作;s Box Layer是一个非线性置换操作, 在PRESENT⁃80中由一个4位到4位的S盒 (S⁃box) 实现。表1给出了S⁃box的16进制表示;
p Layer操作是一个位变换操作, 用于改变PRES⁃ENT当前分组数据的顺序, 把第i位变为第P (i) 位, 表2给出了p Layer具体操作。
密钥调度:PRESENT⁃80的初始密钥存放在一个80位的密钥寄存器 (Key Register) 里, 表示为K79K78…K0, 然后取其高64位的值作为轮密钥Ki=k63k62…k0 (1≤i≤32) 。在第i轮加密中, 轮密钥Ki=k63k62…k0=K79K78…K16该轮加密完成后, 密钥寄存器更新, 产生新的轮密钥如此完成31轮的PRESENT⁃80加密。
2 实验与分析
2.1 实验设计和实现
在微处理器平台的选择上, 希望微处理器既能够适用于低功耗的RFID系统中, 又能够很好地对上述三种算法进行实现。ATmega32单片机是Atmel公司推出的一款高性能、低功耗AVR高档微处理器。芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路, 但由于采用了小引脚封装 (为DIP28和TQFP/MLF32) , 所以其价格相对比较便宜, 非常适用于成本较低的RFID系统[11]。另外, ATmega32含有32 KB的内存容量, 能够完全满足这三种加密算法的内存需要。所以可以把ATmega32单片机作为目标平台。
开发工具选择方面, 仿真工具选用AVR Studio4, 编译工具选用Win AVR (GCC) , 并把后者添加前者内, 这样就可以在同一个界面下完成对算法编译和仿真。为了数据的准确性, 所有仿真都执行多次, 取其平均值。
2.2 算法性能评估与比较
本文从三个方面对这三种算法进行评估和比较:一是评估它们运行时的内存开销, 来比较它们各自对硬件资源的需求;二是评估执行这三种算法所需要的机器周期, 来比较这三种算法的运行效率;三是评估三种算法各自的密码破译时间, 来比较它们的密码安全强度。
2.2.1 内存开销比较
算法的内存开销, 主要是指算法在完成一次加密和解密的过程中所需要的内存大小[12]。表3给出了这三种算法在完成一次加密和解密的过程中所需要的内存大小, 单位为字节。为了更直观的比较, 在图4中以三维柱状图的形式给出。
从表3可以看出, 三种算法的代码开销都没有超过总内存的1 10, 佐证了这三种算法的轻量级性, 而流密码中的RC4算法的代码开销尤为突出, 这与其密钥短小有莫大的关系。RRESENT的代码稍大, 主要是因为算法过程中的位置换运算消耗内存大。
2.2.2 算法的运行效率
算法的运行效率, 是指算法完成一次加密和解密所需要的机器周期, 它反应了算法对能量的运用效率。在能量及其有限的RFID系统中, 算法的运行效率显得尤其的关键。在此我们把CPU工作频率设定在8 MHz下, 并且为了能够完全覆盖这三种算法, 选取一个256位的测试向量进行。表4给出了这三种算法各自的执行时间, 单位是机器周期。
为了更直观, 图5给出了三种算法完成一次加密和解密所需要的机器周期的比较。
可以明显的看出, 在算法的运行效率上椭圆曲线算法要优于另外两种算法, 这与在仿真过程中, 软件只运行椭圆曲线加密算法的低计算开销部分有关。而在运行RC4算法和PRESENT⁃80时, 都要进行位置换和位赋值的操作, 这在硬件上实现可能没有任何性能开销, 所做的只是将电路的对应位置相连, 但是在软件上实现就显得困难多。
2.2.3 算法安全强度比较
算法的破译, 称为密码分析, 针对这三种加密算法选用各自最有效的密码分析方法分别对其进行密码分析, 用破译算法所耗时间和所占的空间, 来衡量这三种算法的密码安全强度。
椭圆曲线加密算法, 加密和解密所用密钥是不同的, 对此采用密钥穷尽搜索方式[13]。在一个有3 000台计算机的网络中进行密钥穷尽搜索的计算, 使用粗略的时间估算原理可以得出破解椭圆曲线密钥需要几小时到几天的时间, 尽管如此, 这种加密强度对于低成本的RFID系统来说还是绰绰有余的, 因为召集这样多的人力和计算机资源来破解这种低成本的电子标签是得不偿失的。
流密码中的RC4算法, 是对称加密算法中的一种, 采用暴力攻击方式对其进行破解[14]。暴力攻击RC4算法, 必须知道密文某几个字节对应的明文, 使之成为已知明文攻击, 知道明文后, 通过逐一假设密钥尝试解密密文与已知明文进行比较, 若解密结果与明文匹配, 那么正确的密钥就已经找到。找到了加密密钥, 剩余的密文就可以完全解密。用暴力攻击中的全查表法, 破译RC4算法所需空间为10 TB, 所需时间几乎为0。可以看出虽然RC4算法的代码所占内存小但是安全性却是比较低的。
对于分组密码中的PRESENT算法, 采用代数分析对其进行攻击[15]。所谓代数分析就是将一个密码算法的计算过程构造成一组代数方程, 通过求解这组方程中的未知元来获取该密码算法中的密钥信息。在PRES⁃ENT算法的代数分析中, 所需的空间可以由单台个人计算机提供, 所需要的时间代价是几天, 这些时间代价主要用在求解方程组上。为了便于比较, 表5给出这三种算法的破译代价。
尽管在衡量破译时间上使用的是粗略估算时间原理, 但这并不妨碍对这三种算法安全强度的分析, 因为RFID系统本身成本就很低, 在其中进行加密运算, 很大程度上就是为了换取一个安全的时间代价。从表4可以看出:流密码中的RC4算法是最好破译的, 这与它的算法简单、密钥短小、算法按位操作有关;椭圆曲线算法和PRESENT⁃80算法所换取的时间代价是相似的, 但是在破译所需空间上, 椭圆曲线算法却要比PRESENT⁃80算法大很多, 可以这样说, 椭圆曲线加密算法的安全强度胜过PRESENT⁃80算法。
3 结语
对于RFID这种硬件资源极端受限的系统中, 就如何在算法的加密性能与硬件资源消耗之间取得一个最佳的权衡。本文选取了不对称加密算法中的椭圆曲线加密算法, 并选取对称加密算法中RC4加密算法和PRESENT⁃80算法与之进行比较。对它们在微处理器平台上进行仿真分析, 并比较它们各自的内存消耗, 运行效率和密码破译难度。从最后的实验数据可以看出, 运行这三种加密算法所耗用的内存都没有超过微处理器内存的10%, 证实了这三种算法都属于轻量级的加密算法;在算法的运行效率上, 椭圆曲线加密算法所需要的机器周期要比另外两种算法少。
在加密强度上, 椭圆曲线加密算法作为不对称加密算法所表现出的密码强度更是两外两种算法不能企及的。在硬件资源极端受限的环境下, 椭圆曲线加密算法在内存开销、运行效率和密码的安全强度之间做到了较好的兼顾, 不对称加密算法同样也可以做到算法的轻量化。
摘要:随着无线射频识别 (RFID) 技术在各个应用领域的迅猛发展, 轻量级 (lightweight) 加密算法日益受到人们的关注。在RFID中硬件资源是极端受限制的, 为了在算法加密性能与硬件资源开销间得到一个好的权衡, 把椭圆曲线加密算法 (ECC) 与流密码加密算法中RC4算法, 分组加密算法中的PRESENT算法, 进行分析比较。并选取Atmega-32微处理器在AVR Studio仿真平台上进行分析比较。实验获得了这三种算法在算法运行效率、密码安全强度和硬件资源开销间的比较结果。得出, 在硬件资源同样极端受限的环境下, ECC所表现出的运行效率和密码安全强度是其他两种算法所不能比拟的, 证明了非对称加密算法也可以做到轻量化。