众所周知,随着互联网和信息技术的发展,软件、应用或APP已经进入了爆发式增长的阶段。对于他们而言,功能性和非功能性是体现核心竞争力的两个方面,功能性比较容易理解,而非功能性主要指速度、是否高可用、设计是否人性化……今天就结合DevOps来谈一谈对应用非功能性需求的一些认识。
关于非功能需求都包括哪些“软”指标,可以通过ISO/IEC 25010 软件质量管理模型了解一下。从图中我们可以看到,除了功能性外,影响软件产品质量的关键因素还包括效率、兼容性、易用性、安全性、可靠性、可维护性和可移植性7个维度,每个维度又包括了许多方面,涉及到架构、内容、交互、运营、安全等,这些都属于非功能需求的范畴。在get了这些需求后,如何去实现他们,又是一个比较头疼的问题了。
ISO/IEC 25010 软件质量管理模型
要想实现应用的非功能性需求,就要打穿部门之间的壁垒,让不同的部门同时参与,互相协作。因为这些需求放在哪里、哪个部门、哪个阶段貌似都不能一劳永逸,高枕无忧,因为有的需求需要的是服务器资源,如“支持动态用户1500以上”,有些需求需要的是开发过程解决,比如“系统支持多种浏览器”,还有的需求是需要应用发布之后,运维团队来实现,比如“普通修改一天内完成”,再有甚者,需要多种资源,多个团培配合着来,比如“应用热点/流量热点分析”等。
多部门协作以实现应用的非功能性需求
当多个部门共同参与开发应用的非应用型需求,这种文化氛围与DevOps殊途同归。在DevOps的文化里,不紧紧的打通了运维与开发的屏障,更是将各个阶段形成了一个生生不息的循环,形成一个持续集成、持续交付的生态,如果说DevOps是一种文化,一种氛围,追求高品质的App是目的,那么,努力发展非功能需求的实现及优化则是一种行之有效的手段。
由于实现了非功能需求的服务化,在一个良好的DevOps的氛围里,我们甚至可以利用这些服务来做在线BI甚至精准营销,由运营侧提出需求,指定基于App的用户行为分析图,然后分析收集的数据,反向推动优化非功能需求的实现甚至是主线功能需求的优化,从而达到提升客户满意度,提升市场占有率的目的。由于我们已经打通了应用交付服务的关节,所以这些数据和分析与每个部门各自为战比起来,要精准、快速、高效的多。
DevOps提升应用品质
以上就是我结合DevOps文化对应用非功能性需求的实现的一些想法,在应用同质化加剧的情况下,非功能性需求这个“软服务”会给用户提供更好的应用体验。