一個初學者的云開發心得
云,云計算,企業云,私有云,云盤,等等一個很高大上的技術范疇。
云開發是一種基于云特性的在線、水平擴展、低門檻準入和高解耦復用地進行編碼并產生云計算能力軟件的編程方式。
云開發包含兩個層面的云,首先是開發方式是云方式,要顛覆和突破傳統瀑布模型、敏捷開發、極限編程的個體離線、自下而上垂直堆疊、專業度高和復用度低的方式,并從云計算層面避免傳統反面的開發模式;其次是開發出來的軟件是云計算品質和能力,即具有水平擴展、分布式、冪等、高度可用性等云計算特點。
開發活動中的核心實踐及具體實踐
編輯
概述
傳統框架、編碼乃至極限編程是垂直堆疊,所謂的橫向機制基本只是一種嘗試(你必須知道如何進行代碼垂直堆疊哪怕攔截至少你得關注而云開發則無需知道也能加上),我們需要改變傳統開發的思想即把垂直堆疊解耦成水平擴展,為此提出三種創新實現方式為:
一種是增加運行容器,容器中可配置各種運行功能,這里通過增加云計算能力即云計算容器實現,該容器可進一步容納現有各種容器(如spring等),可以配置各種安全、權限、緩沖、防瀏覽器緩沖、變量初始化控制、外部接口如cmd或調用外程序的QOS、統一錯誤碼處理、統一日志處理、異常跳轉后控制等功能,從而把傳統垂直堆疊的功能引入完全解耦,實現水平配置式開發!(參見核心實踐四)
第二種就是自定義規范化框架,框架本身的產生可忽略垂直編碼,而其中可插入各種功能,這是對傳統垂直堆疊模式的抽象,即把層次按規范進行隱藏,使得編碼者無需關注,只用關注關鍵業務的代碼編寫?。▍⒁姾诵膶嵺`二)
第三種就是指定功能實現標準并通過各種手動如代碼向導加強標準的貫徹,實現特定靈活邏輯具體代碼規范,實現特定處理的全局工具包,都在這個范疇!(參見核心實踐三)
這三種方式離不開高度復用的構件(一種高度可復用充分松耦合可插拔的東西包括框架),且一旦復雜度超出已有范圍,將進一步驅動構件的產生、發展和成熟,推進卓越復用和有效戰略!(參見核心實踐五)
這種創新開發過程,由于聯動改變高頻度改變整體代碼,越是開始越必須在線進行,同樣在線的各種活動才能充分發揮其優勢!(參見核心實踐一和核心實踐六)
在線編碼無縫協作
提供一種在線開發和協作的環境,確保在線連續設計、開發、集成、測試、交付等開發動作,并讓客戶、產品、管理乃至更多的人無中斷體驗產品的全生命過程,從而得到最充分、及時的交流和反饋,自驅動極限迭代開發過程。
[開發]
在線開發-設計、編碼、調試、測試...等所有活動均在線進行,任何動作同時其他人在線提示。
集中代碼倉庫-上面開發的結果,將與標準版本服務器對接,從而進一步支持傳統開發活動。
按變化集成、部署和交付-任何開發和改變,只要遞交修改,即自動編輯、集成、部署和交付,但可不包括運行時。
[團隊]
虛擬團隊-開發團隊的各種角色均在云上參與,形成貫穿全部軟件生命周期的虛擬團隊,形式上不在一起,但無時、無地保持緊密溝通;不能限于技術團隊、不能限于會議形式,讓更多人利用非正式時間同等參與而驅動開發。?[3]
跨部門交互-除開發團隊外,產品部門、市場部門、銷售甚至客服部門,當然包括非IT管理者等,形成覆蓋非開發層面的成員,促進更大范圍的交互。?[3]
遠程客戶可視化體驗-不管是否在現場,也不管什么時候想,客戶均可遠程訪問任何階段的產品,并以可視化的方式體驗,促進客戶參與和需求挖掘。
[自動化]
*統一無縫協作空間-確保開發過程中的自動化信息公示、問題標注、交流反饋等能力,并提供開放可擴展的接口以對接其他專業化ALM(軟件全生命周期)工具。?[3]
反饋監管-任何問題提出和交流發起,通過監管確保有效、及時地反饋,從而驅動整個開發的連續進行。
自動化統計分析-可根據各種管理目標反復提升自動化水平,確??陀^和效率。
面向截層水平實施和按規范自動化堆疊
從一個業務驅動的截層開始,迅速自動化堆疊其他關聯層次和關聯活動對象,全員平等、并行的水平推進軟件系統的全生命周期,開發變成為一個不用費時效果最大的行為。
[規范標準]
統一層次和框架規范-面向截層統一規范品質管理的自動化模型,框架規范化,編碼標準化。
[截層模型]
面向單一業務-截層最大程度貼近業務邏輯本身的驅動,且只關注業務自身,從而將開發集中到產品和業務邏輯設計上;同時截層中每一個截塊只面向單一業務,減少截塊耦合帶來的復雜性,避免傳統業務控制可以集中到一個文件而帶來的失控。
垂直框架層次自聯動-基于截層的變化,實現關聯垂直堆疊層(如data、xml、dao、daomain、service、manager、action、...)的自動化生成、修改、清除等自動透明的聯動。
關聯軟件全生命周期活動-截層是軟件全過程活動的集中濃縮,圍繞截層,從需求驅動代碼的自動產生,到單元測試功能測試,到代碼檢驗、自動測試、QOS報告、設計文檔、進度監控-redmine、自動培訓、規范自檢、工作日報..,均能有效關聯,從而便于不同層次的并行協作和自動化模型。
脫離具體框架實現-支持極速的代碼、語種、框架的快速重構化,哪怕換開發團隊和體系;支持全開放源碼生成,快速適應當前主流框架,與當前主開發體系技術路線映射一致。
[水平實施]
平等參與-全員對截層進行分塊即截塊,平等、公開地參與軟件開發全程,包括需求、設計、開發、測試和支持。?[3]
設計即開發-在開發的開始,就是截塊的設計,設計就是開發,系統模型在開發過程中不間斷完備和完善。
主體代碼的水平配置、定義和定制實現-為實現業務截塊的代碼,從主體骨架開始,通過配置控制云計算容器層功能,通過定義固化框架通用功能,通過定義引入標準代碼塊或函數實現靈活功能,標準代碼中可以注入各種規范控制。
內業務微編碼-在主體代碼基礎上,通過微小的跟業務更緊密相關的編碼,實現完整業務邏輯,微小才能控制標準和質量。
水平擴展復雜編碼-微編碼中達到一定復雜度,則轉向定制向導、框架中可復用重構(構件),容器中可可復用構件的橫向方式上水平擴展。
面向切面編程-復雜編碼自然要求可復用和透明的特點,從而自驅動AOP編程。
業務功能水平重用-各種截塊,承擔獨立的業務功能??梢灾С指鞣N獨立、水平的重用。
全員并行-截層自動關聯衍生各個層次和各種活動,從而打破串式開發過程,全部可以并行推進。
*切入式編程--不是結對了解和提議,而是隨時從一個專業度切入,打開所有人的編碼切面,提出專業化意見,甚至直接改變。
按需求自驅動開發、測試和跟蹤
通過驅動,實現編碼簡單到粗暴的程度,無專業編程能力的人都可以參與,同時通過自動化測試體系增強軟件質量和開發者信心,并能快速發現、跟蹤、調試和處理運行時異常。
[自驅動開發]
截層驅動開發-基于需求,轉化為截層,這一過程要具備自驅動能力,保證簡單、直接、簡潔。
數據模型驅動開發-從數據設計開始即可進行快速開發。
功能代碼塊向導-支持各種基本功能的向導封裝,從而可以簡單到粗暴驅動代碼編寫,并面向非編程人員推出更加高效、透明地無編碼開發的定制模式。
功能水平實現輔助-支持各種典型復用功能的構件可以更容易引入和配置的輔助手段。
表現層驅動開發-需求以原型的形式直接表達,支持可見即可得的調整,甚至支持表現層從零開始的搭建能力和工具,此時表現層定義必須足夠簡單清晰而不能用太復雜方式,尤其前期表達時。
業務層驅動開發-如流程/表單驅動開發,支持多種無編碼的可視化截層工具如流程、表單等驅動無代碼開發。
跨文件重構工具--支持多種快速重構工具如重命名,無逢重構并自動保持不同版本運行代碼。
[自驅動測試]?[4]
自動化用例錄制-代碼運行依托模板化進行輸出,并對結果按照匹配規則自動進行檢測,并允許手動確認結果,這個過程本身將自動形成典型測試用例,特定情形如代碼變動、部署升級、系統重構時要求輸入輸出完全可以重演。
自動單元測試代碼生成-在用例錄制過程中,按照接口引用、功能復用、間接訪問、內部函數以及標識疑點等自動生成單元測試代碼(實例)。
按功能自動化測試-代碼遞交時進行按功能的功能測試和單元測試,發現bug驅動開發。
部署全自動化測試-產品部署時進行全部功能的功能測試和單元測試,發現缺陷驅動開發。
極限測試和自動缺陷發現工具-自動放大用例中的條件,乃至程序中的變量,進行極限測試,以自動發現缺陷;后者,針對各種邏輯不完備和異常,均可能發現。
跨框架(語言)自動化比對測試-可發現一些框架、語言層的問題。
[自驅動跟蹤]
單一條件日志-支持單一行為、單一人員、單一輸入參數的運行時日志分離。
按行為命令行調試-支持特定行為的運行時的命令行模式的調試跟蹤。
*異常運行自動報警和容錯-支持非穩定期運行時的自動報警、自動容錯。
標準化提煉高復用的專業構件
按照標準建立構件集,指導開發過程中對可復用功能的充分解耦、廣泛使用,提煉高度專業化但是又通用的構件,通過成熟的東西的高品質,真正保證實現卓越運營和有效的戰略。
[標準]
以標準化的接口形式提供服務-不允許命令行等,不允許操作文件系統,不允許控制資源等!
標準錯誤、異常和日志記錄能力-復用構件的日志、錯誤返回和異常處理機制的截層接入控管
基本接口可簡單快速實現-通用構件的設計,要簡單到為開發者把握了解和把握,從而確保可以快速實現
可快速更替-開發者可對通用構件進行松耦合調用,從而快速更替無縫更換,以徹底改造一些核心構件性能,甚至吸收更多的其他優異構件來替換,完成關鍵能力的飛升
保持異構能力-因為標準接口,同時可快速替換,就松耦合模式,確保異構耦合...
[構件集]
建立常用處理方法的構件集-工具集
建立框架規范對應的構件集
建立云計算容器中的構件集-構件支持云計算容器即可以獨立掛載到云計算層提供獨立分離、前置處理和可檢測服務==云計算層次的標準(如過濾攔截截面)等高模式外的云計算代理及服務等全面徹底解耦,是對傳統框架的一種集中云計算解耦區,使得各層充分解耦,適應云計算特點,從而確保開放包容!
建立快速驅動開發的構件集-為非普通業務邏輯代碼塊建立通用化路線
[提煉]?[5]
"微代碼"開發驅動構件重構-復用構件的任何變化將驅動所有參與者的交流和反饋
迭代路線跟當前所屬系統保持同步
累積疊加跨項目的單元測試代碼
跨項目追蹤的復用重構協同-從簡單和完備的持續重構-提升代碼質量,驅動重用重構,重構本身處理過程的推進,需要及如何促進代碼重構?根據QOS率驅動重構!
多版本容錯-構件的改變容易引起根本問題看,所以保持容錯!
跨語言工具包調用容器-跨語言包--可選多種語言工具包,支持隨需而變的整合和對接...,所有流行跨語言工具包無縫使
推進開放獨立的云運行容器
云運行容器作為一張重要構件,設計簡潔,確??焖倨鸩?,穩定、自主和獨立的推進其向云計算支撐能力的靠攏。
落實運行時云服務支持
云服務能力從一開始的在線連續即進行了建立,這種能力必須進一步對客戶標準化,并按需落實、依用收費。
云開發的活動和過程
在上述實踐下的開發由傳統各種串行活動集中到編碼活動中,其他環節通過自動化、驅動等方式弱化,從而使得開發過程變為從單一截層出發的并行。?[6]
活動
1.簡潔需求定義
概括場景,提出關鍵點設計等,明確路線圖;無需等待和反復論證,無需傳統詳細需求定義、頁面設計等細化需求。
2. 快速設計
選定框架(濃縮了規范和標準),明確截塊化和分工;避免傳統的詳細設計、解決方案和數據模型設計等,甚至完備的數據表定義、業務流定義,這些都將變成編碼開發的一部分,并自動產生各種設計文檔。
3. 自驅動的編碼
各種適合不同能力和定位的人員的自驅動開發模式,包括制作即開發-頁面制作、設計即開發-數據設計、頁面即開發-如頁元需求驅動、接口驅動開發、流程驅動開發、表單驅動開發、邏輯微編碼-簡單到粗暴編碼到構件提煉開發等。
4. 覆蓋式跟蹤調試
支持瀏覽器下調試和測試,支持在線代碼的在線命令行跟蹤,集中版本獲取可離線可視化跟蹤--以上均為代碼模式當然可以斷點運行跟蹤的調試和崩潰匯報模式,當然也支持瀏覽器監控模式,兼容傳統線下編程和調試,塊編碼提示能力很強。
5. 自動化測試
全自動透明化單元測試和功能測試(并行測試--性能測試--安全測試)。
6. 不中斷的集成、部署和交付
連續交付,云計算容器運行,并進行容錯處理--自動調度將實現負載正確的新線路,新回路不對將自動切向正確的運行版實現容錯。
7. 運行時云支持服務
進行云監控和云服務。
8. 連續交互體驗驅動極限迭代
無極交流和反饋,反復驅動重構==重構必須反復進行,但必須自動化驅動重構?我不想親自做那些冗余的事包括庫設計-html導入-邏輯塊=但能否構建功能測試QOS率并報警,我似乎也沒有更好的辦法監管這些代碼的品質并反復重構提升=只要單元測試日志等地方就將給出報告并引起關注,從而量化優化控制。
9. 云品質要求驅動重構
自驅動重構機制-并行解耦重構而進化。
過程
從截層出發;
并行開發-傳統受[模塊黑盒子+串行設計+垂直堆疊]的限制,云開發則把模塊內部都進行了橫向切割,大家全部以并行參與,全員平等并行設計;
靈活專業切入-替代原來的評審;
驅動模式-面向截層水平自動驅動,從而使得測試、重構等內部驅動力加大,更快向高質量產品演進;
無縫變革式飛躍-松耦合機制確保可替換,松耦防干擾,版本共存,自動容錯,定向版本,質量演進;
管理自動化-自動產生各種統計報表分析開發狀態的監控和管理。
云開發的效果和優勢
建立以用戶體驗和產品質量為中心的團隊,極限迭代,締造新型的軟件交付模式:連續協作促進產品用戶體驗-->不能連續無縫進行產品代碼質量交流反饋--產品體驗和品質不能開放式交流反饋監管--連續在線協作推進溝通交流和管理;截層開發進一步作為開發模式的核心是一種創新,保證了質量、極限,進一步保證了服務就是開發的交付;傳統開發對開發人員和團隊規模有要求,不能真正做到無縫的極限迭代--簡單粗暴頁元驅動開發!-全面提升其產能;高度重視云服務的新型交付模式,不但反過來促進產品本身的進化,更重要的是創造產品本身的連續商業價值;
加強規范和標準的統一,減少輪子的重復制造,確保云計算的卓越品質:自動垂直堆疊加強框架規范,而面向截層開發編碼標準控制;統一了很多其他層和本層常用功能的輪子,同時通過復用性的驅動機制,大大減少重復制造輪子;質量保證... 同時對可復用的地方經常動易導致變亂而質量風險,使得軟件質量存在累積疊加的可控性隱患,各種通用技術技巧全靠重復手動而無法標準引用;按云計算的要求來解耦,復用帶來的卓越的云計算的品質保證,降低風險;
避免重復工作,快速提升,專注于核心價值的貢獻:提煉原有價值,避免溝通反饋的消耗而只用關注業務的開發;
統一在線開發,自動全程跟蹤,建立云軟件全生命周期監管模型。
云開發的特點
的開發;
有典型的簡單到粗暴的驅動式開發模型和工具:整個開發過程,必須有各種的工具支持,能做到無編碼開發,且其中的概念不能太多太專業;
具備獨立云計算能力的運行時容器:云開發的前置條件就是同時能提供默認的云服務框架和環境,能迅速把上述開發成果轉化成云軟件、云應用和云服務;
提供了典型的專業構件集:常規軟件中包含的一些專業核心軟件技術,如全文檢索、自然語言、統一用戶等,必須變成專業的SaaS,供開發者快速整合;
開放兼容傳統開發過程和技術積累:既然是開發,除了不懂編碼的人可控外,更應該讓有編碼能力人感到強大、靈活和可復用,從而要求云開發過程其可兼容傳統編程語言;要有充分的開放性,作為開發方式,當然能夠看生成全部開發的源碼,可以選擇各種框架甚至自己定義的框架,同時還能夠與各種開放框架耦合;
從在線開發開始通過連續交互驅動開發:驅動模式的開發。
多種開發方式和云開發方式的區別比較
團隊規模要求
所有開發,都需要完整的團隊,從瀑布到極限,強調團隊小微化,使得更加靈活,而云開發首先創造了虛擬團隊和自動角色扮演...
成員門檻
直到極限,對成員的要求都是非常高的,只有云開發,首先實現了模型驅動的開發模式,確保真正的簡單!
編程和項目速度
迭代之后都強調在較短的開發周期提交軟件,但依次縮短,但由于項目周期制約太多因素,往往不好直接評估,但可以通過"簡單"的程度來判斷...
代碼規范和質量控制
敏捷和極限的規范和質量均依賴統一規范、代碼評審以及結對編程,在某種程度上提出了一些理念,但是否行動則不同團隊表現不一樣;而云開發通過截層開發,第一次實現了規范和質量的自動化。
產品體驗感
傳統無溝通,敏捷和極限也不鼓勵溝通,導致不牛叉無認可,而云開發第一次提倡無縫溝通、交流和反饋,...;從傳統到極限,產品和開發往往相對隊里,但逐漸強調引入客戶參與...而云運行第一次讓程序員只關于產品邏輯,第一次要求產品客戶角色必須提前參與...
對變化的適應
瀑布式的主要的問題是它的嚴格分級導致的自由度降低,項目早期即作出承諾導致對后期需求的變化難以調整,代價高昂。瀑布式方法在需求不明并且在項目進行過程中可能變化的情況下基本是不可行的。相對來講,敏捷方法則在幾周或者幾個月的時間內完成相對較小的功能,強調的是能將盡早將盡量小的可用的功能交付使用,并在整個項目周期中持續改善和增強。而對變化的適應應該是越來越強,極限提出“擁抱變化”,而云開發提出了“變化驅動驅動變化”!
運行品質
云開發第一次用云計算特點要求應用軟件的運行品質...
適用項目規模
傳統可適應可預見的大項目,而極限更多適應不可預見的普通項目,而云開發則可實現云規模的項目!
可實施性
傳統完全依賴文檔,敏捷等更多依賴觀念的貫徹,云開發第一次把理念和工具進行結合...,并全面兼容有緣的完全源碼、源碼共享、代碼可控、標準框架、SVN檢出、自動化文檔設計等傳統習慣!
可管理
第三方應用用各種語言是好事,但如何管理?也沒人思考!未來一定出上敘類似問題!
云計算 軟件開發云
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。