軟件工程課件 全_第1頁
軟件工程課件 全_第2頁
軟件工程課件 全_第3頁
軟件工程課件 全_第4頁
軟件工程課件 全_第5頁
已閱讀5頁,還剩667頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1軟件工程概述2軟件的定義及可行性研究3需求分析4概要設(shè)計(jì)5詳細(xì)設(shè)計(jì)目錄6面向?qū)ο蟾拍詈蚏ose建模技術(shù)7面向?qū)ο蟮姆治雠c設(shè)計(jì)8編碼9軟件測試10軟件維護(hù)11軟件項(xiàng)目管理1軟件工程概述2軟件的定義及可行性研究3需求分析4概要設(shè)計(jì)51軟件工程概述第1章教學(xué)要求[1]了解軟件的概念、特點(diǎn)及主要分類;[2]掌握軟件危機(jī)的產(chǎn)生、表現(xiàn)及原因;[3]掌握軟件工程的定義以及基本原理;[4]掌握軟件生存周期概念;[5]理解軟件開發(fā)模型;[6]了解軟件開發(fā)工具與環(huán)境。軟件工程概述第1章教學(xué)[1]了解軟件的概念、特點(diǎn)及主要分類;21.1軟件與軟件危機(jī)第1章1.軟件的定義軟件是計(jì)算機(jī)中與硬件相互依存的另一部分,軟件包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。1.1.1軟件的定義及其特點(diǎn)軟件程序數(shù)據(jù)文檔程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料1.1軟件與軟件危機(jī)第1章1.軟件的定義1.1.1軟件32.軟件具有下列特點(diǎn):1.1軟件與軟件危機(jī)第1章1.1.1軟件的定義及其特點(diǎn)軟件是邏輯產(chǎn)品生產(chǎn)與硬件不同不會(huì)磨損和老化依賴硬件手工開發(fā)為主成本高、風(fēng)險(xiǎn)高比硬件發(fā)展慢2.軟件具有下列特點(diǎn):1.1軟件與軟件危機(jī)第1章1.1.141.軟件技術(shù)的發(fā)展1.1軟件與軟件危機(jī)第1章1.1.2軟件的發(fā)展及其分類程序設(shè)計(jì)程序系統(tǒng)軟件工程1.軟件技術(shù)的發(fā)展1.1軟件與軟件危機(jī)第1章1.1.252.軟件的分類1.1軟件與軟件危機(jī)第1章1.1.2軟件的發(fā)展及其分類重點(diǎn)掌握2.軟件的分類1.1軟件與軟件危機(jī)第1章1.1.2軟件61.軟件危機(jī)的主要表現(xiàn)1.1軟件與軟件危機(jī)第1章1.1.3軟件危機(jī)(1)軟件不能滿足用戶的需求。(2)軟件開發(fā)成本嚴(yán)重超標(biāo),開發(fā)周期大大超過規(guī)定日期。(3)軟件質(zhì)量難于保證,可靠性差。(4)軟件難于維護(hù)。(5)軟件開發(fā)速度跟不上計(jì)算機(jī)發(fā)展速度。1.軟件危機(jī)的主要表現(xiàn)1.1軟件與軟件危機(jī)第1章1.1.372.軟件危機(jī)產(chǎn)生的原因1.1軟件與軟件危機(jī)第1章1.1.3軟件危機(jī)(1)忽視軟件開發(fā)前期的調(diào)研和需求分析工作。(2)缺乏軟件開發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)計(jì)劃很難制定。(3)開發(fā)過程缺乏統(tǒng)一的、規(guī)范化的方法論指導(dǎo)。(4)忽視與用戶、開發(fā)組成員間的及時(shí)有效的溝通。(5)文檔資料不規(guī)范或不準(zhǔn)確。導(dǎo)致開發(fā)者失去工作的基礎(chǔ),管理者失去管理的依據(jù)。(6)沒有完善的質(zhì)量保證體系。2.軟件危機(jī)產(chǎn)生的原因1.1軟件與軟件危機(jī)第1章1.1.383.軟件危機(jī)解決途徑1.1軟件與軟件危機(jī)第1章1.1.3軟件危機(jī)要解決軟件危機(jī)問題,需要采取以下措施:(1)使用好的軟件開發(fā)技術(shù)和方法。(2)使用好的軟件開發(fā)工具,提高軟件生產(chǎn)率。(3)有良好的組織、嚴(yán)密的管理,各方面人員相互配合共同完成任務(wù)。為了解決軟件危機(jī),既要有技術(shù)措施(好的方法和工具),也要有組織管理措施。軟件工程正是從技術(shù)和管理兩方面來研究如何更好地開發(fā)和維護(hù)計(jì)算機(jī)軟件的。3.軟件危機(jī)解決途徑1.1軟件與軟件危機(jī)第1章1.1.39為了克服軟件危機(jī),1968年10月在北大西洋公約組織(NATO)召開的計(jì)算機(jī)科學(xué)會(huì)議上,F(xiàn)ritzBauer首次提出“軟件工程”的概念。按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機(jī)的一條主要出路。軟件工程的主要思想是強(qiáng)調(diào)軟件開發(fā)過程中應(yīng)用工程化原則的重要性。軟件工程的目標(biāo)是實(shí)現(xiàn)軟件的優(yōu)質(zhì)高產(chǎn)。軟件工程的目的是在經(jīng)費(fèi)的預(yù)算范圍內(nèi),按期交付出用戶滿意的、質(zhì)量合格的軟件產(chǎn)品。1.2軟件工程第1章1.2.1軟件工程的定義和目標(biāo)為了克服軟件危機(jī),1968年10月在北大西10著名軟件工程專家Boehm提出。(1)用分階段的軟件生存周期計(jì)劃進(jìn)行嚴(yán)格的質(zhì)量管理。(2)堅(jiān)持進(jìn)行階段評(píng)審。(3)實(shí)行嚴(yán)格的產(chǎn)品控制。(4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)。(5)軟件工程結(jié)果應(yīng)能清楚地審查。(6)開發(fā)小組的人員應(yīng)該少而精。(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。1.2軟件工程第1章1.2.2軟件工程的基本原理著名軟件工程專家Boehm提出。1.2軟111.2軟件工程第1章1.2.3軟件工程的研究內(nèi)容1.2軟件工程第1章1.2.3軟件工程的研究內(nèi)容121.3軟件生存周期第1章可行性研究問題定義需求分析詳細(xì)設(shè)計(jì)總體設(shè)計(jì)編碼系統(tǒng)測試確認(rèn)測試集成測試單元測試運(yùn)行與維護(hù)計(jì)劃時(shí)期開發(fā)時(shí)期運(yùn)行時(shí)期時(shí)間1.3軟件生存周期第1章可行性研究問題定義需求分析詳細(xì)設(shè)計(jì)總131.4軟件開發(fā)模型第1章1.4.1瀑布模型問題定義可行性研究需求分析軟件設(shè)計(jì)編碼軟件測試運(yùn)行維護(hù)開發(fā)時(shí)期運(yùn)行時(shí)期計(jì)劃時(shí)期1.4軟件開發(fā)模型第1章1.4.1瀑布模型問題定義可行141.4軟件開發(fā)模型第1章1.4.1瀑布模型瀑布模型的主要優(yōu)點(diǎn):(1)原理簡單、容易掌握。(2)各階段間都有驗(yàn)證和確認(rèn)環(huán)節(jié),以便進(jìn)行質(zhì)量管理。(3)主要用于支持結(jié)構(gòu)化方法。瀑布模型的主要缺點(diǎn):(1)缺乏靈活性,不能適應(yīng)用戶需求的變化。(2)缺乏演化性,返回上一級(jí)的開發(fā)需要付出十分高昂的代價(jià)。(3)是線性的軟件開發(fā)模型,回溯性很差。1.4軟件開發(fā)模型第1章1.4.1瀑布模型瀑布模型的主151.4軟件開發(fā)模型第1章1.4.2快速原型模型1.4軟件開發(fā)模型第1章1.4.2快速原型模型161.4軟件開發(fā)模型第1章1.4.2快速原型模型快速原型模型的優(yōu)點(diǎn):(1)增強(qiáng)了開發(fā)者與用戶間的交流,有助于滿足用戶的真實(shí)需求。(2)用戶可及早得到有用的產(chǎn)品,可及早發(fā)現(xiàn)問題,隨時(shí)糾正錯(cuò)誤。(3)減小技術(shù)、應(yīng)用風(fēng)險(xiǎn),可降低開發(fā)費(fèi)用,縮短開發(fā)時(shí)間。快速原型模型的缺點(diǎn):(1)缺乏豐富而強(qiáng)有力的軟件工具和開發(fā)環(huán)境。(2)對設(shè)計(jì)人員水平及開發(fā)環(huán)境要求較高。(3)在多次重復(fù)改變原型的過程中,程序員會(huì)厭倦。(4)對于做到徹底測試,更新文檔較為困難。1.4軟件開發(fā)模型第1章1.4.2快速原型模型快速原型171.4軟件開發(fā)模型第1章1.4.3漸增模型1.4軟件開發(fā)模型第1章1.4.3漸增模型181.4軟件開發(fā)模型第1章1.4.3漸增模型漸增模型的優(yōu)點(diǎn):漸增模型是瀑布模型的一個(gè)變體,可以看作是重復(fù)執(zhí)行的多個(gè)瀑布模型,具有瀑布模型的所有優(yōu)點(diǎn),此外,還有以下優(yōu)點(diǎn):(1)可分批次提交軟件產(chǎn)品,方便用戶及時(shí)了解軟件開發(fā)進(jìn)展情況,及早發(fā)現(xiàn)問題。(2)以組件為單位進(jìn)行開發(fā),降低了軟件開發(fā)風(fēng)險(xiǎn)。(3)開發(fā)順序靈活。優(yōu)先級(jí)最高的服務(wù)首先交付。漸增模型的缺點(diǎn):(1)由于對整個(gè)軟件系統(tǒng)的需求沒有一個(gè)完整的定義,會(huì)給總體設(shè)計(jì)帶來麻煩。(2)在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件結(jié)構(gòu)中時(shí),必須不破壞原來已開發(fā)出的產(chǎn)品。(3)軟件的體系結(jié)構(gòu)必須是開放的,即向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便。每次增量開發(fā)的產(chǎn)品都應(yīng)當(dāng)是可測試的、可擴(kuò)充的。1.4軟件開發(fā)模型第1章1.4.3漸增模型漸增模型的優(yōu)191.4軟件開發(fā)模型第1章1.4.4噴泉模型1.4軟件開發(fā)模型第1章1.4.4噴泉模型201.4軟件開發(fā)模型第1章1.4.4噴泉模型噴泉模型的主要特點(diǎn):(1)各階段相互重疊,反映了軟件過程的并行性。(2)以分析為基礎(chǔ),資源消耗呈塔形,在分析階段消耗資源最多。(3)反映了軟件過程迭代的自然特性,從高層返回低層無資源消耗。(4)強(qiáng)調(diào)增量開發(fā),依據(jù)分析一點(diǎn)、設(shè)計(jì)一點(diǎn)的原則,不要求一個(gè)階段的徹底完成,整個(gè)過程是一個(gè)迭代的逐步提煉的過程。(5)是對象驅(qū)動(dòng)的過程,對象是所有活動(dòng)作用的主體,也是項(xiàng)目管理的基本內(nèi)容。1.4軟件開發(fā)模型第1章1.4.4噴泉模型噴泉模型的主211.4軟件開發(fā)模型第1章1.4.5螺旋模型1.4軟件開發(fā)模型第1章1.4.5螺旋模型221.4軟件開發(fā)模型第1章1.4.5螺旋模型1.4軟件開發(fā)模型第1章1.4.5螺旋模型231.5軟件開發(fā)方法第1章1.結(jié)構(gòu)化方法結(jié)構(gòu)化方法又稱傳統(tǒng)方法、生存周期法、面向過程的方法、面向功能的方法、面向數(shù)據(jù)流的方法。所謂結(jié)構(gòu)化分析,就是根據(jù)分解與抽象的原則,按照系統(tǒng)中數(shù)據(jù)處理的流程,用數(shù)據(jù)流圖來建立系統(tǒng)的功能模型,從而完成需求分析。所謂結(jié)構(gòu)化設(shè)計(jì),就是根據(jù)模塊獨(dú)立性準(zhǔn)則、軟件結(jié)構(gòu)準(zhǔn)則,將數(shù)據(jù)流圖轉(zhuǎn)換為軟件的體系結(jié)構(gòu),用軟件結(jié)構(gòu)圖來建立系統(tǒng)的物理模型,實(shí)現(xiàn)系統(tǒng)的總體設(shè)計(jì)。所謂結(jié)構(gòu)化程序設(shè)計(jì),就是根據(jù)結(jié)構(gòu)程序設(shè)計(jì)原理,將每個(gè)模塊的功能用相應(yīng)的標(biāo)準(zhǔn)控制結(jié)構(gòu)表示出來,從而實(shí)現(xiàn)詳細(xì)設(shè)計(jì)。1.5軟件開發(fā)方法第1章1.結(jié)構(gòu)化方法241.5軟件開發(fā)方法第1章2.面向數(shù)據(jù)結(jié)構(gòu)方法面向數(shù)據(jù)結(jié)構(gòu)方法(也稱為Jackson方法)。該方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其他細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法以數(shù)據(jù)結(jié)構(gòu)為驅(qū)動(dòng),其優(yōu)點(diǎn)是通俗易懂,特別適合信息系統(tǒng)中數(shù)據(jù)層(數(shù)據(jù)庫服務(wù)器)上的設(shè)計(jì)與實(shí)現(xiàn),對輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效。其缺點(diǎn)是實(shí)現(xiàn)窗口界面較困難。該方法也可與其他方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。1.5軟件開發(fā)方法第1章2.面向數(shù)據(jù)結(jié)構(gòu)方法251.5軟件開發(fā)方法第1章3.面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄊ且环N自底向上和自頂向下相結(jié)合的方法,該方法把對象作為數(shù)據(jù)和在數(shù)據(jù)上的操作(服務(wù))相結(jié)合的軟件構(gòu)件。用對象分解取代結(jié)構(gòu)化方法的功能分解。把所有對象都劃分成類,把若干個(gè)相關(guān)的類組織成具有層次結(jié)構(gòu)的系統(tǒng),下層的類繼承上層的類所定義的屬性和服務(wù)。對象之間通過發(fā)送消息進(jìn)行聯(lián)系。使用面向?qū)ο蠓椒ㄩ_發(fā)軟件時(shí),可以重復(fù)使用對象和類等構(gòu)件,從而降低了軟件開發(fā)成本,所開發(fā)的軟件能適應(yīng)需求變化,穩(wěn)定性好,可重用性好,可維護(hù)性好,對于大型、復(fù)雜及交互性比較強(qiáng)的系統(tǒng),使用面向?qū)ο蠓椒ǜ袃?yōu)勢。1.5軟件開發(fā)方法第1章3.面向?qū)ο蠓椒?61.6軟件工具與開發(fā)環(huán)境第1章1.6.1軟件工具軟件工具是指用來輔助計(jì)算機(jī)軟件開發(fā)、維護(hù)和管理的軟件。按照軟件過程活動(dòng)可將軟件工具分為支持軟件開發(fā)過程的工具、支持軟件維護(hù)過程的工具、支持軟件管理過程與支持過程的工具等。支持軟件開發(fā)過程的工具包括需求分析工具、設(shè)計(jì)工具、編碼與排錯(cuò)工具和測試工具等;支持軟件維護(hù)過程的工具包括版本控制工具、文檔分析工具、開發(fā)信息庫工具、逆向工程工具和再工程工具等;支持軟件管理與軟件支持的工具包括項(xiàng)目管理工具、配置管理工具和軟件評(píng)價(jià)工具等。1.6軟件工具與開發(fā)環(huán)境第1章1.6.1軟件工具軟件工271.6軟件工具與開發(fā)環(huán)境第1章1.6.2軟件開發(fā)環(huán)境1.計(jì)算機(jī)輔助軟件工程計(jì)算機(jī)輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)將各種軟件工具、開發(fā)機(jī)器和一個(gè)存放開發(fā)過程信息的工程數(shù)據(jù)庫組合起來形成一個(gè)軟件工程環(huán)境。2.集成化CASE環(huán)境集成化開發(fā)環(huán)境(Integrated-CASE,I-CASE)是一種把支持多種軟件開發(fā)方法和過程模型的軟件工具集成到一起的軟件開發(fā)環(huán)境。3.軟件工程環(huán)境軟件工程環(huán)境(SoftwareEngineeringEnvironment,SEE)是指以軟件工程為依據(jù),支持典型軟件生產(chǎn)的系統(tǒng)。包括三層含義,一組軟件工具的集合;工具按一定方法或模型組織;工具支持整個(gè)生存周期各階段或部分階段。1.6軟件工具與開發(fā)環(huán)境第1章1.6.2軟件開發(fā)環(huán)境128軟件的定義及可行性研究第2章本章要點(diǎn)理解問題定義的內(nèi)容與方法;學(xué)會(huì)書寫問題定義報(bào)告;理解可行性研究的任務(wù)與步驟;學(xué)會(huì)書寫可行性研究報(bào)告;學(xué)會(huì)繪制系統(tǒng)流程圖。軟件的定義及可行性研究第2章本章理解問題定義的內(nèi)容與方法;292.1問題定義第2章2.1問題定義第2章30(1)問題的背景,弄清楚待開發(fā)系統(tǒng)現(xiàn)在處于什么狀態(tài),為什么要開發(fā)它,是否具備開發(fā)條件等問題。(2)提出開發(fā)系統(tǒng)的問題要求以及總體要求。(3)明確問題的性質(zhì)、類型和范圍。(4)明確待開發(fā)系統(tǒng)要實(shí)現(xiàn)的目標(biāo)、功能和規(guī)模。(5)提出開發(fā)的條件要求和環(huán)境要求。以上主要內(nèi)容應(yīng)寫在問題定義報(bào)告(或系統(tǒng)目標(biāo)和范圍說明書)中,作為這一階段的“工作總結(jié)”。2.1問題定義第2章2.1.1問題定義的內(nèi)容(1)問題的背景,弄清楚待開發(fā)系統(tǒng)現(xiàn)在處于什么狀態(tài),為什么要31具體步驟如下:首先,系統(tǒng)分析員要針對用戶的要求做詳細(xì)的調(diào)查研究,認(rèn)真聽取用戶對問題的介紹;閱讀與問題有關(guān)的資料,必要時(shí)還要深入現(xiàn)場,親自操作;調(diào)查開發(fā)系統(tǒng)的背景;了解用戶對開發(fā)的要求。其次是與用戶反復(fù)討論,以使問題進(jìn)一步確定化。經(jīng)過用戶和系統(tǒng)分析員雙方充分協(xié)商,確定問題定義的內(nèi)容。最后寫出雙方均認(rèn)可的問題定義報(bào)告。2.1問題定義第2章2.1.2問題定義的方法具體步驟如下:2.1問題定義第2章2.1.2問題定義的32可行性研究是在問題定義之后進(jìn)行的,它是軟件定義時(shí)期的第二個(gè)階段。可行性研究是指在項(xiàng)目進(jìn)行開發(fā)之前,根據(jù)項(xiàng)目發(fā)起文件(或稱項(xiàng)目建議書)和實(shí)際情況,對該項(xiàng)目是否能在特定的資源、時(shí)間等制約條件下完成做出評(píng)估,并且確定該項(xiàng)目是否值得去開發(fā)??尚行匝芯康哪康牟辉谟谌绾谓鉀Q問題,而在于確定問題“是否能夠解決”和“是否值得解決”。其中的項(xiàng)目發(fā)起文件(或稱項(xiàng)目建議書),是項(xiàng)目發(fā)起時(shí),由發(fā)起人或單位遞交給項(xiàng)目支持者或領(lǐng)導(dǎo)的書面材料,其作用是讓項(xiàng)目支持者或領(lǐng)導(dǎo)明白項(xiàng)目的必要性和可行性。2.2可行性研究第2章可行性研究是在問題定義之后進(jìn)行的,它是軟件定義時(shí)期的第二個(gè)階332.2可行性研究第2章1.技術(shù)可行性技術(shù)可行性從技術(shù)的角度去研究系統(tǒng)實(shí)現(xiàn)的可行性。主要包括風(fēng)險(xiǎn)、資源和技術(shù)分析。風(fēng)險(xiǎn)分析主要考慮在給定的約束條件下設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的風(fēng)險(xiǎn);資源分析是考慮技術(shù)資源的可行性,也就是參與人員的技術(shù)基礎(chǔ)、基礎(chǔ)硬件與軟件的可用性和軟件工具的實(shí)用性;技術(shù)分析是考慮技術(shù)解決方案的實(shí)用性,即所使用技術(shù)的實(shí)用化程度和技術(shù)解決方案的合理程度。2.經(jīng)濟(jì)可行性經(jīng)濟(jì)可行性從經(jīng)濟(jì)角度評(píng)價(jià)開發(fā)一個(gè)新系統(tǒng)是否可行。主要任務(wù)是對軟件開發(fā)項(xiàng)目進(jìn)行成本估算、效益估算和成本/效益分析,分析實(shí)現(xiàn)這個(gè)系統(tǒng)有沒有經(jīng)濟(jì)效益和社會(huì)效益。2.2.1可行性研究的任務(wù)2.2可行性研究第2章1.技術(shù)可行性2.2.1可行342.2可行性研究第2章3.運(yùn)行可行性(或用戶使用可行性)即判斷為新系統(tǒng)規(guī)定的運(yùn)行方式是否可行。首先要分析用戶類型(如外行型、熟練型或?qū)<倚停缓髲牟僮髁?xí)慣、使用單位的計(jì)算機(jī)使用情況和相關(guān)規(guī)章制度等方面進(jìn)行分析,判斷當(dāng)系統(tǒng)交付使用后,使用單位是否有能力保證系統(tǒng)的正常運(yùn)行和使用。4.法律可行性研究新系統(tǒng)的開發(fā)在社會(huì)上和政治上會(huì)不會(huì)引起侵權(quán)和責(zé)任問題,如是否違反專利法、著作權(quán)法和軟件保護(hù)條例等法律,是否涉及信息安全和個(gè)人隱私等問題。2.2.1可行性研究的任務(wù)2.2可行性研究第2章3.運(yùn)行可行性(或用戶使用可行性)352.2可行性研究第2章1.審核系統(tǒng)的規(guī)模和目標(biāo)2.分析研究現(xiàn)行系統(tǒng)3.設(shè)計(jì)新系統(tǒng)的高層邏輯模型4.獲得并比較可行的方案5.撰寫可行性研究報(bào)告2.2.2可行性研究的步驟2.2可行性研究第2章1.審核系統(tǒng)的規(guī)模和目標(biāo)2.2.2362.2可行性研究第2章2.2.3系統(tǒng)流程圖2.2可行性研究第2章2.2.3系統(tǒng)流程圖372.2可行性研究第2章在可行性研究過程中,經(jīng)濟(jì)可行性研究占有重要地位,它從經(jīng)濟(jì)上衡量一個(gè)項(xiàng)目是否有開發(fā)價(jià)值。經(jīng)濟(jì)可行性研究主要包括兩個(gè)方面的內(nèi)容:一是新系統(tǒng)成本的估計(jì);二是新系統(tǒng)可能產(chǎn)生的效益。又稱為成本/效益分析。2.2.4經(jīng)濟(jì)可行性2.2可行性研究第2章在可行性研究過程中,經(jīng)濟(jì)可行性研究382.3可行性研究報(bào)告的內(nèi)容及作用第2章可行性研究報(bào)告編制中應(yīng)注意以下幾個(gè)方面的問題:(1)堅(jiān)持實(shí)事求是的原則,不要隨意夸大新系統(tǒng)的功能和其他指標(biāo)。(2)任何一項(xiàng)內(nèi)容的書寫均要以科學(xué)分析的結(jié)果為依據(jù),不能憑空想象。(3)對每一項(xiàng)內(nèi)容的描述必須反復(fù)推敲,一定要做到用詞恰當(dāng)、準(zhǔn)確。(4)從具體情況出發(fā)??尚行匝芯繄?bào)告不一定面面俱到,但對于用戶關(guān)心的部分或項(xiàng)目中重要的部分要重點(diǎn)闡明。(5)書寫形式要規(guī)范。2.3.1可行性研究報(bào)告編制中應(yīng)注意的問題2.3可行性研究報(bào)告的內(nèi)容及作用第2章可行性研究報(bào)告編392.3可行性研究報(bào)告的內(nèi)容及作用第2章可行性研究報(bào)告在軟件開發(fā)中起著重要的作用:(1)可行性研究報(bào)告是可行性研究階段的成果。(2)可行性研究報(bào)告提出了軟件開發(fā)的總體目標(biāo)和范圍,因此它是軟件開發(fā)的行動(dòng)指南。(3)可行性研究報(bào)告是需求分析的基礎(chǔ)和依據(jù)。2.3.2可行性研究報(bào)告在軟件開發(fā)中的作用2.3可行性研究報(bào)告的內(nèi)容及作用第2章可行性研究報(bào)告在402.4項(xiàng)目開發(fā)計(jì)劃第2章經(jīng)過可行性研究后,如果一個(gè)項(xiàng)目是值得開發(fā)的,則接下來應(yīng)制定項(xiàng)目開發(fā)計(jì)劃。軟件項(xiàng)目開發(fā)計(jì)劃是軟件工程中的一種管理性文檔,主要是對所開發(fā)的軟件項(xiàng)目的費(fèi)用、時(shí)間進(jìn)度、人員組織、硬件設(shè)備的配置、軟件開發(fā)環(huán)境和運(yùn)行環(huán)境的配置等進(jìn)行說明和規(guī)劃,是項(xiàng)目管理人員對項(xiàng)目進(jìn)行管理的依據(jù),據(jù)此對項(xiàng)目的費(fèi)用、進(jìn)度和資源進(jìn)行控制和管理。項(xiàng)目開發(fā)計(jì)劃的目的是提供一個(gè)框架,使得主管人員在項(xiàng)目開始后較短時(shí)間內(nèi)就可以對資源、成本、進(jìn)度進(jìn)行合理的估計(jì),而不必等到詳細(xì)的需求分析完成之后。項(xiàng)目開發(fā)計(jì)劃有分析和估算兩項(xiàng)任務(wù)。分析是對系統(tǒng)內(nèi)各軟件功能界限的劃定,估算是指根據(jù)已有的定性數(shù)據(jù)和以往的經(jīng)驗(yàn)對系統(tǒng)開發(fā)的資源、費(fèi)用和進(jìn)度進(jìn)行定量的估計(jì)。項(xiàng)目復(fù)雜性越高、規(guī)模越大,估算的難度就越大,當(dāng)項(xiàng)目的結(jié)構(gòu)化程度越高且估算人員的經(jīng)驗(yàn)越豐富時(shí),則估算就更為準(zhǔn)確。2.4項(xiàng)目開發(fā)計(jì)劃第2章經(jīng)過可行性研究后,如果一個(gè)項(xiàng)目是值41需求分析第3章本章要點(diǎn)理解需求分析的任務(wù);熟悉需求分析的步驟;理解結(jié)構(gòu)化需求分析的基本思想;掌握數(shù)據(jù)流圖和數(shù)據(jù)詞典的用法。需求分析第3章本章理解需求分析的任務(wù);423.1需求分析的任務(wù)第3章需求分析的任務(wù)是要準(zhǔn)確地定義新系統(tǒng)的目標(biāo),準(zhǔn)確回答“系統(tǒng)必須做什么”的問題,并用需求規(guī)格說明書規(guī)范的形式準(zhǔn)確地表達(dá)用戶的需求。需求分析是理解、分析和表達(dá)“系統(tǒng)必須做什么”的過程。雖然在可行性研究階段,對用戶需求有了初步了解,但對需求的了解是概括的、粗略的,許多細(xì)節(jié)被忽略了??尚行匝芯渴菦Q定“做還是不做”,而不是對需求進(jìn)行定義。而需求分析階段則需要充分理解用戶需求,通過分析得出對新系統(tǒng)完整、準(zhǔn)確、清晰、具體的要求。需求分析的結(jié)果是否正確,關(guān)系到軟件開發(fā)的成敗和軟件產(chǎn)品的質(zhì)量,正確的需求分析是整個(gè)系統(tǒng)開發(fā)的基礎(chǔ)。3.1需求分析的任務(wù)第3章需求分析的任務(wù)是要準(zhǔn)確地定義新系統(tǒng)433.2需求獲取的方法第3章在需求分析過程中,需求獲取階段是開發(fā)人員和用戶交往最多的階段。一般情況下,用戶并不熟悉計(jì)算機(jī)的相關(guān)知識(shí),更不懂得需求分析方法,所以他們不知道如何全面而又準(zhǔn)確無誤地表達(dá)自己的需求。而軟件開發(fā)人員對相關(guān)的業(yè)務(wù)領(lǐng)域也不甚了解,用戶與開發(fā)人員之間對同一問題理解的差異和習(xí)慣用語的不同往往會(huì)給需求分析帶來很大困難。所以,開發(fā)人員與用戶之間要進(jìn)行充分和有效的溝通,需要采取科學(xué)的需求獲取方法與技巧,恰當(dāng)?shù)貑l(fā)引導(dǎo)用戶表達(dá)自己的需求,以減少后期重復(fù)修改需求的次數(shù)。3.2需求獲取的方法第3章在需求分析過程中,需求獲取階段是開443.2需求獲取的方法第3章1.深入淺出需求獲取要盡可能全面、細(xì)致。調(diào)研獲取的需求是個(gè)全集,而目標(biāo)系統(tǒng)真正實(shí)現(xiàn)的是個(gè)子集。分析時(shí)的調(diào)研內(nèi)容并不一定都要納入到新系統(tǒng)中,但全面、細(xì)致的調(diào)研既有利于弄清系統(tǒng)全局,又有利于以后的擴(kuò)充。2.以流程為主線在與用戶交流的過程中,應(yīng)該用流程將所有的內(nèi)容串起來,如單據(jù)、信息、組織結(jié)構(gòu)和處理規(guī)則等,這樣便于交流溝通。流程的描述既要有宏觀描述,也要有微觀描述。3.2.1需求獲取的基本原則3.2需求獲取的方法第3章1.深入淺出3.2.1需求獲453.2需求獲取的方法第3章1.問卷調(diào)查2.訪談和會(huì)議3.市場調(diào)查4.實(shí)地操作5.建立原型3.2.2需求獲取的途徑和方法3.2需求獲取的方法第3章1.問卷調(diào)查3.2.2需求獲463.2需求獲取的方法第3章要獲取用戶需求,就需要深入企業(yè)現(xiàn)場調(diào)研,需求調(diào)研的步驟如下:(1)調(diào)研用戶領(lǐng)域的組織結(jié)構(gòu)、崗位設(shè)置和職責(zé)定義,從功能上區(qū)分有多少個(gè)子系統(tǒng),劃分系統(tǒng)的大致范圍,明確系統(tǒng)的目標(biāo)。(2)調(diào)研每個(gè)子系統(tǒng)所需的工作流程、功能與處理規(guī)則,收集單據(jù)、報(bào)表和賬本等原始資料,分析物流、資金流和信息流三者的關(guān)系,以及如何用數(shù)據(jù)流來表示這三者的關(guān)系。(3)對調(diào)研的內(nèi)容事先準(zhǔn)備,針對不同管理層次的用戶詢問不同的問題,列出問題清單。將操作層、管理層和決策層的需求既聯(lián)系又區(qū)分開來,形成一個(gè)金字塔,使下層滿足上層的需求。(4)對與用戶溝通的情況及時(shí)總結(jié)歸納,整理調(diào)研結(jié)果,找出新的疑點(diǎn),初步構(gòu)成需求基線。(5)若需求基線符合要求,則需求分析完畢;反之返回到前面某一步。如此循環(huán)多次,直到需求分析使雙方滿意為止。3.2.3需求調(diào)研的步驟3.2需求獲取的方法第3章要獲取用戶需求,就需要深入企業(yè)現(xiàn)場473.3需求獲取的步驟第3章3.3需求獲取的步驟第3章483.3需求獲取的步驟第3章此階段的工作是需求獲取、問題識(shí)別,即收集并明確用戶需求的過程。首先,系統(tǒng)分析員要研究可行性研究報(bào)告和軟件項(xiàng)目實(shí)施計(jì)劃。主要是從系統(tǒng)的角度來理解軟件,確定對目標(biāo)系統(tǒng)的綜合要求,即軟件的需求。還要提出這些需求實(shí)現(xiàn)的條件,以及需求應(yīng)達(dá)到的標(biāo)準(zhǔn)。也就是解決待開發(fā)系統(tǒng)需要“做什么”,“做到什么程度”的問題。這些需求包括:(1)功能需求:(2)性能需求:(3)環(huán)境需求:(4)可靠性需求:(5)安全保密性需求:(6)用戶界面需求:(7)資源使用需求:(8)軟件成本消耗與開發(fā)進(jìn)度需求:(9)預(yù)計(jì)系統(tǒng)可達(dá)到的目標(biāo):3.3.1需求獲取3.3需求獲取的步驟第3章此階段的工作是需求獲取、問題識(shí)別,493.3需求獲取的步驟第3章獲取到需求后,要把來自用戶的信息加以分析,通過“抽象”建立待開發(fā)的系統(tǒng)邏輯模型。模型是為了理解事物而對事物做出的一種抽象,通常由一組符號(hào)和組織這些符號(hào)的規(guī)則組成。為待開發(fā)系統(tǒng)建立模型,有助于人們更好地理解問題,常用的建模方法有數(shù)據(jù)流圖、實(shí)體聯(lián)系圖(E-R圖)、狀態(tài)轉(zhuǎn)換圖、用例圖、類圖、對象圖等。系統(tǒng)分析員根據(jù)目標(biāo)系統(tǒng)的模型,從信息流和信息結(jié)構(gòu)出發(fā),逐步細(xì)化所有的軟件功能,找出系統(tǒng)各元素之間的聯(lián)系、接口特性和對設(shè)計(jì)的限制,剔除需求中不合理的成分,增加需要的部分,最終把各項(xiàng)需求組織起來,提交目標(biāo)系統(tǒng)的詳細(xì)邏輯模型。3.3.2分析建模3.3需求獲取的步驟第3章獲取到需求后,要把來自用戶的信息加503.3需求獲取的步驟第3章需求描述就是指編制需求分析階段的文檔。即將已經(jīng)過分析的需求清晰、全面、系統(tǒng)、準(zhǔn)確地描述成正式的文檔——軟件需求規(guī)格說明書。軟件需求規(guī)格說明書以開發(fā)人員的角度,對開發(fā)系統(tǒng)的業(yè)務(wù)模型、功能模型、數(shù)據(jù)模型等內(nèi)容進(jìn)行描述,明確地表達(dá)了用戶與系統(tǒng)分析員對軟件系統(tǒng)的共同理解,將作為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的基線。對于復(fù)雜的軟件系統(tǒng),此階段除產(chǎn)生軟件需求規(guī)格說明書(稱軟件需求文檔,主要描述軟件部分的需求)外,還要產(chǎn)生系統(tǒng)定義文檔(即用戶需求報(bào)告)和系統(tǒng)需求文檔(即系統(tǒng)需求規(guī)格說明書)。3.3.3需求描述3.3需求獲取的步驟第3章需求描述就是指編制需求分析階段的文513.3需求獲取的步驟第3章需求驗(yàn)證就是驗(yàn)證(復(fù)查)需求分析的成果,也稱綜合評(píng)審。需求驗(yàn)證就是對需求的正確性進(jìn)行嚴(yán)格的驗(yàn)證,確保需求的一致性、完整性、清晰性、現(xiàn)實(shí)性和有效性,確保設(shè)計(jì)與實(shí)現(xiàn)過程中的需求可回溯性,并進(jìn)行需求變更管理。一般情況下,需求驗(yàn)證以用戶、系統(tǒng)分析員、系統(tǒng)設(shè)計(jì)人員和管理人員共同參與的會(huì)議形式進(jìn)行,最后由評(píng)審負(fù)責(zé)人簽字。3.3.4需求驗(yàn)證3.3需求獲取的步驟第3章需求驗(yàn)證就是驗(yàn)證(復(fù)查)需求分析的523.4結(jié)構(gòu)化需求分析方法第3章1.分析策略結(jié)構(gòu)化分析(StructuredAnalysis,簡稱SA)方法是20世紀(jì)70年代由E·Yourdon等人提出的一種面向數(shù)據(jù)流的分析方法,適用于大型的數(shù)據(jù)處理系統(tǒng)。由于利用圖形來表達(dá)需求會(huì)使文檔清晰、簡明、易于學(xué)習(xí)和掌握,所以軟件分析人員仍在廣泛使用這種傳統(tǒng)的分析方法。結(jié)構(gòu)化分析方法總的指導(dǎo)思想是“自頂向下,逐步求精”,它的兩個(gè)基本原則是“抽象”和“分解”,即按照功能分解的原則,對系統(tǒng)進(jìn)行逐層分解,直到找到所有滿足功能要求的可實(shí)現(xiàn)軟件元素為止。3.4.1結(jié)構(gòu)化分析方法概述3.4結(jié)構(gòu)化需求分析方法第3章1.分析策略3.4.1結(jié)533.4結(jié)構(gòu)化需求分析方法第3章3.4.1結(jié)構(gòu)化分析方法概述3.4結(jié)構(gòu)化需求分析方法第3章3.4.1結(jié)構(gòu)化分析方法543.4結(jié)構(gòu)化需求分析方法第3章2.描述工具結(jié)構(gòu)化分析方法利用圖形等半形式化的描述表達(dá)需求,用它們形成需求規(guī)格說明書的主要部分,主要工具有:(1)數(shù)據(jù)流圖(DFD)。描述系統(tǒng)的分解,即描述系統(tǒng)由哪幾部分組成,各部分之間有什么聯(lián)系等。(2)數(shù)據(jù)詞典(DD)。明確定義數(shù)據(jù)流圖中的數(shù)據(jù)和加工。它是數(shù)據(jù)流條目、數(shù)據(jù)存儲(chǔ)條目、數(shù)據(jù)項(xiàng)條目和基本加工條目的匯集。(3)結(jié)構(gòu)化語言、判定表和判定樹。用于詳細(xì)描述數(shù)據(jù)流圖中不能再分解的每一個(gè)基本加工的處理邏輯。3.4.1結(jié)構(gòu)化分析方法概述3.4結(jié)構(gòu)化需求分析方法第3章2.描述工具3.4.1結(jié)553.4結(jié)構(gòu)化需求分析方法第3章3.分析步驟3.4.1結(jié)構(gòu)化分析方法概述3.4結(jié)構(gòu)化需求分析方法第3章3.分析步驟3.4.1結(jié)563.4結(jié)構(gòu)化需求分析方法第3章1.數(shù)據(jù)流圖的基本符號(hào)3.4.2數(shù)據(jù)流圖3.4結(jié)構(gòu)化需求分析方法第3章1.數(shù)據(jù)流圖的基本符號(hào)3.4.573.4結(jié)構(gòu)化需求分析方法第3章2.數(shù)據(jù)流圖的繪制步驟(1)畫頂層數(shù)據(jù)流圖列出系統(tǒng)的全部數(shù)據(jù)源點(diǎn)和終點(diǎn),將系統(tǒng)加工處理過程作為一個(gè)整體,就可能得到頂層圖。具體說就是:畫一個(gè)圓,在其中寫上系統(tǒng)名稱,然后在圓的外圍畫上系統(tǒng)的輸入和輸出,這一步工作實(shí)際上是決定研究的內(nèi)容和系統(tǒng)的范圍。(2)畫各層數(shù)據(jù)流圖對系統(tǒng)處理過程自頂向下,逐步分解,畫出各層的數(shù)據(jù)流圖。(3)畫總的數(shù)據(jù)流圖這一步對了解整個(gè)系統(tǒng)很有好處,但也要根據(jù)實(shí)際情況來決定總圖的布局,不要把數(shù)據(jù)流圖畫得太復(fù)雜。3.4.2數(shù)據(jù)流圖3.4結(jié)構(gòu)化需求分析方法第3章2.數(shù)據(jù)流圖的繪制步驟3.4.583.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)流圖中的命名規(guī)則(1)數(shù)據(jù)流數(shù)據(jù)流表明數(shù)據(jù)和數(shù)據(jù)流向,它通常由一組數(shù)據(jù)項(xiàng)組成。(2)加工加工是對數(shù)據(jù)的某種操作或變換。(3)文件文件起暫時(shí)保存數(shù)據(jù)的作用。(4)數(shù)據(jù)源點(diǎn)和終點(diǎn)數(shù)據(jù)源點(diǎn)和終點(diǎn)是數(shù)據(jù)的始發(fā)點(diǎn)和終止點(diǎn),是軟件系統(tǒng)外部環(huán)境中的實(shí)體(包括人員、組織或其他軟件系統(tǒng)),統(tǒng)稱外部實(shí)體。3.4.2數(shù)據(jù)流圖3.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)流圖中的命名規(guī)則3.4593.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)流圖中分層技術(shù)對于比較復(fù)雜的實(shí)際問題,在數(shù)據(jù)流圖上常常出現(xiàn)十幾個(gè)乃至幾十個(gè)、上百個(gè)加工,這樣的數(shù)據(jù)流圖復(fù)雜而且難以理解。為了避免這種情況出現(xiàn),可以采用數(shù)據(jù)流圖的分層技術(shù)。分層技術(shù)的基本思想是,不是在一個(gè)數(shù)據(jù)流圖中一次引入太多的細(xì)節(jié),而是有控制地逐步增加細(xì)節(jié),實(shí)現(xiàn)從抽象到具體的逐步過渡。3.4.2數(shù)據(jù)流圖3.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)流圖中分層技術(shù)3.4.603.4結(jié)構(gòu)化需求分析方法第3章1.數(shù)據(jù)詞典的內(nèi)容一般說來,數(shù)據(jù)詞典的每個(gè)條目中應(yīng)包括以下信息。(1)名字:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、數(shù)據(jù)存儲(chǔ)或外部實(shí)體的名稱。(2)別名或編號(hào):第(1)項(xiàng)中對象的其他名字。(3)分類:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、加工、數(shù)據(jù)存儲(chǔ)、外部實(shí)體等。(4)內(nèi)容描述:描述內(nèi)容或數(shù)據(jù)結(jié)構(gòu)等。(5)何處使用:哪些加工使用該條目。3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章1.數(shù)據(jù)詞典的內(nèi)容3.4.3613.4結(jié)構(gòu)化需求分析方法第3章2.數(shù)據(jù)詞典中使用的符號(hào)3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章2.數(shù)據(jù)詞典中使用的符號(hào)3.4623.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3633.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3643.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章3.數(shù)據(jù)詞典書寫實(shí)例3.4.3653.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)詞典的實(shí)現(xiàn)通常,實(shí)現(xiàn)數(shù)據(jù)詞典有三種途徑:(1)人工方法:人工方法實(shí)現(xiàn)時(shí),每一詞典條目(即每一個(gè)數(shù)據(jù)定義或每一個(gè)加工邏輯說明)寫在一張卡片上,由專人管理和維護(hù)。為了便于搜索,所有卡片按數(shù)據(jù)名稱排序。人工方法的優(yōu)點(diǎn)是容易實(shí)現(xiàn)。(2)自動(dòng)方法:把詞典存在計(jì)算機(jī)中,用計(jì)算機(jī)對它搜索和維護(hù)。現(xiàn)有多種“詞典管理程序”,如PLS/PSA。用計(jì)算機(jī)管理詞典質(zhì)量高,搜索、維護(hù)方便。(3)人工和自動(dòng)混合的方法:在人工過程中可借助正文編寫程序、報(bào)告生成程序等工具輔助完成。3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)詞典的實(shí)現(xiàn)3.4.3663.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)詞典的實(shí)現(xiàn)不論通過哪種途徑實(shí)現(xiàn)的數(shù)據(jù)詞典都應(yīng)盡量做到以下幾點(diǎn):(1)沒有冗余:主要指數(shù)據(jù)定義不能重復(fù)。在規(guī)格說明書的其他組成部分中已出現(xiàn)的信息不能重復(fù)。(2)查閱方便:通過名字可以方便地查閱數(shù)據(jù)詞典中的每個(gè)定義。(3)定義的書寫方法簡單、方便、嚴(yán)謹(jǐn),而且可讀性強(qiáng)。(4)建議采用卡片形式書寫。3.4.3數(shù)據(jù)詞典3.4結(jié)構(gòu)化需求分析方法第3章4.數(shù)據(jù)詞典的實(shí)現(xiàn)3.4.3673.4結(jié)構(gòu)化需求分析方法第3章1.結(jié)構(gòu)化語言3.4.4加工邏輯的描述3.4結(jié)構(gòu)化需求分析方法第3章1.結(jié)構(gòu)化語言3.4.4683.4結(jié)構(gòu)化需求分析方法第3章2.判定表在一些數(shù)據(jù)處理中,數(shù)據(jù)流圖的加工需要經(jīng)過多個(gè)邏輯條件組合的取值而確定,此時(shí)用自然語言或結(jié)構(gòu)化語言難以描述,而運(yùn)用判定表描述就比較清晰明了。3.4.4加工邏輯的描述3.4結(jié)構(gòu)化需求分析方法第3章2.判定表3.4.4加693.4結(jié)構(gòu)化需求分析方法第3章3.判定樹判定樹也是用來表達(dá)加工邏輯的工具,它是判定表的變形,有時(shí)比判定表更直觀,更易于理解和使用。圖書優(yōu)惠政策的判定樹如圖3-8所示。3.4.4加工邏輯的描述3.4結(jié)構(gòu)化需求分析方法第3章3.判定樹3.4.4加703.5需求規(guī)格說明書的編寫與評(píng)審第3章1.需求規(guī)格說明書的編寫內(nèi)容需求分析階段應(yīng)交付的主要文檔是軟件需求規(guī)格說明書。它提供了用戶與開發(fā)人員對開發(fā)軟件的共同理解,其作用相當(dāng)于用戶與開發(fā)單位之間的技術(shù)合同,是后續(xù)設(shè)計(jì)和編碼的基礎(chǔ),是測試和驗(yàn)收的依據(jù)。軟件需求規(guī)格說明書的內(nèi)容框架可參閱GB/T8567-2006《計(jì)算機(jī)軟件文檔編制規(guī)范》。在編寫需求規(guī)格說明書時(shí)應(yīng)注意以下幾個(gè)問題:(1)說明書中的每一部分都非常重要,因此要慎重對待。(2)問題的描述要做到準(zhǔn)確無誤,沒有二義性。(3)說明書的書寫形式要規(guī)范。(4)允許用戶根據(jù)項(xiàng)目的具體情況適當(dāng)?shù)膶鴮憙?nèi)容進(jìn)行調(diào)整和篩選。3.5需求規(guī)格說明書的編寫與評(píng)審第3章1.需求規(guī)格說明書的編713.5需求規(guī)格說明書的編寫與評(píng)審第3章2.需求分析的評(píng)審在需求分析規(guī)格說明書編寫完成后,必須進(jìn)行需求評(píng)審,以驗(yàn)證需求的正確性。如果在評(píng)審過程中發(fā)現(xiàn)說明書存在錯(cuò)誤或缺陷,應(yīng)及時(shí)進(jìn)行更改或彌補(bǔ),重新進(jìn)行相應(yīng)部分的需求分析、需求建模、修改需求規(guī)格說明書,并再行評(píng)審。需求分析評(píng)審的主要內(nèi)容如下:(1)一致性。所有需求必須是一致的,任何一條需求不能和其他需求相矛盾。(2)完整性。需求必須是完整的,規(guī)格說明書應(yīng)該包括用戶需要的每一個(gè)功能或性能。(3)現(xiàn)實(shí)性。指定的需求應(yīng)該是用現(xiàn)有的軟硬件技術(shù)基本上可以實(shí)現(xiàn)的。對硬件技術(shù)的進(jìn)步可以預(yù)測,對軟件技術(shù)的進(jìn)步則很難預(yù)測,只能從現(xiàn)有技術(shù)水平判斷需求的現(xiàn)實(shí)性。(4)有效性。必須證明需求是正確而有效的,確實(shí)能解決用戶所面對的問題。3.5需求規(guī)格說明書的編寫與評(píng)審第3章2.需求分析的評(píng)審723.6項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”軟件需求分析第3章下面以第2章的“圖書管理系統(tǒng)”為例,說明面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法及軟件需求說明書的編寫內(nèi)容。在圖書館負(fù)責(zé)人和計(jì)算機(jī)系的技術(shù)人員通過了“圖書管理系統(tǒng)”《項(xiàng)目開發(fā)計(jì)劃》后,項(xiàng)目組隨即進(jìn)入了項(xiàng)目開發(fā)階段,計(jì)算機(jī)系教師與圖書館相關(guān)業(yè)務(wù)人員緊密合作,經(jīng)過15天的工作,形成了“圖書管理系統(tǒng)”《軟件需求說明書》。主要數(shù)據(jù)流圖如下:3.6項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”軟件需求分析第3章下面以第2733.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章743.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章753.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章763.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章773.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章783.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章3.6項(xiàng)目實(shí)踐:“高校圖書管理系統(tǒng)”軟件需求分析第3章79概要設(shè)計(jì)第4章本章要點(diǎn)

