軟件設(shè)計方法
????????軟件設(shè)計即根據(jù)軟件需求,產(chǎn)生一個軟件內(nèi)部結(jié)構(gòu)的描述,并將其作為軟件構(gòu)造的基礎(chǔ),通過軟件設(shè)計,描述出軟件架構(gòu)及相關(guān)組件之間的接口,然后進一步詳細地描述組件,以便能構(gòu)造出這些組件。
?????(1)軟件設(shè)計分類:
????????①從工程管理的角度來看,軟件設(shè)計分:
????????概要設(shè)計,將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。
????????詳細設(shè)計,(即過程設(shè)計)通過對系統(tǒng)結(jié)構(gòu)進行細化,得到軟件的詳細數(shù)據(jù)結(jié)構(gòu)和算法。
? ? ????②從技術(shù)角度來看,軟件設(shè)計包括:
????????數(shù)據(jù)設(shè)計:將實體關(guān)系圖中描述的對象和關(guān)系,以及數(shù)據(jù)字典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。
????????體系結(jié)構(gòu)設(shè)計:劃分軟件系統(tǒng)模塊及模塊之間的關(guān)系。
? ? ????接口設(shè)計:根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。
? ? ????過程設(shè)計(即詳細設(shè)計):把結(jié)構(gòu)成份(模塊)轉(zhuǎn)換成軟件的過程性描述
??????(2)軟件設(shè)計方法
? ? ????①結(jié)構(gòu)化設(shè)計(SD)
? ? ????SD是一種面向數(shù)據(jù)流的設(shè)計方法,其基本思想是將軟件設(shè)計成由相對獨立且具有單一功能的模塊組成的結(jié)構(gòu),分為概要設(shè)計(又稱總體設(shè)計)和詳細設(shè)計兩種。
? ? ????SD設(shè)計原則:高內(nèi)聚、低耦合。
? ? ????②面向?qū)ο笤O(shè)計(OOD)
? ? ????OOD是OOA方法的延續(xù),其基本思想包括抽象、封裝和可擴展性,其中可擴展性主要通過繼承和多態(tài)來實現(xiàn)的。OOD的主要任務(wù)是對類和對象進行設(shè)計,包括:類的屬性、方法,以及類與類之間的關(guān)系。如何提高軟件的可維護性和可復(fù)用性是其需要解決的核心問題之一。
? ? ????◆對象三個基本要素:對象標(biāo)識、對象狀態(tài)(屬性)、對象行為。
? ? ????◆類:現(xiàn)實世界中實體的形式化描述。如果將對象比作房子,那么類就是房子的設(shè)計圖紙。
? ? ????◆對象:強調(diào)給出與應(yīng)用相關(guān)的特性,拋棄不相關(guān)的特性。
? ? ????◆封裝:將相關(guān)概念組成一個單元模塊,并通過一個名稱來引用它。
? ? ????◆消息:體現(xiàn)了對象間的交互,通過它向目標(biāo)對象發(fā)送操作請求(即調(diào)用某個對象的某個方法)。
? ? ????◆組件:組件技術(shù)是軟件復(fù)用實現(xiàn)的關(guān)鍵。
? ? ????OOD原則 :
? ? ????◆單一職責(zé)原則:設(shè)計功能單一的類。
? ? ????◆開放-封閉原則:對擴展開放,對修改封閉。
? ? ????◆李氏(Liskov)替換原則:子類可以替換父類。
? ? ????◆依賴倒置原則:要依賴于抽象,而不是具體實現(xiàn);針對接口編程,不要針對實現(xiàn)編程。
? ? ????◆接口隔離原則:使用多個專門的接口比使用單一的總接口更好。
? ? ????◆組合重用原則:要盡量使用組合,而不是繼承關(guān)系達到重用的目的。
? ? ????◆迪米特(Demeter)原則(最少知識法則):一個對象應(yīng)當(dāng)對其他對象有盡可能少的了解(如同結(jié)構(gòu)化方法中的低耦合原則)。