軟體構造5 月總結1

2021-10-04 14:44:00 字數 2576 閱讀 4143

可以分成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 是基於詞彙的半結構化源 半結構化是指近乎自然語言的風格 遵循特定的程式設計語法,前者方便程式設計師,後者方便編譯器。語法層面指面向語法的程式結構,...