軟體構造之「構造」(construction)漫談

2021-09-11 09:06:03 字數 1715 閱讀 5725

[ 一 ] 軟體培育

1. 乙個有趣的隱喻。

軟體開發人員每次設計系統的一小部分、寫出一段**、做一點測試,並將成果一點點新增到整個系統中。人們逐漸為這個「每次做一點」的主意找到了恰當的隱喻——growing(培育)。

2. 要養殖牡蠣嗎?

牡蠣製造珍珠的過程逐漸地新增微量的碳酸鈣。我們可以用生長這個詞描述這個過程。而同樣的,在開發軟體的過程中,我們要學會如何一次為軟體系統增加乙個小部分。這就是「系統生長」。與之相關的詞彙有「迭代的(iterative)」、「自適應的(adaptive)」以及「演進的(evolutionary)」。這是在描述一種以增量方式進行設計、編譯和測試的軟體開發概念。

[ 二 ] 軟體構建

構建意味著什麼?

構建就暗示了軟體開發不是一蹴而就的,而是存在著多個階段滴!

具體階段留待以後分解,現在先略略略。。。

作為乙個有良心的程式猿(軟體開發人員),我們的構造是需要質量滴!

那至少需要滿足什麼要求呢?可理解性、可維護性、可復用性、健壯性、時空效能;

如果在乙個專案的生命週期的前、中、後期都強調質量,那麼乙個高質量的計畫、高效的實踐以及系統測試是必不可少的。

[ 三 ] 前期準備

你有wimp症候群嗎?

*why isn』t mary programing?(wimp)或者why isn』t sam coding anything?(wisca)*為什麼sam不在寫**?很多人控制不住自己寫**的慾望,於是果斷的犧牲了前期準備。。。

前期準備什麼

[ 四 ] 需求變更怎麼辦?

三十六計走為上,放棄這個專案怎麼樣?或者使用能適應變更的開發方法。比如演進原型法,利用分階段交付系統的方法不斷的從使用者獲得反饋。

[ 五 ] 構造的典型組成部分

程式組織

明確定義各個構造塊的責任。每個構造塊應該負責某乙個區域的事情,並且對其他構造塊負責的區域知道的越少越好。同時應該明確定義每個構造塊的通訊規則。對於每個構造塊,架構應該描述他能直接使用哪些構造塊,能間接使用哪些構造塊,不能適用哪些構造塊。

主要的類

架構應該詳細定義所用的主要類。它應該指出每個主要的類的責任,以及該類如何與其他類互動。圖應該包含對類的繼承體系、狀態轉換、物件持久化等的描述。

安全性實現設計層面和**層面的安全性的方法。建立威脅模型。

錯誤處理

變更策略

在開發過程中產品很可能發生變化。這些變更來自不穩定的資料型別和檔案格式、功能需求的變更、新的功能特性等等。這些變更更可能是計畫增加新的功能,也可能是沒有新增到系統的第乙個版本中的功能。因此軟體架構是面臨的乙個主要挑戰是,讓架構做夠靈活,能夠適應可能出現的變化。

架構應當清楚的描述處理變更的策略。架構應該列出已經考慮過的有可能會有所增強的功能,並說明「最優可能增強的功能同樣是最容易實現的」。

以下是《**大全》中推薦的書籍:

[ 六 ] multi-dimensional software views

軟體構造課程

課程目標 在高階語言程式設計的基礎上,認識軟體構造的質量標準與目標,學習軟體 構造的基本過程,從而具備面向質量目標的複雜軟體構造方法與能力 深入學習抽象資料型別 adt 與物件導向程式設計 oop 初步掌握面向關鍵質量目標 可理解性 可維護性 可復用性 健壯性 時 空效能 的軟體構造基本技術 了解軟...

軟體構造(一)

明顯感覺到實驗一次比一次難。本以為在編寫實驗二的時候就已經是物件導向程式設計了。編寫完p3後覺得自己已經可以完成許多任務了。結果又學了兩節課之後發現,p3編寫的可復用性很差,並不是通過介面之類來實現復用,而是只能完成圍棋和西洋棋兩種棋類遊戲。當然,這和之前上課沒有講到也有一定關係。這次實驗布置出來之...

軟體構造(四)

實驗三的標題是 reusability and maintainability oriented software construction,即面向可復用性和可維護性的軟體構造。這裡就向物件導向程式設計的較為深入的階段了。我們學習了繼承委派關係,以及設計模式,以實現可維護可復用程式設計。實驗主要內容...