云开发(网络时代开发模式)

2023-12-20 22阅读

温馨提示:这篇文章已超过407天没有更新,请注意相关的内容是否还可用!

云开发

网络时代开发模式

传统垂直堆叠的开发模式,在云时代需要进行颠复和创新;连续在线、基于截层水平扩展、简单到粗暴乃至松耦合复用构件的云开发方式将能更好适应云时代的开发特点。各种适合不同能力和定位的人员的自驱动开发模式,包括制作即开发-页面制作、设计即开发-数据设计、页面即开发-如页元需求驱动、接口驱动开发、流程驱动开发、表单驱动开发、逻辑微编码-简单到粗暴编码到构件提炼开发等。--先按云架构进行设计并做快速产品云试用模型,然后用内部框架进一步重构和优化...

中文名 云开发
特点 水平扩展、低门槛准
基于 云特性的在线
方式 开发方式是云方式

背景和概述

传统开发模式逐步引入Struts/Spring、分层分离框架、面向切面编程(含过滤器、拦截器和侦听器)等众多"敏捷开发"的努力,都是在改变垂直堆叠的模式为横向扩展模式,转相互紧密依赖为松耦合,但都不够彻底。

尤其在云计算、Iaas/SaaS/Paas云服务乃至移动云开发风起云涌时,传统开发模式逐步变成反面模式,阻碍了开发的有效战略和卓越品质。

移动互联网和“云开发时代”的来临,编程开发模式必须进行颠复性创新。

核心价值观

在线连续协同共生>沟通>个体/交互>过程和工具

产品为王,体验至关重要,我们需要更多人(包括无关者)从一开始就(尽早)不间断的参与--连续沟通、有效反馈、协同工作,并通过自动量化统计分析能力进一步保证这种参与,形成一种连续协作的氛围,共同推进产品的诞生和成长;这种连续协作氛围远比割裂的沟通、低效的交互、干巴的规定、冗长的会议和强制的管理更加重要。

云品质小版本的可见即可得>简单>可以工作的软件>面面俱到的文档

怎么样简单、简洁和快速地搞出一个可用的软件版本来显然是共识,因为前期出不来效果、得不到反馈、面临高风险度...,相反成本却是最大,如何简单到可想、可见、可得地快速产生软件小版本,并稳定运行地证明出价值(避免在取得效果前可怕的体验让人拒绝而破坏所有商机),才可以进入产品正常的生命周期,迎来更多更多投入和良性循环,直到成长为可以工作的软件。

超越客户(用户)和服务交付>反馈>客户合作>合同谈判

传统客户(用户)和开发方壁垒森严,开发阶段和使用阶段巨大鸿沟,造成客户(用户)在开发阶段的严重缺失而无反馈和不合作,开发者在使用阶段的惰性和不响应而产品成长中断,我们希望打破客户(用户)和开发者的壁垒--自己就是客户客户就是自己改变交付模式消除阶段鸿沟--服务交付(可以项目和产品前期免费),换位思考、互相尊重、共同责任,联手缔造产品的更大价值!

自驱动变化即变化驱动和驱动变化>勇气(拥抱变化)>响应变化>遵循计划

为什么响应变化需要勇气呢?因为变化往往会影响很多环节的改变,传统不控制变化往往导致失控;但变化是永恒的不变的是变化本身,拥抱变化最好的方式让变化化身成开发的良师益友,让变化自动驱动软件的成长,同时软件成长过程又自动驱动新的变化,并且获取效益后为了适应各种客观要求而完全容纳各种跨越式重构和优化的大变化。

云核心实践及具体实践

概述

传统框架、编码乃至极限编程是垂直堆叠,所谓的横向机制基本只是一种尝试(你必须知道如何进行代码垂直堆叠哪怕拦截至少你得关注而云开发则无需知道也能加上),我们需要改变传统开发的思想即把垂直堆叠解耦成水平扩展,为此提出三种创新实现方式为:

一种是增加运行容器,容器中可配置各种运行功能,这里通过增加云计算能力即云计算容器实现,该容器可进一步容纳现有各种容器(如spring等),可以配置各种安全、权限、缓冲、防浏览器缓冲、变量初始化控制、外部接口如cmd或调用外程序的QOS、统一错误码处理、统一日志处理、异常跳转后控制等功能,从而把传统垂直堆叠的功能引入完全解耦,实现水平配置式开发!(参见核心实践四)

