交流设计
軟件設(shè)計(jì)至關(guān)重要。 它是應(yīng)用程序的基礎(chǔ)。 就像一個(gè)藍(lán)圖,它為來自不同背景的聚會(huì)提供了一個(gè)通用平臺(tái)。 它有助于理解,協(xié)作和發(fā)展。
設(shè)計(jì)不應(yīng)僅視為開發(fā)的要素。 它不應(yīng)該只存在于開發(fā)人員的頭腦中,否則團(tuán)隊(duì)將發(fā)現(xiàn)它幾乎無法增長,因?yàn)橹R(shí)很難獲得。 而且,當(dāng)員工離職時(shí),公司會(huì)損失更多的價(jià)值。
應(yīng)用程序代碼應(yīng)通過將領(lǐng)域模型有效地轉(zhuǎn)換為清晰的抽象來描述設(shè)計(jì)。 這些應(yīng)該經(jīng)過良好的編碼,良好的命名和良好的定義。 但這還不夠。
設(shè)計(jì)不僅應(yīng)存在于代碼中。 盡管使用該層來表達(dá)設(shè)計(jì)對(duì)于開發(fā)團(tuán)隊(duì)來說可能已經(jīng)足夠,但其他可能對(duì)應(yīng)用程序設(shè)計(jì)感興趣的人卻被拒絕訪問。 他們要么無法物理檢索代碼,要么沒有軟件開發(fā)背景,要么就沒有時(shí)間自己弄清楚設(shè)計(jì)。
有時(shí),在編寫大量代碼之前,需要在多團(tuán)隊(duì)組織中討論和完善高級(jí)設(shè)計(jì)。 在這種情況下,很明顯,即使代碼表達(dá)了設(shè)計(jì),也不應(yīng)僅將其包含在代碼中。 為此,設(shè)計(jì)建模已成為一個(gè)單獨(dú)的過程。
表達(dá)系統(tǒng)設(shè)計(jì)
設(shè)計(jì)不僅涉及類以及它們之間的相互關(guān)系。 這也與合作和行為有關(guān)。 關(guān)于用例,狀態(tài)和活動(dòng)。
交流設(shè)計(jì)的主要形式如下。 由于UML的普及性, UML被用作參考,但是沒有人會(huì)受制于其符號(hào)或術(shù)語,因?yàn)橹攸c(diǎn)應(yīng)該放在有效的溝通上。
結(jié)構(gòu)體
概述圖
使用一組描述部署策略,程序包,模塊和組件的圖來描述系統(tǒng)結(jié)構(gòu)概述。
最高級(jí)別的概述之一是部署,根據(jù)應(yīng)用程序使用的基礎(chǔ)結(jié)構(gòu)實(shí)體進(jìn)行描述。 UML描述了實(shí)現(xiàn)該目的的部署圖 ,該部署圖由節(jié)點(diǎn)組成,例如Web服務(wù)器,應(yīng)用程序服務(wù)器,數(shù)據(jù)庫服務(wù)器和客戶端。
系統(tǒng)中部署的組件具有外部依賴性。 這些應(yīng)記錄在案。 UML為此目的規(guī)定了程序包圖 ,它描述了程序包合并和導(dǎo)入關(guān)系。
詳細(xì)圖
在較低的層次上,通過展示類及其之間的關(guān)系來描述系統(tǒng)的結(jié)構(gòu)。
類圖
類圖描述了系統(tǒng)的類,包括它們的屬性,操作(或方法)以及它們之間的關(guān)系。
關(guān)系可以具有多種類型,例如,依賴關(guān)系,關(guān)聯(lián)關(guān)系,組成,繼承。 應(yīng)該清楚地表達(dá)它們,以便開發(fā)人員團(tuán)隊(duì)可以手動(dòng)設(shè)計(jì)系統(tǒng),也可以使用根據(jù)類圖生成類的工具來設(shè)計(jì)系統(tǒng)。
在UML中 ,類成員可以具有以下類型的可見性:
- 公開 :+
- 私人的 :–
- 受保護(hù)的 :#
- 派生 :/,該屬性是根據(jù)另一個(gè)元素的屬性計(jì)算得出的
- 包裝方式 :?
在UML中 ,定義了以下關(guān)系:
- 關(guān)聯(lián) :表示一系列鏈接,可以是單向或雙向的; 關(guān)聯(lián)可以被命名;
- 繼承/泛化 :一類是另一類的專門形式
- 實(shí)現(xiàn)/實(shí)現(xiàn) :一個(gè)類實(shí)現(xiàn)一個(gè)接口
- 依賴性 :兩個(gè)元素之間的單向關(guān)系,當(dāng)對(duì)一個(gè)元素的更改導(dǎo)致需要更改另一個(gè)元素時(shí)發(fā)生
- 集合 :“具有”關(guān)聯(lián),只能是雙向的; 在聚合關(guān)系中,聚合組件可以存在于容器外部
- 組成 :更強(qiáng)大的聚合關(guān)系,其中聚合的組件不能“生活”在容器外部,例如汽車的引擎
類結(jié)構(gòu)圖
這種類型的圖顯示了類的內(nèi)部結(jié)構(gòu)。 它們可以包括其協(xié)作者如何與之交互以及如何與之交互。
在UML中 , 復(fù)合結(jié)構(gòu)圖包括內(nèi)部零件,端口和連接器。 端口促進(jìn)了班級(jí)內(nèi)部以及與外界的交流。 連接器位于零件和端口之間。
斐波那契系統(tǒng)的復(fù)合結(jié)構(gòu)圖如下所示:
互動(dòng)互動(dòng)
系統(tǒng)中發(fā)生的交互與其結(jié)構(gòu)一樣重要,甚至更多。 實(shí)際上,行為是用戶體驗(yàn)的,因此對(duì)其進(jìn)行精確描述和早期建模可以使參與該項(xiàng)目的每個(gè)人都省去很多麻煩。
用例
用戶與系統(tǒng)進(jìn)行交互以滿足目標(biāo)。 實(shí)現(xiàn)目標(biāo)所需的一組交互作用形成一個(gè)用例 。
與一組用戶故事相反,表示這些交互對(duì)于以緊湊的形式可視化需求非常重要。 UML定義了用例圖 ,其中涉及不同的參與者和系統(tǒng)。
互動(dòng)概述
在更高的層次上,可以用模塊之間的交互來描述系統(tǒng),通常是為了建模控制流。 就此而言, UML定義了交互概述圖和活動(dòng)圖 。 交互概述圖可以描述由多個(gè)交互組成的控制流,而活動(dòng)圖的詳細(xì)程度較低,描述了實(shí)際條件,邏輯和動(dòng)作。
詳細(xì)互動(dòng)
消息序列圖捕獲了協(xié)作類之間的操作順序。 在UML中 ,它們稱為序列圖。 這些類型的圖不僅描述了類如何交互,而且還包括時(shí)間元素,建立了交互的順序或順序:
水平箭頭顯示兩個(gè)協(xié)作者之間交換的消息。 垂直線(也稱為生命線)捕獲了兩個(gè)類之間可能發(fā)生的所有通信。
州
在具有復(fù)雜約束和條件的環(huán)境中,系統(tǒng)狀態(tài)可能難以可視化。 最直觀地,該系統(tǒng)可以表示為狀態(tài)機(jī),其節(jié)點(diǎn)數(shù)量與狀態(tài)一樣多,并且條件在狀態(tài)之間切換,這些狀態(tài)附加到標(biāo)記過渡的箭頭上。 為了提高可讀性,應(yīng)抽象出復(fù)雜的條件并以簡潔的方式表達(dá)。
在UML中 ,狀態(tài)圖使用標(biāo)準(zhǔn)化表示法表示狀態(tài)。 實(shí)心圓表示初始狀態(tài)。 空心圓代表最終狀態(tài)。 圓角矩形表示給定的命名狀態(tài)。 箭頭表示與事件關(guān)聯(lián)的過渡。 還提供了事件名稱:
建模技術(shù)
可以使用文本和圖形兩種基本方法來描述設(shè)計(jì)。 通常,人們傾向于對(duì)圖像更感興趣,但文本模型傾向于更具描述性。 存在混合功能,可以同時(shí)進(jìn)行高級(jí)概述和可視化詳細(xì)信息的功能。
執(zhí)行文本建模,以形式化語言表達(dá)需求。 這些模型傾向于以犧牲整體概觀為代價(jià)提供更多細(xì)節(jié)。 在某些方面,創(chuàng)建速度被認(rèn)為比圖形方法要高,因?yàn)樵趫D形方法中,設(shè)計(jì)人員需要在鼠標(biāo)和鍵盤之間進(jìn)行切換。 格式化趨向于更快,更高質(zhì)量。 同樣,鑒于基于文本的格式,版本控制的使用變得更加自然。
但是,對(duì)于文本建模,理解模塊往往是一項(xiàng)更具挑戰(zhàn)性的任務(wù)。 更現(xiàn)代的工具提供了顯示基于樹的結(jié)構(gòu)或狀態(tài)機(jī)的方法來克服此問題,但這并不總是足夠的。 無法解決的一個(gè)特定問題仍然是動(dòng)畫和模擬,如果需要,應(yīng)將其視為轉(zhuǎn)向圖形方法的基礎(chǔ)。
使用圖形建模,用戶無需使用建模工具即可學(xué)習(xí)任何東西。 設(shè)計(jì)往往不太像編程,因?yàn)橛脩艨梢詫⒏嗟膬?nèi)容與他們要建模的概念聯(lián)系起來。 學(xué)習(xí)系統(tǒng)時(shí),從高級(jí)到低級(jí)再回到高級(jí)很容易。
結(jié)論
交流設(shè)計(jì)與設(shè)計(jì)同等重要。 必須避免將設(shè)計(jì)鎖定在開發(fā)人員的思想和/或代碼中。 相反,應(yīng)該有效地進(jìn)行溝通,以便項(xiàng)目中的每個(gè)人都可以訪問它。
翻譯自: https://www.javacodegeeks.com/2016/08/communicating-design.html
總結(jié)
- 上一篇: 长丰楼盘备案最新(长丰楼盘备案)
- 下一篇: idea使用junit测试_在JUnit