圖形圖畫是最好的溝通方式,uml就是做這種方式的,各種各樣的圖形。
軟體工程學的研究
用工程學的方法進行軟體的開發與維護,並對軟體的生產過程進行工程化的管理
軟體工程的內容
針對軟體生命週期的全過程機器每個具體階段的工程方法、技術細則、文件規範、技術支援、管理制度、人員組織以及質量保證體系等。每個軟體開發者必須按工程的統一要求形式,不能隨意的自由發揮。每個開發階段都要產生健全的、符合工程規範的文件。軟體產品是這些文件的總和,而不僅僅是程式。
軟體工程的三要素
1、方法:完成軟體開發的各項任務的家屬方法、為軟體開發提供「如何做」的技術
2、工具:為原型方法而提供的自動或半自動的軟體的工程的支撐環境
3、過程:為了獲得高質量的軟體所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟,如何將軟體工程方法與軟體工具相結合,合理、及時地進行軟體開發。
我們在專案中採用的方法、工具、過程
方法:物件導向方法
工具:ea
過程:基於原型的增量迭代軟體
軟體的生命週期:
一、尋找商機
1:產品(沒有需求明確方,我們自己拿出東西投入到市場中)
2:專案(專門為客戶定製的)
二、可行性分析
1:這東西能不能做,法律允不允許
三、需求調研
系統分析師 ui工程師 測試人員(將所有需求量化,不能有模糊的東西) ——經過這三個過程就成文——需求分析說明書:介面
1:搞清楚使用者要什麼東西,定目標——有哪些功能需求和非功能需求,用某種方法和工具構軟體系統模型,並編寫軟體需求規格說明書。
四、介面設計
1.概要設計:我整個程式的結構,——架構師(專案經理)——產生概要設計書
2.詳細設計:設計在專案中遇到各種各樣的實體——專案經理(組長、資深老程式設計師參與進來)
3.資料庫設計:有專員設計(專案經理或者dba)
五、開發階段
根據詳細設計的文件進行開發(程式設計師或測試員)
六、測試階段
效能測試、壓力測試、使用者環境測試、
七、使用者培訓
教會使用者使用,遇到問題怎麼辦,
八、試執行,驗收
九、系統維護抽象類圖,類名和抽象方法用斜體表示。
復用與分離,站在設計上的角度叫做:耦合度和內聚度 內聚:在你自己的事情就自己做,不要把這東西牽扯太多 耦合:好些類好些方法合作,耦合度要低內聚度要高。
如何衡量軟體設計的質量
1.滿足軟體的功能要求 2.滿足要求的並不一定是好的設計
好的設計
1.可讀性:軟體的誰及文件是否輕易被其他程式設計師理解。解讀性差的設計會給大型軟體的開發和維護過程帶來嚴重的危害
2.可復用性:軟體系統的架構、類、元件等單元能否很容易被本專案的其他部分或者其他專案復用。
3.可擴充套件性:軟體面對需求變化時,功能或效能擴充套件的難易程度。
4.可維護性:軟體維護(主要是值軟體錯誤的修改、遺漏功能的新增等)的難易程度。
1.內聚度:
定義:表示乙個應用程式的單個單元所負責的任務數量和多樣性。內聚單個類或者單個方法單元相關
好得軟體設計應該做到高內聚:
如果乙個系統單元只負責一件事情,就說明這個系統單元有很高的內聚度;如果乙個系統單元負責了很多不相關的事情,則說明這個系統的單元是內聚度很低。
內聚度的簡單判斷方法
如果乙個方法可以用簡單的「動詞+名詞」的形式來命名
2.耦合度
耦合度表示類之間關係的緊密程度。
定義:所有的物件都應該有單一的職責,它提供的所有服務也都僅圍繞著這個職責。
換句話說就是:乙個類而言,應該僅有乙個引起它變化的原因,永遠不要讓乙個類存在多個改變的理由
好得設計不是用你的**寫的多還是少來判斷好壞,沒有乙個設計是為了減少你的**量,好得設計自然而然
開閉原則是指乙個如啊你按實體應該對擴充套件開放,對修改關閉
遵循開閉原則設計出來的模組具有兩個基本特徵:
遵循這個原則可以帶來靈活性、可重用性和可維護性。
1.對於擴充套件是開放的:模組的行為可以擴充套件,當應用的需求改變時,可以對模組進行擴充套件,以滿足新的需求
2.對於更改是封閉的:對於模組行為的擴充套件時,不必改動模組的源**或二進位製碼。
配置檔案的出現就是為了開閉原則
在專案中判斷是否該做繼承的原則。
定義:在乙個軟體系統中,子類應該能夠完全替換任父類能夠出現的地方,並且經過替換後,不會讓呼叫父類的程式從行為上有任何改變
業務的分層的時候低層設計介面或者抽象類與高層進行繫結。遵循的是依賴倒轉原則,而不是介面隔離原則。高層應該繫結底層的
依賴倒轉原則是指將兩個模組之間的依賴關係倒置為依賴抽象類或介面。具有兩層含義:
1.高層模組不應該依賴於底層沒模組,二者都應該依賴於抽象;
2.抽象不應該依賴於細節,細節應該依賴於抽象。
盡量在設計中盡量使用組合/聚合來達到復用的目的,而不是使用繼承來達到目的。
在實際運用中盡量別用繼承,除非真的滿足黎克特制替換,和(is a)關係。
組合/聚合的好處:
1.新物件訪問成分物件的唯一方法是通過成分物件的介面
2.這種物件的復用是黑箱復用,因為成分物件的內部實現細節對於新的物件是看不見的。
3.這種復用所用的依賴更少。
4.新物件可以在執行時候動態的引用於成分物件型別相同的物件。
繼承復用的優點:
1.新的實現比較容易,因為超類的大部功能可以通過繼承關係自動進入子類。
2.修改或者擴充套件繼承而來的實現比較容易。
繼承復用的缺點:
1.繼承服用破壞包裝,將超類的實現細節暴露給子類
盡量少的定義大介面,多的定義小介面
迪公尺特法則,又稱為「最少知識原則」,它的定義為:乙個軟體實體應當盡可能少的與其他實體發生相互作用。
一.設計模式
微觀:針對某一具體問題,或是某一具體場景。
全球公認的設計模式23種,又分為3個大類:
1、建立模式(產生物件):建立某種特殊物件,用一種特殊的方式產生物件。
——單列模式(考的最多)singleto:
1.應用場景——當需要設計一種特殊類,能且只能產生乙個物件的時候。
2.解決方案(**)——3.解決方案(多種方案對比優劣)
——工廠模式(以後用的最多)factory:
將生產物件的類與使用物件的類進行分離。
——原型模式—prototype
定義:根據乙個已有的物件,產生乙個一模一樣的物件。——引出第二個標記介面:
1.呼叫(轉殖clone)方法的實現被我們成為淺轉殖。
2.4中產生物件的方式:【new】 【反射】 【反序列化】 【轉殖】
結構模式:裝飾器模式(管道的對接就是裝飾器模式)。介面卡模式(有可能會被考察)
行為模式:讓一些類具有特有的行為——命令模式。——觀察者模式(**級別)
二.架構模式
巨集觀:比如三層架構(業務成——持久層),主要針對工程中的類與介面的關係進行專案搭建與設計。
java物件導向設計原則
軟體開發的乙個不變真理 不變的是變化 1.把會變化的部分取出來並 封裝 起來,好讓其他部分不受影響。封裝變化 2.針對介面程式設計 真正的意思是 針對超型別 程式設計 而不是針對實現程式設計。針對實現程式設計 dog d new dog d.bark 宣告變數 d 為 dog的型別,是animail...
物件導向設計原則 java設計模式(一)
單一職責原則 開閉原則 黎克特制替換原則 依賴倒轉原則 介面隔離原則 合成復用原則 迪公尺特法則 確保可復用性。實現設計方案或者源 的復用。乙個類的職責越多,被復用的可能性越小。當其中乙個職責變化時,可能會影響到其他職責的運作。因此需要職責分離。重構版本 拆分為3個類。基類可以設計為抽象類 介面,增...
JAVA 物件導向
this關鍵字只能在方法內部使用,表示 呼叫方法的那個物件 的引用。this 用於建構函式之間進行相互呼叫。語句只能定義在建構函式的第一行。static 靜態 使用注意事項 1.靜態方法只能訪問靜態成員。非靜態方法可以訪問靜態成員。2.靜態方法中不可以定義this,super關鍵字。因為靜態優先於物...