掌握軟件設(shè)計(jì)的概念與原則;理解軟件設(shè)計(jì)的任務(wù);

掌握概要設(shè)計(jì)的內(nèi)容與步驟;掌握結(jié)構(gòu)化設(shè)計(jì)方法;了解概要設(shè)計(jì)說明書的內(nèi)容。概要設(shè)計(jì)第4章本章掌握軟件設(shè)計(jì)的概念與原則;804.1軟件設(shè)計(jì)概述第4章軟件設(shè)計(jì)是軟件工程的重要階段,是一個(gè)將軟件需求轉(zhuǎn)換為軟件表示的過程。軟件設(shè)計(jì)的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即確定系統(tǒng)的物理模型,解決軟件系統(tǒng)“怎么做”的問題。軟件設(shè)計(jì)不同于程序設(shè)計(jì),程序設(shè)計(jì)是軟件設(shè)計(jì)的編碼實(shí)現(xiàn)過程。軟件設(shè)計(jì)的重要性有以下幾點(diǎn):(1)軟件開發(fā)階段(設(shè)計(jì)、編碼、測試)占據(jù)軟件項(xiàng)目開發(fā)總成本絕大部分,是在軟件開發(fā)中形成質(zhì)量的關(guān)鍵環(huán)節(jié)。(2)軟件設(shè)計(jì)是開發(fā)階段最重要的步驟,是將用戶需求準(zhǔn)確地轉(zhuǎn)化為最終的軟件產(chǎn)品的唯一途徑。(3)軟件設(shè)計(jì)作出的決策,最終將直接影響軟件實(shí)現(xiàn)的成敗。(4)軟件設(shè)計(jì)是軟件工程和軟件維護(hù)的基礎(chǔ)。4.1.1軟件設(shè)計(jì)的概念與重要性4.1軟件設(shè)計(jì)概述第4章軟件設(shè)計(jì)是軟件工程的重要階段,是一個(gè)814.1軟件設(shè)計(jì)概述第4章從工程管理的角度來看,可以將軟件設(shè)計(jì)分為兩個(gè)階段:概要設(shè)計(jì)(又稱總體設(shè)計(jì))階段和詳細(xì)設(shè)計(jì)(又稱過程設(shè)計(jì))階段。概要設(shè)計(jì)階段得到軟件系統(tǒng)的基本框架,詳細(xì)設(shè)計(jì)階段明確系統(tǒng)內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。4.1.2軟件設(shè)計(jì)的任務(wù)4.1軟件設(shè)計(jì)概述第4章從工程管理的角度來看,可以將軟件設(shè)計(jì)824.2概要設(shè)計(jì)的任務(wù)與步驟第4章概要設(shè)計(jì)的基本任務(wù)是:(1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu);(2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì);(3)編寫概要設(shè)計(jì)文檔;(4)評(píng)審概要設(shè)計(jì)文檔。4.2.1概要設(shè)計(jì)的任務(wù)4.2概要設(shè)計(jì)的任務(wù)與步驟第4章概要設(shè)計(jì)的基本任務(wù)是:4.834.2概要設(shè)計(jì)的任務(wù)與步驟第4章概要設(shè)計(jì)的一般步驟如下:1.選定體系結(jié)構(gòu)2.確定設(shè)計(jì)方案3.設(shè)計(jì)軟件結(jié)構(gòu)4.數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)5.制訂測試計(jì)劃6.編寫概要設(shè)計(jì)文檔7.概要設(shè)計(jì)文檔評(píng)審4.2.2概要設(shè)計(jì)的步驟4.2概要設(shè)計(jì)的任務(wù)與步驟第4章概要設(shè)計(jì)的一般步驟如下:4844.3概要設(shè)計(jì)的原則第4章1.模塊化模塊化是“分而治之”策略的具體表現(xiàn)。模塊化就是將整體軟件劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,不同的模塊通常具有不同的功能或職責(zé)。每個(gè)模塊可獨(dú)立地開發(fā)、測試,最后組裝成完整的軟件。在結(jié)構(gòu)化方法中,函數(shù)、過程和子程序等都可作為模塊;在面向?qū)ο蠓椒ㄖ?,對象、對象?nèi)的方法也是模塊。模塊是構(gòu)成軟件的基本構(gòu)件。4.3概要設(shè)計(jì)的原則第4章1.模塊化854.3概要設(shè)計(jì)的原則第4章2.抽象與分解抽象是指忽視一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象可以分成若干級(jí)別,級(jí)別越高,細(xì)節(jié)越少。其實(shí)整個(gè)軟件的開發(fā)過程就是一個(gè)從抽象到具體的過程:需求分析時(shí),使用問題域語言來概括性地描述解決方案,抽象級(jí)別最高;軟件設(shè)計(jì)時(shí),同時(shí)使用面向問題域和面向?qū)崿F(xiàn)的兩種術(shù)語描述解決方案,抽象級(jí)別次之;在編碼時(shí),使用直接實(shí)現(xiàn)的方式(源程序代碼)來描述解決方案,抽象級(jí)別最低。在軟件設(shè)計(jì)中,過程抽象和數(shù)據(jù)抽象是兩種常用的抽象手段。4.3概要設(shè)計(jì)的原則第4章2.抽象與分解864.3概要設(shè)計(jì)的原則第4章3.信息隱蔽和局部化信息隱蔽是指模塊所包含的信息,不允許其他不需要這些信息的模塊訪問,獨(dú)立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。信息隱蔽的目的是提高模塊的獨(dú)立性,減少修改或維護(hù)時(shí)的影響面。局部化就是把關(guān)系密切的軟件元素物理地放得彼此靠近。其優(yōu)點(diǎn)是可維護(hù)性、可靠性和可理解性好。4.模塊獨(dú)立性模塊獨(dú)立性概括了把軟件劃分為模塊時(shí)要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是否合理的標(biāo)準(zhǔn)。模塊獨(dú)立性好的軟件接口簡單、容易開發(fā),獨(dú)立的模塊也容易測試和維護(hù)。因此,模塊獨(dú)立性是軟件質(zhì)量的關(guān)鍵。4.3概要設(shè)計(jì)的原則第4章3.信息隱蔽和局部化874.3概要設(shè)計(jì)的原則第4章5.復(fù)用性設(shè)計(jì)復(fù)用是指同一事物不做修改或稍加修改就可以多次重復(fù)使用。將復(fù)用思想用于軟件開發(fā)稱為軟件復(fù)用,將軟件的重用部分稱為軟構(gòu)件。也就是說,在構(gòu)造軟件系統(tǒng)時(shí)不必從零做起,可通過直接使用或加以修改已有軟構(gòu)件來組裝成新系統(tǒng)。軟件復(fù)用可提高軟件的生產(chǎn)率。由于軟構(gòu)件是經(jīng)過反復(fù)使用驗(yàn)證的,自身具有較高的質(zhì)量,因此由軟構(gòu)件組成的新系統(tǒng)也具有較高的質(zhì)量。軟件復(fù)用并不局限于軟件代碼,其范圍也可擴(kuò)展到軟件開發(fā)各個(gè)階段,包括需求模型和規(guī)格說明、設(shè)計(jì)模型、文檔、測試用例等。4.3概要設(shè)計(jì)的原則第4章5.復(fù)用性設(shè)計(jì)884.4模塊的獨(dú)立性第4章模塊獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而與軟件系統(tǒng)中其他模塊的接口是簡單的。模塊獨(dú)立性取決于模塊的內(nèi)部和外部特征。一般用耦合和內(nèi)聚兩個(gè)定性的指標(biāo)來度量。耦合是模塊之間相互依賴的緊密程度的度量,內(nèi)聚是一個(gè)模塊內(nèi)部各個(gè)元素之間彼此結(jié)合的緊密程度的度量。一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則模塊的內(nèi)聚度就越高,相對地,它與其他模塊之間的耦合就越低,模塊的獨(dú)立性就越強(qiáng)。一個(gè)優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚、低耦合,從而提高模塊的獨(dú)立性。4.4模塊的獨(dú)立性第4章模塊獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只894.4模塊的獨(dú)立性第4章耦合是模塊之間相互連接的緊密程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個(gè)模塊的點(diǎn)以及通過接口的數(shù)據(jù)。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨(dú)立性就越弱。通常希望一個(gè)軟件系統(tǒng)具有較低的耦合性。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章耦合是模塊之間相互連接的緊密程度的904.4模塊的獨(dú)立性第4章1.非直接耦合兩個(gè)模塊間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的。耦合度最弱,模塊獨(dú)立性最強(qiáng)。2.數(shù)據(jù)耦合調(diào)用模塊和被調(diào)用模塊之間只傳遞簡單的數(shù)據(jù)項(xiàng)參數(shù)。相當(dāng)于高級(jí)語言中的值傳遞。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章1.非直接耦合4.4.1耦合914.4模塊的獨(dú)立性第4章3.標(biāo)記耦合調(diào)用模塊和被調(diào)用模塊之間傳遞數(shù)據(jù)結(jié)構(gòu)而不是簡單數(shù)據(jù)。也稱特征耦合。標(biāo)記耦合的模塊間傳遞的不是簡單變量,而是像高級(jí)語言中的數(shù)組名、記錄名和文件名等數(shù)據(jù)結(jié)構(gòu),這些名字即為標(biāo)記,其實(shí)傳遞的是地址。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章3.標(biāo)記耦合4.4.1耦合性924.4模塊的獨(dú)立性第4章4.控制耦合模塊之間傳遞的不是數(shù)據(jù)信息,而是控制信息如標(biāo)志、開關(guān)量,一個(gè)模塊控制了另一模塊的功能。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章4.控制耦合4.4.1耦合性934.4模塊的獨(dú)立性第4章5.外部耦合一組模塊都訪問同一全局簡單變量,而且不通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。6.公共耦合若一組模塊都訪問同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),則稱之為公共耦合。公共數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。如果模塊只是向公共數(shù)據(jù)環(huán)境輸入數(shù)據(jù),或是只從公共數(shù)據(jù)環(huán)境取出數(shù)據(jù),這屬于比較松散的公共耦合;如果模塊既向公共數(shù)據(jù)環(huán)境輸入數(shù)據(jù)又從公共數(shù)據(jù)環(huán)境取出數(shù)據(jù),這屬于較緊密的公共耦合。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章5.外部耦合4.4.1耦合性944.4模塊的獨(dú)立性第4章7.內(nèi)容耦合一個(gè)模塊直接訪問另一模塊的內(nèi)容,則稱這兩個(gè)模塊為內(nèi)容耦合。若在程序中出現(xiàn)下列情況之一,則說明兩個(gè)模塊之間發(fā)生了內(nèi)容耦合:(1)一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過正常入口而直接轉(zhuǎn)入到另一個(gè)模塊的內(nèi)部;(3)兩個(gè)模塊有一部分代碼重疊(該部分代碼具有一定的獨(dú)立功能);(4)一個(gè)模塊有多個(gè)入口。4.4.1耦合性(Coupling)4.4模塊的獨(dú)立性第4章7.內(nèi)容耦合4.4.1耦合性954.4模塊的獨(dú)立性第4章一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度用內(nèi)聚(或稱聚合)來度量。一個(gè)理想的模塊只完成一個(gè)功能,模塊設(shè)計(jì)的目標(biāo)之一是盡可能高內(nèi)聚。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程964.4模塊的獨(dú)立性第4章1.偶然內(nèi)聚一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系,只是偶然地被湊到一起。這種模塊也稱巧合內(nèi)聚,內(nèi)聚程度最低。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章1.偶然內(nèi)聚4.4.2內(nèi)聚性(974.4模塊的獨(dú)立性第4章2.邏輯內(nèi)聚指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相關(guān)的功能,通過參數(shù)確定該模塊完成哪一個(gè)功能。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章2.邏輯內(nèi)聚4.4.2內(nèi)聚性(984.4模塊的獨(dú)立性第4章3.時(shí)間內(nèi)聚把需要同時(shí)或順序執(zhí)行的動(dòng)作組合在一起形成的模塊。時(shí)間內(nèi)聚模塊中的功能元素只因時(shí)間因素關(guān)聯(lián)在一起,各元素之間沒有共用數(shù)據(jù),而且一般情況下各部分可以以任意次序執(zhí)行。4.過程內(nèi)聚如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行則稱為過程內(nèi)聚。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章3.時(shí)間內(nèi)聚4.4.2內(nèi)聚性(994.4模塊的獨(dú)立性第4章5.通信內(nèi)聚指模塊內(nèi)所有處理功能都通過公用數(shù)據(jù)而發(fā)生關(guān)系。即模塊內(nèi)各個(gè)組成部分都使用相同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出結(jié)果。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章5.通信內(nèi)聚4.4.2內(nèi)聚性(1004.4模塊的獨(dú)立性第4章6.順序內(nèi)聚指一個(gè)模塊中各個(gè)處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,通常前一個(gè)處理元素的輸出是后一個(gè)處理元素的輸入。順序內(nèi)聚的內(nèi)聚度比較高,但缺點(diǎn)是不如功能內(nèi)聚易于維護(hù)。7.功能內(nèi)聚指模塊內(nèi)所有元素的各個(gè)組成部分全部都為完成同一個(gè)功能而存在,共同完成一個(gè)單一的功能,模塊已不可再分。即模塊僅包括為完成某個(gè)功能所必須的所有成分,這些成分緊密聯(lián)系、缺一不可。4.4.2內(nèi)聚性(Cohesion)4.4模塊的獨(dú)立性第4章6.順序內(nèi)聚4.4.2內(nèi)聚性(1014.4模塊的獨(dú)立性第4章1.模塊功能的完善化2.消除重復(fù)功能,改善軟件結(jié)構(gòu)3.模塊規(guī)模應(yīng)該適中4.模塊的深度、寬度、扇出和扇入都應(yīng)適當(dāng)5.模塊的作用范圍應(yīng)該在控制范圍之內(nèi)6.力爭降低模塊接口的復(fù)雜程度7.設(shè)計(jì)單入口、單出口的模塊8.模塊功能應(yīng)該可以預(yù)測4.4.2軟件結(jié)構(gòu)優(yōu)化準(zhǔn)則4.4模塊的獨(dú)立性第4章1.模塊功能的完善化4.4.21024.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章層次圖(Hierarchy)也稱H圖,用于表示軟件的層次結(jié)構(gòu),特別適合于在自頂向下設(shè)計(jì)時(shí)使用。4.5.1層次圖4.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章層次圖(Hierarch1034.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章IPO圖是輸入/處理/輸出圖(InputProcessOutput),其基本形式是三個(gè)方框,左邊方框列出所有的輸入數(shù)據(jù),中間框列出主要的處理,右邊框列出輸出數(shù)據(jù)。4.5.2IPO圖4.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章IPO圖是輸入/處理/輸1044.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章模塊結(jié)構(gòu)圖(StructureChart,SC圖)用于表示軟件系統(tǒng)的層次分解關(guān)系、模塊調(diào)用關(guān)系、模塊之間數(shù)據(jù)流和控制信息流的傳遞關(guān)系,是描述軟件系統(tǒng)物理模型、進(jìn)行概要設(shè)計(jì)的主要工具,也是軟件文檔的一部分。4.5.3結(jié)構(gòu)圖4.5軟件結(jié)構(gòu)設(shè)計(jì)的圖形工具第4章模塊結(jié)構(gòu)圖(Struct1054.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章結(jié)構(gòu)化設(shè)計(jì)方法是面向數(shù)據(jù)流的設(shè)計(jì)方法,它以數(shù)據(jù)流圖為基礎(chǔ),定義了將數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)圖(即DFD→SC)的方法,而數(shù)據(jù)流的類型決定了映射的方法。數(shù)據(jù)流分為變換流和事務(wù)流兩種,因此由數(shù)據(jù)流組成的數(shù)據(jù)流圖也分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖兩種類型。由變換型數(shù)據(jù)流圖向結(jié)構(gòu)圖的映射稱變換分析,由事務(wù)型數(shù)據(jù)流圖向結(jié)構(gòu)圖的映射稱事務(wù)分析。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章結(jié)構(gòu)化設(shè)計(jì)方法是面向數(shù)據(jù)流1064.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章1.?dāng)?shù)據(jù)流圖的類型(1)變換流變換型數(shù)據(jù)流的特征是可以把它看成由輸入、變換中心和輸出三部分組成,這樣的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。如圖4-20所示。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章1.?dāng)?shù)據(jù)流圖的類型1074.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章(2)事務(wù)流事務(wù)型數(shù)據(jù)流的特征是可以把它看成具有在多種事務(wù)中選擇執(zhí)行某類事務(wù)的能力。這樣的數(shù)據(jù)流圖稱為事務(wù)型數(shù)據(jù)流圖。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章(2)事務(wù)流1084.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章2.結(jié)構(gòu)化設(shè)計(jì)過程面向數(shù)據(jù)流的結(jié)構(gòu)化方法的設(shè)計(jì)過程如圖4-22所示。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章2.結(jié)構(gòu)化設(shè)計(jì)過程1094.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章(1)精化DFD。(2)確定DFD類型。(3)把DFD映射到系統(tǒng)模塊結(jié)構(gòu),設(shè)計(jì)模塊結(jié)構(gòu)的上層。(4)基于DFD逐步分解高層模塊,設(shè)計(jì)出下層模塊。(5)根據(jù)模塊獨(dú)立性原理,精化模塊結(jié)構(gòu)。(6)描述模塊接口。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章(1)精化DFD。1104.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章兩種映射方法都是先映射出初始軟件結(jié)構(gòu)圖。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章兩種映射方法都是先映射出初1114.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章3.變換分析變換分析是一系列設(shè)計(jì)步驟的總稱,通過執(zhí)行這些步驟,將具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。采用變換分析方法開發(fā)出的軟件結(jié)構(gòu)圖,其一般方式為:“輸入—處理—輸出”。變換分析方法的設(shè)計(jì)步驟如下:第一步復(fù)查基本系統(tǒng)模型。以確定輸入數(shù)據(jù)和輸出數(shù)據(jù)是否與實(shí)際相符。第二步復(fù)查并精化數(shù)據(jù)流圖。完成對需求分析階段得出的數(shù)據(jù)流圖的復(fù)查和精化。第三步判斷數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。根據(jù)數(shù)據(jù)流圖中占優(yōu)勢的屬性是事務(wù)的還是變換的,來確定數(shù)據(jù)流的全局屬性。第四步確定輸入流和輸出流的邊界,從而將變換中心劃分出來。第五步完成“第一級(jí)分解”。分配控制的過程,劃分頂層模塊和從屬模塊。第六步完成“第二級(jí)分解”。就是把數(shù)據(jù)流圖中的每個(gè)處理映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K。第七步采用啟發(fā)式設(shè)計(jì)規(guī)則和設(shè)計(jì)度量對得到的軟件結(jié)構(gòu)進(jìn)行精化。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章3.變換分析1124.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章4.事務(wù)分析事務(wù)分析的設(shè)計(jì)步驟和變換分析的設(shè)計(jì)步驟基本類似,主要差別在于數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法不同。在事務(wù)分析的設(shè)計(jì)中,由數(shù)據(jù)流圖映射到軟件結(jié)構(gòu)時(shí),從事務(wù)中心邊界開始,把接收通路映射成一個(gè)模塊,在發(fā)送通路設(shè)立一個(gè)控制模塊,用以控制由不同發(fā)送通路映射成的分支模塊。4.6結(jié)構(gòu)化的設(shè)計(jì)方法第4章4.事務(wù)分析1134.7概要設(shè)計(jì)文檔與評(píng)審第4章軟件設(shè)計(jì)規(guī)格說明書是軟件設(shè)計(jì)階段要完成的文檔,作為設(shè)計(jì)任務(wù)的最終成果。概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)規(guī)格說明書可根據(jù)項(xiàng)目的大小分別編寫或合并為一份設(shè)計(jì)規(guī)格說明書。我國國家標(biāo)準(zhǔn)GB/T8567\|2006《計(jì)算機(jī)軟件文檔編制規(guī)范》都給出了設(shè)計(jì)說明書的內(nèi)容框架,可以選擇使用。本章4.8節(jié)給出的“高校圖書管理系統(tǒng)”《軟件概要設(shè)計(jì)說明書》可供讀者參考。4.7.1概要設(shè)計(jì)說明書的編寫內(nèi)容4.7概要設(shè)計(jì)文檔與評(píng)審第4章軟件設(shè)計(jì)規(guī)格說明書是軟件設(shè)1144.7概要設(shè)計(jì)文檔與評(píng)審第4章設(shè)計(jì)評(píng)審就是對設(shè)計(jì)文檔的評(píng)審。目的是為了盡早發(fā)現(xiàn)軟件的欠缺并盡早糾正,因此評(píng)審對于項(xiàng)目的成功是絕對必要的。(1)評(píng)審的指導(dǎo)原則概要設(shè)計(jì)評(píng)審和詳細(xì)設(shè)計(jì)評(píng)審應(yīng)分開進(jìn)行,不可合并為一次評(píng)審;概要設(shè)計(jì)評(píng)審應(yīng)邀請用戶代表和有關(guān)領(lǐng)域?qū)<业綍?huì),詳細(xì)設(shè)計(jì)評(píng)審則不需要;評(píng)審是為了提前揭露錯(cuò)誤,參加評(píng)審的設(shè)計(jì)人員應(yīng)該歡迎別人提出批評(píng)和建議,不要掩蓋設(shè)計(jì)的缺陷。評(píng)審的對象是設(shè)計(jì)文檔而不是設(shè)計(jì)者;評(píng)審中提出的問題應(yīng)詳細(xì)記錄,但不謀求當(dāng)場解決;評(píng)審結(jié)束前應(yīng)做出本次評(píng)審能否通過的結(jié)論。4.7.2概要設(shè)計(jì)評(píng)審4.7概要設(shè)計(jì)文檔與評(píng)審第4章設(shè)計(jì)評(píng)審就是對設(shè)計(jì)文檔的評(píng)1154.7概要設(shè)計(jì)文檔與評(píng)審第4章(2)評(píng)審的主要內(nèi)容概要設(shè)計(jì)評(píng)審應(yīng)該把重點(diǎn)放在系統(tǒng)的總體結(jié)構(gòu)、模塊劃分、內(nèi)外接口等方面。如軟件結(jié)構(gòu)能否滿足需求;結(jié)構(gòu)形態(tài)是否合理;層次是否清晰;模塊劃分是否符合優(yōu)化原則;人機(jī)界面、內(nèi)外部接口和出錯(cuò)處理是否合理等。詳細(xì)設(shè)計(jì)評(píng)審的重點(diǎn)應(yīng)該放在各個(gè)模塊的具體設(shè)計(jì)上。如模塊的設(shè)計(jì)能否滿足其功能和性能要求;算法和數(shù)據(jù)結(jié)構(gòu)是否合理;設(shè)計(jì)描述是否簡單、清晰等。4.7.2概要設(shè)計(jì)評(píng)審4.7概要設(shè)計(jì)文檔與評(píng)審第4章(2)評(píng)審的主要內(nèi)容4.71164.7概要設(shè)計(jì)文檔與評(píng)審第4章(3)評(píng)審的方式評(píng)審分為正式和非正式兩種方式。非正式評(píng)審參加人數(shù)少,且均為軟件人員,帶有同行討論性質(zhì),不拘泥于時(shí)間和形式,適宜詳細(xì)設(shè)計(jì)評(píng)審。正式評(píng)審除軟件開發(fā)人員外,還應(yīng)邀請用戶代表和有關(guān)領(lǐng)域?qū)<覅⒓印Mǔ2捎么疝q方式,與會(huì)者提前審閱文檔資料,設(shè)計(jì)人員使用幻燈片等方式對設(shè)計(jì)方案詳細(xì)說明之后,回答與會(huì)者的問題并記錄各種重要的評(píng)審意見。正式評(píng)審是概要設(shè)計(jì)評(píng)審的常用方式。4.7.2概要設(shè)計(jì)評(píng)審4.7概要設(shè)計(jì)文檔與評(píng)審第4章(3)評(píng)審的方式4.7.21174.8項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”概要設(shè)計(jì)第4章4.8項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”概要設(shè)計(jì)第4章1184.8項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”概要設(shè)計(jì)第4章功能模塊與相應(yīng)數(shù)據(jù)表之間的關(guān)系表4.8項(xiàng)目實(shí)踐:“圖書管理系統(tǒng)”概要設(shè)計(jì)第4章功能模塊與119詳細(xì)設(shè)計(jì)第5章本章要點(diǎn)理解詳細(xì)設(shè)計(jì)的任務(wù)與原則;掌握詳細(xì)設(shè)計(jì)的表達(dá)工具;學(xué)會(huì)書寫軟件詳細(xì)設(shè)計(jì)文檔。詳細(xì)設(shè)計(jì)第5章本章1205.1詳細(xì)設(shè)計(jì)的任務(wù)與原則第5章詳細(xì)設(shè)計(jì)(又稱為過程設(shè)計(jì)或模塊設(shè)計(jì)),是編碼的前導(dǎo)。其主要任務(wù)是確定每一個(gè)模塊所使用的算法、塊內(nèi)數(shù)據(jù)結(jié)構(gòu)和接口細(xì)節(jié),用描述工具表達(dá)算法的過程,即對模塊的具體實(shí)現(xiàn)過程進(jìn)行詳細(xì)地描述。具體任務(wù)如下:(1)算法設(shè)計(jì)(2)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(3)模塊接口細(xì)節(jié)(4)測試用例設(shè)計(jì)(5)數(shù)據(jù)庫物理設(shè)計(jì)(6)數(shù)據(jù)代碼設(shè)計(jì)(7)其他設(shè)計(jì)(8)編寫詳細(xì)設(shè)計(jì)說明書并進(jìn)行評(píng)審。5.1.1詳細(xì)設(shè)計(jì)的任務(wù)5.1詳細(xì)設(shè)計(jì)的任務(wù)與原則第5章詳細(xì)設(shè)計(jì)(又稱為過程設(shè)計(jì)1215.1詳細(xì)設(shè)計(jì)的任務(wù)與原則第5章進(jìn)行詳細(xì)設(shè)計(jì)時(shí)應(yīng)遵循以下原則:(1)采用自頂向下、逐步求精的程序設(shè)計(jì)方法。在詳細(xì)設(shè)計(jì)過程中,采用逐步求精的方法尅降低待處理問題的復(fù)雜度。(2)使用三種基本控制結(jié)構(gòu)完成程序設(shè)計(jì)。使用順序、選擇和循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造程序,限制使用無條件跳轉(zhuǎn)語句。(3)設(shè)計(jì)人員組織結(jié)構(gòu)采用“外科醫(yī)生——助手”模式。在這種組織結(jié)構(gòu)中,外科醫(yī)生和助手都應(yīng)了解相關(guān)設(shè)計(jì)內(nèi)容,但外科醫(yī)生在設(shè)計(jì)中起主導(dǎo)作用,是設(shè)計(jì)的技術(shù)負(fù)責(zé)人,助手只起技術(shù)支持作用。此種模式區(qū)別于傳統(tǒng)的“平等組合”模式,使設(shè)計(jì)責(zé)任集中在少數(shù)人身上,避免了因觀點(diǎn)不同而造成的設(shè)計(jì)策略和接口的差異。5.1.2詳細(xì)設(shè)計(jì)的原則5.1詳細(xì)設(shè)計(jì)的任務(wù)與原則第5章進(jìn)行詳細(xì)設(shè)計(jì)時(shí)應(yīng)遵循以下1225.2詳細(xì)設(shè)計(jì)的工具第5章算法過程在理想的情況下是使用自然語言來描述,但由于自然語言存在多義性,在實(shí)際的算法描述中,只能采用更加嚴(yán)謹(jǐn)?shù)姆绞絹砭谋硎?。進(jìn)行詳細(xì)設(shè)計(jì)時(shí)常用三種工具:圖形、表格和語言。圖形工具:包括程序流程圖、N\|S圖、PAD圖等。表格工具:判定表。語言工具:過程設(shè)計(jì)語言(PDL)。5.2詳細(xì)設(shè)計(jì)的工具第5章算法過程在理想的情況下是使用自1235.2詳細(xì)設(shè)計(jì)的工具第5章1.程序流程圖程序流程圖又叫程序框圖,它是歷史最悠久、使用最廣泛的一種算法表示工具。5.2詳細(xì)設(shè)計(jì)的工具第5章1.程序流程圖1245.2詳細(xì)設(shè)計(jì)的工具第5章程序流程圖的5種控制結(jié)構(gòu)如圖5-2所示。5.2詳細(xì)設(shè)計(jì)的工具第5章程序流程圖的5種控制結(jié)構(gòu)如圖51255.3用戶界面設(shè)計(jì)第5章5.3.1用戶界面設(shè)計(jì)的重要性5.3.2用戶界面設(shè)計(jì)考慮的問題5.3.3用戶界面設(shè)計(jì)的基本原則5.3.4用戶界面設(shè)計(jì)指南5.3用戶界面設(shè)計(jì)第5章5.3.1用戶界面設(shè)計(jì)的重要1265.4數(shù)據(jù)代碼設(shè)計(jì)第5章1.代碼設(shè)計(jì)的原則2.代碼的種類順序碼、信息塊碼、分組碼、助記碼、縮寫碼、合成碼5.4數(shù)據(jù)代碼設(shè)計(jì)第5章1.代碼設(shè)計(jì)的原則1275.5詳細(xì)設(shè)計(jì)文檔的編制及評(píng)審第5章1.詳細(xì)設(shè)計(jì)文檔的編制2.詳細(xì)設(shè)計(jì)的評(píng)審

