劉智 董世都 張金榮 張宜浩
摘? 要:針對(duì)系統(tǒng)分析與設(shè)計(jì)綜合性、實(shí)踐性強(qiáng)的特點(diǎn),文章以學(xué)生熟悉的圖書(shū)館管理系統(tǒng)為對(duì)象,采用案例分析和橫縱向?qū)Ρ确治龇椒?,梳理結(jié)構(gòu)化與面向?qū)ο蠓治鲈O(shè)計(jì)方法之間的本質(zhì)與差異,分析它們之間的不同思想和建模實(shí)踐,從而加深初學(xué)者對(duì)系統(tǒng)分析和設(shè)計(jì)方法的理解,進(jìn)而提升學(xué)生系統(tǒng)建模的理論水平和針對(duì)實(shí)際項(xiàng)目的分析設(shè)計(jì)能力。
關(guān)鍵詞:結(jié)構(gòu)化分析與設(shè)計(jì);面向?qū)ο蠓治雠c設(shè)計(jì);案例分析;圖書(shū)館管理系統(tǒng)
中圖分類(lèi)號(hào):TP311.5? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2021)15-0001-04
Abstract: In view of strong comprehensive and practical characteristics of system analysis and design, taking the library management system that students are familiar with as research object, the methods of case analysis and horizontal and vertical comparative analysis are used in this paper to sort out the essence and differences between structured analysis & design method and object-oriented analysis & design method, analyze the different ideas and modeling practices between them, so as to deepen the beginners’ understanding of system analysis & design methods, and improve the students’ theoretical level of system modeling and the ability of analysis and design for practical projects.
Keywords: Structured Analysis & Design; Object Orient Analysis & Design; case analysis; library management system
0? 引? 言
作者一直從事軟件類(lèi)課程的教學(xué)及相關(guān)項(xiàng)目的開(kāi)發(fā)工作,對(duì)程序設(shè)計(jì)、數(shù)據(jù)庫(kù)技術(shù)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)分析與設(shè)計(jì)、軟件項(xiàng)目管理等內(nèi)容有一定的認(rèn)識(shí)。經(jīng)過(guò)多年的授課發(fā)現(xiàn),“系統(tǒng)分析與設(shè)計(jì)”課程綜合性很強(qiáng),授課時(shí)需引入其他課程的知識(shí)進(jìn)行實(shí)踐講解才能融會(huì)貫通,無(wú)論是教和學(xué),都具有較大的挑戰(zhàn)性。隨著軟件技術(shù)的發(fā)展,“系統(tǒng)分析與設(shè)計(jì)”課程也經(jīng)歷了從結(jié)構(gòu)化到面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)技術(shù)的演化,給學(xué)生的學(xué)習(xí)、理解帶來(lái)了更大的模糊性。本文將基于具體案例分析,直觀地展示結(jié)構(gòu)化與面向?qū)ο蠓治鲈O(shè)計(jì)方法之間的本質(zhì)與差異,期望學(xué)生在具有一定的編程基礎(chǔ)后能通過(guò)對(duì)比更好地理解系統(tǒng)分析與設(shè)計(jì)過(guò)程,加深對(duì)系統(tǒng)分析設(shè)計(jì)的理解和掌握,并能夠?qū)唧w項(xiàng)目進(jìn)行合理的分析與設(shè)計(jì)。本文既可作為軟件工程類(lèi)專(zhuān)業(yè)學(xué)生學(xué)習(xí)“系統(tǒng)分析與設(shè)計(jì)”課程的參考資料,也可為軟件公司系統(tǒng)分析與設(shè)計(jì)人員提供理論指導(dǎo)。
1? 系統(tǒng)分析與設(shè)計(jì)概述
系統(tǒng)分析與設(shè)計(jì)是軟件工程專(zhuān)業(yè)的核心課程,它們都是高級(jí)別抽象,是聯(lián)系緊密、承前啟后的兩個(gè)過(guò)程,在進(jìn)行軟件開(kāi)發(fā)時(shí),分析人員和設(shè)計(jì)人員需要密切合作,共同制定一個(gè)基礎(chǔ)技術(shù)框架[1,2]。
系統(tǒng)分析是通過(guò)任務(wù)分解的方式將用戶(hù)的想法分析成軟件開(kāi)發(fā)過(guò)程能夠理解的需求,是為系統(tǒng)建立一個(gè)概念模型,并盡可能多地捕獲現(xiàn)實(shí)世界的語(yǔ)義,解決目標(biāo)系統(tǒng)“做什么”的問(wèn)題,它不考慮具體實(shí)現(xiàn)語(yǔ)言和實(shí)現(xiàn)方式。系統(tǒng)設(shè)計(jì)是設(shè)計(jì)出能夠滿(mǎn)足用戶(hù)需求的系統(tǒng),它描述如何一步一步地實(shí)現(xiàn)系統(tǒng)的過(guò)程和步驟,解決目標(biāo)系統(tǒng)“怎么做”的問(wèn)題。系統(tǒng)分析的目的是確定系統(tǒng)應(yīng)做成什么的設(shè)想,而系統(tǒng)設(shè)計(jì)的目的是將這些設(shè)想轉(zhuǎn)化為可實(shí)施的步驟,它是基于特定的語(yǔ)言和實(shí)現(xiàn)方式的[3]。
2? 兩大方法本質(zhì)及對(duì)比
系統(tǒng)分析與設(shè)計(jì)主要有結(jié)構(gòu)化和面向?qū)ο蠓治雠c設(shè)計(jì)方法。結(jié)構(gòu)化方法基于功能分解設(shè)計(jì)系統(tǒng)結(jié)構(gòu),它從內(nèi)部功能上模擬客觀世界。而面向?qū)ο蠓椒╗1,3]對(duì)問(wèn)題域進(jìn)行自然分割,以更接近于人類(lèi)思維的方式建立問(wèn)題域模型。與結(jié)構(gòu)化方法嚴(yán)格劃分分析與設(shè)計(jì)階段不同,面向?qū)ο蠓椒ɑ诘乃枷?,分析階段的成果可逐步細(xì)化迭代到設(shè)計(jì)階段。圖1給出了兩種方法的過(guò)程對(duì)比圖。
2.1? 業(yè)務(wù)調(diào)研
業(yè)務(wù)調(diào)研是需求階段從用戶(hù)的角度來(lái)描述系統(tǒng),目標(biāo)是發(fā)現(xiàn)系統(tǒng)用戶(hù)并掌握用戶(hù)所涉及的業(yè)務(wù)及流程。結(jié)構(gòu)化方法通過(guò)調(diào)查企業(yè)組織結(jié)構(gòu)來(lái)發(fā)現(xiàn)用戶(hù)或角色,面向?qū)ο蠓椒ㄈ匀恍枰茸R(shí)別企業(yè)的組織結(jié)構(gòu)才能更好地識(shí)別參與者。結(jié)構(gòu)化方法用業(yè)務(wù)流程圖[4-6]對(duì)各部門(mén)業(yè)務(wù)進(jìn)行描述,如圖2所示。而面向?qū)ο蟮姆椒ㄊ且杂美龍D和用例描述對(duì)系統(tǒng)進(jìn)行建模。從本質(zhì)上講,結(jié)構(gòu)化方法中的“業(yè)務(wù)”和面向?qū)ο蠓椒ㄖ械摹坝美倍际菍?duì)用戶(hù)所完成的相對(duì)完整、有意義事情的描述,屬于同一個(gè)范疇,只是在文字描述、圖形繪制工具和表達(dá)方面有些差異。無(wú)論是對(duì)業(yè)務(wù)還是用例的抽象,其粒度抽象的大小均應(yīng)該予以權(quán)衡,太大則很難對(duì)其進(jìn)行清晰描述,太小則會(huì)丟失其中的流程信息。例如在圖書(shū)館管理系統(tǒng)中,“借書(shū)”是一個(gè)完整并且有意義的事情,將其抽象為一個(gè)用例或業(yè)務(wù)是合理的,無(wú)論是使用如圖3所示的面向?qū)ο蠓椒ㄖ械幕顒?dòng)圖,還是使用結(jié)構(gòu)化方法中的業(yè)務(wù)流程圖都能夠很清晰地描述出借書(shū)的整個(gè)過(guò)程。但借書(shū)還包括“檢查借書(shū)證”“檢查借書(shū)情況”“書(shū)目掃描”“借書(shū)登記”等多個(gè)子過(guò)程,如果直接將這些子過(guò)程抽象為用例或業(yè)務(wù),并分別對(duì)它們進(jìn)行描述,則無(wú)法描述這些子過(guò)程之間的流轉(zhuǎn)關(guān)系,丟失了流程信息。
2.2? 需求分析
需求分析的目標(biāo)是將系統(tǒng)從“用戶(hù)”角度逐漸過(guò)渡到“計(jì)算機(jī)”的角度進(jìn)行描述,完成該工作需要從系統(tǒng)如何實(shí)現(xiàn)該業(yè)務(wù)或用例如何實(shí)現(xiàn)的角度去分析。軟件開(kāi)發(fā)最根本的任務(wù)是能夠?qū)?shù)據(jù)進(jìn)行加工處理,實(shí)現(xiàn)系統(tǒng)的處理需求和數(shù)據(jù)需求。根據(jù)這一特性,結(jié)構(gòu)化方法從如何讓計(jì)算機(jī)處理數(shù)據(jù)的角度出發(fā),采用數(shù)據(jù)流程分析[7]方法,用數(shù)據(jù)流程圖和數(shù)據(jù)字典來(lái)描述當(dāng)前系統(tǒng)中的處理和數(shù)據(jù)。而面向?qū)ο蟮姆椒▌t是從用例如何實(shí)現(xiàn)的角度,采用魯棒分析的方法抽象出每一個(gè)用例中的界面類(lèi)、控制類(lèi)和實(shí)體類(lèi),形成系統(tǒng)初步的總體類(lèi)圖。圖4、圖5從實(shí)現(xiàn)的角度給出了“借書(shū)”業(yè)務(wù)(用例)的數(shù)據(jù)流程圖和魯棒分析圖。結(jié)構(gòu)化方法中,經(jīng)過(guò)數(shù)據(jù)流程分析,可逐漸將系統(tǒng)中的處理(圓角矩形)和數(shù)據(jù)存儲(chǔ)(開(kāi)口矩形)抽象出來(lái),而面向?qū)ο蠓椒ㄖ?,?jīng)過(guò)魯棒分析,可抽象出系統(tǒng)中的邊界類(lèi)(帶T符號(hào)圓圈)、控制類(lèi)(帶箭頭圓圈)和實(shí)體類(lèi)(帶下劃線圓圈)。
2.3? 概要設(shè)計(jì)
概要設(shè)計(jì)最主要的兩個(gè)部分是概念模型和功能結(jié)構(gòu)。結(jié)構(gòu)化方法中,通過(guò)依次剖析底層數(shù)據(jù)流圖中處理所涉及的數(shù)據(jù)存儲(chǔ),并結(jié)合數(shù)據(jù)字典中對(duì)業(yè)務(wù)規(guī)則的描述,可以抽象出系統(tǒng)中的所有實(shí)體以及實(shí)體之間的關(guān)系,一般用實(shí)體關(guān)系圖(Entity Relationship Diagram, ERD)進(jìn)行描述,圖6給出了圖書(shū)館管理系統(tǒng)的E-R圖;而面向?qū)ο蟮姆椒▌t通過(guò)魯棒分析方法,抽象出實(shí)體類(lèi)、邊界類(lèi)、控制類(lèi)并結(jié)合用例描述來(lái)得到系統(tǒng)的實(shí)體類(lèi)圖。兩種方法都是通過(guò)分析處理所涉及的數(shù)據(jù)并結(jié)合業(yè)務(wù)規(guī)則得到概念模型。E-R圖和實(shí)體類(lèi)圖的本質(zhì)都是描述實(shí)體以及實(shí)體之間的關(guān)系,相對(duì)來(lái)說(shuō),實(shí)體類(lèi)圖描述的語(yǔ)義更豐富,細(xì)節(jié)更清晰。
2.4? 詳細(xì)設(shè)計(jì)
詳細(xì)設(shè)計(jì)是針對(duì)功能結(jié)構(gòu)中的每一個(gè)功能從界面設(shè)計(jì)、輸入/輸出項(xiàng)、流程、算法、接口等方面進(jìn)行描述,圖7給出了面向?qū)ο蠓椒ㄖ袌D書(shū)館管理系統(tǒng)“借書(shū)”功能中的判斷讀者狀態(tài)和獲取已借書(shū)籍列表的流程描述。合理完善的設(shè)計(jì)能指導(dǎo)程序編寫(xiě)人員完成系統(tǒng)的實(shí)現(xiàn),盡量減少實(shí)施環(huán)節(jié)中設(shè)計(jì)人員的參與。
綜上,無(wú)論是面向?qū)ο蠓椒ㄟ€是結(jié)構(gòu)化系統(tǒng)分析設(shè)計(jì)方法,其主流程和分析設(shè)計(jì)過(guò)程所涉及的思想和方法都是一致的。兩大方法的主流程都包括從業(yè)務(wù)建模、分析、概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)四個(gè)主要環(huán)節(jié),各個(gè)環(huán)節(jié)的建模思想及方法的思想基本相同。
3? 面向?qū)ο笈c結(jié)構(gòu)化系統(tǒng)分析設(shè)計(jì)的差異
雖然結(jié)構(gòu)化和面向?qū)ο蟮姆治鲈O(shè)計(jì)方法的實(shí)施過(guò)程在思想上基本一致,但這兩種方法在實(shí)際建?;顒?dòng)中仍有一定差異,因而二者分別適用于不同特點(diǎn)項(xiàng)目的開(kāi)發(fā)。
3.1? 建模語(yǔ)言、方法
結(jié)構(gòu)化方法使用業(yè)務(wù)流程圖、數(shù)據(jù)流程圖和數(shù)據(jù)字典、實(shí)體關(guān)系圖、功能結(jié)構(gòu)圖、盒狀圖、IPO圖等來(lái)對(duì)系統(tǒng)進(jìn)行建模。而面向?qū)ο蟮姆椒▌t使用統(tǒng)一建模語(yǔ)言(Unified Modeling Language, UML)對(duì)系統(tǒng)進(jìn)行建模,主要是用例圖、活動(dòng)圖、魯棒分析圖、類(lèi)圖、狀態(tài)圖和序列圖。不同的建模語(yǔ)言其描述行為會(huì)存在一定的差異。例如在業(yè)務(wù)階段,面向?qū)ο蟮姆椒ㄊ褂糜美龍D將系統(tǒng)中所有業(yè)務(wù)用例組織起來(lái),如圖8所示,然后分別對(duì)每一個(gè)用例進(jìn)行描述,可使用如圖3所示的活動(dòng)圖來(lái)描述用例的基本路徑和擴(kuò)展路徑;而結(jié)構(gòu)化方法先進(jìn)行組織結(jié)構(gòu)調(diào)查,通過(guò)對(duì)每個(gè)部門(mén)的業(yè)務(wù)進(jìn)行建模,從而保證需求覆蓋系統(tǒng)所有業(yè)務(wù)。
3.2? 依賴(lài)環(huán)境及設(shè)計(jì)詳細(xì)程度
結(jié)構(gòu)化方法不依賴(lài)于具體的開(kāi)發(fā)環(huán)境,專(zhuān)注于對(duì)系統(tǒng)的描述,它不假設(shè)系統(tǒng)實(shí)施所使用的開(kāi)發(fā)框架和技術(shù),給開(kāi)發(fā)人員更自由的發(fā)揮空間,當(dāng)然也給開(kāi)發(fā)人員提出了更高的要求。而面向?qū)ο蟮姆椒ㄗ裱璻ational統(tǒng)一過(guò)程定義,在設(shè)計(jì)前已經(jīng)確定所使用的軟件架構(gòu)及框架,應(yīng)該以框架為基礎(chǔ)進(jìn)行設(shè)計(jì),因此面向?qū)ο蟮姆椒ㄖ性谠敿?xì)設(shè)計(jì)階段可以對(duì)功能描述得非常清楚,層次非常清晰。圖7給出了圖書(shū)館管理系統(tǒng)中“借書(shū)”功能的詳細(xì)流程描述,從圖中可以看出,該詳細(xì)設(shè)計(jì)不僅對(duì)界面、控制、實(shí)體類(lèi)給出了具體定義,而且給出了它們之間的調(diào)用關(guān)系及成員函數(shù)。根據(jù)該圖進(jìn)行程序的開(kāi)發(fā),程序員基本不需要自由發(fā)揮,可以將詳細(xì)設(shè)計(jì)按一定的規(guī)則翻譯為最終代碼。
3.3? 分析設(shè)計(jì)思想及可復(fù)用程度
結(jié)構(gòu)化方法采用瀑布模型的思想,對(duì)分析和設(shè)計(jì)進(jìn)行階段式建模。前后相鄰階段使用的建模工具及方法是互相孤立的,前一階段的建模成果不能為后續(xù)階段所用。而面向?qū)ο蟮姆椒?,采用Rational統(tǒng)一過(guò)程的思想,使用迭代式方法,從分析到設(shè)計(jì)整個(gè)過(guò)程使用UML進(jìn)行建模,后續(xù)階段的任務(wù)可以通過(guò)對(duì)前序階段的成果進(jìn)行迭代得到,因而可以充分利用前序階段的成果,大大提高了分析設(shè)計(jì)過(guò)程的復(fù)用程度。
4? 結(jié)? 論
從建模方法、思想和解決問(wèn)題的過(guò)程來(lái)看,面向?qū)ο蠛徒Y(jié)構(gòu)化方法本質(zhì)上是趨同的,結(jié)構(gòu)化方法的分析設(shè)計(jì)人員在熟練掌握面向?qū)ο笏枷氩@得一定的平臺(tái)開(kāi)發(fā)經(jīng)驗(yàn)后很快便能夠使用面向?qū)ο蟮姆椒ㄟM(jìn)行分析和設(shè)計(jì)。相對(duì)于面向?qū)ο蟮姆椒?,結(jié)構(gòu)化系統(tǒng)分析設(shè)計(jì)獨(dú)立于開(kāi)發(fā)框架,給開(kāi)發(fā)人員更大的自由空間,同時(shí)對(duì)開(kāi)發(fā)人員的技術(shù)也提出了更高的要求;而面向?qū)ο蟮姆椒ㄔ诜治鲈O(shè)計(jì)時(shí)以具體的軟件架構(gòu)和框架為基礎(chǔ),通過(guò)逐步迭代,完成分析、設(shè)計(jì)甚至是代碼編寫(xiě),大大提高了各階段成果的復(fù)用性,使用面向?qū)ο蟮姆治鲈O(shè)計(jì)可以很容易做到設(shè)計(jì)和編碼的分離。
參考文獻(xiàn):
[1] 肯德?tīng)?系統(tǒng)分析與設(shè)計(jì) [M].北京:機(jī)械工業(yè)出版社,2020.
[2] 楊選輝,郭路生,王果毅.信息系統(tǒng)分析與設(shè)計(jì):第2版 [M].北京:清華大學(xué)出版社,2019.
[3] 譚云杰,大象Thinking in UML:第2版 [M].北京:中國(guó)水利水電出版社,2012.
[4] 艾萍,施展.業(yè)務(wù)建模技術(shù)綜述 [J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(7):127-132.
[5] 丁明,張書(shū)玲,張琛.業(yè)務(wù)流程建模與測(cè)試方法研究 [J].西安交通大學(xué)學(xué)報(bào),2016,50(3):127-133.
[6] 黃穎,李康順,李偉,等.一種基于本體語(yǔ)言的業(yè)務(wù)流程建模算法 [J].系統(tǒng)仿真學(xué)報(bào),2017,29(10):2282-2290.
[7] 黃貽望,徐松金,馮在文,等.基于數(shù)據(jù)流約束的可配置業(yè)務(wù)流程分析與驗(yàn)證 [J].計(jì)算機(jī)集成制造系統(tǒng),2017,23(8):1797-1808.
作者簡(jiǎn)介:劉智(1977.09—),男,漢族,江西高安人,副教授,博士,研究方向:視頻分析、圖像處理、機(jī)器學(xué)習(xí)、軟件工程與理論。
3008500338214