- UML2面向?qū)ο蠓治雠c設(shè)計(jì)(第2版)
- 譚火彬編著
- 1252字
- 2019-07-01 10:17:34
2.1 可視化建模基礎(chǔ)
可視化建模技術(shù)是隨著軟件工程的發(fā)展而被日益重視起來的,并已經(jīng)成為開發(fā)優(yōu)秀軟件的必備條件。其目的是將要構(gòu)造的軟件系統(tǒng)的結(jié)構(gòu)和行為表示出來,并進(jìn)行合理的控制,從而為更好地理解和開發(fā)系統(tǒng)提供保障。
模型是對(duì)現(xiàn)實(shí)世界的簡(jiǎn)化。一個(gè)好的模型包含了人們需要關(guān)注的主要元素,而忽略那些不相關(guān)的次要特征。例如,一架飛機(jī)是由成千上萬個(gè)部件組成的,我們很難一次性完整地描述這樣的一個(gè)實(shí)物,為此設(shè)計(jì)師需要通過不同的視圖(如主視圖、俯視圖、側(cè)視圖、仰視圖等)表示該飛機(jī)不同的方面。而這些視圖就是對(duì)飛機(jī)這個(gè)現(xiàn)實(shí)世界實(shí)物的簡(jiǎn)化,就是模型。
在軟件世界中,模型就是對(duì)目標(biāo)系統(tǒng)進(jìn)行簡(jiǎn)化,提供系統(tǒng)的藍(lán)圖。模型可以僅列出系統(tǒng)高層的組織結(jié)構(gòu),也可能包含各個(gè)組成部分的細(xì)節(jié)信息。每個(gè)系統(tǒng)都可以從不同的方面分析構(gòu)建不同的模型,可能是靜態(tài)的結(jié)構(gòu),也可能包含動(dòng)態(tài)的信息。
2.1.1 建模的目的
建模的根本目的是能夠更好地理解待開發(fā)的系統(tǒng)。當(dāng)我們不能夠完整地理解一個(gè)復(fù)雜的系統(tǒng)時(shí),就需要對(duì)其進(jìn)行建模。開發(fā)人員通過建模,可以把一個(gè)復(fù)雜系統(tǒng)劃分成一系列易于理解的小的組成部分,分而治之。通過建模,可以達(dá)到以下4個(gè)目的。
(1)模型有助于按照所需的樣式可視化(Visualize)系統(tǒng)。模型可以為開發(fā)團(tuán)隊(duì)提供待開發(fā)系統(tǒng)的可視化表示,從而使團(tuán)隊(duì)成員對(duì)系統(tǒng)有統(tǒng)一的理解。
(2)模型能夠描述(Specify)系統(tǒng)的結(jié)構(gòu)和行為。模型允許用戶在構(gòu)造系統(tǒng)前準(zhǔn)確地描述其結(jié)構(gòu)和行為。
(3)模型提供構(gòu)造(Construct)系統(tǒng)的模板。模型為開發(fā)人員提供了開發(fā)實(shí)現(xiàn)的依據(jù),開發(fā)人員可以根據(jù)模型(而不是原始的需求)構(gòu)造目標(biāo)系統(tǒng)。
(4)模型可以文檔化(Document)設(shè)計(jì)決策。開發(fā)人員通過模型,可以將開發(fā)過程中的設(shè)計(jì)決策記錄成文檔,并長(zhǎng)期保存,便于以后參考和使用。
建模并不只是針對(duì)大型系統(tǒng),甚至像“計(jì)算器”這樣一個(gè)很簡(jiǎn)單的軟件也能從建模中受益。然而,可以明確的一點(diǎn)是,系統(tǒng)規(guī)模越大,模型的重要性級(jí)別就越高。例如,當(dāng)構(gòu)造一架大型客機(jī)時(shí),必須要事先構(gòu)造各種不同的模型;而當(dāng)疊一架紙飛機(jī)時(shí),顯然就沒有必要花太多的精力去提前構(gòu)造模型了。
2.1.2 建模的基本原則
模型的應(yīng)用擁有著悠久的歷史,豐富的歷史經(jīng)驗(yàn)形成了建模的基本原則。在建模過程中,只有遵循這些原則,才可能得到所需的模型。
(1)選擇合適的模型。所要?jiǎng)?chuàng)建的模型將對(duì)解決方案的形成具有重要的影響,正確的模型可以清楚地表明最棘手的開發(fā)問題,提供不能輕易地從別處獲得的洞察力;而錯(cuò)誤的模型可能使人誤入歧途,把精力花在不相關(guān)的問題上。
(2)模型具有不同的精確程度。面向不同的用戶,開發(fā)人員需要提供不同抽象層次的模型。有時(shí)一個(gè)簡(jiǎn)潔且可執(zhí)行的用戶界面模型正是用戶所需要的,而有時(shí)則需要耐心地描述每一個(gè)細(xì)節(jié)。
(3)好的模型是與現(xiàn)實(shí)相聯(lián)系的。模型是對(duì)現(xiàn)實(shí)的簡(jiǎn)化,但最關(guān)鍵的是簡(jiǎn)化不能掩蓋掉任何重要的細(xì)節(jié)。
(4)需要從多個(gè)視角創(chuàng)建不同的模型,單一的模型是不夠的。為了更好地解讀系統(tǒng),我們經(jīng)常需要添加幾個(gè)互補(bǔ)/連鎖的視圖,例如用例視圖,揭示系統(tǒng)需求;邏輯視圖,揭示軟件內(nèi)部設(shè)計(jì)邏輯。這些視圖從整體上描繪了軟件開發(fā)藍(lán)圖。
- Learning Single:page Web Application Development
- Flask Web全棧開發(fā)實(shí)戰(zhàn)
- OpenStack Cloud Computing Cookbook(Third Edition)
- 自己動(dòng)手寫搜索引擎
- Learning Apex Programming
- Vue.js快跑:構(gòu)建觸手可及的高性能Web應(yīng)用
- Python測(cè)試開發(fā)入門與實(shí)踐
- 面向STEM的Scratch創(chuàng)新課程
- Reactive Programming With Java 9
- 琢石成器:Windows環(huán)境下32位匯編語言程序設(shè)計(jì)
- Java項(xiàng)目實(shí)戰(zhàn)精編
- Elasticsearch for Hadoop
- 程序是怎樣跑起來的(第3版)
- Test-Driven Machine Learning
- Python預(yù)測(cè)之美:數(shù)據(jù)分析與算法實(shí)戰(zhàn)(雙色)