可以分成build-和run-time、moment和period、code和component、elements、relations、models這些角度
這裡面build-time,moment,code-level角度上:有**、由**構成的乙個ast樹和uml的類圖
在build-time,period,code-level這個角度:**在每個時期的改變
build-time,moment,component-level這個角度:我們在編譯器目錄裡面能見到的東西各種檔案,各種庫,庫的鏈結和靜態的鏈結,uml元件圖
build-time,period,component-level這個角度:各個版本,比如我們在git中提交的版本
run-time,moment,code-level這個角度:code snapshot這個圖,記憶體佔比
run-time,period,code-level這個角度:uml的序列圖、檔案在編譯的時候的路徑
run-time,moment,component-level這個角度:uml的部署關係圖
run-time,period,component-level這個角度:事件日誌記錄
從無到code:programming / coding和review, static analysis/checking(寫**的過程)
從code到component:design和build: compile, static link, package, install, clean(這裡需要用adt和oop的知識)
從build-time到run-time:install / deploy和debug, unit/integration testing(測試)
從moment到period:refactoring、version control和loading, dynamic linking, interpreting, execution (dumping, profiling, logging) (利用一些版本控制工具來幫助我們更好的開發)
內部質量因素:寫**的人關心的
外部質量因素:使用這個軟體的人關心的
(外部質量取決於內部質量)再怎麼樣,最基本的是**跑得動啊!!
3.1外部質量(最重要的是折中!!!)
正確性(最重要!!!):對正常的輸入產生正確的輸出(嚴格符合規約中定義的行為
健壯性(魯棒性):能應對異常輸入(規約外的情形也要考慮)
可擴充套件性:當規約更改的時候能不能很容易的修改(應對需求的變化)
可復用性:一次開發多次使用
相容性:不同軟體之間容易整合
效能(得有正確性作支撐才有意義)
可移植性:不同技術環境之間
方便使用:
功能(別太多,會占用磁碟空間而且複雜)
及時性(得能在deadline之前搞完啊)
其他:可驗證性,完整性,可修復性,經濟性
3.2內部質量
可讀性、清晰、**少等
4.1測試(測試策略也得寫啊)
只能證明是對的,但是不能證明沒有錯誤!!
測試是為了證明有錯而進行的
好的測試的標準:能夠發現錯誤;不冗餘;有最佳特性;不要太複雜也不能太簡單
測試的層次:
靜態測試(幹看);動態測試(執行然後整點引數試試)
測試(看有沒有錯);除錯(改錯)
黑盒測試(按照規約測試);白盒測試(在**層次上測試)
黑盒測試:就是在規約中寫測試,然後測試spec跟program的交集
白盒測試:按照程式的思路寫測試,然後測試spec和程式的交集
4.2測試優先的程式設計
先寫spec(規約),然後寫測試用例,然後寫**
4.3選擇測試用例
等價類劃分!!!(要包括邊界值)
例子:n是正奇數:
正數:>0、<0、0
奇數:奇數、偶數
奇數隱含著整數:整數、非整數
傳統軟體的程式設計模型:
1.瀑布模型:
線性推進、階段劃分清楚、整體推進、無迭代、管理簡單、無法適應需求、增加/變化
2.增量模型:
線性推進、增量式(多個瀑布的序列)、無迭代、比較容易適應需求的增加
3.v字模型:測試完了重新程式設計
4:原型模型:
開發出來之後由使用者試用/評審,發現問題反饋給開發者,開發者修改原有的實現,繼續交給使用者評審。
5.螺旋模型:
多輪迭代基本遵循瀑布模式,每輪迭代有明確的目標,遵循「原型」過程,進行嚴格的風險分析,方可進入下一輪迭代
續接下文:
軟體構造感想1
對軟體來說,雖然它是一系列的二進位制 但軟體來說它有多個質量目標,即可以從多個維度上去看的這個軟體,並且不同的質量目標可能就對應的是不同的維度。軟體不同質量目標,那麼通過適當的方式或模型去描述。雖然我們從不同的維度上去看這個軟體但是我們看的是同一軟體,所以說這些維度之間肯定是有相關性的,即軟體對應的...
1 軟體構造 概述
電腦程式是為解決某個特定問題,而用適合計算機處理的程式語言編寫的語句序列 程式 資料結構 演算法 軟體 程式 資料 文件 所以軟體是三者的總和,是能都成功執行的程式,加能使程式正常執行所需要的資料,加描述軟體開發過程及其管理軟體的使用及其操作的有關文件。系統軟體 windows 應用軟體 qq 支撐...
軟體構造筆記1
第一章 第一章的重點是軟體構造的多維檢視,總共有三個維度 所以這三個維度可以劃分為八種型別 1 build time moment code level 是基於詞彙的半結構化源 半結構化是指近乎自然語言的風格 遵循特定的程式設計語法,前者方便程式設計師,後者方便編譯器。語法層面指面向語法的程式結構,...