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