摘要:分析系統(tǒng)思想在工程設(shè)計(jì)中的重要性,以及目前軟件分析設(shè)計(jì)教學(xué)中的相關(guān)問(wèn)題,提出首先讓學(xué)生掌握系統(tǒng)論的核心思想與概念,逐步培養(yǎng)學(xué)生習(xí)慣性地用系統(tǒng)思想去分析問(wèn)題、解決問(wèn)題,將系統(tǒng)思想融入講授系統(tǒng)分析設(shè)計(jì)的各個(gè)環(huán)節(jié)中,讓學(xué)生在潛移默化中學(xué)習(xí)用工程化的方法進(jìn)行復(fù)雜系統(tǒng)的分析、設(shè)計(jì)與優(yōu)化。
關(guān)鍵詞:軟件系統(tǒng)分析設(shè)計(jì);系統(tǒng);系統(tǒng)工程;設(shè)計(jì)決策
系統(tǒng)思想的核心是系統(tǒng)的整體觀念,以及用系統(tǒng)工程的方法分析問(wèn)題、解決問(wèn)題的思路。任何系統(tǒng)都是一個(gè)有機(jī)的整體,亞里士多德說(shuō)過(guò)“整體大于部分之和”,也就是說(shuō),系統(tǒng)設(shè)計(jì)不是各個(gè)部分的機(jī)械組合或簡(jiǎn)單相加。系統(tǒng)工程是把工程設(shè)計(jì)視為決策制定過(guò)程的一門學(xué)科,這意味著系統(tǒng)設(shè)計(jì)的每一個(gè)環(huán)節(jié),都是一個(gè)以系統(tǒng)的整體功能和目標(biāo)為目標(biāo)函數(shù)的決策制定過(guò)程。
有效的系統(tǒng)工程方法是成功開發(fā)復(fù)雜系統(tǒng)的關(guān)鍵因素。系統(tǒng)與系統(tǒng)工程思想是所有工程設(shè)計(jì)人員需要具備的基本素質(zhì),對(duì)于軟件系統(tǒng)設(shè)計(jì)人員也是一樣。事實(shí)上,軟件工程發(fā)展之初,即是將系統(tǒng)工程的一些思想引入到軟件領(lǐng)域,以解決軟件開發(fā)中存在的諸多問(wèn)題。國(guó)外許多著名工科大學(xué)都非常注重系統(tǒng)工程方法與實(shí)踐能力的培養(yǎng)。美國(guó)麻省理工學(xué)院(MIT)針對(duì)所有工程領(lǐng)域的碩士開設(shè)“系統(tǒng)工程”公共課,并將該課程定位為系統(tǒng)設(shè)計(jì)與管理相關(guān)專業(yè)的核心課程。但是國(guó)內(nèi)很少有學(xué)校為學(xué)習(xí)工程設(shè)計(jì)的學(xué)生開設(shè)系統(tǒng)工程相關(guān)課程。筆者認(rèn)為在軟件系統(tǒng)分析設(shè)計(jì)的教學(xué)中應(yīng)該將其作為基礎(chǔ),在介紹軟件系統(tǒng)分析設(shè)計(jì)方法中融入系統(tǒng)思想與系統(tǒng)工程方法。
1當(dāng)前教學(xué)中存在的問(wèn)題
目前,國(guó)內(nèi)軟件系統(tǒng)分析設(shè)計(jì)的水平普遍偏低。國(guó)內(nèi)軟件行業(yè)有能力設(shè)計(jì)實(shí)現(xiàn)一個(gè)可用系統(tǒng),但是,難以設(shè)計(jì)優(yōu)秀的、復(fù)雜的大系統(tǒng),已經(jīng)設(shè)計(jì)的軟件系統(tǒng)的可持續(xù)性普遍較差,軟件系統(tǒng)設(shè)計(jì)的內(nèi)在質(zhì)量難以與國(guó)際頂尖的軟件系統(tǒng)相提并論。這與國(guó)內(nèi)的軟件分析設(shè)計(jì)教學(xué)有直接關(guān)系,目前軟件分析設(shè)計(jì)教學(xué)中普遍存在以下問(wèn)題:
1) 注重工具,不注重設(shè)計(jì)方法。
許多時(shí)候,教學(xué)中更崇拜工具使用及表達(dá)形式而忽略了內(nèi)容。如將UML誤當(dāng)作分析設(shè)計(jì)方法,其實(shí)UML是一種輔助分析設(shè)計(jì)的描述方法,并非分析設(shè)計(jì)方法。
2) 注重技術(shù),不注重設(shè)計(jì)決策與評(píng)估。
在許多教學(xué)與設(shè)計(jì)實(shí)踐中,將技術(shù)提升到最核心的位置,然而技術(shù)是為系統(tǒng)目標(biāo)服務(wù)的,技術(shù)的選擇應(yīng)以系統(tǒng)目標(biāo)為設(shè)計(jì)決策目標(biāo),需要考慮功能、性能、人員、周期、經(jīng)濟(jì)等因素,科學(xué)地進(jìn)行設(shè)計(jì)決策。通常,這些設(shè)計(jì)策略的抉擇往往完全依賴于開發(fā)人員模糊的經(jīng)驗(yàn)與直覺(jué),而設(shè)計(jì)評(píng)審 [1-4]也同樣依賴于“專家”及同行的經(jīng)驗(yàn)與直覺(jué)。
3) 注重細(xì)節(jié),不注重系統(tǒng)整體效果。
由于從教師到學(xué)生都缺乏系統(tǒng)思想,在軟件設(shè)計(jì)過(guò)程中,他們更關(guān)注細(xì)節(jié),而忽視系統(tǒng)整體。如過(guò)分關(guān)注可有可無(wú)的功能、界面風(fēng)格等,設(shè)計(jì)中常常由于局部過(guò)于優(yōu)化而影響整體性能。
4) 注重實(shí)現(xiàn)與應(yīng)用,不注重優(yōu)化。
系統(tǒng)設(shè)計(jì)是一個(gè)不斷迭代優(yōu)化的過(guò)程,可用的系統(tǒng)與好的系統(tǒng)有很大的差別。一個(gè)好的系統(tǒng)應(yīng)有很好的可擴(kuò)展性、適應(yīng)性等,這樣的系統(tǒng)有很強(qiáng)的生命力,如微軟的Windows、Office等軟件系統(tǒng)。
要解決上述問(wèn)題,就需要在軟件系統(tǒng)分析設(shè)計(jì)的教學(xué)中,培養(yǎng)學(xué)生的系統(tǒng)思想,讓他們具備復(fù)雜系統(tǒng)的分析設(shè)計(jì)能力。
2在教學(xué)中引入系統(tǒng)思想
2.1讓學(xué)生掌握系統(tǒng)思想
在教學(xué)中,讓學(xué)生掌握系統(tǒng)論的核心思想和以下基本概念,并且習(xí)慣性地用其分析問(wèn)題、解決問(wèn)題。
1) 系統(tǒng)的整體概念。系統(tǒng)論的核心思想是系統(tǒng)的整體觀念。系統(tǒng)中各要素不是孤立地存在著,每個(gè)要素在系統(tǒng)中都處于一定的位置上,起著特定的作用。要素之間相互關(guān)聯(lián),構(gòu)成了一個(gè)不可分割的整體。要素是整體中的要素,如果將要素從系統(tǒng)整體中割離出來(lái),它將失去要素的作用;要素的目標(biāo)一旦背離了系統(tǒng)的整體目標(biāo),那么要素應(yīng)被放棄或修改。
2) 系統(tǒng)的要素。任何系統(tǒng)都須具有九個(gè)要素:目標(biāo)、環(huán)境、邊界、部件(子系統(tǒng)、模塊、類或函數(shù))、相關(guān)部件、接口、輸入、輸出、約束。在系統(tǒng)分析時(shí)要明確這些要素,缺少要素的系統(tǒng)規(guī)格說(shuō)明是不完整的;在系統(tǒng)設(shè)計(jì)時(shí)要基于目標(biāo)、環(huán)境、邊界及約束確定部件、相關(guān)部件、接口、輸入、輸出。
3) 系統(tǒng)的關(guān)鍵特征。系統(tǒng)應(yīng)具有以下三個(gè)特征:
?、?一致性:一個(gè)系統(tǒng)應(yīng)該有這個(gè)系統(tǒng)統(tǒng)一的特征,使系統(tǒng)是協(xié)調(diào)一致的,而非混亂拼湊不協(xié)調(diào)。讓學(xué)生在設(shè)計(jì)系統(tǒng)時(shí),不論是人機(jī)交互、系統(tǒng)結(jié)構(gòu)、編碼規(guī)范等各個(gè)方面都應(yīng)保持一致。
?、?功能依賴性:子系統(tǒng)間的關(guān)系是基于系統(tǒng)的功能或目標(biāo)要求,而非由于與系統(tǒng)目標(biāo)無(wú)關(guān)的因素而建立關(guān)系。讓學(xué)生在設(shè)計(jì)系統(tǒng)時(shí),明確每個(gè)部件與其他部件間的依賴關(guān)系,以及提供的功能服務(wù)。在評(píng)審設(shè)計(jì)方案時(shí),孤立的部件應(yīng)被刪掉或重新設(shè)計(jì)。
③ 有用的目標(biāo):系統(tǒng)的目標(biāo)應(yīng)該是有用的、有意義的。讓學(xué)生在確定系統(tǒng)與部件的目標(biāo)(包括功能)時(shí),評(píng)估其價(jià)值,應(yīng)放棄無(wú)用的系統(tǒng)或部件。
2.2將系統(tǒng)思想融入軟件系統(tǒng)分析設(shè)計(jì)中
在介紹系統(tǒng)思想的基礎(chǔ)上,教師在講授系統(tǒng)分析設(shè)計(jì)的過(guò)程中,應(yīng)該融入系統(tǒng)思想,讓學(xué)生在潛移默
化中學(xué)習(xí)基于系統(tǒng)思想的分析設(shè)計(jì)。具體可以從以下幾個(gè)方面展開:
1) 將系統(tǒng)的整體概念融入系統(tǒng)分析設(shè)計(jì)中。
在分析設(shè)計(jì)時(shí),應(yīng)從整體到細(xì)節(jié),就如胚胎發(fā)育的過(guò)程一樣,先有整體,然后逐漸發(fā)育出各個(gè)器官。因此,學(xué)生學(xué)習(xí)分析設(shè)計(jì)一個(gè)系統(tǒng)時(shí),首先要明確系統(tǒng)的總體目標(biāo);然后確定系統(tǒng)的范圍、邊界和約束;之后確定系統(tǒng)與環(huán)境的交互,包括輸入、輸出、接口;最后才是各個(gè)功能模塊及其交互等。
2) 用系統(tǒng)的核心要素構(gòu)建設(shè)計(jì)決策模型,評(píng)估、優(yōu)化系統(tǒng)分析設(shè)計(jì)。
將軟件設(shè)計(jì)看做一個(gè)決策過(guò)程,這種思想將藝術(shù)化的設(shè)計(jì)變成科學(xué)的工程化問(wèn)題。可以將設(shè)計(jì)看作是一種問(wèn)題求解,設(shè)計(jì)問(wèn)題可以用目標(biāo)、約束、候選方案、代表、答案來(lái)描述[5],絕大多數(shù)設(shè)計(jì)問(wèn)題是沒(méi)有確定性答案的NP難題[6]。構(gòu)建決策模型時(shí),目標(biāo)和約束是非常重要的,比如,任何工程問(wèn)題都會(huì)有成本約束。軟件設(shè)計(jì)必須考慮經(jīng)濟(jì)因素,這在目前的軟件系統(tǒng)分析設(shè)計(jì)教學(xué)中很少涉及。
3) 基于系統(tǒng)特征設(shè)計(jì)、評(píng)估系統(tǒng)。
系統(tǒng)的特征是人們從自然系統(tǒng)中總結(jié)出來(lái)的系統(tǒng)固有屬性,但是在人工系統(tǒng)中,這些屬性往往會(huì)因設(shè)計(jì)缺陷被破壞。教師應(yīng)不斷強(qiáng)化這些理念,讓學(xué)生在任何一個(gè)設(shè)計(jì)活動(dòng)中都不忘這些設(shè)計(jì)原則。例如,系統(tǒng)要滿足一致性,那么,從外觀上,一個(gè)系統(tǒng)的色彩應(yīng)該協(xié)調(diào)一致才美觀;從結(jié)構(gòu)上,整體的結(jié)構(gòu)也應(yīng)具有一致性,軟件整體若采用層次體系結(jié)構(gòu),那么所有的子系統(tǒng)都應(yīng)在這個(gè)整體的層次結(jié)構(gòu)中。此外,一致性還應(yīng)該體現(xiàn)在目標(biāo)一致性上,各個(gè)要素都應(yīng)該為了共同的、一致的目標(biāo)工作。尤其對(duì)于多人開發(fā)的復(fù)雜大系統(tǒng),一致性設(shè)計(jì)尤其重要。教師應(yīng)培養(yǎng)學(xué)生這樣的基本理念,學(xué)生們才有可能在以后的實(shí)踐中完成復(fù)雜大系統(tǒng)的設(shè)計(jì)。
系統(tǒng)的各個(gè)部件要滿足功能依賴性,這就要求系統(tǒng)中的每個(gè)部件或部件的子集都滿足下面兩個(gè)條件:
① 每個(gè)部件的特性或行為必須對(duì)整個(gè)系統(tǒng)的特性與行為產(chǎn)生影響、做出貢獻(xiàn);
?、?每個(gè)部件的特性或行為至少依賴于一個(gè)其他部件的特性或行為。
學(xué)生在設(shè)計(jì)系統(tǒng)時(shí)應(yīng)該以此為原則,如果某個(gè)部件未對(duì)整個(gè)系統(tǒng)做出貢獻(xiàn)或與任何其他部件沒(méi)有接口,那么這個(gè)部件或者不屬于該系統(tǒng),或者設(shè)計(jì)錯(cuò)誤。
從系統(tǒng)的角度,為了毫無(wú)意義的目標(biāo),或者錯(cuò)誤的目標(biāo)而設(shè)計(jì)的任何子系統(tǒng)或要素,無(wú)論多好都是錯(cuò)誤的。
4) 用系統(tǒng)工程方法進(jìn)行設(shè)計(jì)評(píng)估與決策。
確定軟件設(shè)計(jì)決策時(shí),應(yīng)借鑒系統(tǒng)工程的決策方法,在約束條件下,均衡相互沖突的設(shè)計(jì)目標(biāo),優(yōu)選出滿意的設(shè)計(jì)方案。軟件設(shè)計(jì)是一個(gè)復(fù)雜的決策問(wèn)題,選擇或評(píng)價(jià)軟件設(shè)計(jì)的優(yōu)劣往往有多個(gè)目標(biāo)可資比較,如功能、性能、可維護(hù)性等。這些目標(biāo)有些可以定量描述,有些只能定性描述,且相互沖突。對(duì)于
這樣的決策問(wèn)題,一般沒(méi)有最優(yōu)解,而是通過(guò)折中選擇一個(gè)滿意解。
3結(jié)語(yǔ)
本文提出在軟件系統(tǒng)分析設(shè)計(jì)中讓學(xué)生掌握系統(tǒng)論的核心思想與概念,給出了需要重點(diǎn)講授的幾個(gè)關(guān)鍵方面,讓學(xué)生在潛移默化中學(xué)習(xí)基于系統(tǒng)思想的分析設(shè)計(jì)。如果希望學(xué)生深入理解系統(tǒng)工程方法,那么應(yīng)該在講授軟件系統(tǒng)分析設(shè)計(jì)課程前,將“系統(tǒng)工程”作為先修課程介紹,這樣學(xué)生可以較深入、全面地掌握系統(tǒng)工程的方法論,然后在軟件分析設(shè)計(jì)課程中貫穿系統(tǒng)思想,這樣教學(xué)效果會(huì)更好。
參考文獻(xiàn):
[1]Antony Tangɦ