5.5詳細(xì)設(shè)計(jì)文檔的編制及評(píng)審第5章1.詳細(xì)設(shè)計(jì)文檔的1285.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”、“圖書歸還”程序的層次結(jié)構(gòu)圖

5.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”、1295.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”模塊功能描述

5.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”模1305.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”程序流程圖

創(chuàng)建本窗體連接數(shù)據(jù)庫調(diào)用“檢查借書數(shù)量”調(diào)用“檢查圖書”調(diào)用“審核讀者”調(diào)用“辦理借書”5.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”程1315.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”模塊程序接口

5.6項(xiàng)目實(shí)踐:圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)第5章“借書借閱”模132面向?qū)ο蟾拍詈蚏ose建模技術(shù)第6章本章要點(diǎn)掌握面向?qū)ο蟮幕靖拍睿?/p>

理解面向?qū)ο笈c面向過程的區(qū)別;

了解UML的各種圖;

熟悉靜態(tài)建模和動(dòng)態(tài)建模的方法;

學(xué)會(huì)RationalRose軟件的安裝與配置方法;

掌握利用RationalRose建模的基本步驟。面向?qū)ο蟾拍詈蚏ose建模技術(shù)第6章本章掌握面向?qū)ο蟮幕?336.1面向?qū)ο蠓椒ǜ攀龅?章目前廣泛使用的軟件工程方法主要有結(jié)構(gòu)化方法和面向?qū)ο蟮姆椒?。結(jié)構(gòu)化方法是面向功能的,它從系統(tǒng)的功能入手,將系統(tǒng)分解為若干功能模塊,通常使用函數(shù)或過程來實(shí)現(xiàn)所需功能,數(shù)據(jù)通常作為參數(shù)傳遞給函數(shù)或過程。用這種方式開發(fā)的軟件可重用性、可維護(hù)性都較差。尤其是當(dāng)軟件規(guī)模較大或軟件需求模糊易變時(shí),采用結(jié)構(gòu)化方法開發(fā)軟件往往不能成功。為此,人們提出了面向?qū)ο蟮拈_發(fā)方法。面向?qū)ο蠓椒捎孟旅娴墓絹砻枋觯好嫦驅(qū)ο?對象+類+繼承+消息傳遞6.1.1面向?qū)ο蠓椒ǖ奶卣?.1面向?qū)ο蠓椒ǜ攀龅?章目前廣泛使用的軟件工程方法主1346.1面向?qū)ο蠓椒ǜ攀龅?章面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)如下:1.與人類習(xí)慣的思維方法一致2.系統(tǒng)的穩(wěn)定性好3.可重用性好4.較易于開發(fā)大型軟件產(chǎn)品5.可維護(hù)性好6.1.1面向?qū)ο蠓椒ǖ奶卣?.1面向?qū)ο蠓椒ǜ攀龅?章面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)如下:1356.1面向?qū)ο蠓椒ǜ攀龅?章1.對象(Object)在應(yīng)用領(lǐng)域中有意義的、與所有解決的問題有關(guān)系的任何事物都可以作為對象。對象可以是具體的物體實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。例如,一名學(xué)生、一本圖書等。對象由一組屬性和對這組屬性進(jìn)行操作的一組方法(服務(wù))組成。屬性就是對象所包含的數(shù)據(jù),它代表對象的狀態(tài),它在設(shè)計(jì)對象時(shí)確定,一般只能通過執(zhí)行對象的操作來改變,例如,學(xué)生的屬性有姓名、年齡等。操作(或稱方法或服務(wù))即對象所能執(zhí)行的操作,也就是類中所定義的服務(wù),它描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。可以通過向?qū)ο蟀l(fā)送消息來調(diào)用其方法。例如:“讀者”類的服務(wù)有“借書”、“還書”等。6.1.2面向?qū)ο蠓椒ǖ幕靖拍?.1面向?qū)ο蠓椒ǜ攀龅?章1.對象(Object)6.1366.1面向?qū)ο蠓椒ǜ攀龅?章1.對象(Object)6.1.2面向?qū)ο蠓椒ǖ幕靖拍?.1面向?qū)ο蠓椒ǜ攀龅?章1.對象(Object)6.1376.1面向?qū)ο蠓椒ǜ攀龅?章2.類(Class)和實(shí)例(Instance)類是具有相同屬性和服務(wù)的一組對象的集合。類是關(guān)于對象的抽象描述,反映了該對象類型的所有對象的性質(zhì)。一個(gè)對象則是其對應(yīng)類的一個(gè)實(shí)例。類和對象的關(guān)系是:類是對象的抽象,類是對象的“模板”,類用于創(chuàng)建對象;對象是類的實(shí)例。例如:“學(xué)生”是一個(gè)類,它描述了所有學(xué)生的性質(zhì)。而一個(gè)具體的學(xué)生“張三”是類“學(xué)生”的一個(gè)實(shí)例。類是關(guān)于對象性質(zhì)的描述,它同對象一樣,包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的操作。6.1.2面向?qū)ο蠓椒ǖ幕靖拍?.1面向?qū)ο蠓椒ǜ攀龅?章2.類(Class)和實(shí)例(1386.1面向?qū)ο蠓椒ǜ攀龅?章4.封裝(Encapsulation)封裝是一種信息隱蔽技術(shù),用戶只能見到對象封裝界面上的信息,而對象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)對用戶是隱藏的。封裝有兩個(gè)含義,一個(gè)是指把對象的全部屬性和全部操作(即方法)結(jié)合起來,形成一個(gè)不可分割的獨(dú)立單位(即對象);另一個(gè)是指信息隱蔽,即盡可能隱蔽對象內(nèi)部的行為實(shí)現(xiàn)細(xì)節(jié)。類(或?qū)ο螅┦欠庋b的基本單位。在類中定義的接收對方消息的方法稱為類的接口。封裝使對象形成兩個(gè)部分:接口部分和實(shí)現(xiàn)部分。接口部分是可見的,供外界通過消息來訪問該對象,而實(shí)現(xiàn)部分不可見。6.1.2面向?qū)ο蠓椒ǖ幕靖拍?.1面向?qū)ο蠓椒ǜ攀龅?章4.封裝(Encapsula1396.1面向?qū)ο蠓椒ǜ攀龅?章5.繼承性(Inheritance)繼承

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論