類圖是系統動態結構的描述嗎
本文是大綱設計實踐和學習中的壹些經驗和學習筆記,希望與大家分享。如有不妥,請指正。關鍵詞:概要設計、結構、OOD正文:在需求明確準備開始編碼之前,概要設計要做,而詳細設計可能大部分公司都不做,大部分是和編碼同時做或者編碼之後做。因此,對於大多數公司來說,概要設計文檔是唯壹的設計文檔,在後續的開發、測試、實施和維護中起著關鍵作用。首先提出問題。大綱設計應該寫什麽?輪廓設計怎麽做?如何判斷設計的模塊是否完整?為什麽在設計階段過分關註業務流程是壹種誤解?通過需求分析文檔或概要設計文檔來評估開發工作量並準確指導開發計劃?結構化好還是面向對象好?請在文章中找到以上問題的答案。第二,概要設計的目的是將軟件系統的需求轉化為未來系統的設計;逐步開發強大的系統架構;使設計適合實施環境,並為提高性能而設計;結構應該分解成模塊和庫。三、大綱設計的任務規範:代碼體系、接口規範、命名規則。這是項目組以後合作的基礎。有了程序模塊之間、項目成員之間的開發規範、接口規則和方法,大家就有了相同的工作語言和平臺,整個軟件開發工作才能協調有序地進行。總體結構設計:功能(加工)-& gt;模塊:每個功能由那些模塊實現,保證每個功能由相應的模塊實現;模塊層次:從某個角度看軟件框架:模塊間的調用關系:模塊間接口的壹般描述;模塊之間的接口:傳輸的信息及其結構;處理模式設計:滿足功能和性能的算法用戶界面設計;數據結構設計:詳細的數據結構:表、索引、文件;算法相關的邏輯數據結構及其操作;上述操作的程序模塊描述(前臺?後臺?有風景嗎?使用流程?接口控制表的數據結構和使用規則以及其他性能設計。四、大綱設計寫什麽?結構化軟件設計規範結構(由於篇幅有限,有過時的嫌疑,這裏不做過多解釋)任務:目標、環境、需求和限制;總體設計:處理流程、總體結構與模塊、功能與模塊的關系;界面設計:壹般描述外部用戶、軟硬件接口;內部模塊之間的接口(註:接口≈系統接口)數據結構:邏輯結構、物理結構,以及與程序結構的關系;模塊設計:每個模塊“做”,簡要說明“怎麽做”(輸入、輸出、處理邏輯、與其他模塊的接口、與其他系統或硬件的接口),處於什麽邏輯和物理位置;操作設計:操作模塊的組合、控制和時間;錯誤設計:錯誤信息和錯誤處理;其他設計:保密和維護;OO軟件設計規範結構1總結了系統簡介、軟件設計目標、參考資料和修改記錄,論述了整個系統的設計目標,明確說明了哪些功能是由系統決定的,哪些是不打算實現的。同時也要提到性能、可用性等非功能性需求。需求規格是這壹部分的重要參考。看看it中定義的功能性和非功能性需求。這壹部分必須清楚地說明整體設計,並確保讀者在閱讀後知道該系統將具有什麽特性和功能。在下面的文檔部分,我們將解釋設計如何實現這些。2術語表描述了本文檔中使用的各種術語。如果需求說明書中已經解釋了壹些術語,這裏就不需要重復了,可以引導讀者參考需求說明書。3用例這裏要求系統使用用例圖(UML),每個用例(正常處理)都要用中文描述。4設計概述4.1簡介這壹部分要求突出整個設計中采用的方法(無論是面向對象設計還是結構化設計)、系統架構(如客戶機/服務器結構)以及使用的相應技術和工具(如OMT和羅斯)4.2系統架構設計這壹部分要求提供對高層系統結構(頂層系統結構和子系統結構)的描述,並用框圖顯示主要組件以及它們之間的交互作用。最好把邏輯結構和物理結構分開,描述前者。別忘了解釋圖片中使用的成語和符號。4.3系統接口此處描述提供給用戶和外部系統的各種接口。如果用戶界面已經在需求說明書中描述過,這裏就沒有必要重復了,可以引導讀者參考需求說明書。如果系統提供了與其他系統的接口,例如從其他軟件系統導入/導出數據,則必須在此說明。4.4約束和假設描述了系統設計中最重要的約束,這些約束由客戶規定,並在需求規格中說明。解釋系統如何適應這些約束。此外,如果該系統與其他外部系統進行交互,或者依賴其他外部系統提供壹些功能性幫助,那麽該系統可能會受到其他約束。在這種情況下,需要清楚地描述與該系統交互的軟件類型以及由此導致的約束。實現的語言和平臺也會對系統有約束,這裏也有解釋。對於選擇具體的設計實現對系統造成的約束,簡單描述壹下妳的想法,什麽樣的權衡,為什麽要采用這樣的設計等等。對象模型提供了整個系統的對象模型。如果模型太大,就按照可行的標準分成小塊。例如,客戶端和服務器的對象模型可以分為兩個圖。它應該包含所有系統對象。這些對象來自於對需求的理解。要清楚什麽應該放入圖表,什麽不應該放入圖表。必須確定所有對象之間的關聯,並且必須指出關聯的基數。必須明確定義聚合和繼承之間的關系。每個數字必須附有簡單的解釋。6對象描述在這壹部分中,描述了每個對象的細節、它的屬性和它的方法。在此之前,必須對對象進行邏輯組織。您可能需要使用結構圖將對象分成子系統。為每個對象創建壹個條目。在系統對象模型中簡要描述其用途和約束條件(如只有壹個實例),並列出其屬性和方法。如果對象存儲在持久數據容器中,則指示它是持久對象;否則,指示它是臨時對象。詳細解釋每個對象的每個屬性:名稱,類型,如果屬性不是很直觀或者有約束(比如每個對象的屬性必須有唯壹值或者取值範圍是有限正整數等。).每個對象的每個方法的詳細描述:方法名、返回類型、返回值、參數、用途以及所用算法的簡要描述(如果不是特別簡單的話)。如果假設變量或返回值,則必須在此說明前置條件和後置條件。列出它或它調用的方法需要訪問或修改的屬性。最後,通過壹個測試案例驗證了該實現方法。這部分動態模型的作用是描述系統如何響應各種事件。壹般用序列圖和狀態圖。確定不同的場景是第壹步。沒有必要確定所有可能的場景,但至少必須涵蓋典型的系統用例。不要想當然的自己去創造場景。通常的策略是描述那些客戶能感受到的場景。7.1場景:為每個場景做壹個條目,包括以下內容:場景名稱:給它壹個可以隨便用的名稱;場景描述:簡要描述場景做了什麽以及發生的動作順序。序列圖:描述各種事件及其相對時序。7.2狀態圖這部分包括系統動態模型重要部分的狀態圖。也許妳想為每個對象畫壹個狀態圖,但實際上會導致太多意想不到的細節。妳只需要確定系統中的壹些重要對象,給它們提供狀態圖。8非功能性需求五、概要設計如何做結構化軟件設計方法:詳細閱讀需求說明書,了解系統建設目標、業務狀況、現有系統以及客戶需求的功能描述;分析數據流圖,找出數據流處理的過程;根據數據流圖確定數據處理問題的類型(轉換類型、事務類型、其他類型);通過以上分析,推導出系統的初始結構圖;改進完善初始結構圖:所有流程要對應相應的模塊(模塊的完整性在於完成了需求中的所有流程),消除完全相似或部分相似的重復功能(智者觀察相同),明確模塊之間的層次和控制關系,減少高扇出結構,隨著深度的增加平衡模塊大小。通過修改和補充數據字典,導出邏輯數據結構和每個數據結構上的操作,這些數據結構應該屬於某個模塊。確定系統包括哪些應用服務系統、客戶端和數據庫管理系統;確定每個模塊放在哪個目錄、哪個應用服務器或客戶機的哪個文件(庫)中,或者放在數據庫內部構建的對象中。對每個過濾後的模塊進行列表描述。列出邏輯數據結構。根據結構化軟件設計規範的結構,補充其他需要說明的問題,形成概要設計規範。OO軟件設計方法:在OOA的基礎上設計對象和類:分析問題域(業務建模和需求分析)後,開始建立系統架構。第壹步是提取和建立領域的概念模型,用UML建立對象類圖、活動圖和交互圖來表示。對象類是通過“觀察”從對象中找出壹組對象之間的* * *相似性特征;並形成壹個類;對象和類的屬性;數據結構;對象和類的服務操作:操作的實現算法;對象和類之間外部關系的實現結構;設計策略:充分利用現有類;方法:繼承、重用和進化;活動圖用於定義工作流,主要說明工作流的5W(做什麽,誰做,什麽時候做,在哪裏做,為什麽做)。交互圖將人和業務聯系起來,以理解交互過程並發現業務工作流中的交互角色。第二步,構建完善的系統架構:將系統分解成若幹個子系統,再分解成若幹軟件組件,並說明子系統之間的靜態和動態接口。每個子系統可以用用例模型、分析模型、設計模型和測試模型來表示。軟件體系結構的兩種方式:層次化和塊層次化結構:系統、子系統、模塊和組件(同壹層之間獨立);塊結構:弱耦合系統的組成部分:問題域:業務相關的類和對象(OOA的重點);人機界面:窗口、菜單、按鈕、命令等。數據管理:數據管理方法、邏輯物理結構、操作對象類;任務管理:任務協調和管理過程;第三步,用“4+1”視圖描述系統架構:用例視圖和腳本;解釋架構的設計視圖;模塊形式的包和層包含概要實現模型的實現視圖;說明進程和線程之間的關系、它們的架構、分布和交互的進程視圖;壹種配置視圖,顯示操作平臺上系統的物理節點以及這些節點上的任務分配。RUP中也有可選的數據視圖。第四步是性能優化(速度、資源、內存),模型清晰化、簡單化(簡單就是享受)。不及物動詞概要設計原則總體原則和方法:由粗到細,相互結合,定性分析與定量分析相結合,分解協調,建模。我們應該系統地考慮系統的壹般性、相關性、完整性和層次性。分解和協調:目的是創建壹個更好的系統。系統分解是指將壹個復雜的系統分解成幾個子系統。系統協調是系統內部的協調,即根據系統總體結構、功能、任務和目標的要求,各子系統相互協調,在各子系統局部優化的基礎上,通過內部平衡的協調控制,實現系統的整體優化;屏蔽抽象:從簡單的框架開始,隱藏細節;壹致性:統壹規範、統壹標準、統壹文檔模式;每個模塊要有壹個統壹易懂的名稱;編碼:從外向內(接口-& gt;核心);面向用戶:概要設計是對按鈕按下後系統如何做的簡要描述;模塊和組件的完全獨立性和封閉性;兼顧靜態結構和動態運行;每個邏輯對象都要解釋它的物理對象(不是壹壹對應);每個實物都有合適的開發者,有利於分工和組裝。(詳見我的另壹篇文章:系統架構設計需要考慮的因素);建立每個體系結構視圖的整體結構:視圖的詳細組織結構、元素的分組以及這些主要分組之間的接口;軟件架構與所使用的技術平臺密切相關。目前,常用的平臺是J2EE。NET,CORBA等。因此,特定的軟件架構師應該具有使用這些平臺的軟件開發經驗。通過需求功能與設計模塊的列表對應關系,檢查每個需求功能是否有對應的模塊實現,保證需求功能的可追溯性和需求實現(模塊)的完整性,同時檢查重復和不必要的模塊。在需求調查和分析過程中,了解業務處理的完整性和準確性非常重要。只有調查了解所有的業務流程,才能在每個流程業務節點設計出適合用戶業務特點和習慣的軟件,讓開發出來的軟件更受歡迎。當然,在設計軟件大綱時,要盡量消除業務流程的約束,即把流程中各個業務節點的工作看作獨立的對象並設計成獨立的模塊,充分考慮它們與其他業務對象模塊的接口,通過流程間業務對象模塊的相互調用來實現各種業務。這樣,當業務流程發生有限的變化時(每個業務模塊本身的業務邏輯沒有發生變化),我們可以很容易地修改系統程序模塊之間的調用關系,以達到新的要求。如果這個調用關系被設計成存儲在配置庫的數據字典中,甚至程序代碼都不需要修改,只需要修改數據字典中的模塊調用規則。七、概要設計的重要輸出編碼規範:信息形式、接口協議、命名規則;物理模型:部件圖和配置圖;不同角度的架構視圖:用例視圖、邏輯視圖、流程視圖、部署視圖、實現視圖和數據視圖(可選);系統的總體布局:由哪些部分組成,以及各部分之間的物理和邏輯關系;不可忽視的兩個輸出:與需求功能的關系:需求中的每個功能是用哪個層、哪個模塊、哪個類、哪個對象來實現的(壹對多關系);反過來,它應該解釋要創建的系統的每個層、模塊、對象和類“做”什麽,以及它們幫助實現什麽功能(壹對多關系)。(需求的粒度往往壹開始就比較粗,所以根據功能點估算整體項目規模或者得到項目WBS的誤差範圍也比較大。更重要的原因是需求往往不是編碼工作分解的準確依據,因為壹個需求功能點可能對應多個代碼模塊,而多個需求功能點可能只對應壹個或幾個代碼模塊,而且還有軟件復用等需要考慮的因素,所以只有在概要設計完成後,才能準確地得到詳細設計或編碼階段的二次WBS,才能準確地估算出整個項目的規模。)邏輯和物理位置:每個對象邏輯上屬於哪個層、模塊、類;在物理上,每個模塊、每個對象和每個類放在哪個應用服務器或客戶端的哪個目錄中,哪個文件(庫),或者數據庫管理系統中內置了什麽(過程、函數、視圖、觸發器等)。).八。結構化和面向對象方法的特點比較1。從概念上講,結構化軟件是功能的集合,通過模塊和模塊間的層次調用關系來實現;面向對象軟件是事物的集合,通過對象和對象間的通信來實現;2.從構成方面來說,結構化軟件=流程+數據,以流程為中心;面向對象軟件=(數據+對應操作)封裝,以數據為中心;3.從運行控制方面,結構化軟件采用順序處理方式,受進程驅動控制;面向對象軟件采用交互式並行處理方式,由消息驅動控制。4.從開發的角度來看,結構化方法的重點是設計;面向對象方法的重點是分析;但在結構化方法中,分析階段和設計階段采用不壹致的表達式,需要將分析階段采用的具有網絡特征的數據流圖轉換為設計階段采用的具有層次特征的結構圖,而這在面向對象方法中並不是問題。5.從應用方面來說,相對而言,結構化方法更適合數據類型相對簡單的數值計算和數據統計管理軟件的開發;面向對象方法更適合開發大型復雜的人機交互軟件和數據統計管理軟件;參考資料:實用軟件工程,第二版,微軟項目:生存法則,,尹仁坤,陶等。Steve McConnell著,余(第五版)著,《軟件工程:實踐者的研究方法》,Roger S.Pressman著,SEI著《軟件體系結構實踐》,Lin Bass著《RUP2000》。UML與系統分析和設計;楊·《面向對象的分析與設計》;1,提高妳的知乎問題排名,甚至排名第壹頁。2.百度知道問答推廣幫妳答疑解惑。3.優化妳的廣告。4.刪除別人的推廣,讓他不要直接和妳競爭。I 1做3題5答1推9寬9近6鍵9字5行0名2優化。