第二种就是自定义规范化框架,框架本身的产生可忽略垂直编码,而其中可插入各种功能,这是对传统垂直堆叠模式的抽象,即把层次按规范进行隐藏,使得编码者无需关注,只用关注关键业务的代码编写!(参见核心实践二)

第三种就是指定功能实现标准并通过各种手动如代码向导加强标准的贯彻,实现特定灵活逻辑具体代码规范,实现特定处理的全局工具包,都在这个范畴!(参见核心实践三)

这三种方式离不开高度复用的构件(一种高度可复用充分松耦合可插拔的东西包括框架),且一旦复杂度超出已有范围,将进一步驱动构件的产生、发展和成熟,推进卓越复用和有效战略!(参见核心实践五)

这种创新开发过程,由于联动改变高频度改变整体代码,越是开始越必须在线进行,同样在线的各种活动才能充分发挥其优势!(参见核心实践一和核心实践六)

在线编码无缝协作

提供一种在线开发和协作的环境,确保在线连续设计、开发、集成、测试、交付等开发动作,并让客户、产品、管理乃至更多的人无中断体验产品的全生命过程,从而得到最充分、及时的交流和反馈,自驱动极限迭代开发过程。

[开发]

在线开发-设计、编码、调试、测试...等所有活动均在线进行,任何动作同时其他人在线提示。

集中代码仓库-上面开发的结果,将与标准版本服务器对接,从而进一步支持传统开发活动。

按变化集成、部署和交付-任何开发和改变,只要递交修改,即自动编辑、集成、部署和交付,但可不包括运行时。

[团队]

虚拟团队-开发团队的各种角色均在云上参与,形成贯穿全部软件生命周期的虚拟团队,形式上不在一起,但无时、无地保持紧密沟通;不能限于技术团队、不能限于会议形式,让更多人利用非正式时间同等参与而驱动开发。

跨部门交互-除开发团队外,产品部门、市场部门、销售甚至客服部门,当然包括非IT管理者等,形成复盖非开发层面的成员,促进更大范围的交互。

远程客户可视化体验-不管是否在现场,也不管什么时候想,客户均可远程访问任何阶段的产品,并以可视化的方式体验,促进客户参与和需求挖掘。

[自动化]

*统一无缝协作空间-确保开发过程中的自动化信息公示、问题标注、交流反馈等能力,并提供开放可扩展的接口以对接其他专业化ALM(软件全生命周期)工具。

反馈监管-任何问题提出和交流发起,通过监管确保有效、及时地反馈,从而驱动整个开发的连续进行。

自动化统计分析-可根据各种管理目标反复提升自动化水平,确保客观和效率。

面向截层水平实施和按规范自动化堆叠

从一个业务驱动的截层开始,迅速自动化堆叠其他关联层次和关联活动对象,全员平等、并行的水平推进软件系统的全生命周期,开发变成为一个不用费时效果最大的行为。

[规范标准]

统一层次和框架规范-面向截层统一规范品质管理的自动化模型,框架规范化,编码标准化。

[截层模型]

面向单一业务-截层最大程度贴近业务逻辑本身的驱动,且只关注业务自身,从而将开发集中到产品和业务逻辑设计上;同时截层中每一个截块只面向单一业务,减少截块耦合带来的复杂性,避免传统业务控制可以集中到一个文件而带来的失控。

垂直框架层次自联动-基于截层的变化,实现关联垂直堆叠层(如data、xml、dao、daomain、service、manager、action、...)的自动化生成、修改、清除等自动透明的联动。

关联软件全生命周期活动-截层是软件全过程活动的集中浓缩,围绕截层,从需求驱动代码的自动产生,到单元测试功能测试,到代码检验、自动测试、QOS报告、设计文档、进度监控-redmine、自动培训、规范自检、工作日报..,均能有效关联,从而便于不同层次的并行协作和自动化模型。

脱离具体框架实现-支持极速的代码、语种、框架的快速重构化,哪怕换开发团队和体系;支持全开放源码生成,快速适应当前主流框架,与当前主开发体系技术路线映射一致。

[水平实施]

平等参与-全员对截层进行分块即截块,平等、公开地参与软件开发全程,包括需求、设计、开发、测试和支持。

设计即开发-在开发的开始,就是截块的设计,设计就是开发,系统模型在开发过程中不间断完备和完善。

