雲開發

雲開發

網絡時代開發模式
傳統垂直堆疊的開發模式,在雲時代需要進行颠複和創新;連續在線、基于截層水平擴展、簡單到粗暴乃至松耦合複用構件的雲開發方式将能更好适應雲時代的開發特點。各種适合不同能力和定位的人員的自驅動開發模式,包括制作即開發-頁面制作、設計即開發-數據設計、頁面即開發-如頁元需求驅動、接口驅動開發、流程驅動開發、表單驅動開發、邏輯微編碼-簡單到粗暴編碼到構件提煉開發等。--先按雲架構進行設計并做快速産品雲試用模型,然後用内部框架進一步重構和優化...
    中文名:雲開發 外文名: 别名: 特點:水平擴展、低門檻準 基于:雲特性的在線 方式:開發方式是雲方式

背景和概述

傳統開發模式逐步引入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李彥宏演講時表示,雲端支持将是移動互聯網的下一個焦點。應用開發經過三次變遷,從自開發時代、平台開放時代發展到雲開發時代。

相關詞條

相關搜索

其它詞條