主题:【原创】最近为公司开发了一个小软件,挺好玩的 -- 温雅颂
最近因为工作需要,为公司开发了一个小软件,挺好玩的,写出来给大家解个闷儿。
在说正题之前,先做一个简要的背景介绍:
我们公司是一个无线广域网的应用软件公司,最近在为客户开发一套信息分析和管理软件。这个软件需要采集客户的雇员在使用无线广域网时的许多数据。其中最重要的部分是利用新型无线网卡的GPS功能,采集雇员在户外工作时的地理坐标以及与联网有关的其它数据,比如服务商、网络技术类型、以及信号强度等数据。所有采集下来的数据要在数据库里保存一年的时间。
我们的一些客户规模很大,户外工作的雇员常常有好几千人。为了使我们的软件将来稳定可靠,在推出之前需要经过严格的各种测试。别的测试还好说,可这几千雇员一年内的户外工作路线数据却很难获取。就算我们能花钱雇人开车在外面采集数据,先不说雇几千人的花销太大,时间也来不及。唯一的办法就是用软件来模拟生成几千雇员一年内户外活动的全部数据。
公司里的工程师们,绝大多数都是网络、通讯方面的专家,对地理数据、GIS、GPS等玩艺儿是七窍通了六窍--一窍不通。所以编写这个模拟软件的事,就责无旁贷地落在了我的头上。
这个软件从要求的提出,到最后基本成型,前后共用了两个星期的时间。在开发过程中,从最早的技术试验,到软件架构设计,再到功能模块的开发和测试,现在回想起来还是满有意思的,且容我慢慢道来。
喝水ING......
本帖一共被 1 帖 引用 (帖内工具实现)
我觉得,设计开发这样一种小软件,对软件人员来说,是一种很好的学习锻炼机会。首先它有明确的技术要求,虽然是条条道路通罗马,但怎样做才能更好地实现这些要求,就比较吃功夫了。另外呢,由于它毕竟不是正式的商业软件,稳定性要求不高,因此可以在其它小功能上多花点时间和心思,弄得更花哨一点,弄它个麻雀虽小,五脏俱全,也很有意思。
因此,我在此希望大家踊跃发表自己的见解,谈谈假如你来设计开发这个软件,你会怎么做。
先声明一下:这个软件已经基本完成,没时间再做大的改动了。所以哪位如果提出了曼妙无比的构想,我也来不及盗版了。不过对一些小而精的功能,也许我会加进去。版权费嘛,哈哈,咱哥俩谁跟谁啊?
首先是模拟数据产生器,要求能够随机产生大量的数据。生成的数据应该有如下要求:
1.范围足够广泛,比如要求能够产生南极地理坐标。
2.数据合理,生成的数据必须符合用户的业务逻辑要求,比如产生了一个月球上的坐标,就是不合理的,但是程序要能够随机的产生一些异常数据以测试程序的鲁棒性,同时可以模拟数据采集过程中的一些异常,比如10万个地球坐标中会冒出一个月球上坐标,这个数据,可能是由于传输中的异常或是什么其他原因引起的。
3.在数据合理的前提下,数据随机产生
4..相关参数可以设置,比如单位时间产生的数据量,丢包率等等。
5.模拟产生的数据可以保留结果,以便同接受到数据进行对比
6.产生的数据可跟踪,如果模拟出的数据导致了采集端系统的崩溃,能够跟踪可以回溯到当时崩溃的上下文环境(如果业务数据是离散的话,这个无所谓)
然后是数据比较器,主要功能就一个,将产生的数据同最后软件接受到数据进行对比,最后能够形成对比报告。
其他的想到了再说
为了避免将来可能的版权官司,俺就不参与讨论了。
小花一朵,接着!
南北极肯定是不需要的,因为我们没有在那的客户。
月球坐标就更不需要了。
不过,地理坐标无非就是经纬度而已,单纯从经纬度来看,是无法区分这个经纬度是在地球上还是月球上的。
对。这是我当时考虑的一个重要因素。
喝,这就开始为版权官司紧张了!不至于啊,你的构思我还未必瞧得上呢。
多做点没坏处,
俺举月球的例子是夸张了点,主要是考虑乱七八糟的数据对系统的干扰,比如假设经纬度的数值范围是0-365(具体多少早忘了),由于传输的问题,经纬度给你传了个-1,或是65535,这就是月球了。
从静止不动到在高速公路上飞驰都需要模拟,还要考虑因进入隧道等原因引起的信号被遮挡的问题。
你这种(ev-do?)的网卡有自己固有的AT指令集,可以用这玩意结合你们写的有针对性的程序,来采集(服务商、网络技术类型、以及信号强度等)数据。
而无线网卡带的GPSONE芯片,可以把地理坐标信息转换为路径数据,在没有网络的情况下,建立一个虚拟的缓冲池,将数据存入,待有网络时将数据随时发回。
不过,我比较奇怪的是,你们这个无线网卡还能跨运营商使用?
1.网络有信号,GPS有信号(相安无事)
2.网络没信号,GPS有信号(建立缓冲池,将位置信息导入)
3.网络有信号,GPS没信号(有遮挡物,可以空置一下,反正网络数据状态是会写入的)
4.网络没信号,GPS没信号(没什么好说的,作为盲区记录在案)
如果ID为10023442的客户目前在布鲁克林,结果(也许是GPS偶尔犯错,这也经常出现)1分钟后显示他在DC,速度超过了1000公里/小时(民航机的最大时速),即可判为GPS错误。
数据采样量,推荐是20秒一次的位置信息,1分钟一次的网络信息。这个是车辆管理里最常用的采样时间。
谢谢:作者意外获得【通宝】一枚
鲜花已经成功送出。
此次送花为【有效送花赞扬,涨乐善、声望】
“重在掺和”
无线广域网内的用户的移动速度不可能很快,我的做法是用随机数, 产生初始地经纬度,然后是移动方向,速度,以及是否继续移动。
再设立几个hot-zone,如WTC,等,测试敏感地域接近告警及监控功能。
修改了几个门限值,出现恐怖分子千军万马前仆后继义无反顾冲向....
关键是鲁棒性测试。即在网络信号和GPS信号采集出错的情况下,系统是否会崩溃。