软件交付过程的思考与总结
本文是在閱讀《軟件交付通識》一書的基礎上,結合自己的工作實踐整理出的讀書工作筆記。可能對于初入行的讀者并不友好,歡迎提出各種改進意見。
《軟件交付通識 》/ 董越著? 電子工業出版社,2021.10
軟件項目開發的全過程是一個很大的范疇,從確定需求,到編碼設計,到集成發布,到運維、運營、設計方方面面,而本文所要討論的內容僅僅限于軟件交付部分。
首先,此處所討論的軟件交付過程(Software Delievery Process)指得是站在交付的角度和思維方式下去看待整個軟件項目開發的全過程。也就是說主要指編碼、集成、測試、發布四個過程中的后三個過程,但本文所指軟件交付并不完全按照項目開發階段時間劃分,如果因為交付遇到問題而產生的編碼工作也可以看做是本文所討論的問題。
軟件項目追求
軟件開發生命周期所有相關活動大致分為兩部分內容,需求分析和需求實現,核心目標是追求業務成功。
需求分析對應著軟件定義側,主要目的在于制定正確的戰略方向,抓住市場機會,最后落實到軟件產品設計中。
需求實現對應著軟件的實現側,目的在于軟件需求的落地交付。主要包括架構設計、編程實現、軟件交付、運維甚至運營等。
MVP(Minimum Viable Product 最小可行性產品):滿足定義側和實現側需求的小步快跑要實現的最小單位項目。
小步快跑的重要性:從定義側和實現側協作的角度看,定義側應該不斷的定義小的需求,交給實現側,然后實現側盡快實現和交付這些小的需求。這就是小步快跑
軟件實現側的追求
多:更高的產能
快:更快的響應速度
好:適當的質量。這里所說的質量,是指用戶能夠感受到的軟件服務質量,所以也包括穩定性、可靠性、安全性等。
省:合理的成本
軟件交付過程追求的目標
關鍵是快,快點達到業務所需質量實現交付。
軟件工程管理與實踐探索
軟件危機與軟件工程
????????軟件危機誕生于1970年左右,危機主要表現為面對越來越復雜的軟件項目,開發進度難以預測,開發成本難以控制,質量無法保證等。
????????軟件工程是指軟件的工程化,即把其他領域和行業的工程化經驗借鑒過來,以系統性的、規范化的、可定量的工程化方法來維護和開發軟件。
軟件工程思想
軟件工程思想有以下7條基本原則:
敏捷理念與實踐
????????今天,我們處在VUCA(vuca是volatility(易變性),uncertainty(不確定性),complexity(復雜性),ambiguity(模糊性)的縮寫)時代。與傳統工程追求資源效率的思維方式不同,VUCA時代往往更重要的是流動效率。因此軟件工程的思想已經不能完全滿足今天的時代需求,由此誕生了敏捷開發的思想。
敏捷開發的價值觀
- 個體和互動高于流程和工具
- 工作的軟件高于詳盡的文檔
- 客戶合作高于合同談判
- 響應變化高于遵循計劃
敏捷開發的核心思路
敏捷開發的核心思路就是“敏捷軟件開發宣言”中遵循的12條原則
- 我們最重要的目標,是通過持續不斷地及早交付有價值的軟件使客戶滿意
- 欣然面對需求變化,即使在開發后期也一樣。為了客戶的競爭優勢,敏捷過程掌控變化。
- 經常的交付可工作的軟件,相隔幾星期或者一個月,傾向于采取較短的周期。
- 業務人員和開發人員必須相互合作,項目中的每一天都不例外。
- 激發個體斗志,以他們為核心大家項目。提供所需的環境和支援,輔以信任,從而達成目標。
- 不論團隊內外,傳遞信息效果最好、效率最高的方式是面對面的交談。
- 可工作的軟件是進度的首要度量標準。
- 敏捷過程倡導可持續開發。責任人、開發人員和用戶要能夠共同維持其步調穩定延續。
- 堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。
- 以簡潔為本,它是極力減少不必要工作量的藝術。
- 最好的架構、需求和設計出自自組織團隊。
- 團隊定期地反思如何提高成效,并依次調整自身的舉止表現。
????????總體來說,敏捷是在糾正軟件工程過于強調工程化的傾向。當然,如果把敏捷片面的理解為不要流程、不寫文檔、不做計劃,那就矯枉過正了。
敏捷開發的最佳實踐
在管理實踐中,接受度最高的是Scrum。
工程實踐中,接受度最高的是單元測試、持續集成。
對于XP極限編程、測試驅動開發等并未被廣泛采用。
精益開發
????????精益開發起源于豐田的精益制造思想,精益軟件開發的核心邏輯是,要想盡辦法盡快把產品方向選對,功能要真正能滿足用戶需求,防止跑偏造成浪費。為此,要把大的需求拆分成小的特性來試探,并且把小的特性在設計--開發--集成--發布這個過程中產生的各種浪費盡力消除,讓這個過程盡可能快,讓用戶盡快看到這個特性,盡快用起來這個特性,加快用戶反饋。“小步快跑”其實就在大體反映這個思想。
持續集成/交付/部署
做到持續集成的常見方法有版本控制、質量內建、自動化、過程可視化等。
持續部署是持續交付的極端情況,試將持續交付做到了極致。
DevOps
概念:
DevOps(Development和Operations的組合詞)是一種重視“軟件開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發布軟件能夠更加地快捷、頻繁和可靠。
目前DevOps還加入了QA和Security。
DevOps的三大原則:
- 基礎設施即代碼(Infrastructure as Code)
- 持續交付(Continuous Delivery)
- 協同工作(Culture of Collaboration)
DevOps三步工作法:
- 實現開發到運維的工作快速的從左向右流動。
- 在從右向左的每個階段中,應用持續、快速的工作反饋機制。
- 建立具有創意和高可信度的企業文化。
做好軟件交付的10個策略
做好軟件交付的10個策略可以分為以下幾部分來總結:
- 首先是組織結構、系統架構、和交付流程的總體策略,包括
- 細粒度、低耦合、可復用的架構
- 小批量持續流動的流程
- 運行綜合手段保證質量和安全
- 然后是針對具體事情如何做到方便、快捷,包括
- 自動化與自助化
- 加速各項活動
- 及時修復
- 接下來是一些保障補充性的內容,包括
- 完備記錄,充分展現
- 標準化
- 協調完成完整功能
- 最后是如何改進
- 基于量度的持續改進
了解幾個概念:
測試左移:盡量寫完代碼就測試
測試右移:跑到線上做測試
康威定律:你把組織結構做成什么樣,那么開發的軟件系統架構就會長成什么樣子。
總結
以上是生活随笔為你收集整理的软件交付过程的思考与总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于解决华硕TUF B360M-PLUS
- 下一篇: 三菱电梯维修故障服务器,电梯维保必备:三