1.??? 23種設(shè)計模式
2.??? 代碼規(guī)范(OC與禪)
3.?? 標準
1. 正確性(Correctness) 系統(tǒng)滿足規(guī)格說明和用戶目標的程度,即在預定環(huán)境下能正確地完成預期功能的程度。 如軟件有沒有按照需求規(guī)格來完成,計算出的結(jié)果是否正確,計算結(jié)果是否精確。
2.健壯性/魯棒性(Robustness) ?? 健壯性是指在異常情況下如硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等軟件能夠正常運行的能 力。 健壯性有兩層含義:一是容錯能力,二是恢復能力。 容錯是指發(fā)生異常情況時系統(tǒng)不出錯誤的能力,對于應用于航空航天、武器、金融等領(lǐng)域的這類高風險 系統(tǒng),容錯設(shè)計非常重要。 而恢復則是指軟件發(fā)生錯誤后(不論死活)重新運行時,能否恢復到?jīng)]有發(fā)生錯誤前的狀態(tài)的能力。 例如:因輸入數(shù)據(jù)不正確,引起系統(tǒng)異常,這是容錯能力不高引起的健壯性問題;操作系統(tǒng)死機了,重 啟后能夠正常使用,說明具有一定恢復能力,具有一定的健壯性;數(shù)據(jù)庫發(fā)生故障后,再次啟動時一般能 夠恢復到正常的狀態(tài),恢復能力比較好。
3. 可靠性(Reliability) 軟件系統(tǒng)在一定的時間內(nèi)無故障運行的能力。 可靠性是一個與時間相關(guān)的屬性,指的是在一定環(huán)境下,在一定的時間段內(nèi),程序不出現(xiàn)故障的概率, 因此是一個統(tǒng)計量,通常用平均無故障時間(MTTF, mean-time to fault)來衡量。 可靠性不同于正確性和健壯性,軟件可靠性問題通常是由于設(shè)計中沒有料到的異常和測試中沒有暴露的 代碼缺陷引起的。 例:由于某個地方數(shù)據(jù)庫連接沒有釋放,在長時間運行的時候,出現(xiàn)活動的數(shù)據(jù)庫連接數(shù)過多,造成系 健壯性/魯棒性(Robustness) 健壯性是指在異常情況下(如硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等),軟件能夠正常運行的能統(tǒng)越來越慢,甚至系統(tǒng)停止服務。?
4. 性能(Performance) 性能是指軟件及時提供相應服務的能力。 具體而言, 性能包括速度、 吞吐量和持續(xù)高速性三方面的要求: 速度往往通過平均響應時間來度量; 吞吐量通過單位時間處理的交易數(shù)來度量; 持續(xù)高速性是指保持高度處理速度的能力。 效率(Efficiency)指軟件對CPU 處理能力和存儲能力這兩大類計算機資源的使用效率。效率和性能反 映了同一問題的“表”、“里”,性能為“表”,效率為“里”。 如系統(tǒng)運算一個報表,需要很長時間,這就是性能問題。
?5.安全性(Security) 指軟件同時兼顧向合法用戶提供服務,以及阻止非授權(quán)使用軟件及資源的能力。 安全性既屬于技術(shù)問題又屬于管理問題。一般地,如果黑客為非法入侵花費的代價(考慮時間、費用、 風險等多種因素)高于得到的好處,那么這樣的系統(tǒng)就可以認為是安全的。 例:有人可以訪問非授權(quán)的資源,這就是安全性問題。
?6.易用性(Usability) 易用性是指用戶使用軟件的容易程度。 軟件的易用性要讓用戶來評價。 例:對于一般用戶而言,Windows 的易用性比Linux 的高。
7. 可用性(Availability) 指的是產(chǎn)品對用戶來說有效、易學、高效、好記、少錯和令人滿意的程度,即用戶能否用軟件完成他的 任務,效率如何,主觀感受怎樣。ISO 9241-11 國際標準對可用性作了如下定義:產(chǎn)品在特定使用環(huán)境下為特定用戶用于特定用途時所具 有的有效性(effectiveness)、效率(efficiency)和用戶主觀滿意度(satisfaction)。其中: 有效性:用戶完成特定任務和達到特定目標時所具有的正確和完整程度; 效率:用戶完成任務的正確和完整程度與所使用資源(如時間)之間的比率; 滿意度:用戶在使用產(chǎn)品過程中所感受到的主觀滿意和接受程度。
?8.互操作性(Interoperability) 指本軟件與其他系統(tǒng)交換數(shù)據(jù)和相互調(diào)用服務用以協(xié)同運作的難易程度。 例:利用 Web
Service 增加軟件的互操作性。?
9. 易理解性(Understandability) 理解和使用系統(tǒng)的難易程度。
?10.可擴展性(Extensibility)/靈活性(Flexibility)/適應性(Adaptability)/可伸縮性(Scalability) 反映軟件適應“變化”的能力。調(diào)整、修改或改進正在運行的軟件系統(tǒng)以適應新需求、變化了的需求 的難易程度。 例:如報銷系統(tǒng)原來不需要總經(jīng)理審批,現(xiàn)在要改為總經(jīng)理審批,可擴展性強的系統(tǒng)不需要作太多 調(diào)整;如用戶和數(shù)據(jù)量增加時,通過增加服務器來提高系統(tǒng)性能,這樣可伸縮性比較強。
?11.可重用性(Resuability) 重用軟件或其中一部分的難易程度。
?12.可測試性(Testability) 對軟件測試以證明其滿足需求規(guī)約的難易程度。?
13. 可維護性(Maintainability) 為修改 Bug、增加功能、提高質(zhì)量而診斷并修改軟件的難易程度。
?14.可移植性(Portability) 軟件不經(jīng)修改或稍加修改就可以運行于不同軟硬件環(huán)境的難易程度,主要體現(xiàn)為代碼的可移植性。
?? 4.原則(六大原則)
單一職責原則:實現(xiàn)類要職責單一;
里氏替換原則:不要破壞繼承體系;
依賴倒置原則:面向接口編程;
接口隔離原則:設(shè)計接口的時候要精簡單一;
迪米特法則:降低耦合;
?5.具體實施
??? 前期以代碼抽查為主,后期加入機器檢測(搭建基于Sonar的iOS代碼質(zhì)量檢測系統(tǒng))。