美文网首页新趋势@IT·互联网IT 森林
让普通人能像搭“乐高积木”那样开发物联网软件

让普通人能像搭“乐高积木”那样开发物联网软件

作者: 一峻 | 来源:发表于2017-01-25 22:49 被阅读188次

    陪孩子玩过乐高积木的朋友都会觉得搭积木的能力几乎是与身俱来的,从简单的模块可以混搭出各种各样的物体,充分发挥孩童的创造力。

    软件工程师也早就想把复杂的程序改造成乐高积木那样的模块,只保留极少的接口,就能够组合出满足各种需求的软件来。从David Parnas提出“信息封装”的概念(Parnas, 1972)以后,这方面的思想和实践可以说层出不穷:函数,对象,远程调用,Web服务,云服务,微服务等等,把乐高积木的形式变了又变,而函数调用,对象复用,服务组合,构件化,服务化,集装箱化,微服务化,又把组合积木的方式提升了很多回。

    软件的载体也从单机,到网络,互联网,物联网,是越来越复杂。从开发者的角度,你很难把握客户的真实需求;同时从普通用户的角度,也很难削足适履,让软件按照自己的需要更改。当然,业界的一个趋势是抓取大量用户的数据,让统计数据说话,决策该怎样作出更改。所谓”大数据人工增强智能“是也。乔布斯的遗训,还经常醍醐灌顶,“在看到产品之前,用户并不知道想要的是什么”。

    从企业总体业务和商业盈利的角度看,这样做无可厚非。可是从个人用户的角度,哪怕99%的其它用户都叫好,对我这个1%没有服务到位,我也是不能认可的:架不住我就要做那个百里挑一的刺头(outlier)呢?这样下来,统计意义对于我个人就要大打折扣了!毕竟个人对自己的特定需求应该还是更有把握些。当然啦,要是能让软件产品赋给用户一些必要的能力,使得他们能够自己改造软件,满足自己的需求,也自给自足,丰衣足食,皆大欢喜了(Lapouchnian et al., 2006)。

    自从苹果应用店模式普及开来以后,我们看到业界也正是这样做的。首先是“碎片化”,把软件的功能拆小,拆细,然后任凭用户排列组合,完成无穷无尽的需求。其次,基于使用历史数据,“推荐”用户各种小应用,让他们不用自己去寻找自己从数据中体现出来的需求。从某种意义上,这也是“大数据时代”软件的宿命。

    今天我要给大家推荐的想法来源于终极用户编程的思考。假如你用MIT Scratch的“乐高积木”式的可视化编程教学平台,能教会小朋友那些抽象的编程概念,为什么不能用同样的方式教会你的终极用户使用乐高积木式地组合软件模块,进行物联网软件开发呢?使用微软公司的Xbox游戏控制器,Lego公司的Mindstorms机器人,剑桥的Raspberry Pi (树莓派),和他的可视化变换模块,皮埃尔博士的最新研究做到了。

    熟悉Scratch编程的朋友对下图的构造应该不会陌生,每一个模块都跟其它的模块通过形式上通用的接口互联,最终完成一个更为复杂的任务。

    借助底层的Web服务实现所谓的代码浆糊,最终整合在一起的物联网应用软件,你能够完整地展示出什么是软件控制的边疆,那就是没有边界!皮埃尔的自适应用户界面工作(Akiki et al., 2016)得到了上海班福科技有限公司的大力支持,目标是把企业资源管理软件的用户界面开发工作解放出来,利用基于角色的目标任务模型自适应用户的界面需求。现在这篇论文可以算是从功能需求角度的一个姊妹篇,侧重于怎样为终极用户赋能。降低软件开发难度,使得终极用户可以直接编程,这里具体的一个例子是射击机器人,详细实现内容参见Akiki et al.(2017),这里只是抛砖引玉。

    当然仅仅是我们迈向人机协同编程的第一步。下一步是把终极用户的朋友圈也作为要素整合进来进行优化。参见彭鑫老师的最新论文(Peng et al., 2016)。等到机器可以根据终极用户编程的经验完成复杂产品的那一天到来之际,朋友们,我们的明天不是应该更美好吗?

    参考文献

    D. L. Parnas. 1972. On the criteria to be used in decomposing systems into modules.Commun. ACM15, 12 (December 1972), 1053-1058.

    Alexei Lapouchnian, Yijun Yu, Sotirios Liaskos, and John Mylopoulos. 2006. Requirements-driven design of autonomic application software. In Proceedings of the 2006 conference of the Center for Advanced Studies on Collaborative research (CASCON '06), Hakan Erdogmus, Eleni Stroulia, and Darlene Stewart (Eds.). IBM Corp., Riverton, NJ, USA, , Article 7.

    Pierre A. Akiki, Arosha K. Bandara, Yijun Yu: Visual Simple Transformations: Empowering End-Users to Wire Internet of Things Objects. ACM Trans. Computer-Human Interfaces. (2017)。

    Pierre A. Akiki, Arosha K. Bandara, Yijun Yu: Engineering Adaptive Model-Driven User Interfaces. IEEE Trans. Software Eng. 42(12): 1118-1147 (2016)

    Xin Peng, Jingxiao Gu, Tian Huat Tan, Jun Sun, Yijun Yu, Bashar Nuseibeh, Wenyun Zhao: CrowdService: serving the individuals through mobile crowdsourcing and service composition. ASE 2016: 214-219

    相关文章

      网友评论

      • 小鱼儿他老汉:Scratch是为没有编程经验的小朋友设计的,把Sprite对应的多线程、PubSub、以及繁琐的媒体处理等小朋友现在无法理解的概念和控制细节隐藏起来了。现在针对IoT有ScratchX/Scratch for Arduino。但是这些可视化工具控制硬件其实就是把控制逻辑代码可视化,大材小用啊。可视化适合快速应用原型,可以帮助人摆脱底层细节和大量重复代码,我个人认为底层硬件I/O需要的是实时和大量重复的细节设计,可视化恰恰将这些细节暴露出来了。有拖拽的功夫,调用一个库函数更加简单。其次,可视化编程不利于配置管理。不过我现在尝试在UML/ORM/函数化方面使用可视化和代码生成器工具。以加快开发速度。总之,可视化编程适合高层抽象、应用设计,不适合细节实现。

      本文标题:让普通人能像搭“乐高积木”那样开发物联网软件

      本文链接:https://www.haomeiwen.com/subject/hgkxittx.html