主体代码的水平配置、定义和定制实现-为实现业务截块的代码,从主体骨架开始,通过配置控制云计算容器层功能,通过定义固化框架通用功能,通过定义引入标准代码块或函数实现灵活功能,标准代码中可以注入各种规范控制。

内业务微编码-在主体代码基础上,通过微小的跟业务更紧密相关的编码,实现完整业务逻辑,微小才能控制标准和质量。

水平扩展复杂编码-微编码中达到一定复杂度,则转向定制向导、框架中可复用重构(构件),容器中可可复用构件的横向方式上水平扩展。

面向切面编程-复杂编码自然要求可复用和透明的特点,从而自驱动AOP编程。

业务功能水平重用-各种截块,承担独立的业务功能。可以支持各种独立、水平的重用。

全员并行-截层自动关联衍生各个层次和各种活动,从而打破串式开发过程,全部可以并行推进。

*切入式编程--不是结对了解和提议,而是随时从一个专业度切入,打开所有人的编码切面,提出专业化意见,甚至直接改变。

按需求自驱动开发、测试和跟踪

通过驱动,实现编码简单到粗暴的程度,无专业编程能力的人都可以参与,同时通过自动化测试体系增强软件质量和开发者信心,并能快速发现、跟踪、调试和处理运行时异常。

[自驱动开发]

截层驱动开发-基于需求,转化为截层,这一过程要具备自驱动能力,保证简单、直接、简洁。

数据模型驱动开发-从数据设计开始即可进行快速开发。

功能代码块向导-支持各种基本功能的向导封装,从而可以简单到粗暴驱动代码编写,并面向非编程人员推出更加高效、透明地无编码开发的定制模式。

功能水平实现辅助-支持各种典型复用功能的构件可以更容易引入和配置的辅助手段。

表现层驱动开发-需求以原型的形式直接表达,支持可见即可得的调整,甚至支持表现层从零开始的搭建能力和工具,此时表现层定义必须足够简单清晰而不能用太复杂方式,尤其前期表达时。

业务层驱动开发-如流程/表单驱动开发,支持多种无编码的可视化截层工具如流程、表单等驱动无代码开发。

跨文件重构工具--支持多种快速重构工具如重命名,无逢重构并自动保持不同版本运行代码。

[自驱动测试]

自动化用例录制-代码运行依托模板化进行输出,并对结果按照匹配规则自动进行检测,并允许手动确认结果,这个过程本身将自动形成典型测试用例,特定情形如代码变动、部署升级、系统重构时要求输入输出完全可以重演。

自动单元测试代码生成-在用例录制过程中,按照接口引用、功能复用、间接访问、内部函数以及标识疑点等自动生成单元测试代码(实例)。

按功能自动化测试-代码递交时进行按功能的功能测试和单元测试,发现bug驱动开发。

部署全自动化测试-产品部署时进行全部功能的功能测试和单元测试,发现缺陷驱动开发。

极限测试和自动缺陷发现工具-自动放大用例中的条件,乃至程序中的变量,进行极限测试,以自动发现缺陷;后者,针对各种逻辑不完备和异常,均可能发现。

跨框架(语言)自动化比对测试-可发现一些框架、语言层的问题。

[自驱动跟踪]

单一条件日志-支持单一行为、单一人员、单一输入参数的运行时日志分离。

按行为命令行调试-支持特定行为的运行时的命令行模式的调试跟踪。

*异常运行自动报警和容错-支持非稳定期运行时的自动报警、自动容错。

标准化提炼高复用的专业构件

按照标准建立构件集,指导开发过程中对可复用功能的充分解耦、广泛使用,提炼高度专业化但是又通用的构件,通过成熟的东西的高品质,真正保证实现卓越运营和有效的战略。

[标准]

以标准化的接口形式提供服务-不允许命令行等,不允许操作文件系统,不允许控制资源等!

标准错误、异常和日志记录能力-复用构件的日志、错误返回和异常处理机制的截层接入控管

基本接口可简单快速实现-通用构件的设计,要简单到为开发者把握了解和把握,从而确保可以快速实现

可快速更替-开发者可对通用构件进行松耦合调用,从而快速更替无缝更换,以彻底改造一些核心构件性能,甚至吸收更多的其他优异构件来替换,完成关键能力的飞升

保持异构能力-因为标准接口,同时可快速替换,就松耦合模式,确保异构耦合...

[构件集]

建立常用处理方法的构件集-工具集

