>計(jì)算機(jī)軟考題庫大全風(fēng)險(xiǎn)驅(qū)動(dòng)、敏捷迭代的架構(gòu)設(shè)計(jì)與開發(fā)  軟件架構(gòu)將隨著軟件產(chǎn)品和系統(tǒng)的生命周期而演化,其生命期往往超過了一個(gè)項(xiàng)目、一次發(fā)布,甚至有可能長達(dá)數(shù)年之久,因而軟件架構(gòu)無論對(duì)于客戶還是開發(fā)商來說都是一項(xiàng)..." />

国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

2014年軟考系統(tǒng)架構(gòu)設(shè)計(jì)師復(fù)習(xí)題(二)

時(shí)間:2014-12-03 14:32:00   來源:無憂考網(wǎng)     [字體: ]
點(diǎn)擊查看>>計(jì)算機(jī)軟考題庫大全

風(fēng)險(xiǎn)驅(qū)動(dòng)、敏捷迭代的架構(gòu)設(shè)計(jì)與開發(fā)
  軟件架構(gòu)將隨著軟件產(chǎn)品和系統(tǒng)的生命周期而演化,其生命期往往超過了一個(gè)項(xiàng)目、一次發(fā)布,甚至有可能長達(dá)數(shù)年之久,因而軟件架構(gòu)無論對(duì)于客戶還是開發(fā)商來說都是一項(xiàng)極其重要的資產(chǎn)。
  軟件架構(gòu)的設(shè)計(jì)應(yīng)該遵循什么樣的開發(fā)過程?或者說,有沒有更好的、成熟的軟件架構(gòu)設(shè)計(jì)和開發(fā)過程?回答是,21世紀(jì)的軟件架構(gòu)設(shè)計(jì)應(yīng)該優(yōu)先采用敏捷迭代的開發(fā)方式和方法。與傳統(tǒng)做法不同,敏捷迭代開發(fā)主張軟件架構(gòu)采用演進(jìn)式設(shè)計(jì)(evolutionary design),一個(gè)軟件產(chǎn)品或系統(tǒng)的架構(gòu)是通過多次迭代,乃至多次發(fā)布,在開發(fā)生命周期中逐步建立和完善起來的。
  好的軟件架構(gòu)不是一蹴而就的。在架構(gòu)設(shè)計(jì)開發(fā)過程中,我們應(yīng)該盡量避免瀑布式思維,通過一個(gè)“架構(gòu)設(shè)計(jì)階段”來完成系統(tǒng)的架構(gòu)設(shè)計(jì)乃至詳細(xì)設(shè)計(jì),然后再根據(jù)架構(gòu)圖紙和模型,在“編碼實(shí)現(xiàn)階段”按圖索驥進(jìn)行架構(gòu)的編碼與實(shí)現(xiàn)。這種傳統(tǒng)做法的錯(cuò)誤在于認(rèn)為軟件架構(gòu)就是圖紙上的模型,而不是真正可以高質(zhì)量執(zhí)行的源代碼。幾十年的軟件工程實(shí)踐表明,沒有經(jīng)過代碼實(shí)現(xiàn)、測試、用戶確認(rèn)過的架構(gòu)設(shè)計(jì),往往會(huì)存在著不可靠的臆想、猜測和過度設(shè)計(jì)、過度工程,極易造成浪費(fèi)和返工,導(dǎo)致較高的失敗率。
  風(fēng)險(xiǎn)是任何可能阻礙和導(dǎo)致軟件產(chǎn)品/系統(tǒng)研發(fā)失敗的潛在因素和問題。軟件架構(gòu)是軟件產(chǎn)品和系統(tǒng)研發(fā)的主要矛盾和主要技術(shù)風(fēng)險(xiǎn),軟件架構(gòu)的質(zhì)量決定了整個(gè)軟件系統(tǒng)和產(chǎn)品的質(zhì)量。不確定性往往是軟件架構(gòu)設(shè)計(jì)當(dāng)中一種的潛在風(fēng)險(xiǎn)。因此,軟件架構(gòu)的設(shè)計(jì)與開發(fā)應(yīng)該遵循風(fēng)險(xiǎn)驅(qū)動(dòng)的原則,在整個(gè)開發(fā)生命周期內(nèi)至始至終維護(hù)一張風(fēng)險(xiǎn)問題清單,隨著迭代的前進(jìn),根據(jù)風(fēng)險(xiǎn)的實(shí)時(shí)動(dòng)態(tài)變化,首先化解和處理最主要的架構(gòu)風(fēng)險(xiǎn),再依次化解和處理次要的架構(gòu)風(fēng)險(xiǎn)。
  架構(gòu)設(shè)計(jì)的可視化建模
  軟件架構(gòu)設(shè)計(jì)的難度源于軟件設(shè)計(jì)問題本身的復(fù)雜性,一個(gè)復(fù)雜的軟件系統(tǒng)往往存在大量復(fù)雜的、難于被人類所理解的細(xì)節(jié)和不確定因素。抽象與建模是人類自誕生以來就已掌握的理解復(fù)雜事物的方法,因而人類所從事的軟件設(shè)計(jì)工作本質(zhì)上也是一個(gè)不斷建模的過程。我們可以通過各種抽象的模型和視圖,從各個(gè)不同層次、宏觀和微觀的角度來理解復(fù)雜的軟件架構(gòu),以保證作出正確和有效的設(shè)計(jì)。
  有人認(rèn)為:“軟件架構(gòu)就是源代碼(source codes)”以及“源代碼就是設(shè)計(jì)”.這種說法其實(shí)是片面的。什么是真正的軟件?我們知道,最終可以在電腦上執(zhí)行的真正的軟件其實(shí)是二進(jìn)制代碼0和1,借助編譯器我們把高級(jí)編程語言翻譯成底層的匯編語言、機(jī)器語言等,沒有人能直接、完整地看到二進(jìn)制程序在CPU上的實(shí)際運(yùn)行狀況(runtime),人們大多只能通過各種調(diào)試工具、窗口視圖等方式來間接地動(dòng)態(tài)觀察這些真正的軟件的運(yùn)行片段。因此,Java、C#、C++ 等等設(shè)計(jì)時(shí)(design time)源代碼在本質(zhì)上也是一種模型,雖然是一種經(jīng)處理后可執(zhí)行的靜態(tài)模型,但顯然它們并不是真實(shí)軟件和軟件架構(gòu)的全部?梢姡创a模型(有時(shí)也叫實(shí)現(xiàn)模型)與UML模型其實(shí)都是軟件架構(gòu)的一種模型(邏輯反映),差別就在于抽象層次的不同。完整的軟件架構(gòu)(建筑)不僅僅包括源代碼(實(shí)現(xiàn)模型),還包括了需求模型、分析模型、設(shè)計(jì)模型、實(shí)現(xiàn)模型和測試模型等等許多模型,軟件架構(gòu)本身就是一組模型的集合。
  UML、SysML是當(dāng)前國際上流行的軟件/系統(tǒng)架構(gòu)可視化建模語言。在編寫實(shí)際的代碼之前,利用包圖、類圖、活動(dòng)圖、交互圖、狀態(tài)圖等等各種標(biāo)準(zhǔn)圖形符號(hào)對(duì)軟件架構(gòu)進(jìn)行建模,探討和交流各種可行的設(shè)計(jì)方案,發(fā)現(xiàn)潛在的設(shè)計(jì)問題,保證具體編碼實(shí)現(xiàn)之前抽象設(shè)計(jì)的正確性,被實(shí)踐證明是一種非常有效和高效、敏捷的工作方式。