版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1部分軟件工程基礎(chǔ)第1章軟件及軟件工程介紹1.1軟件與軟件危機(jī)軟件的作用具有產(chǎn)品和產(chǎn)品生產(chǎn)載體的雙重作用。作為產(chǎn)品,軟件顯示了由計(jì)算機(jī)硬件體現(xiàn)的計(jì)算能力,扮演著信息轉(zhuǎn)換的角色:產(chǎn)生、管理、查詢、修改、顯示或者傳遞各種不同的信息。作為產(chǎn)品生產(chǎn)的載體,軟件提供了計(jì)算機(jī)控制(操作系統(tǒng))、信息通信(網(wǎng)絡(luò)),以及應(yīng)用程序開(kāi)發(fā)和控制的基礎(chǔ)平臺(tái)(軟件工具和環(huán)境)。
1.1軟件與軟件危機(jī)軟件的概念
雖然軟件對(duì)于現(xiàn)代的人并不陌生,但很多人對(duì)于軟件的理解并不準(zhǔn)確,“軟件就是程序,軟件開(kāi)發(fā)就是編程序”的這種錯(cuò)誤觀點(diǎn)仍然存在。什么是軟件?1.1軟件與軟件危機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)。文檔是與程序開(kāi)發(fā),維護(hù)和使用有關(guān)的圖文材料。1.1軟件與軟件危機(jī)軟件的特性(1)
形態(tài)特性:軟件是無(wú)形的、不可見(jiàn)的邏輯實(shí)體。度量常規(guī)產(chǎn)品的幾何尺寸、物理性質(zhì)和化學(xué)成分對(duì)它卻是毫無(wú)意義的。
(2)
智能特性:軟件是復(fù)雜的智力產(chǎn)品,它的開(kāi)發(fā)凝聚了人們的大量腦力勞動(dòng),它本身也體現(xiàn)了知識(shí)實(shí)踐經(jīng)驗(yàn)和人類的智慧,具有一定的智能。它可以幫助我們解決復(fù)雜的計(jì)算、分析、判斷和決策問(wèn)題。(3)
開(kāi)發(fā)特性:盡管已經(jīng)有了一些工具(也是軟件)來(lái)輔助軟件開(kāi)發(fā)工作,但到目前為止尚未實(shí)現(xiàn)自動(dòng)化。軟件開(kāi)發(fā)中仍然包含了相當(dāng)份量的個(gè)體勞動(dòng),使得這一大規(guī)模知識(shí)型工作充滿了個(gè)人行為和個(gè)人因素。(4)
質(zhì)量特性:目前還無(wú)法得到完全沒(méi)有缺陷的軟件產(chǎn)品。1.1軟件與軟件危機(jī)(5)
生產(chǎn)特性:與硬件或傳統(tǒng)的制造業(yè)產(chǎn)品的生產(chǎn)完全不同,軟件一旦設(shè)計(jì)開(kāi)發(fā)出來(lái),如果需要提供多個(gè)用戶,它的復(fù)制十分簡(jiǎn)單,其成本也極為有限。(6)
管理特性:由于上述的幾個(gè)特點(diǎn),使得軟件的開(kāi)發(fā)管理顯得更為重要,也更為獨(dú)特。1.1軟件與軟件危機(jī)(7)
環(huán)境特性:軟件的開(kāi)發(fā)和運(yùn)行都離不開(kāi)相關(guān)的計(jì)算機(jī)系統(tǒng)環(huán)境,包括支持它的開(kāi)發(fā)和運(yùn)行的相關(guān)硬件和軟件。軟件對(duì)于計(jì)算機(jī)系統(tǒng)的環(huán)境有著不可擺脫的依賴性。
(8)
維護(hù)特性:軟件投入使用以后需要進(jìn)行維護(hù),但這種維護(hù)與傳統(tǒng)產(chǎn)業(yè)產(chǎn)品的維護(hù)概念有著很大差別。
1.1軟件與軟件危機(jī)(9)
廢棄特性:與硬件不同,軟件并不是由于被“用壞”而被廢棄的
。
(10)
應(yīng)用特性:軟件的應(yīng)用極為廣泛,如今它已滲入國(guó)民經(jīng)濟(jì)和國(guó)防的各個(gè)領(lǐng)域,現(xiàn)已成為信息產(chǎn)業(yè)、先進(jìn)制造業(yè)和現(xiàn)代服務(wù)業(yè)的核心,占據(jù)了無(wú)可取代的地位。1.1軟件與軟件危機(jī)軟件危機(jī)暴發(fā)于上個(gè)世紀(jì)六十年代末。主要表現(xiàn)為:軟件的發(fā)展速度遠(yuǎn)遠(yuǎn)滯后于硬件的發(fā)展速度,不能滿足社會(huì)日益增長(zhǎng)的軟件需求。軟件開(kāi)發(fā)周期長(zhǎng)、成本高、質(zhì)量差、維護(hù)困難。1.1軟件與軟件危機(jī)軟件危機(jī)典型例子:美國(guó)IBM公司在1963年至1966年開(kāi)發(fā)的IBM360機(jī)的操作系統(tǒng)。這個(gè)項(xiàng)目的負(fù)責(zé)人F.D.Brooks事后總結(jié)了他在組織開(kāi)發(fā)過(guò)程中的沉痛教訓(xùn)時(shí)說(shuō):
……正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深。最后無(wú)法逃脫滅頂?shù)臑?zāi)難,……程序設(shè)計(jì)工作正像這樣一個(gè)泥潭,……一批批程序員被迫在泥潭中拼命掙扎,……誰(shuí)也沒(méi)有料到竟會(huì)陷入這樣的困境……1.1軟件與軟件危機(jī)具體來(lái)說(shuō),軟件危機(jī)主要有以下一些典型表現(xiàn):對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。軟件常常是不可維護(hù)的。軟件通常沒(méi)有適當(dāng)?shù)奈臋n資料。軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。軟件開(kāi)發(fā)生產(chǎn)率提高的速度,既跟不上硬件的發(fā)展速度,也遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。1.1軟件與軟件危機(jī)除了軟件本身的特點(diǎn),軟件危機(jī)發(fā)生的主要原因有:
缺乏軟件開(kāi)發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開(kāi)發(fā)數(shù)據(jù)的積累,使得開(kāi)發(fā)工作的計(jì)劃很難制定。軟件人員與用戶的交流存在障礙,使得獲取的需求不充分或存在錯(cuò)誤。軟件開(kāi)發(fā)過(guò)程不規(guī)范。如,沒(méi)有真正了解用戶的需求就開(kāi)始編程序。隨著軟件規(guī)模的增大,其復(fù)雜性往往會(huì)呈指數(shù)級(jí)升高。需要很多人分工協(xié)作,不僅涉及技術(shù)問(wèn)題,更重要的是必須有科學(xué)嚴(yán)格的管理。缺少有效的軟件評(píng)測(cè)手段,提交用戶的軟件質(zhì)量不能完全保證。1.1軟件與軟件危機(jī)徹底消除“軟件就是程序”的錯(cuò)誤觀念。充分認(rèn)識(shí)到軟件開(kāi)發(fā)應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。推廣和使用在實(shí)踐中總結(jié)出來(lái)的開(kāi)發(fā)軟件的成功技術(shù)、方法和工具。按工程化的原則和方法組織軟件開(kāi)發(fā)工作。如何擺脫軟件危機(jī)?1.1軟件與軟件危機(jī)1.2軟件工程及其基本原理軟件工程的概念為了克服軟件危機(jī),1968年10月在北大西洋公約組織(NATO)召開(kāi)的計(jì)算機(jī)科學(xué)會(huì)議上,F(xiàn)ritzBauer首次提出“軟件工程”的概念,試圖將工程化方法應(yīng)用于軟件開(kāi)發(fā)。在NATO會(huì)議上,F(xiàn)ritzBauer對(duì)軟件工程的定義是:“軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的工程原理?!?993年IEEE給出的定義:“軟件工程是:①把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開(kāi)發(fā)、運(yùn)行和維護(hù)過(guò)程,也就是把工程應(yīng)用于軟件;②研究①中提到的途徑。”。1.2軟件工程及其基本原理軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來(lái)開(kāi)發(fā)和維護(hù)軟件,把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好技術(shù)結(jié)合起來(lái),以經(jīng)濟(jì)地開(kāi)發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。1.2軟件工程及其基本原理1.2軟件工程及其基本原理軟件工程的目標(biāo)軟件工程的目標(biāo)是運(yùn)用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和管理方法來(lái)提高軟件的質(zhì)量和生產(chǎn)率,也就是要以較短的周期、較低的成本生產(chǎn)出高質(zhì)量的軟件產(chǎn)品,并最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。
1.2軟件工程及其基本原理軟件的質(zhì)量特性:功能性、可靠性、可使用性、效率、可維護(hù)性和可移植性。功能性是指軟件所實(shí)現(xiàn)的功能達(dá)到它的設(shè)計(jì)規(guī)范和滿足用戶需求的程度;可靠性是指在規(guī)定的時(shí)間和條件下,軟件能夠正常維持其工作的能力;可使用性是指為了使用該軟件所需要的能力;效率是指在規(guī)定的條件下用軟件實(shí)現(xiàn)某種功能所需要的計(jì)算機(jī)資源的有效性;可維護(hù)性是指當(dāng)環(huán)境改變或軟件運(yùn)行發(fā)生故障時(shí),為了使其恢復(fù)正常運(yùn)行所做努力的程度;可移植性是指軟件從某一環(huán)境轉(zhuǎn)移到另一環(huán)境時(shí)所做努力的程度。1.2軟件工程及其基本原理質(zhì)量目標(biāo)之間的關(guān)系(1)關(guān)注大型軟件的構(gòu)造(2)中心課題是控制復(fù)雜性(3)軟件經(jīng)常變化(4)開(kāi)發(fā)軟件的效率非常重要(5)和諧地合作是開(kāi)發(fā)軟件的關(guān)鍵(6)軟件必須有效地支持它的用戶(7)在軟件工程領(lǐng)域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品1.2軟件工程及其基本原理軟件工程的本質(zhì)特性(1)按軟件生存周期分階段制訂計(jì)劃并認(rèn)真實(shí)施(2)堅(jiān)持進(jìn)行階段評(píng)審(3)堅(jiān)持嚴(yán)格的產(chǎn)品控制(4)使用現(xiàn)代軟件開(kāi)發(fā)技術(shù)(5)明確責(zé)任
(6)用人少而精(7)不斷改進(jìn)開(kāi)發(fā)過(guò)程1.2軟件工程及其基本原理軟件工程的基本原理1.3軟件生命周期概念
軟件也有一個(gè)孕育、誕生、成長(zhǎng)、成熟和衰亡的生存過(guò)程,我們稱這個(gè)過(guò)程為軟件生命周期或軟件生存期。軟件生存期由軟件定義、軟件開(kāi)發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又可劃分為若干個(gè)階段。
1.3軟件生命周期軟件定義時(shí)期
主要任務(wù)是解決“做什么”的問(wèn)題,即確定工程的總目標(biāo)和可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)使用的策略及系統(tǒng)必須完成的功能;估計(jì)完成工程需要的資源和成本;制訂工程進(jìn)度表。
通常又分為3個(gè)階段:?jiǎn)栴}定義、可行性研究和需求分析。
1.3軟件生命周期軟件開(kāi)發(fā)時(shí)期
主要任務(wù)是解決“如何做”的問(wèn)題,即具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件。
由概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試4個(gè)階段組成。
1.3軟件生命周期軟件運(yùn)行維護(hù)時(shí)期主要任務(wù)是使軟件持久地滿足用戶的需要,通常有4類維護(hù)活動(dòng):改正性維護(hù),也就是診斷和改正在使用過(guò)程中發(fā)現(xiàn)的軟件錯(cuò)誤;適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變化;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件,使它更完善;預(yù)防性維護(hù),即修改軟件為將來(lái)的維護(hù)活動(dòng)預(yù)先做準(zhǔn)備。1.3軟件生命周期開(kāi)發(fā)過(guò)程中的典型文檔①軟件需求規(guī)格說(shuō)明書(shū):描述將要開(kāi)發(fā)的軟件做什么。②項(xiàng)目計(jì)劃:描述將要完成的任務(wù)及其順序,并估計(jì)所需要的時(shí)間及工作量。③軟件測(cè)試計(jì)劃:描述如何測(cè)試軟件,使之確保軟件應(yīng)實(shí)現(xiàn)規(guī)定的功能,并達(dá)到預(yù)期的性能。④軟件設(shè)計(jì)說(shuō)明書(shū):描述軟件的結(jié)構(gòu),包括概要設(shè)計(jì)及詳細(xì)設(shè)計(jì)。⑤用戶手冊(cè):描述如何使用軟件。1.3軟件生命周期各個(gè)階段所要完成的基本任務(wù)問(wèn)題定義與可行性研究本階段要回答的關(guān)鍵問(wèn)題是“到底要解決什么問(wèn)題?在成本和時(shí)間的限制條件下能否解決問(wèn)題?是否值得做?”(2)需求分析本階段要回答的關(guān)鍵問(wèn)題是“目標(biāo)系統(tǒng)應(yīng)當(dāng)做什么?”(3)軟件設(shè)計(jì)設(shè)計(jì)是軟件工程的技術(shù)核心。本階段要回答的關(guān)鍵問(wèn)題是“如何實(shí)現(xiàn)目標(biāo)系統(tǒng)?”1.3軟件生命周期各個(gè)階段所要完成的基本任務(wù)(4)程序編碼和單元測(cè)試本階段要解決的問(wèn)題是“正確地實(shí)現(xiàn)已做的設(shè)計(jì)”,即“如何編寫(xiě)正確的、可維護(hù)的程序代碼?”(5)集成和系統(tǒng)測(cè)試測(cè)試是控制軟件質(zhì)量的重要手段,本階段的主要任務(wù)是做集成測(cè)試和系統(tǒng)測(cè)試。(6)軟件運(yùn)行和維護(hù)已交付的軟件投入正式使用,便進(jìn)入運(yùn)行階段。這一階段可能持續(xù)若干年。軟件在運(yùn)行中可能由于多方面的原因,需要對(duì)它進(jìn)行修改。
1.4軟件工程方法學(xué)概念軟件工程包含技術(shù)和管理兩方面的內(nèi)容,是技術(shù)和管理緊密結(jié)合所形成的工程學(xué)科。通常將軟件開(kāi)發(fā)全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methedology),也稱為范型(paradigm)。目前使用最廣泛的軟件工程方法學(xué):傳統(tǒng)方法(結(jié)構(gòu)化方法),面向?qū)ο蠓椒ā?.4軟件工程方法學(xué)三要素:方法、工具和過(guò)程。軟件工程方法為軟件開(kāi)發(fā)提供了“如何做”的技術(shù);軟件工具為軟件工程方法提供了自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境;過(guò)程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。1.4軟件工程方法學(xué)結(jié)構(gòu)化方法也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。將軟件生命周期的全過(guò)程依次劃分為若干個(gè)階段,采用結(jié)構(gòu)化技術(shù)來(lái)完成每個(gè)階段的任務(wù)。特點(diǎn):
(1)強(qiáng)調(diào)自頂向下順序地完成軟件開(kāi)發(fā)的各階段任務(wù);(2)結(jié)構(gòu)化方法要么面向行為,要么面向數(shù)據(jù),缺乏使兩者有機(jī)結(jié)合的機(jī)制。1.4軟件工程方法學(xué)面向?qū)ο蠓椒ㄊ菍?shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來(lái)的方法。軟件開(kāi)發(fā)過(guò)程是多次反復(fù)迭代的演化過(guò)程。面向?qū)ο蠓椒ㄔ诟拍詈捅硎痉椒ㄉ系囊恢滦?,保證了各項(xiàng)開(kāi)發(fā)活動(dòng)之間的平滑過(guò)渡。對(duì)于大型、復(fù)雜及交互性比較強(qiáng)的系統(tǒng),使用面向?qū)ο蠓椒ǜ袃?yōu)勢(shì)。1.5軟件工程知識(shí)體系及知識(shí)域介紹軟件工程教育(3個(gè)歷史時(shí)期)
(1)1978年以前:軟件工程教育以計(jì)算機(jī)專業(yè)的一門孤立的課程形式存在。
(2)1978—1988年期間:早期的研究生學(xué)位教育,開(kāi)始建立軟件工程專業(yè)的研究生學(xué)位教育項(xiàng)目。
(3)1988年以后:快速發(fā)展的研究生學(xué)科教育,使軟件工程的理論快速發(fā)展,其中,卡內(nèi)基·梅隆大學(xué)軟件工程研究所(SEI)的影響不可忽視。
1.5軟件工程知識(shí)體系及知識(shí)域介紹軟件工程知識(shí)體軟件工程已從計(jì)算機(jī)科學(xué)與技術(shù)中脫離出來(lái),逐漸形成了一門獨(dú)立的學(xué)科。對(duì)其知識(shí)體系的研究從20世紀(jì)90年代初就開(kāi)始了。標(biāo)志是美國(guó)Embry-Riddle航空大學(xué)計(jì)算與數(shù)學(xué)系ThomasB.Hilburn教授的“軟件工程知識(shí)體系指南”(GuidetoSoftwareEngineeringBodyofKnowledge,SWEBOK)研究項(xiàng)目。1.5軟件工程知識(shí)體系及知識(shí)域介紹軟件工程知識(shí)體系指南的目標(biāo)(1)促使軟件工程本體知識(shí)成為世界范圍的共識(shí)。(2)澄清軟件工程與其他相關(guān)學(xué)科,如與計(jì)算機(jī)科學(xué)、項(xiàng)目管理、計(jì)算機(jī)工程以及計(jì)算機(jī)數(shù)學(xué)之間的關(guān)系,并且確定軟件工程學(xué)科的范圍。(3)反映軟件工程學(xué)科內(nèi)容的特征。(4)確定軟件工程本體知識(shí)的各個(gè)專題。(5)為相應(yīng)的課程和職業(yè)資格認(rèn)證材料的編寫(xiě)奠定基礎(chǔ)。
1.5軟件工程知識(shí)體系及知識(shí)域介紹軟件工程知識(shí)體系指南的內(nèi)容
SWEBOK指南將軟件工程知識(shí)體系劃分為10個(gè)知識(shí)域(knowledgeareas,KA),分為兩類過(guò)程。一類是開(kāi)發(fā)與維護(hù)過(guò)程,包括軟件需求、軟件設(shè)計(jì)、軟件構(gòu)造、軟件測(cè)試和軟件維護(hù);另一類是支持和組織過(guò)程,包括軟件配置管理、軟件工程管理、軟件工程過(guò)程、軟件工程工具與方法和軟件質(zhì)量。每個(gè)知識(shí)域還可進(jìn)一步分解為若干論題。
1.5軟件工程知識(shí)體系及知識(shí)域介紹軟件工程知識(shí)體系指南的內(nèi)容1.5軟件工程知識(shí)體系及知識(shí)域介紹每個(gè)知識(shí)域又可分解為若干子知識(shí)域,如表所示。1.6軟件產(chǎn)業(yè)的形成與發(fā)展我國(guó)軟件產(chǎn)業(yè)的形成
軟件產(chǎn)業(yè)是以開(kāi)發(fā)、研究、經(jīng)營(yíng)、銷售軟件產(chǎn)品或軟件服務(wù)為主的企業(yè)組織及其在市場(chǎng)上的相互關(guān)系的集合。軟件產(chǎn)業(yè)是信息產(chǎn)業(yè)的核心,是國(guó)民經(jīng)濟(jì)基礎(chǔ)性、戰(zhàn)略性產(chǎn)業(yè),直接關(guān)系國(guó)家政治、經(jīng)濟(jì)和社會(huì)的安全。目前我國(guó)軟件產(chǎn)業(yè)鏈已經(jīng)初步形成,在其形成的過(guò)程中,我國(guó)的軟件產(chǎn)業(yè)主要經(jīng)歷了萌芽期、起步期、進(jìn)入期和發(fā)展期4個(gè)階段。進(jìn)入了2000年以后,中國(guó)的軟件企業(yè)開(kāi)始進(jìn)入網(wǎng)絡(luò)軟件時(shí)期。
1.6軟件產(chǎn)業(yè)的形成與發(fā)展全球軟件產(chǎn)業(yè)的發(fā)展到目前為止,全球軟件產(chǎn)業(yè)的發(fā)展已經(jīng)經(jīng)歷了比較完整的5代。第一代:早期專業(yè)的服務(wù)公司(1949—1959年)第二代:早期軟件產(chǎn)品公司(1959—1969年)第三代:強(qiáng)大的企業(yè)解決方案提供商的出現(xiàn)(1969—1981年)第四代:客戶大眾市場(chǎng)軟件(1981—1994年)第五代:互聯(lián)網(wǎng)增值服務(wù)(1994年至今)
1.6軟件產(chǎn)業(yè)的形成與發(fā)展軟件產(chǎn)業(yè)的發(fā)展模式目前得到公認(rèn)的產(chǎn)業(yè)發(fā)展模式有美國(guó)模式、印度模式、愛(ài)爾蘭模式、日本模式等。
美國(guó)模式——技術(shù)與服務(wù)領(lǐng)導(dǎo)型美國(guó)的軟件產(chǎn)業(yè)主要由3個(gè)部分組成。
(1)以商業(yè)銷售或租賃為目的,設(shè)計(jì)和生產(chǎn)軟件產(chǎn)品的公司。
(2)開(kāi)發(fā)因特網(wǎng)和電子商務(wù)技術(shù),提供網(wǎng)上信息和服務(wù)的公司。
(3)專為計(jì)算機(jī)提供軟件服務(wù)的公司。1.6軟件產(chǎn)業(yè)的形成與發(fā)展軟件產(chǎn)業(yè)的發(fā)展模式印度模式——國(guó)際加工服務(wù)型
印度的軟件產(chǎn)業(yè)屬于外向型的產(chǎn)業(yè),以外包服務(wù)為主,軟件企業(yè)對(duì)于促進(jìn)印度的出口起了十分重要的作用。
愛(ài)爾蘭模式——生產(chǎn)本地化型根據(jù)歐洲市場(chǎng)20多種不同語(yǔ)言的實(shí)際需要,愛(ài)爾蘭將自己定位為美國(guó)軟件公司產(chǎn)品歐洲化版本的加工基地,吸引跨國(guó)軟件公司和國(guó)際知名學(xué)府在國(guó)內(nèi)建立研發(fā)和分支機(jī)構(gòu),實(shí)現(xiàn)國(guó)外軟件產(chǎn)品本地化。1.6軟件產(chǎn)業(yè)的形成與發(fā)展軟件產(chǎn)業(yè)的發(fā)展模式日本和歐洲模式——嵌入式系統(tǒng)開(kāi)發(fā)型日本以硬件帶動(dòng)軟件發(fā)展,其軟件屬于嵌入式的。松下、東芝、日立等跨國(guó)公司都有自己的軟件公司,他們研發(fā)的軟件產(chǎn)品往往隨著企業(yè)的各類產(chǎn)品出口世界各地。德國(guó)模式——企業(yè)級(jí)應(yīng)用及自主研發(fā)型德國(guó)軟件產(chǎn)業(yè)可分為“主要軟件企業(yè)”和“輔助軟件企業(yè)”兩類。第一類除從事數(shù)據(jù)處理服務(wù)的企業(yè)外,還包括數(shù)據(jù)處理設(shè)備制造商。第二類是指機(jī)械制造、電子、通信、汽車、金融服務(wù)等行業(yè)的企業(yè)。
1.6軟件產(chǎn)業(yè)的形成與發(fā)展軟件工程在軟件產(chǎn)業(yè)中的作用一方面,軟件產(chǎn)業(yè)離不開(kāi)軟件工程理論及標(biāo)準(zhǔn)的指導(dǎo);另一方面,軟件產(chǎn)業(yè)的發(fā)展需要大量軟件工程人才。軟件工程理論是人們從長(zhǎng)期的軟件工程實(shí)踐中總結(jié)出來(lái)的,對(duì)軟件開(kāi)發(fā)起著重要的指導(dǎo)作用。軟件產(chǎn)業(yè)的發(fā)展需要大量的軟件工程人才。實(shí)際情況已經(jīng)證明,軟件產(chǎn)業(yè)的競(jìng)爭(zhēng)不僅是技術(shù)和資本的競(jìng)爭(zhēng),從根本上來(lái)講是人才的競(jìng)爭(zhēng)。
小結(jié)對(duì)軟件及軟件工程進(jìn)行了概要介紹介紹了軟件的作用、概念、特性及軟件危機(jī)的主要表現(xiàn);對(duì)軟件工程的概念、軟件工程的基本原理以及軟件工程知識(shí)體系進(jìn)行了簡(jiǎn)要介紹;最后介紹了軟件產(chǎn)業(yè)的形成與發(fā)展以及軟件工程在軟件產(chǎn)業(yè)中的重要性。小結(jié)介紹了軟件生命周期方法軟件生命周期方法將軟件生命周期劃分為若干個(gè)相對(duì)獨(dú)立的階段,每個(gè)階段都完成一定的任務(wù);基本上按順序完成各個(gè)階段的任務(wù);在完成每個(gè)階段的任務(wù)時(shí)采用結(jié)構(gòu)化技術(shù)和適當(dāng)?shù)能浖ぞ?;在每個(gè)階段結(jié)束之前都進(jìn)行嚴(yán)格的技術(shù)復(fù)審和管理復(fù)審。
軟件生命周期方法使軟件開(kāi)發(fā)結(jié)束了之前的混亂狀態(tài)。That'sAll!第一部分軟件工程基礎(chǔ)第2章軟件需求獲取與確定2.1軟件需求獲取的任務(wù)軟件需求(softwarerequirement)是為了解決用戶的問(wèn)題或?qū)崿F(xiàn)用戶的目標(biāo),用戶所需的軟件必須滿足的能力和條件。獲取軟件需求要涉及到多種人員,每種人員對(duì)需求的描述是不同的主要的需求種類業(yè)務(wù)需求:描述了使用軟件系統(tǒng)要達(dá)到什么目標(biāo)。系統(tǒng)需求:為了滿足用戶解決問(wèn)題需要的條件或能力,系統(tǒng)或系統(tǒng)成分必須滿足或具有的條件或能力。功能需求:規(guī)定了軟件必須實(shí)現(xiàn)的功能性需求。非功能需求:在滿足功能需求的基礎(chǔ)上,軟件系統(tǒng)還必須具有一定的特性和必須遵循一定的約束,非功能需求描述相應(yīng)的特性和約束。2.2軟件需求的獲取與確認(rèn)過(guò)程2.3快速原型化方法原型法(prototyping)是這樣的一種軟件開(kāi)發(fā)技術(shù),通過(guò)開(kāi)發(fā)軟件的初期版本讓用戶進(jìn)行反饋來(lái)確定軟件的可行性,研究開(kāi)發(fā)技術(shù)或開(kāi)發(fā)過(guò)程支持的其他問(wèn)題??焖僭突╮apidprototyping)是一種原型法,它的重點(diǎn)是在開(kāi)發(fā)過(guò)程的早期就開(kāi)發(fā)出原型,使反饋和分析提前,以支持開(kāi)發(fā)過(guò)程[1]。2.3快速原型化方法(1)演示原型通過(guò)演示原型向用戶展示一些界面,讓用戶判斷基于該原型的系統(tǒng)是否能夠滿足他們的要求。(2)技術(shù)驗(yàn)證原型該原型在技術(shù)層上實(shí)現(xiàn)軟件的部分功能,以驗(yàn)證技術(shù)上的可行性。2.4基于用況的方法基于用況的方法通過(guò)建立用況模型來(lái)獲取與確定需求。在建立用況模型時(shí),要確定系統(tǒng)邊界,找出在系統(tǒng)邊界以外與系統(tǒng)交互的事物,然后從這些事物與系統(tǒng)進(jìn)行交互的角度,通過(guò)用況來(lái)描述這些事物怎樣使用系統(tǒng),以及系統(tǒng)向它們提供什么功能。2.4.1系統(tǒng)邊界系統(tǒng)邊界是系統(tǒng)的所有內(nèi)部成分與系統(tǒng)以外各種事物的分界線。系統(tǒng)只通過(guò)邊界上的有限個(gè)接口與外部的系統(tǒng)使用者(人員、設(shè)備或外系統(tǒng))進(jìn)行交互。
2.4.1系統(tǒng)邊界現(xiàn)實(shí)世界中的事物與系統(tǒng)的關(guān)系包括如下幾種情況:■某些事物位于系統(tǒng)邊界內(nèi),作為系統(tǒng)成分?!?/p>
某些事物位于系統(tǒng)邊界外,作為參與者。■某些事物可能既有一個(gè)對(duì)象作為其抽象描述,而本身(作為現(xiàn)實(shí)世界中的事物)又是在系統(tǒng)邊界以外與系統(tǒng)進(jìn)行交互的參與者?!瞿承┦挛锛词箤儆趩?wèn)題域,也與系統(tǒng)責(zé)任沒(méi)有什么關(guān)系。認(rèn)識(shí)清楚上述事物之間的關(guān)系,也就劃分出了系統(tǒng)邊界。2.4.2參與者參與者(actor)定義了一組在功能上密切相關(guān)的角色,當(dāng)一個(gè)事物與系統(tǒng)交互時(shí),該事物可以扮演這樣的角色。參與者的表示法2.4.2參與者識(shí)別參與者參與者是在系統(tǒng)之外的與系統(tǒng)進(jìn)行交互的任何事物。這些事物可為人員、外部系統(tǒng)或設(shè)備。
2.4.2參與者人員 直接使用系統(tǒng)的人員是參與者。這里強(qiáng)調(diào)的是直接使用,而不是間接使用。外部系統(tǒng) 所有與本系統(tǒng)交互的外部系統(tǒng)都是參與者。相對(duì)于當(dāng)前在正在開(kāi)發(fā)的系統(tǒng)而言,外部系統(tǒng)可以是其他子系統(tǒng)、下級(jí)系統(tǒng)或上級(jí)系統(tǒng),也即任何與它進(jìn)行協(xié)作的系統(tǒng),但對(duì)這樣的系統(tǒng)的開(kāi)發(fā)并不是開(kāi)發(fā)本系統(tǒng)的人員的責(zé)任。設(shè)備 識(shí)別所有與系統(tǒng)交互的設(shè)備:這樣的設(shè)備與系統(tǒng)相連并向系統(tǒng)提供外界信息,也可能系統(tǒng)要向這樣的設(shè)備提供信息,設(shè)備在系統(tǒng)的控制下運(yùn)行。2.4.3用況用況(usecase)是描述系統(tǒng)的一項(xiàng)功能的一組動(dòng)作序列,這樣的動(dòng)作序列表示參與者與系統(tǒng)間的交互,系統(tǒng)執(zhí)行該動(dòng)作序列要為參與者產(chǎn)生結(jié)果。用況名用況的表示法2.4.3用況使用用況來(lái)可視化、詳述、構(gòu)造和文檔化所希望的系統(tǒng)行為。盡管用況中描述的行為是系統(tǒng)級(jí)的,但在用況內(nèi)所描述的交互中的動(dòng)作應(yīng)該是詳細(xì)的,準(zhǔn)則是對(duì)用況的理解不產(chǎn)生歧義即可。若描述得過(guò)于綜合,則不易認(rèn)識(shí)清楚系統(tǒng)的功能。用況描述中的一個(gè)動(dòng)作應(yīng)該描述參與者或系統(tǒng)要完成的交互中的一個(gè)步驟。在用況中只描述參與者和系統(tǒng)彼此為對(duì)方直接地做了些什么事,不描述怎么做,也不描述間接地做了些什么。系統(tǒng)所產(chǎn)生的結(jié)果,是指系統(tǒng)對(duì)參與者的動(dòng)作要做出響應(yīng)。用況描述的是參與者所使用的一項(xiàng)系統(tǒng)功能,該項(xiàng)功能應(yīng)該相對(duì)完整。也即應(yīng)該保證用況是某一項(xiàng)功能的完整的規(guī)格說(shuō)明,而不能只是其中的一個(gè)片段。在用況描述中,由參與者首先發(fā)起交互的可能性較大,但有些交互也可能是由系統(tǒng)首先發(fā)起的。收款員收款輸入開(kāi)始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for顧客選購(gòu)的每種商品do
輸入商品編號(hào);
if此種商品多于一件then
輸入商品數(shù)量
endif;檢索商品名稱及單價(jià);貨架商品數(shù)減去售出數(shù);
if貨架商品數(shù)低于下限then
通知供貨員請(qǐng)求上貨
endif;計(jì)算本種商品總價(jià)并打印編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);endfor;打印應(yīng)收款總數(shù);輸入顧客交來(lái)的款數(shù);計(jì)算應(yīng)找回的款數(shù),打印以上兩個(gè)數(shù)目,應(yīng)收款數(shù)計(jì)入帳冊(cè)。例2.4.3用況用況與參與者之間的關(guān)系
一個(gè)參與者可以同多個(gè)用況交互,一個(gè)用況也可以同多個(gè)參與者交互。把參與者與用況間的這種交互關(guān)系稱為關(guān)聯(lián)。若沒(méi)做具體的規(guī)定,交互是雙向的,即參與者能夠?qū)ο到y(tǒng)進(jìn)行請(qǐng)求,系統(tǒng)也能夠要求參與者采取某些動(dòng)作。把參與者和用況之間的關(guān)聯(lián)表示成參與者和用況之間的一條實(shí)線。若要明確地指出參與者和用況之間的通訊是單向的,就在關(guān)聯(lián)線上接收通訊的那端加一個(gè)箭頭,用以指示方向。
2.4.3用況收款檢查售貨員統(tǒng)計(jì)員2.4.3用況1)包含
A……用況XA……用況YA(A)……(A)……用況X用況Y<<include>>
<<include>>
2.4.3用況
從基用況到被包含用況的包含關(guān)系表明:基用況在它內(nèi)部說(shuō)明的某一(些)位置上顯式地使用供應(yīng)者用況的行為的結(jié)果。通過(guò)一個(gè)敞開(kāi)的虛線箭頭表示用況之間的包含關(guān)系,該箭頭從基用況指向被包含的用況。這個(gè)箭頭用關(guān)鍵字<<include>>標(biāo)記。被包含用況基用況<<include>>2.4.3用況2.4.3用況1)擴(kuò)展
If…AIF…C……IF…AIF…C……用況X用況YACIF…(A)IF…(C)……IF…(A)IF…(C)……用況X用況Y<<extend>>
<<extend>>
2.4.3用況
從基用況到擴(kuò)展用況的擴(kuò)展關(guān)系表明:按基用況中指定的擴(kuò)展條件,把擴(kuò)展用況的行為插入到由基用況中的擴(kuò)展點(diǎn)定義的位置。
通過(guò)敞開(kāi)的虛線箭頭表示用況之間的擴(kuò)展關(guān)系,該箭頭從提供擴(kuò)展的用況指向基用況。這個(gè)箭頭用關(guān)鍵字<<extend>>標(biāo)記。可以在這個(gè)關(guān)鍵字附近表示這個(gè)關(guān)系的條件。基用況擴(kuò)展用況<<extend>>基用況是可單獨(dú)存在的,但是在一定的條件下,它的行為可以被另一個(gè)用況的行為擴(kuò)展。在擴(kuò)展用況中可定義一組行為增量,在其中定義的行為離開(kāi)基用況單獨(dú)是沒(méi)意義的。一個(gè)擴(kuò)展用況可以擴(kuò)展多個(gè)用況,一個(gè)用況也可以被多個(gè)用況擴(kuò)展,甚至一個(gè)擴(kuò)展用況自身也可以被其他擴(kuò)展用況來(lái)擴(kuò)展。2.4.3用況
一個(gè)擴(kuò)展點(diǎn)是基用況中的一個(gè)位置,在這樣的位置上,如果擴(kuò)展條件為真,就在其中插入擴(kuò)展用況中描述的全部動(dòng)作序列或其中的一部分,并予以執(zhí)行。執(zhí)行完后,基用況繼續(xù)執(zhí)行擴(kuò)展點(diǎn)下面的行為。如果擴(kuò)展條件為假,擴(kuò)展不會(huì)發(fā)生。
可以把擴(kuò)展點(diǎn)列在用況中的一個(gè)題頭為“擴(kuò)展點(diǎn)”的分欄中。以一種適當(dāng)?shù)姆绞浇o出擴(kuò)展點(diǎn)的位置描述,通常采用普通的文本。
基用況擴(kuò)展用況2.4.3用況3)泛化用況之間的泛化關(guān)系就像類之間的泛化關(guān)系一樣。子用況繼承父用況的行為和含義;子用況還可以增加或覆蓋父用況的行為;子用況可以出現(xiàn)在父用況出現(xiàn)的任何位置(父和子均有具體的實(shí)例)。用一個(gè)指向父用況的帶有封閉的空心箭頭的實(shí)線來(lái)表示用況之間的泛化關(guān)系。
BA捕獲用況1)利用參與者捕獲用況
對(duì)所有的參與者(把自己作為參與者),提問(wèn)下列問(wèn)題:■
每個(gè)參與者的主要任務(wù)是什么?——粗粒度■
它們參加了什么在本質(zhì)上是不同的過(guò)程?能完成特定功能的每一項(xiàng)活動(dòng)明確地是一個(gè)用況。這些參與者參與的活動(dòng),通常會(huì)導(dǎo)致其它用況。
2.4.3用況2)從系統(tǒng)功能角度捕獲用況(1)以窮舉的方式檢查用戶對(duì)系統(tǒng)的功能需求是否能在各個(gè)用況中體現(xiàn)出來(lái)。(2)以窮舉的方式考慮每一個(gè)參與者與系統(tǒng)的交互情況,看看每個(gè)參與者要求系統(tǒng)提供什么功能,以及參與者的每一項(xiàng)輸入信息將要求系統(tǒng)作出什么反映,進(jìn)行什么處理。(3)考慮對(duì)例外情況的處理。針對(duì)用況描述的基本流,要詳盡地考慮各種其他的情況
(4)
一個(gè)用況描述一項(xiàng)功能,這項(xiàng)功能不能過(guò)大。例如,把一個(gè)企業(yè)信息管理系統(tǒng)粗略地分為生產(chǎn)管理、供銷管理、財(cái)務(wù)管理和人事管理等幾大方面的功能,就顯得粒度太大了,應(yīng)該再進(jìn)行細(xì)化。(5)一個(gè)用況應(yīng)該是一個(gè)完整的任務(wù),通常應(yīng)該在一個(gè)相對(duì)短的時(shí)間段內(nèi)完成。如果一個(gè)用況的各部分被分配在不同的時(shí)間段,尤其被不同的參與者執(zhí)行,最好還是將各部分作為單獨(dú)的用況對(duì)待。2.4.3用況場(chǎng)景用況抽象3)、使用場(chǎng)景技術(shù)
如果不能順利地確定一個(gè)用況的描述,可“角色扮演”技術(shù)。2.4.3用況描述用況用況文檔模板用況名描述:對(duì)該用況的一句或兩句的描述。參與者:該用況的參與者。包含:該用況所包含的用況,以及包含它的用況。擴(kuò)展:該用況可以擴(kuò)展的用況,以及擴(kuò)展它的用況。泛化:該用況的子用況和父用況。前置條件:?jiǎn)?dòng)該用況所必須具備的條件。細(xì)節(jié):該用況的細(xì)節(jié)。(基本流與可選流)后置條件:在該用況結(jié)束時(shí)確保成立的條件。例外:在該用況的執(zhí)行的過(guò)程中可能引起的例外*。限制:在應(yīng)用中可能出現(xiàn)的任何限制*。注釋:對(duì)該用況是重要的任何附加信息。2.4.3用況2.4.4用況圖用況圖是一幅由一組參與者、一組用況以及這些元素之間的關(guān)系組成的圖。處理取款單業(yè)務(wù)員輸入處理取款命令I(lǐng)nclude檢查口令收集客戶的取款單上的信息;加急(擴(kuò)展點(diǎn)){如果客戶選擇了加急}extend處理加急取款單……檢查口令基本流:系統(tǒng)提示客戶輸入密碼。客戶按鍵輸入密碼,并按“輸入”按鈕確認(rèn)。系統(tǒng)校驗(yàn)這個(gè)密碼,如果有效,系統(tǒng)承認(rèn)這次登錄。可選流:客戶可以在任何時(shí)間按“取消”按鈕取消輸入,然后該用況重新開(kāi)始??蛇x流:客戶可以在確認(rèn)之前的任何時(shí)刻清除密碼,并重新輸入密碼。可選流:如果客戶輸入了一個(gè)無(wú)效的密碼,用況重新開(kāi)始。如果連續(xù)3次無(wú)效,系統(tǒng)將禁止用戶再次輸入口令。2.5需求管理(1)需求標(biāo)識(shí)和分類 若功能需求的數(shù)目較大且以后往往要發(fā)生變化,需要為每個(gè)功能性需求指定一個(gè)唯一的標(biāo)識(shí),為以后的引用需求、變更需求、跟蹤需求和復(fù)用需求提供便利。 最簡(jiǎn)單的方式是為每個(gè)需求賦予一個(gè)唯一的序列號(hào)。可以為序列號(hào)規(guī)定一個(gè)結(jié)構(gòu),如用序列號(hào)的前2項(xiàng)描述需求的類型。 也可以按功能需求的抽象層次來(lái)進(jìn)行數(shù)字編號(hào)
2.5需求管理若需求量較大,則應(yīng)該進(jìn)行分類組織,以便編寫(xiě)文檔和使用。采用數(shù)字編號(hào)的方式為需求指定標(biāo)識(shí)時(shí),也可能涉及對(duì)需求分類的問(wèn)題。常見(jiàn)的分類方式有:現(xiàn)場(chǎng)記錄下來(lái)的用戶工作場(chǎng)景;從場(chǎng)景抽象出來(lái)的用況;業(yè)務(wù)規(guī)則;功能性需求;軟件質(zhì)量的屬性,如安全、可靠和易用等;外部接口需求,如用戶界面、硬件接口與其它軟件的接口等;對(duì)設(shè)計(jì)與實(shí)現(xiàn)等約束;業(yè)務(wù)數(shù)據(jù)項(xiàng)的定義,如數(shù)據(jù)項(xiàng)的數(shù)據(jù)格式、數(shù)據(jù)類型、缺省值等;等等。2.5需求管理(2)變更管理需求變化是不可避免的。在軟件利益相關(guān)者對(duì)軟件需求達(dá)到共識(shí)后,需要定義需求基線。需求基線是經(jīng)過(guò)正式評(píng)審與同意、用作下一步開(kāi)發(fā)的基礎(chǔ)的軟件需求。后續(xù)的需求變更必須遵循正式的變更控制過(guò)程。按照上述要求,進(jìn)行需求管理要定義控制需求變更的過(guò)程,用以管理所有提議的變更。2.5需求管理(3)需求跟蹤即使進(jìn)行簡(jiǎn)單的需求變更都會(huì)影響軟件的其它地方。進(jìn)行需求追蹤的一種常見(jiàn)做法是建立需求跟蹤矩陣。通常用矩陣的列給出需求項(xiàng),行給出與該需求項(xiàng)相關(guān)的其它需求項(xiàng)、實(shí)現(xiàn)元素或測(cè)試用例等。可根據(jù)需要定義需求矩陣中的需求關(guān)系,如依賴關(guān)系、從屬關(guān)系、精化關(guān)系和實(shí)現(xiàn)關(guān)系等。
2.5需求管理第2部分結(jié)構(gòu)化軟件開(kāi)發(fā)方法第3章結(jié)構(gòu)化分析建模3.1軟件需求分析階段的任務(wù)可以把軟件需求分析階段的工作分為4個(gè)步驟,即獲取需求、分析需求、定義需求和驗(yàn)證需求,如圖所示。
軟件需求分析階段的工作步驟3.1軟件需求分析階段的任務(wù)需求獲取通過(guò)啟發(fā)、引導(dǎo)從客戶(或用戶)那里得到的原始需求是他們的業(yè)務(wù)要求(needs),簡(jiǎn)稱為N。這是分析之前獲取的需求,其中可能存在一些實(shí)際問(wèn)題,這些問(wèn)題只有通過(guò)分析才能得到解決,直接把獲取的需求作為軟件設(shè)計(jì)階段的依據(jù)將會(huì)導(dǎo)致嚴(yán)重的后果。
3.1軟件需求分析階段的任務(wù)需求分析
認(rèn)真研究獲取的需求,必須考慮以下幾方面:
(1)完整性:每項(xiàng)獲取的需求都應(yīng)給出清楚的描述,使得軟件開(kāi)發(fā)工作能夠取得設(shè)計(jì)和實(shí)現(xiàn)該功能所需要的全部必要信息。
(2)正確性:獲取的每項(xiàng)需求必須是準(zhǔn)確無(wú)誤的,并且需求描述無(wú)歧義性。
(3)合理性:各項(xiàng)需求之間、軟件需求與系統(tǒng)需求之間應(yīng)是協(xié)調(diào)一致的,不應(yīng)存在矛盾和沖突。
3.1軟件需求分析階段的任務(wù)需求分析
(4)可行性:包括技術(shù)可行性、經(jīng)濟(jì)可行性、社會(huì)可行性。
(5)充分性:獲取的需求是否全面、周到。
3.1軟件需求分析階段的任務(wù)需求分析由于分析的過(guò)程會(huì)對(duì)獲取的需求做部分調(diào)整,也即從獲取的需求N中去掉了一些a,又補(bǔ)充了一些c,從而得到的是分析的需求R1(b+c)。
3.1軟件需求分析階段的任務(wù)需求定義將已經(jīng)過(guò)分析的需求清晰、全面、系統(tǒng)、準(zhǔn)確地描述成為正式的文檔,這一步定義需求的工作就是編寫(xiě)需求規(guī)格說(shuō)明。
3.1軟件需求分析階段的任務(wù)需求驗(yàn)證為了確保已定義的需求(需求規(guī)格說(shuō)明)準(zhǔn)確無(wú)誤,并能為客戶(或用戶)理解和接受,需要對(duì)其進(jìn)行嚴(yán)格的評(píng)審。
3.2結(jié)構(gòu)化分析方法簡(jiǎn)介結(jié)構(gòu)化分析方法傳統(tǒng)的分析建模方法稱為結(jié)構(gòu)化分析(structuredanalysis,SA)方法。最有代表性的是一種面向數(shù)據(jù)流進(jìn)行需求分析的方法,最初于20世紀(jì)70年代由D.Ross提出,后來(lái)又經(jīng)過(guò)擴(kuò)充,形成了今天的結(jié)構(gòu)化分析方法的框架。
3.2結(jié)構(gòu)化分析方法簡(jiǎn)介結(jié)構(gòu)化分析模型結(jié)構(gòu)化分析方法是一種建模技術(shù),它建立的分析模型如圖所示。3.3功能建模概念功能建模的思想就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件為止。功能模型用數(shù)據(jù)流圖來(lái)描述。3.3功能建模數(shù)據(jù)流圖的基本圖形符號(hào)3.3功能建模
多個(gè)數(shù)據(jù)流之間的關(guān)系
3.3功能建模環(huán)境圖環(huán)境圖(contextdiagram)也稱為頂層數(shù)據(jù)流圖(或0層數(shù)據(jù)流圖),它僅包括一個(gè)數(shù)據(jù)處理過(guò)程,也就是要開(kāi)發(fā)的目標(biāo)系統(tǒng)。環(huán)境圖的作用是確定系統(tǒng)在其環(huán)境中的位置,通過(guò)確定系統(tǒng)的輸入和輸出與外部實(shí)體的關(guān)系確定其邊界。3.3功能建模典型的環(huán)境圖招生系統(tǒng)需求描述學(xué)校首先公布招生條件,考生根據(jù)自己的條件報(bào)名,之后系統(tǒng)進(jìn)行資格審查,并給出資格審查信息;對(duì)于資格審查合格的考生可以參加答卷,系統(tǒng)根據(jù)學(xué)校提供的試題及答案進(jìn)行自動(dòng)判卷,并給出分?jǐn)?shù)及答題信息,供考生查詢;最后系統(tǒng)根據(jù)學(xué)校的錄取分?jǐn)?shù)線進(jìn)行錄取,并將錄取信息發(fā)送給考生。3.3功能建模招生系統(tǒng)的環(huán)境圖3.3功能建模數(shù)據(jù)流圖的分層對(duì)于稍微復(fù)雜一些的實(shí)際問(wèn)題,在數(shù)據(jù)流圖上常常出現(xiàn)十幾個(gè)甚至幾十個(gè)加工,這樣的數(shù)據(jù)流圖看起來(lái)不直觀,不易理解,分層的數(shù)據(jù)流圖能很好地解決這一問(wèn)題。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,并以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)系,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)。
3.3功能建模招生系統(tǒng)的分層數(shù)據(jù)流圖
3.3功能建模數(shù)據(jù)流圖的分層示意圖
3.3功能建模實(shí)例研究銀行儲(chǔ)蓄系統(tǒng)的業(yè)務(wù)流程:儲(chǔ)戶填寫(xiě)的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng);如果是存款則系統(tǒng)記錄存款人姓名、住址(或電話號(hào)碼)、身份證號(hào)碼、存款類型、存款日期、到期日期、利率、密碼(可選)等信息,并印出存單給儲(chǔ)戶;如果是取款而且開(kāi)戶時(shí)留有密碼,則系統(tǒng)首先核對(duì)儲(chǔ)戶密碼,若密碼正確或存款時(shí)未留密碼,則系統(tǒng)計(jì)算利息并印出利息清單給儲(chǔ)戶。要求畫(huà)出分層的數(shù)據(jù)流圖,并細(xì)化到2層數(shù)據(jù)流圖。3.3功能建模(1)識(shí)別外部實(shí)體及輸入輸出數(shù)據(jù)流。外部實(shí)體:儲(chǔ)戶、業(yè)務(wù)員。輸入數(shù)據(jù):如果需要儲(chǔ)戶輸入密碼,儲(chǔ)戶才直接與系統(tǒng)進(jìn)行交互。儲(chǔ)戶填寫(xiě)的存款或取款信息通過(guò)業(yè)務(wù)員鍵入系統(tǒng),可以將存款及取款信息抽象為事務(wù)。輸出數(shù)據(jù):存款單,利息清單。
3.3功能建模(2)畫(huà)出環(huán)境圖(頂層數(shù)據(jù)流圖)
3.3功能建模(3)畫(huà)出一層數(shù)據(jù)流圖
3.3功能建模(4)畫(huà)出二層數(shù)據(jù)流圖對(duì)一層圖中的“處理存款”及“處理取款”進(jìn)行進(jìn)一步分解,得到二層數(shù)據(jù)流圖,即處理存款的數(shù)據(jù)流圖和處理取款的數(shù)據(jù)流圖。
處理存款的數(shù)據(jù)流圖3.3功能建模(4)畫(huà)出二層數(shù)據(jù)流圖處理取款的數(shù)據(jù)流圖3.4數(shù)據(jù)建模在結(jié)構(gòu)化分析方法中,使用實(shí)體—關(guān)系建模技術(shù)來(lái)建立數(shù)據(jù)模型。這種技術(shù)是在較高的抽象層次(概念層)上對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)進(jìn)行建模的流行技術(shù)。實(shí)體—關(guān)系模型表示為可視化的實(shí)體—關(guān)系圖(entity-relationshipdiagram,ERD),也稱為ER圖。ER圖中僅包含3種相互關(guān)聯(lián)的元素:數(shù)據(jù)對(duì)象(實(shí)體)、描述數(shù)據(jù)對(duì)象的屬性及數(shù)據(jù)對(duì)象彼此間相互連接的關(guān)系。
3.4數(shù)據(jù)建模數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象是目標(biāo)系統(tǒng)所需要的復(fù)合信息的表示,所謂復(fù)合信息是具有若干不同屬性的信息。在ER圖中用矩形表示數(shù)據(jù)對(duì)象。在實(shí)際問(wèn)題中,數(shù)據(jù)對(duì)象(實(shí)體)可以是外部實(shí)體、事物、角色、行為或事件、組織單位、地點(diǎn)或結(jié)構(gòu)等。
3.4數(shù)據(jù)建模屬性屬性定義數(shù)據(jù)對(duì)象的特征,如數(shù)據(jù)對(duì)象學(xué)生的學(xué)號(hào)、姓名、性別、專業(yè)等,課程的課程編號(hào)、課程名稱、學(xué)分等。在ER圖中用橢圓或圓角矩形表示屬性,并用無(wú)向邊將屬性與相關(guān)的數(shù)據(jù)對(duì)象連接在一起。
3.4數(shù)據(jù)建模關(guān)系不同數(shù)據(jù)對(duì)象的實(shí)例之間是有關(guān)聯(lián)關(guān)系的,在ER圖上用無(wú)向邊表示。在無(wú)向邊的兩端應(yīng)標(biāo)識(shí)出關(guān)聯(lián)實(shí)例的數(shù)量,也稱為關(guān)聯(lián)的重?cái)?shù)。從關(guān)聯(lián)重?cái)?shù)的角度可以將關(guān)聯(lián)分為3種。(1)一對(duì)一(1:1)關(guān)聯(lián)(2)一對(duì)多(1:m)關(guān)聯(lián)(3)多對(duì)多(m:n)關(guān)聯(lián)實(shí)例關(guān)聯(lián)還有“必須”和“可選”之分。
3.4數(shù)據(jù)建模關(guān)聯(lián)數(shù)量的表示在ER圖中用圓圈表示所關(guān)聯(lián)的實(shí)例是可選的,隱含表示“0”,沒(méi)有出現(xiàn)圓圈就意味著是必須的。出現(xiàn)在連線上的短豎線可以看成是“1”。
3.4數(shù)據(jù)建模關(guān)聯(lián)關(guān)系舉例3.4數(shù)據(jù)建模關(guān)系的屬性關(guān)系本身也可能有屬性,這在多對(duì)多的關(guān)系中尤其常見(jiàn),如學(xué)生和課程之間的關(guān)系可起名為“選課”,其屬性應(yīng)該有學(xué)期、成績(jī)等。關(guān)系屬性的表示:在表示關(guān)系的無(wú)向邊上再加一個(gè)菱形框,并在菱形框中標(biāo)明關(guān)系的名字,關(guān)系的屬性同樣用橢圓形或圓角矩形表示,并用無(wú)向邊將關(guān)系與其屬性連接起來(lái)。
3.4數(shù)據(jù)建模關(guān)系的屬性3.4數(shù)據(jù)建模銀行儲(chǔ)蓄系統(tǒng)的ER圖3.5行為建模狀態(tài)轉(zhuǎn)換圖(簡(jiǎn)稱狀態(tài)圖)通過(guò)描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來(lái)表示系統(tǒng)的行為。狀態(tài)圖中使用的主要符號(hào)如圖所示。3.5行為建模狀態(tài)狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式,狀態(tài)規(guī)定了系統(tǒng)對(duì)事件的響應(yīng)方式。狀態(tài)可能有:初態(tài)(初始狀態(tài))、終態(tài)(最終狀態(tài))和中間態(tài)。在一張狀態(tài)圖中只能有一個(gè)初態(tài),而終態(tài)則可以有多個(gè),也可以沒(méi)有。
3.5行為建模狀態(tài)的表示:初態(tài)用實(shí)心圓表示,終態(tài)用牛眼圖形表示,中間態(tài)用圓角矩形表示。3.5行為建模狀態(tài)轉(zhuǎn)換狀態(tài)圖中兩個(gè)狀態(tài)之間帶箭頭的連線稱為狀態(tài)轉(zhuǎn)換。狀態(tài)的變遷通常是由事件觸發(fā)的,在這種情況下應(yīng)在表示狀態(tài)轉(zhuǎn)換的箭頭線上標(biāo)出觸發(fā)轉(zhuǎn)換的事件表達(dá)式。如果在箭頭線上未標(biāo)明事件,則表示在源狀態(tài)的內(nèi)部活動(dòng)執(zhí)行完之后自動(dòng)觸發(fā)轉(zhuǎn)換。3.5行為建模狀態(tài)轉(zhuǎn)換下圖為計(jì)算機(jī)應(yīng)用軟件的啟動(dòng)過(guò)程,在這個(gè)過(guò)程中沒(méi)有外部事件觸發(fā),每個(gè)狀態(tài)下的活動(dòng)完成時(shí),狀態(tài)發(fā)生轉(zhuǎn)換。
3.5行為建模事件事件是在某個(gè)特定時(shí)刻發(fā)生的事情,它是對(duì)引起系統(tǒng)做動(dòng)作或從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的外部事件的抽象。事件表達(dá)式的語(yǔ)法如下:
事件說(shuō)明(守衛(wèi)條件)/動(dòng)作表達(dá)式(1)事件說(shuō)明的語(yǔ)法如下:
事件名(參數(shù)表)(2)守衛(wèi)條件是一個(gè)布爾表達(dá)式。如果同時(shí)使用守衛(wèi)條件和事件說(shuō)明,則當(dāng)且僅當(dāng)事件發(fā)生且布爾表達(dá)式成立時(shí),狀態(tài)轉(zhuǎn)換才發(fā)生。如果只有守衛(wèi)條件沒(méi)有事件說(shuō)明,則只要守衛(wèi)條件為真,狀態(tài)轉(zhuǎn)換就發(fā)生。(3)動(dòng)作表達(dá)式是一個(gè)過(guò)程表達(dá)式,當(dāng)狀態(tài)轉(zhuǎn)換開(kāi)始時(shí)執(zhí)行該表達(dá)式。3.5行為建模存款過(guò)程的狀態(tài)圖(考慮新開(kāi)戶)3.5行為建模取款過(guò)程的狀態(tài)圖3.6數(shù)據(jù)字典數(shù)據(jù)字典以詞條方式定義在數(shù)據(jù)模型、功能模型和行為模型中出現(xiàn)的數(shù)據(jù)對(duì)象及控制信息的特性,給出它們的準(zhǔn)確定義,包括數(shù)據(jù)流、加工、數(shù)據(jù)文件、數(shù)據(jù)元素,以及數(shù)據(jù)源點(diǎn)、數(shù)據(jù)匯點(diǎn)等。
數(shù)據(jù)字典成為把3種分析模型黏合在一起的“黏合劑”,是分析模型的“核心”。3.6數(shù)據(jù)字典詞條描述對(duì)于在數(shù)據(jù)流圖中每一個(gè)被命名的圖形元素均加以定義;其內(nèi)容包括圖形元素的名字,圖形元素的別名或編號(hào),圖形元素類別(如加工、數(shù)據(jù)流、數(shù)據(jù)文件、數(shù)據(jù)元素、數(shù)據(jù)源點(diǎn)或數(shù)據(jù)匯點(diǎn)等)、描述、定義、位置等。
3.6數(shù)據(jù)字典數(shù)據(jù)流詞條數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳播的路徑,數(shù)據(jù)流詞條應(yīng)包括以下幾項(xiàng)內(nèi)容。①數(shù)據(jù)流名:要求與數(shù)據(jù)流圖中該圖形元素的名字一致。②簡(jiǎn)述:簡(jiǎn)要介紹它產(chǎn)生的原因和結(jié)果。③組成:數(shù)據(jù)流的數(shù)據(jù)結(jié)構(gòu)。④來(lái)源:數(shù)據(jù)流來(lái)自哪個(gè)加工或作為哪個(gè)數(shù)據(jù)源的外部實(shí)體。⑤去向:數(shù)據(jù)流流向哪個(gè)加工或作為哪個(gè)數(shù)據(jù)匯點(diǎn)的外部實(shí)體。⑥流通量:?jiǎn)挝粫r(shí)間數(shù)據(jù)的流通量。⑦峰值:流通量的極限值。3.6數(shù)據(jù)字典數(shù)據(jù)元素詞條數(shù)據(jù)流圖中的每個(gè)數(shù)據(jù)結(jié)構(gòu)都是由數(shù)據(jù)元素構(gòu)成的,數(shù)據(jù)元素是數(shù)據(jù)處理中最小的、不可再分的單位,它直接反映事物的某一特征。①類型:數(shù)據(jù)元素分為數(shù)字型與文字型。數(shù)字型又分為離散值和連續(xù)值,文字的類型用編碼類型和長(zhǎng)度區(qū)分。②取值范圍:離散值的取值或是枚舉的(如3,17,21),或是介于上下界的一組數(shù)(如2..100);連續(xù)值一般是有取值范圍的實(shí)數(shù)集(如0.0..100.0)。對(duì)于文字型,文字的取值需加以定義。③相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu)。3.6數(shù)據(jù)字典數(shù)據(jù)存儲(chǔ)文件詞條數(shù)據(jù)存儲(chǔ)文件是數(shù)據(jù)保存的地方。一個(gè)數(shù)據(jù)存儲(chǔ)文件詞條應(yīng)有以下幾項(xiàng)內(nèi)容。①文件名:要求與數(shù)據(jù)流圖中該圖形元素的名字一致。②簡(jiǎn)述:簡(jiǎn)要介紹存放的是什么數(shù)據(jù)。③組成:文件的數(shù)據(jù)結(jié)構(gòu)。④輸入:從哪些加工獲取數(shù)據(jù)。⑤輸出:由哪些加工使用數(shù)據(jù)。⑥存取方式:分為順序、直接、關(guān)鍵碼等不同存取方式。⑦存取頻率:?jiǎn)挝粫r(shí)間的存取次數(shù)。3.6數(shù)據(jù)字典加工詞條加工可以使用諸如判定表、判定樹(shù)、結(jié)構(gòu)化語(yǔ)言等形式表達(dá),主要描述如下。①加工名:要求與數(shù)據(jù)流圖中該圖形元素的名字一致。②編號(hào):用以反映該加工的層次和父子關(guān)系。③簡(jiǎn)述:加工邏輯及功能簡(jiǎn)述。④輸入:加工的輸入數(shù)據(jù)流。⑤輸出:加工的輸出數(shù)據(jù)流。⑥加工邏輯:簡(jiǎn)述加工程序和加工順序。3.6數(shù)據(jù)字典數(shù)據(jù)源點(diǎn)及數(shù)據(jù)匯點(diǎn)詞條對(duì)于一個(gè)數(shù)據(jù)處理系統(tǒng)來(lái)說(shuō),數(shù)據(jù)源點(diǎn)和數(shù)據(jù)匯點(diǎn)應(yīng)比較少。
①名稱:要求與數(shù)據(jù)流圖中該外部實(shí)體的名字一致。②簡(jiǎn)述:簡(jiǎn)要描述是什么外部實(shí)體。③有關(guān)數(shù)據(jù)流:該實(shí)體與系統(tǒng)交互時(shí)涉及哪些數(shù)據(jù)流。④數(shù)目:該實(shí)體與系統(tǒng)交互的次數(shù)。3.6數(shù)據(jù)字典數(shù)據(jù)結(jié)構(gòu)描述在數(shù)據(jù)字典的編制中,分析員最常用的描述數(shù)據(jù)結(jié)構(gòu)的方式有定義式、Warnier圖等。定義式。在數(shù)據(jù)流圖中,數(shù)據(jù)流和數(shù)據(jù)文件都具有一定的數(shù)據(jù)結(jié)構(gòu),因此,必須以一種清晰、準(zhǔn)確、無(wú)二義性的方式來(lái)描述數(shù)據(jù)結(jié)構(gòu)。Warnier圖。Warnier圖是表示數(shù)據(jù)結(jié)構(gòu)的另一種圖形工具,它用樹(shù)形結(jié)構(gòu)來(lái)描繪數(shù)據(jù)結(jié)構(gòu)。3.6數(shù)據(jù)字典定義式中的符號(hào)3.6數(shù)據(jù)字典定義式舉例:存折3.6數(shù)據(jù)字典存折的定義格式存折=戶名+所號(hào)+賬號(hào)+開(kāi)戶日+性質(zhì)+(印密)+
1{存取行}50所號(hào)=“001”..“999”戶名=2{字母}24賬號(hào)=“00000000001”..“99999999999”開(kāi)戶日=年+月+日性質(zhì)=“1”..“6”
印密=(“0”|“000001”..“999999”)
存取行=日期+(摘要)+支出+存入+余額+操作+復(fù)核日期=年+月+日年=“0001”..“9999”月=“01”..“12”日=“01”..“31”3.6數(shù)據(jù)字典存折的定義格式摘要=1{字母}4支出=金額存入=金額余額=金額金額=“0000000.01”..“9999999.99”操作=“00001”..“99999”復(fù)核=“00001”..“99999”字母=[“a”..“z”|“A”..“Z”]3.6數(shù)據(jù)字典Warnier圖舉例:存折3.7加工規(guī)格說(shuō)明在對(duì)數(shù)據(jù)流圖的分解中,位于層次樹(shù)最低層的加工也稱為基本加工或原子加工,對(duì)于每一個(gè)基本加工都需要進(jìn)一步說(shuō)明,這稱為加工規(guī)格說(shuō)明。在編寫(xiě)基本加工的規(guī)格說(shuō)明時(shí),主要目的是要表達(dá)“做什么”,而不是“怎樣做”。3.7加工規(guī)格說(shuō)明加工規(guī)格說(shuō)明應(yīng)滿足如下的要求:(1)對(duì)數(shù)據(jù)流圖的每一個(gè)基本加工,必須有一個(gè)加工規(guī)格說(shuō)明。(2)加工規(guī)格說(shuō)明必須描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則。(3)加工規(guī)格說(shuō)明必須描述實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)。(4)加工規(guī)格說(shuō)明中包含的信息應(yīng)是充足的,完備的,有用的,沒(méi)有重復(fù)的多余信息。
3.7加工規(guī)格說(shuō)明決策表決策表由4個(gè)部分組成:左上部分是條件茬,在此區(qū)域列出了各種可能的單個(gè)條件;左下部分是動(dòng)作茬,在此區(qū)域列出了可能采取的單個(gè)動(dòng)作;右上部分是條件項(xiàng),在此區(qū)域列出了針對(duì)各種條件的每一組條件取值的組合;右下部分是動(dòng)作項(xiàng),這些動(dòng)作項(xiàng)與條件項(xiàng)緊密相關(guān),它指出了在條件項(xiàng)的各組取值的組合情況下應(yīng)采取的動(dòng)作。3.7加工規(guī)格說(shuō)明決策表舉例商店業(yè)務(wù)處理系統(tǒng)中“檢查訂貨單”的決策表。3.7加工規(guī)格說(shuō)明決策表的改進(jìn)
如果表中有兩條或更多的處理規(guī)則具有相同的動(dòng)作,并且其條件項(xiàng)之間存在著某種關(guān)系,就可設(shè)法將它們合并。
3.7加工規(guī)格說(shuō)明建立決策表的步驟(1)列出與一個(gè)具體過(guò)程(或模塊)有關(guān)的所有處理。(2)列出過(guò)程執(zhí)行期間的所有條件(或所有判斷)。(3)將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合。(4)將右部每一縱列規(guī)定為一個(gè)處理規(guī)則,即對(duì)于某一條件取值組合將有什么動(dòng)作。3.7加工規(guī)格說(shuō)明決策樹(shù)決策樹(shù)(decisiontree)也是用來(lái)表達(dá)加工邏輯的一種工具,有時(shí)侯它比決策表更直觀。檢查訂貨單的決策樹(shù)
3.8需求規(guī)格說(shuō)明需求分析階段的重要任務(wù)之一是根據(jù)分析的結(jié)果編寫(xiě)需求規(guī)格說(shuō)明,經(jīng)過(guò)嚴(yán)格評(píng)審并得到用戶確認(rèn)之后,作為這個(gè)階段的最終成果。按照國(guó)家標(biāo)準(zhǔn)GB/T8567—2006《計(jì)算機(jī)軟件文檔編制規(guī)范》,涉及需求規(guī)格說(shuō)明的文檔有“軟件需求規(guī)格說(shuō)明(SRS)”、“數(shù)據(jù)需求說(shuō)明(DRD)”等。小結(jié)傳統(tǒng)軟件工程方法學(xué)使用結(jié)構(gòu)化分析技術(shù)完成用戶需求的分析工作。需求分析是發(fā)現(xiàn)、求精、建模、規(guī)格說(shuō)明和復(fù)審的過(guò)程。為了更好地理解問(wèn)題,人們常常采用建立模型的方法,結(jié)構(gòu)化分析實(shí)質(zhì)上就是一種建?;顒?dòng),在需求分析階段通常建立數(shù)據(jù)模型、功能模型和行為模型。That'sAll!第2部分結(jié)構(gòu)化軟件開(kāi)發(fā)方法第4章總體設(shè)計(jì)4.1軟件設(shè)計(jì)的概念及目標(biāo)軟件設(shè)計(jì)的概念
設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。在20世紀(jì)90年代早期,Lotus1-2-3的發(fā)明人MitchKapor在Dr.Dobbs雜志上發(fā)表了“軟件設(shè)計(jì)宣言”,其中指出:“什么是設(shè)計(jì)?設(shè)計(jì)是你站在兩個(gè)世界——技術(shù)世界和人類的目標(biāo)世界——而你嘗試將這兩個(gè)世界結(jié)合在一起……”。4.1軟件設(shè)計(jì)的概念及目標(biāo)軟件設(shè)計(jì)的概念
羅馬建筑批評(píng)家Vitruvius提出了這樣一個(gè)觀念:“設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用和令人賞心悅目”。4.1軟件設(shè)計(jì)的概念及目標(biāo)軟件設(shè)計(jì)的目標(biāo)軟件設(shè)計(jì)的目標(biāo)涉及性能、可靠性、成本、維護(hù)等多個(gè)方面的目標(biāo)。一般來(lái)說(shuō),可以從需求規(guī)格說(shuō)明書(shū)中選擇重要的質(zhì)量屬性,作為設(shè)計(jì)目標(biāo),如性能目標(biāo)、可靠性目標(biāo)等,而成本和維護(hù)方面往往需要從客戶和供應(yīng)商那里得到。4.1軟件設(shè)計(jì)的概念及目標(biāo)性能準(zhǔn)則
性能準(zhǔn)則包括對(duì)系統(tǒng)速度和空間的需求。4.1軟件設(shè)計(jì)的概念及目標(biāo)可靠性準(zhǔn)則可靠性準(zhǔn)則決定了對(duì)減少系統(tǒng)崩潰及隨后所造成危害所做的努力程度。4.1軟件設(shè)計(jì)的概念及目標(biāo)成本準(zhǔn)則成本準(zhǔn)則包括開(kāi)發(fā)、配置和管理系統(tǒng)的成本。成本準(zhǔn)則不僅包括設(shè)計(jì)上的考慮,還包括管理上的考慮。4.1軟件設(shè)計(jì)的概念及目標(biāo)維護(hù)準(zhǔn)則護(hù)準(zhǔn)則確定在完成開(kāi)發(fā)后再改變系統(tǒng)的困難程度。4.1軟件設(shè)計(jì)的概念及目標(biāo)最終用戶準(zhǔn)則最終用戶準(zhǔn)則包括從用戶視點(diǎn)出發(fā)所需的屬性,但并沒(méi)有覆蓋性能準(zhǔn)則和可靠性準(zhǔn)則。
4.1軟件設(shè)計(jì)的概念及目標(biāo)設(shè)計(jì)目標(biāo)的某些權(quán)衡空間與速度交付時(shí)間與功能交付時(shí)間與質(zhì)量交付時(shí)間與人員配置
4.2軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的主要任務(wù)是要解決如何做的問(wèn)題,要在需求分析的基礎(chǔ)上,建立各種設(shè)計(jì)模型,并通過(guò)對(duì)設(shè)計(jì)模型的分析和評(píng)估,來(lái)確定這些模型是否能夠滿足需求。軟件設(shè)計(jì)是將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到構(gòu)造之間起到了橋梁作用。在軟件設(shè)計(jì)階段,往往存在多種設(shè)計(jì)方案,通常需要在多種設(shè)計(jì)方案之中進(jìn)行決策和折中,并使用選定的方案進(jìn)行后續(xù)的開(kāi)發(fā)活動(dòng)。4.2軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從工程管理的角度,可以將軟件設(shè)計(jì)分為概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)4部分;面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)4部分。4.2軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。4.2軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)體系結(jié)構(gòu)設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)定義軟件的主要結(jié)構(gòu)元素及其之間的關(guān)系。類設(shè)計(jì):類設(shè)計(jì)對(duì)分析階段所建立的分析類模型進(jìn)行細(xì)化,轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)及軟件實(shí)現(xiàn)所要求的數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)設(shè)計(jì):傳統(tǒng)方法主要根據(jù)需求階段所建立的實(shí)體—關(guān)系圖(ER圖)來(lái)確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。4.2軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)接口設(shè)計(jì):接口設(shè)計(jì)描述用戶界面,軟件和其他硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構(gòu)件之間的內(nèi)部接口。構(gòu)件級(jí)設(shè)計(jì):構(gòu)件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)元素變換為對(duì)軟件構(gòu)件的過(guò)程性描述。過(guò)程設(shè)計(jì):過(guò)程設(shè)計(jì)的主要工作是確定軟件各個(gè)組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。4.2軟件設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的輸入信息。兩者的關(guān)系如圖所示。4.2軟件設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn)(1)研究、分析和審查數(shù)據(jù)流圖。(2)根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類型:變換型和事務(wù)型。針對(duì)兩種不同的類型分別進(jìn)行分析處理。(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。(4)利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。(5)根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫(kù)設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)。(6)在上面設(shè)計(jì)的基礎(chǔ)上,并依據(jù)分析模型中的加工規(guī)格說(shuō)明、狀態(tài)轉(zhuǎn)換圖進(jìn)行過(guò)程設(shè)計(jì)。(7)制定測(cè)試計(jì)劃。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊結(jié)構(gòu)及表示一般通過(guò)功能劃分過(guò)程來(lái)完成軟件結(jié)構(gòu)設(shè)計(jì)。功能劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問(wèn)題進(jìn)行分割,使其每一部分用一個(gè)或幾個(gè)軟件模塊加以解決,整個(gè)問(wèn)題就解決了。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊一個(gè)軟件系統(tǒng)通常由很多模塊組成,結(jié)構(gòu)化程序設(shè)計(jì)中的函數(shù)和子程序都可稱為模塊,它是程序語(yǔ)句按邏輯關(guān)系建立起來(lái)的組合體。模塊用矩形框表示,并用模塊的名字標(biāo)記它。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊的分類4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)模塊的結(jié)構(gòu)模塊結(jié)構(gòu)最普通的形式就是樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu),如圖所示。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖結(jié)構(gòu)圖(structurechart,SC)是精確表達(dá)模塊結(jié)構(gòu)的圖形表示工具。
(1)模塊的調(diào)用關(guān)系和接口:在結(jié)構(gòu)圖中,兩個(gè)模塊之間用單向箭頭連接。(2)模塊間的信息傳遞:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。
4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖模塊間的調(diào)用關(guān)系和接口表示4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖(3)條件調(diào)用和循環(huán)調(diào)用:當(dāng)模塊A有條件地調(diào)用另一個(gè)模塊B時(shí),在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào);當(dāng)一個(gè)模塊A反復(fù)地調(diào)用模塊C和模塊D時(shí),在調(diào)用箭頭尾部則標(biāo)以一個(gè)弧形符號(hào)。
4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)圖(4)結(jié)構(gòu)圖的形態(tài)特征。在圖中,上級(jí)模塊調(diào)用下級(jí)模塊,它們之間存在主從關(guān)系。相關(guān)概念:寬度、深度、扇入、扇出。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間邏輯關(guān)系的一種表示。
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相關(guān)程度,以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。4.3模塊結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)典型的數(shù)據(jù)結(jié)構(gòu)4.4創(chuàng)建良好設(shè)計(jì)的原則分而治之和模塊化
分而治之是人們解決大型復(fù)雜問(wèn)題時(shí)通常采用的策略,將大型復(fù)雜的問(wèn)題分解為許多容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決了。軟件的體系結(jié)構(gòu)設(shè)計(jì)和模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)。4.4創(chuàng)建良好設(shè)計(jì)的原則模塊化模塊化是將整體軟件劃分成獨(dú)立命名且可獨(dú)立訪問(wèn)的模塊,不同的模塊通常具有不同的功能或職責(zé)。每個(gè)模塊可獨(dú)立地開(kāi)發(fā)、測(cè)試,最后組裝成完整的軟件。
4.4創(chuàng)建良好設(shè)計(jì)的原則模塊化盡管模塊分解可以簡(jiǎn)化要解決的問(wèn)題,但模塊分解并不是越小越好。模塊大小、模塊數(shù)目與成本的關(guān)系如下圖。
4.4創(chuàng)建良好設(shè)計(jì)的原則模塊獨(dú)立性模塊的獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡(jiǎn)單的。
一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性,即模塊間的耦合和模塊的內(nèi)聚。耦合是模塊之間的相對(duì)獨(dú)立性(互相連接的緊密程度)的度量。內(nèi)聚是模塊功能強(qiáng)度(模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高度內(nèi)聚、松散耦合的模塊。
4.4創(chuàng)建良好設(shè)計(jì)的原則松散耦合
耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度量。它取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過(guò)接口。一般模塊之間可能的連接方式有7種,構(gòu)成耦合性的7種類型,它們之間的關(guān)系如圖所示。4.4創(chuàng)建良好設(shè)計(jì)的原則(1)非直接耦合。如果兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的,這就是非直接耦合。這種耦合的模塊獨(dú)立性最強(qiáng)。(2)數(shù)據(jù)耦合。如果一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來(lái)交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。(3)標(biāo)記耦合。如果一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。
4.4創(chuàng)建良好設(shè)計(jì)的原則(4)控制耦合。如果一個(gè)模塊通過(guò)傳送開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合,如圖所示。(5)外部耦合。一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
4.4創(chuàng)建良好設(shè)計(jì)的原則(6)公共耦合。若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。如圖所示,若只是兩個(gè)模塊之間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。4.4創(chuàng)建良好設(shè)計(jì)的原則(7)內(nèi)容耦合。如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合,如圖所示。4.4創(chuàng)建良好設(shè)計(jì)的原則高度內(nèi)聚
內(nèi)聚程度高的模塊應(yīng)當(dāng)只完成軟件過(guò)程中的一個(gè)單一的任務(wù)。一般模塊的內(nèi)聚性分為7種類型,它們的關(guān)系如圖所示。4.4創(chuàng)建良好設(shè)計(jì)的原則(1)巧合內(nèi)聚。又稱為偶然內(nèi)聚,當(dāng)模塊內(nèi)各部分之間沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。
4.4創(chuàng)建良好設(shè)計(jì)的原則(2)邏輯內(nèi)聚。這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能。4.4創(chuàng)建良好設(shè)計(jì)的原則(3)時(shí)間內(nèi)聚。又稱經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行,如初始化模塊和終止模塊。(4)過(guò)程內(nèi)聚。如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且必須以特定次序執(zhí)行,則稱這個(gè)模塊為過(guò)程內(nèi)聚模塊。(5)通信內(nèi)聚。如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。
4.4創(chuàng)建良好設(shè)計(jì)的原則(6)信息內(nèi)聚。這種模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。4.4創(chuàng)建良好設(shè)計(jì)的原則(7)功能內(nèi)聚。一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,則稱該模塊為功能內(nèi)聚模塊。
4.4創(chuàng)建良好設(shè)計(jì)的原則提高抽象層次在進(jìn)行軟件設(shè)計(jì)時(shí),設(shè)計(jì)開(kāi)始時(shí)應(yīng)盡量提高軟件的抽象層次,按抽象級(jí)別從高到低進(jìn)行軟件設(shè)計(jì)。將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次的過(guò)程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確立整個(gè)系統(tǒng)的體系結(jié)構(gòu)。4.4創(chuàng)建良好設(shè)計(jì)的原則復(fù)用性設(shè)計(jì)復(fù)用是指同一實(shí)體不做修改或稍加修改就可以多次重復(fù)使用,將復(fù)用的思想用于軟件開(kāi)發(fā),稱為軟件復(fù)用。在軟件的設(shè)計(jì)階段,就要考慮軟件復(fù)用問(wèn)題,并進(jìn)行復(fù)用性設(shè)計(jì)。復(fù)用性設(shè)計(jì)有兩方面的含義:一是盡量使用已有的構(gòu)件;二是如果確實(shí)需要?jiǎng)?chuàng)建新的構(gòu)件,則在設(shè)計(jì)時(shí)應(yīng)該考慮將來(lái)的可重復(fù)使用性。4.4創(chuàng)建良好設(shè)計(jì)的原則靈活性設(shè)計(jì)在設(shè)計(jì)中引入靈活性的方法如下。(1)降低耦合并提高內(nèi)聚(易于提高替換能力);(2)建立抽象(創(chuàng)建有多態(tài)操作的接口和父類);(3)不要將代碼寫(xiě)死(消除代碼中的常數(shù));(4)拋出異常(由操作的調(diào)用者處理異常);(5)使用并創(chuàng)建可復(fù)用的代碼。4.4創(chuàng)建良好設(shè)計(jì)的原則預(yù)防過(guò)期
在設(shè)計(jì)中應(yīng)遵循的預(yù)防過(guò)期的規(guī)則如下:(1)避免使用早期發(fā)布的技術(shù)。(2)避免使用針對(duì)特定環(huán)境的軟件庫(kù)。(3)避免使用軟件庫(kù)中文檔不全或很少使用的功能。(4)避免使用小公司或可能不提供長(zhǎng)期支持的公司提供的可復(fù)用構(gòu)件或特殊硬件。(5)使用眾多廠商支持的標(biāo)準(zhǔn)語(yǔ)言和技術(shù)。4.4創(chuàng)建良好設(shè)計(jì)的原則可移植性設(shè)計(jì)
軟件的可移植性指的是軟件不經(jīng)修改或稍加修改就可以運(yùn)行于不同軟硬件環(huán)境(CPU、OS和編譯器)的能力,可移植性是軟件的質(zhì)量要素之一。良好的可移植性可以延長(zhǎng)軟件的生命周期,拓展軟件的應(yīng)用環(huán)境。可移植性設(shè)計(jì)的主要目標(biāo)是讓軟件在盡可能多的平臺(tái)上運(yùn)行。
4.4創(chuàng)建良好設(shè)計(jì)的原則可移植性設(shè)計(jì)
實(shí)現(xiàn)可移植性的規(guī)則主要有:(1)軟件設(shè)計(jì)時(shí)應(yīng)該將“設(shè)備相關(guān)程序”與“設(shè)備無(wú)關(guān)程序”分開(kāi),將“功能模塊”與“用戶界面”分開(kāi),這樣可以提高可移植性。(2)避免使用特定環(huán)境的專有功能。(3)使用不依賴特定平臺(tái)的程序設(shè)計(jì)語(yǔ)言。(4)小心使用可能依賴某一平臺(tái)的類庫(kù)。(5)了解其他語(yǔ)言可能依賴特殊硬件結(jié)構(gòu)的功能和文本文件的差異。4.4創(chuàng)建良好設(shè)計(jì)的原則可測(cè)試性設(shè)計(jì)
實(shí)現(xiàn)在進(jìn)行可測(cè)試性設(shè)計(jì)時(shí),需要堅(jiān)持以下原則。(1)堅(jiān)持測(cè)試驅(qū)動(dòng)設(shè)計(jì)(測(cè)試先行)的方法。一般先編寫(xiě)驗(yàn)收測(cè)試代碼,再編寫(xiě)單元測(cè)試代碼,編寫(xiě)和實(shí)現(xiàn)迭代進(jìn)行。(2)函數(shù)小型化。盡量做到一個(gè)函數(shù)對(duì)應(yīng)一個(gè)操作,使函數(shù)小型化。(3)數(shù)據(jù)的顯示與控制分離。將處理代碼與圖形用戶界面(GUI)分離。這樣,各種GUI動(dòng)作就變成了模型上的簡(jiǎn)單方法調(diào)用。
4.4創(chuàng)建良好設(shè)計(jì)的原則防御性設(shè)計(jì)
防御性設(shè)計(jì)技術(shù)的主要思想如下:(1)被調(diào)用操作為正常執(zhí)行必須滿足的條件稱為前置條件,在調(diào)用一個(gè)操作時(shí)要確保該操作的前置條件成立。(2)被調(diào)用操作正常執(zhí)行所得到的結(jié)果必須滿足的條件稱為后置條件,在被調(diào)用操作返回后要確保該操作的后置條件成立。(3)被調(diào)用操作在執(zhí)行時(shí)一直保持成立的條件稱為不變式。(4)前置條件、后置條件和不變式都是布爾表達(dá)式,其計(jì)算結(jié)果為假,表示有錯(cuò)誤發(fā)生。(5)可以使用斷言機(jī)制,在重要構(gòu)件的邊界應(yīng)始終保留嚴(yán)格的斷言檢測(cè)。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法也稱為過(guò)程驅(qū)動(dòng)的設(shè)計(jì)方法;這種方法與軟件需求分析階段的結(jié)構(gòu)化分析方法相銜接,可以很方便地將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述;這種方法還能和編碼階段的“結(jié)構(gòu)化程序設(shè)計(jì)方法”相適應(yīng),成為常用的結(jié)構(gòu)化設(shè)計(jì)方法。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法設(shè)計(jì)過(guò)程基于數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程4.5面向數(shù)據(jù)流的設(shè)計(jì)方法典型的數(shù)據(jù)流類型和系統(tǒng)結(jié)構(gòu)典型的數(shù)據(jù)流類型有變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流,數(shù)據(jù)流的類型不同,得到的系統(tǒng)結(jié)構(gòu)也不同。通常,一個(gè)系統(tǒng)中的所有數(shù)據(jù)流都可以認(rèn)為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的數(shù)據(jù)流時(shí),建議采用事務(wù)型映射方法進(jìn)行設(shè)計(jì)。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換型數(shù)據(jù)流
變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為3步,即取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖所示。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換型系統(tǒng)結(jié)構(gòu)圖
變換型系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出3部分組成。
4.5面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)型數(shù)據(jù)流
通常接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。完成選擇分派任務(wù)的部分稱為事務(wù)處理中心,或分派部件。
4.5面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)型系統(tǒng)結(jié)構(gòu)圖
4.5面向數(shù)據(jù)流的設(shè)計(jì)方法簡(jiǎn)化的事務(wù)型系統(tǒng)結(jié)構(gòu)圖
事務(wù)型系統(tǒng)的結(jié)構(gòu)圖可以有多種不同的形式,如有多層操作層或沒(méi)有操作層。如果調(diào)度模塊并不復(fù)雜,可將其歸入事務(wù)中心模塊。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換型映射方法系統(tǒng)數(shù)據(jù)處理問(wèn)題的處理流程總能表示為變換型數(shù)據(jù)流圖,進(jìn)一步可采用變換型映射方法建立系統(tǒng)的結(jié)構(gòu)圖。也可能遇到明顯的事務(wù)數(shù)據(jù)處理問(wèn)題,這時(shí)可采用事務(wù)型映射方法。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟
(1)重畫(huà)數(shù)據(jù)流圖。在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫(huà)數(shù)據(jù)流圖的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)的。(2)在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。
4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步驟
(3)進(jìn)行一級(jí)分解,設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一層。自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹(shù)形結(jié)構(gòu)圖的根或頂層模塊。首先設(shè)計(jì)一個(gè)主模塊,并用程序的名字為它命名,然后將它畫(huà)在與中心變換相對(duì)應(yīng)的位置上。第1層設(shè)計(jì):為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析方法的步
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水資源管理政策與法規(guī)
- 區(qū)塊鏈技術(shù)應(yīng)用授權(quán)委托書(shū)樣本
- 煙囪自動(dòng)滅火系統(tǒng)安裝合同
- 環(huán)保國(guó)際合作機(jī)構(gòu)財(cái)務(wù)管理辦法
- 文化主題客棧租賃合同
- 核能發(fā)電用電安全檢查細(xì)則
- 鋼結(jié)構(gòu)節(jié)能施工合同
- 城市景觀雕塑維修臨建合同
- 2024年橋梁工程設(shè)計(jì)施工總承包合同
- 2024年物聯(lián)網(wǎng)平臺(tái)搭建與應(yīng)用合同
- 2022-2023學(xué)年廣東省深圳市鹽田區(qū)六年級(jí)上學(xué)期期末英語(yǔ)試卷
- 影視制作技能薪酬激勵(lì)
- 24秋國(guó)家開(kāi)放大學(xué)《勞動(dòng)關(guān)系與社會(huì)保障實(shí)務(wù)》形考任務(wù)1-4參考答案
- 2024國(guó)有企業(yè)與私營(yíng)企業(yè)之間的混合所有制改革合作協(xié)議
- 部編版歷史初二上學(xué)期期末試題與參考答案(2024-2025學(xué)年)
- 國(guó)際貿(mào)易實(shí)務(wù)(雙語(yǔ))學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 種豬場(chǎng)重點(diǎn)動(dòng)物疫病綜合控制與凈化總體方案
- 2024年HOP重大事故預(yù)防-人與組織安全績(jī)效手冊(cè)
- 四川省成都市成外2025屆數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 統(tǒng)編版小學(xué)語(yǔ)文五年級(jí)上冊(cè)必背古詩(shī)詞及日積月累(含譯文)
- 總包對(duì)分包單位管理?xiàng)l例及獎(jiǎng)懲措施方案
評(píng)論
0/150
提交評(píng)論