建立框架规范对应的构件集

建立云计算容器中的构件集-构件支持云计算容器即可以独立挂载到云计算层提供独立分离、前置处理和可检测服务==云计算层次的标准(如过滤拦截截面)等高模式外的云计算代理及服务等全面彻底解耦,是对传统框架的一种集中云计算解耦区,使得各层充分解耦,适应云计算特点,从而确保开放包容!

建立快速驱动开发的构件集-为非普通业务逻辑代码块建立通用化路线

[提炼]

"微代码"开发驱动构件重构-复用构件的任何变化将驱动所有参与者的交流和反馈

迭代路线跟当前所属系统保持同步

累积叠加跨项目的单元测试代码

跨项目追踪的复用重构协同-从简单和完备的持续重构-提升代码质量,驱动重用重构,重构本身处理过程的推进,需要及如何促进代码重构?根据QOS率驱动重构!

多版本容错-构件的改变容易引起根本问题看,所以保持容错!

跨语言工具包调用容器-跨语言包--可选多种语言工具包,支持随需而变的整合和对接...,所有流行跨语言工具包无缝使

推进开放独立的云运行容器

云运行容器作为一张重要构件,设计简洁,确保快速起步,稳定、自主和独立的推进其向云计算支撑能力的靠拢。

落实运行时云服务支持

云服务能力从一开始的在线连续即进行了建立,这种能力必须进一步对客户标准化,并按需落实、依用收费。

云开发的效果和优势

建立以用户体验和产品质量为中心的团队,极限迭代,缔造新型的软件交付模式:连续协作促进产品用户体验-->不能连续无缝进行产品代码质量交流反馈--产品体验和品质不能开放式交流反馈监管--连续在线协作推进沟通交流和管理;截层开发进一步作为开发模式的核心是一种创新,保证了质量、极限,进一步保证了服务就是开发的交付;

传统开发对开发人员和团队规模有要求,不能真正做到无缝的极限迭代--简单粗暴页元驱动开发!-全面提升其产能;高度重视云服务的新型交付模式,不但反过来促进产品本身的进化,更重要的是创造产品本身的连续商业价值;

加强规范和标准的统一,减少轮子的重复制造,确保云计算的卓越品质:自动垂直堆叠加强框架规范,而面向截层开发编码标准控制;统一了很多其他层和本层常用功能的轮子,同时通过复用性的驱动机制,大大减少重复制造轮子;质量保证...同时对可复用的地方经常动易导致变乱而质量风险,使得软件质量存在累积叠加的可控性隐患,各种通用技术技巧全靠重复手动而无法标准引用;按云计算的要求来解耦,复用带来的卓越的云计算的品质保证,降低风险;

避免重复工作,快速提升,专注于核心价值的贡献:提炼原有价值,避免沟通反馈的消耗而只用关注业务的开发;

统一在线开发,自动全程跟踪,建立云软件全生命周期监管模型。

云开发的特点

有创新的践行截层水平实施和自动垂直堆叠的开发理念:要能超越传统的一切都是对象,提出一种新型软件构建的基础理念,从而大大简化传统软件的开发;

有典型的简单到粗暴的驱动式开发模型和工具:整个开发过程,必须有各种的工具支持,能做到无编码开发,且其中的概念不能太多太专业;

具备独立云计算能力的运行时容器:云开发的前置条件就是同时能提供默认的云服务框架和环境,能迅速把上述开发成果转化成云软件、云应用和云服务;

提供了典型的专业构件集:常规软件中包含的一些专业核心软件技术,如全文检索、自然语言、统一用户等,必须变成专业的SaaS,供开发者快速整合;

开放兼容传统开发过程和技术积累:既然是开发,除了不懂编码的人可控外,更应该让有编码能力人感到强大、灵活和可复用,从而要求云开发过程其可兼容传统编程语言;要有充分的开放性,作为开发方式,当然能够看生成全部开发的源码,可以选择各种框架甚至自己定义的框架,同时还能够与各种开放框架耦合;

从在线开发开始通过连续交互驱动开发:驱动模式的开发。

相关报道

2012百度世界大会今日召开,百度CEO李彦宏演讲时表示,云端支持将是移动互联网的下一个焦点。应用开发经过三次变迁,从自开发时代、平台开放时代发展到云开发时代。

参考资料

1.李彦宏:开发者进入云开发时代·中国经济网

目录[+]