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