軟件工程實(shí)踐課件_第1頁(yè)
軟件工程實(shí)踐課件_第2頁(yè)
軟件工程實(shí)踐課件_第3頁(yè)
軟件工程實(shí)踐課件_第4頁(yè)
軟件工程實(shí)踐課件_第5頁(yè)
已閱讀5頁(yè),還剩1461頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟體工程原理電腦系統(tǒng)工程概念系統(tǒng)分析和定義硬件軟件系統(tǒng)(總體)設(shè)計(jì)硬體工程軟體工程電腦軟體電腦軟體定義(GB):

a.與電腦系統(tǒng)的操作有關(guān)的電腦程式、規(guī)程、規(guī)則,以及可能有的檔、文檔及數(shù)據(jù)。

b.與電腦系統(tǒng)的操作有關(guān)的程式、規(guī)程、規(guī)則及任何與之有關(guān)的文檔。什麼是軟體?軟體是電腦系統(tǒng)中與硬體相互依存的另一部分,它是包括程式,數(shù)據(jù)及其相關(guān)文檔的完整集合。程式是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程式能正常操縱資訊的數(shù)據(jù)結(jié)構(gòu)文檔是與程式開(kāi)發(fā),維護(hù)和使用有關(guān)的圖文材料軟體的特點(diǎn)軟體是一種邏輯實(shí)體,而不是具體的物理實(shí)體。因而具有抽象性軟體的生產(chǎn)與硬體不同,在它的開(kāi)發(fā)過(guò)程中沒(méi)有明顯的製造過(guò)程在軟體的運(yùn)行和使用期間,沒(méi)有硬體那樣的機(jī)械磨損,老化問(wèn)題軟體的開(kāi)發(fā)和運(yùn)行常受到電腦系統(tǒng)的限制,對(duì)電腦系統(tǒng)有著不同程度的依賴性軟體的開(kāi)發(fā)至今尚未完全擺脫手工藝的開(kāi)發(fā)方式軟體本身是複雜的實(shí)際問(wèn)題的複雜性程式邏輯結(jié)構(gòu)的複雜性軟體成本相當(dāng)昂貴相當(dāng)多的軟體工作涉及到社會(huì)因素軟體的分類—按功能進(jìn)行劃分系統(tǒng)軟體操作系統(tǒng)資料庫(kù)管理系統(tǒng)設(shè)備驅(qū)動(dòng)程式通信處理程式等支撐軟體文本編輯程式檔格式化程式磁片向磁帶向數(shù)據(jù)傳輸?shù)某淌匠淌綆?kù)系統(tǒng)支持需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和管理的軟體

應(yīng)用軟體商業(yè)數(shù)據(jù)處理軟體工程與科學(xué)計(jì)算軟體電腦輔助設(shè)計(jì)/製造軟體系統(tǒng)仿真軟體智能產(chǎn)品嵌入軟體醫(yī)療、制藥軟體事務(wù)管理、辦公自動(dòng)化軟體電腦輔助教學(xué)軟體軟體的分類—按規(guī)模進(jìn)行劃分類別參加人員數(shù)研製期限根源程式行數(shù)

微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)極大型2000~50005~10年1M~10M

軟體的分類按工作方式劃分:即時(shí)處理軟體分時(shí)軟體互動(dòng)式軟體批處理軟體按服務(wù)對(duì)象的範(fàn)圍劃分:專案軟體產(chǎn)品軟體按使用的頻度進(jìn)行劃分:一次使用頻繁使用按軟體失效的影響進(jìn)行劃分:高可靠性軟體一般可靠性軟體軟體發(fā)展階段程式設(shè)計(jì)階段—50至60年代程式系統(tǒng)階段—60至70年代軟體工程階段—70年代以後軟體危機(jī)...電腦硬體性能/價(jià)格比和品質(zhì)穩(wěn)步提高軟體成本逐年上升,品質(zhì)沒(méi)有可靠的保證軟體已成為限制電腦系統(tǒng)發(fā)展的關(guān)健因素將軟體開(kāi)發(fā)和維護(hù)過(guò)程中遇到的一系列嚴(yán)重問(wèn)題統(tǒng)稱為“軟體危機(jī)”在60年代後期開(kāi)始認(rèn)真研究解決軟體危機(jī)的方法,逐步形成了新興的電腦軟體工程學(xué)...軟體危機(jī)什麼是軟體危機(jī)?軟體危機(jī)是指在電腦軟體的開(kāi)發(fā)和維護(hù)中所遇到的一系列嚴(yán)重問(wèn)題。幾乎所有軟體都不同程度地存在這些問(wèn)題概括地說(shuō)軟體危機(jī)包含兩方面問(wèn)題:如何開(kāi)發(fā)軟體,怎樣滿足對(duì)軟體的日益增長(zhǎng)的需求如何維護(hù)數(shù)量不斷膨脹的已有軟體軟體危機(jī)主要表現(xiàn)1.對(duì)軟體開(kāi)發(fā)成本和進(jìn)度的估計(jì)很不準(zhǔn)確2.用戶對(duì)“已完成的”軟體不滿意的現(xiàn)象經(jīng)常發(fā)生3.軟體產(chǎn)品的品質(zhì)靠不住4.軟體不可維護(hù)5.軟體沒(méi)有適當(dāng)?shù)奈臋n資料6.軟體成本占電腦系統(tǒng)總成本的比例逐年上升7.軟體開(kāi)發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)跟不上電腦應(yīng)用迅速普及深入的趨勢(shì)產(chǎn)生軟體危機(jī)的原因一方面與軟體本身的特點(diǎn)有關(guān)在軟體運(yùn)行前,軟體開(kāi)發(fā)過(guò)程的進(jìn)展難衡量,品質(zhì)難評(píng)價(jià),因此管理和控制軟體開(kāi)發(fā)過(guò)程相當(dāng)困難;在軟體運(yùn)行中,軟體維護(hù)意味著改正或修改原來(lái)的設(shè)計(jì),較難維護(hù);軟體的顯著特點(diǎn)是規(guī)模龐大,複雜度超線性增長(zhǎng)。要保證高質(zhì)量大型軟體的開(kāi)發(fā),極端複雜困難,不僅涉及技術(shù)問(wèn)題(如分析方法、設(shè)計(jì)方法、版本控制),更重要的是必須有嚴(yán)格而科學(xué)的管理。另一方面與軟體開(kāi)發(fā)和維護(hù)方法不正確有關(guān),這是主要原因。特別是忽視軟體需求分析的重要性忽視軟體需求分析的重要性對(duì)用戶要求沒(méi)有完整準(zhǔn)確的認(rèn)識(shí)就匆忙著手編寫(xiě)程式軟體開(kāi)發(fā)與編程等同忽略文檔軟體定義不明輕視維護(hù)對(duì)軟體開(kāi)發(fā)的錯(cuò)誤認(rèn)識(shí)(1)已經(jīng)有了關(guān)於建造軟體的標(biāo)準(zhǔn)和規(guī)程使用了嗎?開(kāi)發(fā)者知道嗎?適用嗎?完整嗎?已經(jīng)有了很好的軟體開(kāi)發(fā)工具還需要電腦輔助軟體工程(CASE)工具對(duì)軟體開(kāi)發(fā)的錯(cuò)誤認(rèn)識(shí)(2)如果計(jì)畫(huà)落後,可以增加人員趕回來(lái)給一個(gè)已經(jīng)延遲的軟體專案增加人手只會(huì)使其更加延遲原有人員需要抽實(shí)踐訓(xùn)練新手有了目標(biāo)的一般描述就可以開(kāi)始寫(xiě)程式不完善的系統(tǒng)定義是專案失敗的主要原因?qū)涹w開(kāi)發(fā)的錯(cuò)誤認(rèn)識(shí)(3)專案需求不斷變化,但軟體很靈活,變化能夠很容易地得到滿足軟體需求的變化確實(shí)是經(jīng)常的,但其產(chǎn)生的影響隨著引入的時(shí)間不同而不同寫(xiě)出程式並使其正常運(yùn)行,工作就結(jié)束了越早開(kāi)始寫(xiě)程式,就要花越長(zhǎng)時(shí)間才能夠完成對(duì)軟體開(kāi)發(fā)的錯(cuò)誤認(rèn)識(shí)(4)在程式真正開(kāi)始運(yùn)行前,無(wú)法評(píng)估其品質(zhì)正式的技術(shù)評(píng)審品質(zhì)篩檢程式成功專案唯一應(yīng)該提交的就是運(yùn)行程式軟體=程式+文檔+數(shù)據(jù)文檔是成功開(kāi)發(fā)的基礎(chǔ)文檔為維護(hù)提供指導(dǎo)解決辦法...全面解決軟體危機(jī)需要一系列綜合措施:在軟體研製的各個(gè)階段採(cǎi)用好的工具;對(duì)軟體的實(shí)現(xiàn)提供有效的構(gòu)件塊;為保證軟體品質(zhì)提供自動(dòng)設(shè)計(jì)技術(shù);以及為協(xié)調(diào)、控制、管理提供基本理論和技術(shù)——軟體工程。...解決辦法軟體工程這一要素將駕馭前面的工具、構(gòu)件決和技術(shù)軟體工程把管理、控制、評(píng)審等方法與分析、設(shè)計(jì)、編碼、測(cè)試、維護(hù)等技術(shù)結(jié)合起來(lái)沒(méi)有堅(jiān)實(shí)的軟體開(kāi)發(fā)方法學(xué),即使最先進(jìn)的工具和技術(shù)也不能使軟體危機(jī)有所減輕軟體工程—工程化方法用於解決任何產(chǎn)品開(kāi)發(fā)的一種工程化方法是:要求在定義、開(kāi)發(fā)和維護(hù)階段的每一步中都採(cǎi)用經(jīng)過(guò)驗(yàn)證的方法要求一系列的復(fù)查,以便在產(chǎn)品開(kāi)發(fā)中保證品質(zhì)規(guī)定在每一步中要產(chǎn)生的特定的文檔鼓勵(lì)能夠加速開(kāi)發(fā)的各種工具和方法的使用與研製提供從原始產(chǎn)品概念到最後產(chǎn)品製造的一個(gè)可追溯的途徑軟體工程是使電腦軟體走向工程科學(xué)的途徑軟體工程—軟體工程定義軟體工程是為了經(jīng)濟(jì)地獲得可靠的和能在實(shí)際機(jī)器上高效運(yùn)行的軟體而建立和使用的好的工程原則。(FritzBauer1969)軟體工程是應(yīng)用於電腦軟體的定義、開(kāi)發(fā)和維護(hù)的一整套方法、工具、文檔、實(shí)踐標(biāo)準(zhǔn)和工序。(GB)軟體工程:(1)將系統(tǒng)化的、規(guī)範(fàn)的、可度量的方法應(yīng)用於軟體的開(kāi)發(fā)、運(yùn)行和維護(hù)的過(guò)程,即將工程化應(yīng)用於軟體中。(2)(1)中所述方法的研究。(IEEE93)軟體工程是模仿在硬體研製中行之有效的一套計(jì)畫(huà)、管理、技術(shù)、方法,基於軟體的生存期概念而建立起來(lái)的。軟體工程的定義Boehm:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)並構(gòu)造電腦程式及為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程式所必需的相關(guān)檔資料FritzBauer:建立並使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟體的一系列方法軟體工程三要素:方法、工具和過(guò)程軟體工程方法為軟體開(kāi)發(fā)提供了“如何做”的技術(shù)軟體工具為軟體工程方法提供了自動(dòng)的或半自動(dòng)的軟體支撐環(huán)境軟體工程—視圖1...品質(zhì)焦點(diǎn)過(guò)程方法工具...軟體工程—視圖1品質(zhì)焦點(diǎn):任何工程方法必須以有組織的品質(zhì)保證為基礎(chǔ)。品質(zhì)的理念刺激不斷過(guò)程改進(jìn),導(dǎo)致出現(xiàn)更加成熟的軟體工程方法。它是軟體工程的根基。過(guò)程:軟體工程的基礎(chǔ)是過(guò)程。軟體工程過(guò)程是將技術(shù)層結(jié)合在一起的凝聚力,使得軟體能夠合理地和及時(shí)地開(kāi)發(fā)出來(lái)。方法:軟體工程方法層提供了建造軟體在技術(shù)上需要“怎麼做”。工具:在工具層對(duì)過(guò)程和方法提供了自動(dòng)和半自動(dòng)的支持。軟體工程—生存期概念電腦軟體生存期中有三個(gè)階段:定義階段、開(kāi)發(fā)階段、維護(hù)階段。定義階段:為軟體專案做出計(jì)畫(huà)、預(yù)算資金和進(jìn)度,分析並規(guī)定詳細(xì)的需求——做什麼開(kāi)發(fā)階段:用經(jīng)過(guò)驗(yàn)證的各種設(shè)計(jì)、編碼和測(cè)試方法把軟體需求轉(zhuǎn)變?yōu)橐粋€(gè)可執(zhí)行的程式——怎麼做維護(hù)階段:糾正所遇到的各種問(wèn)題,修正軟體使之適合於不同的工作環(huán)境,增強(qiáng)功能要求——改變每一個(gè)階段都有一系列的工程步驟,每一步都以能加以復(fù)查並可移交才作為結(jié)束軟體工程知識(shí)結(jié)構(gòu)2001年5月ISO/IECJTC1(ISO和IEC的第一聯(lián)合技術(shù)委員會(huì))發(fā)佈了《SWEBOK指南V0.95(試用版)》(GuidetotheSoftwareEngineeringBodyofKnowledge,簡(jiǎn)稱SWEBOK)SWEBOK把軟體工程學(xué)科的主體知識(shí)分為10個(gè)知識(shí)領(lǐng)域。軟體工程知識(shí)結(jié)構(gòu)

軟體需求軟體設(shè)計(jì)軟體構(gòu)造軟體測(cè)試軟體維護(hù)軟體配置管理軟體工程管理軟體工程過(guò)程軟體工程工具和方法軟體品質(zhì)軟體工程的基本原理B.W.Boehm(1983)1)用分階段的生命週期計(jì)畫(huà)嚴(yán)格管理;2)堅(jiān)持進(jìn)行階段評(píng)審;3)實(shí)行嚴(yán)格的產(chǎn)品控制;4)採(cǎi)用現(xiàn)代程式設(shè)計(jì)技術(shù);5)結(jié)果應(yīng)能清楚地審查;6)開(kāi)發(fā)小組的人員應(yīng)該少而精;7)承認(rèn)不斷改進(jìn)軟體工程實(shí)踐的必要性。計(jì)畫(huà)管理缺乏科學(xué)而周密的計(jì)畫(huà)是軟體開(kāi)發(fā)普遍現(xiàn)象不成功軟體專案一半以上由於計(jì)畫(huà)不周造成應(yīng)把軟體生存期劃分為若干階段,制定科學(xué)周密、切實(shí)可行的計(jì)畫(huà),並嚴(yán)格按計(jì)畫(huà)進(jìn)行管理,這是軟體專案取得成功的先決條件計(jì)畫(huà)所做的和按計(jì)畫(huà)去做計(jì)畫(huà)一般包括:專案開(kāi)發(fā)計(jì)畫(huà)、軟體配置管理計(jì)畫(huà)、軟體品質(zhì)保證計(jì)畫(huà)、軟體測(cè)試計(jì)畫(huà)等評(píng)審在每個(gè)階段都進(jìn)行嚴(yán)格的評(píng)審,以便儘早發(fā)現(xiàn)在軟體開(kāi)發(fā)過(guò)程中所犯的錯(cuò)誤,是一條必須遵循的重要原則品質(zhì)保證工作不能等到程式編制完成後才進(jìn)行:1.程式中的大部分錯(cuò)誤是在編碼之前造成的2.錯(cuò)誤的檢測(cè)與改正時(shí)間越晚,所付出的代價(jià)也就越高。3.錯(cuò)誤還會(huì)被“放大”配置管理...軟體研製各階段產(chǎn)生的文檔、報(bào)告、程式清單和數(shù)據(jù)等,構(gòu)成軟體配置全部軟體配置是一個(gè)軟體產(chǎn)品的真正代表,必須使其保持精確和一致為了保持軟體配置的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制,對(duì)變更進(jìn)行嚴(yán)格的控制和管理...配置管理配置管理是標(biāo)識(shí)和確定系統(tǒng)中配置項(xiàng)的過(guò)程,在系統(tǒng)整個(gè)生存週期內(nèi)控制這些項(xiàng)的投放和變更,記錄並報(bào)告配置的狀態(tài)和變更要求,驗(yàn)證配置項(xiàng)的完整性和正確性。它包括對(duì)軟體配置的標(biāo)識(shí)、控制、審計(jì)、記錄等一系列的活動(dòng)在軟體研製過(guò)程中,由業(yè)已經(jīng)過(guò)正式審核與同意,可用作下一步開(kāi)發(fā)的基礎(chǔ),並且只有通過(guò)正式的修改管理步驟方能加以修改的規(guī)格說(shuō)明或產(chǎn)品形成了配置管理的基線軟體開(kāi)發(fā)方法和工具軟體工程鼓勵(lì)研製和採(cǎi)用各種先進(jìn)的軟體開(kāi)發(fā)方法和工具各種軟體開(kāi)發(fā)方法的出現(xiàn)和採(cǎi)用大大改善了軟體的開(kāi)發(fā)效率和維護(hù)效率軟體工程輔助工具、電腦輔助軟體工程(CASE)環(huán)境工具和環(huán)境的使用進(jìn)一步提高了軟體的開(kāi)發(fā)效率、維護(hù)效率和軟體品質(zhì)文檔...軟體研製是腦力勞動(dòng),具有不可見(jiàn)性為了實(shí)現(xiàn)對(duì)軟體研製過(guò)程的管理,在軟體研製的每個(gè)階段,都應(yīng)按規(guī)定的格式編寫(xiě)出完整準(zhǔn)確的文檔文檔是軟體中不可缺少的組成部分...文檔的作用1)作為階段工作成果和結(jié)束標(biāo)誌;2)向管理人員提供軟體開(kāi)發(fā)過(guò)程中的進(jìn)展和情況,把軟體開(kāi)發(fā)過(guò)程中的一些“不可見(jiàn)的”事物轉(zhuǎn)換成“可見(jiàn)的”文字資料;3)記錄開(kāi)發(fā)過(guò)程中的技術(shù)資訊,便於協(xié)調(diào)以後的軟體開(kāi)發(fā)、使用和修改;4)提供對(duì)軟體的有關(guān)運(yùn)行、維護(hù)和培訓(xùn)的資訊,便於各類人員之間相互瞭解彼此的工作;5)向潛在用戶報(bào)告軟體的功能和性能,使他們能判定該軟體能否服務(wù)於自己的需要。開(kāi)發(fā)小組軟體開(kāi)發(fā)小組的組成人員的素質(zhì)應(yīng)該好,而人數(shù)則不宜過(guò)多開(kāi)發(fā)小組人員的素質(zhì)和數(shù)量是影響軟體產(chǎn)品品質(zhì)和開(kāi)發(fā)效率的重要因素隨著開(kāi)發(fā)人員數(shù)目的增加,因?yàn)榻涣髑闆r討論問(wèn)題造成的通信開(kāi)銷也急劇增加組成少而精的開(kāi)發(fā)小組是一條基本原理不斷改進(jìn)僅有前面六條基本原理並不能保證軟體開(kāi)發(fā)和維護(hù)的過(guò)程能趕上時(shí)代前進(jìn)的步伐、跟上技術(shù)的不斷進(jìn)步Boehm提出應(yīng)把承認(rèn)不斷改進(jìn)軟體工程實(shí)踐的必要性作為軟體工程的第七條基本原理不僅要積極地採(cǎi)納新的軟體技術(shù),而且要注意不斷總結(jié)經(jīng)驗(yàn)軟體工程基本原則-1抽象採(cǎi)用分層次抽象,自頂向下、逐層細(xì)化的辦法控制軟體開(kāi)發(fā)過(guò)程的複雜性。資訊隱蔽將模組設(shè)計(jì)成“黑箱”,實(shí)現(xiàn)的細(xì)節(jié)隱藏在模組內(nèi)部,不讓模組的使用者直接訪問(wèn)。這就是資訊封裝,使用與實(shí)現(xiàn)分離的原則。模組化如C語(yǔ)言程式中的函數(shù)過(guò)程,C++語(yǔ)言程式中的類。模組化有助於資訊隱蔽和抽象,有助於表示複雜的系統(tǒng)。局部化要求在一個(gè)物理模組內(nèi)集中邏輯上相互關(guān)聯(lián)的電腦資源,保證模組之間具有鬆散的耦合,模組內(nèi)部具有較強(qiáng)的內(nèi)聚。這有助於控制解的複雜性。軟體工程基本原則-2確定性

軟體開(kāi)發(fā)過(guò)程中所有概念的表達(dá)應(yīng)是確定的、無(wú)歧義性的、規(guī)範(fàn)的。一致性整個(gè)軟體系統(tǒng)的各個(gè)模組應(yīng)使用一致的概念、符號(hào)和術(shù)語(yǔ)。程式內(nèi)部介面應(yīng)保持一致。軟體和硬體、操作系統(tǒng)的介面應(yīng)保持一致。系統(tǒng)規(guī)格說(shuō)明與系統(tǒng)行為應(yīng)保持一致。用於形式化規(guī)格說(shuō)明的公理系統(tǒng)應(yīng)保持一致。完備性軟體系統(tǒng)不丟失任何重要成分,可以完全實(shí)現(xiàn)系統(tǒng)所要求功能的程度。為了保證系統(tǒng)的完備性,在軟體開(kāi)發(fā)和運(yùn)行過(guò)程中需要嚴(yán)格的技術(shù)評(píng)審??沈?yàn)證性開(kāi)發(fā)大型的軟體系統(tǒng)需要對(duì)系統(tǒng)自頂向下、逐層分解。系統(tǒng)分解應(yīng)遵循系統(tǒng)易於檢查、測(cè)試、評(píng)審的原則,以確保系統(tǒng)的正確性。軟體研製過(guò)程模型軟體生存週期從產(chǎn)品的設(shè)想到不再使用,包含軟體開(kāi)發(fā)、運(yùn)行、維護(hù)全過(guò)程軟體開(kāi)發(fā)包含一系列階段、活動(dòng)和里程碑,如需求分析、設(shè)計(jì)、編碼、測(cè)試軟體研製過(guò)程模型給出了將這些基本階段進(jìn)行有機(jī)組合的結(jié)構(gòu)性模型生存週期支持過(guò)程2配置管理1文檔編制8問(wèn)題解決3品質(zhì)保證4驗(yàn)證5確認(rèn)6聯(lián)合評(píng)審7審核生存週期基本過(guò)程2供應(yīng)1獲取3開(kāi)發(fā)4運(yùn)作5維護(hù)生存週期組織過(guò)程1管理3改進(jìn)2基礎(chǔ)設(shè)施4培訓(xùn)瀑布模型軟體測(cè)試詳細(xì)設(shè)計(jì)軟體實(shí)現(xiàn)系統(tǒng)需求軟體需求概要設(shè)計(jì)1970年由W.Royce提出瀑布模型描述從60年代開(kāi)始,為解決軟體危機(jī)逐漸發(fā)展起軟體工程。瀑布模型則是傳統(tǒng)軟體工程的基礎(chǔ)。瀑布模型的基本思想是將軟體生命週期劃分為若干明確定義的階段。需求捕獲是軟體生命週期的第一個(gè)階段;上一個(gè)階段生成規(guī)定的軟體中間產(chǎn)品(軟體文檔,偽碼等),傳到下一階段作進(jìn)一步加工,最後得到目標(biāo)產(chǎn)品。瀑布模型是一個(gè)理想化過(guò)程,瀑布模型特點(diǎn)(1)階段間具有順序性和依賴性(2)推遲實(shí)現(xiàn)的觀點(diǎn)(3)品質(zhì)保證的觀點(diǎn)瀑布模型的使用風(fēng)險(xiǎn)和適用情況使用風(fēng)險(xiǎn)需求未被充分理解系統(tǒng)太大而不能一次實(shí)現(xiàn)事先打算採(cǎi)用的技術(shù)迅速發(fā)生變化需求迅速發(fā)生變化有限的資源無(wú)法利用某一中間產(chǎn)品適用情況所有的系統(tǒng)功能一次交付時(shí)必須同時(shí)淘汰全部老系統(tǒng)時(shí)瀑布模型V模型系統(tǒng)需求軟體需求概要設(shè)計(jì)詳細(xì)設(shè)計(jì)單元測(cè)試組裝測(cè)試編碼確認(rèn)測(cè)試系統(tǒng)聯(lián)試詳細(xì)設(shè)計(jì)概要設(shè)計(jì)軟體需求系統(tǒng)需求型號(hào)任務(wù)編譯後的單元測(cè)試後的單元組裝後的軟體測(cè)試後的軟體交付軟體驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證驗(yàn)證與確認(rèn)驗(yàn)證與確認(rèn)

J.McDermid於1994年在“軟體工程師參考手冊(cè)”中提出增量模型軟體1:運(yùn)行維護(hù)詳細(xì)設(shè)計(jì)編碼測(cè)試系統(tǒng)需求軟體需求概要設(shè)計(jì)軟體2:運(yùn)行維護(hù)詳細(xì)設(shè)計(jì)編碼測(cè)試增量模型描述預(yù)先計(jì)畫(huà)的產(chǎn)品改進(jìn)從一套給定的需求開(kāi)始,通過(guò)一系列的造型實(shí)施開(kāi)發(fā),第一個(gè)造型納入一部分需求,下一個(gè)造型納入更多的需求,以此類推,直到系統(tǒng)完成在每個(gè)造型中實(shí)行必要的過(guò)程、活動(dòng)和任務(wù)增量模型特點(diǎn)在開(kāi)發(fā)每個(gè)造型時(shí),開(kāi)發(fā)過(guò)程中的活動(dòng)和任務(wù)順序地或部分平行重疊地使用當(dāng)相繼的造型在部分併發(fā)地被開(kāi)發(fā)時(shí),開(kāi)發(fā)過(guò)程中的活動(dòng)和任務(wù)可以在造型間平行地被採(cǎi)用增量模型的使用風(fēng)險(xiǎn)和適用情況風(fēng)險(xiǎn)需求未被很好地理解突然提出一些功能事先打算採(cǎi)用的技術(shù)迅速發(fā)生變化需求迅速發(fā)身變化長(zhǎng)時(shí)期內(nèi)有限的資源投入適用情況需要早期獲得功能中間產(chǎn)品可以提供使用系統(tǒng)被自然地劃分成增量工作人員和(或)資金可以逐步增加漸進(jìn)模型開(kāi)發(fā)1運(yùn)行維護(hù)1開(kāi)發(fā)3運(yùn)行維護(hù)3開(kāi)發(fā)2運(yùn)行維護(hù)2漸進(jìn)模型描述和特點(diǎn)通過(guò)造型開(kāi)發(fā)系統(tǒng)需求不能被完全理解,且不能在初始時(shí)就確定需求一部分被預(yù)先定義,然後在每個(gè)相繼的造型中逐步完善每個(gè)造型被開(kāi)發(fā)時(shí),開(kāi)發(fā)過(guò)程中的活動(dòng)和任務(wù)順序地或部分重疊並行地被採(cǎi)用對(duì)所有造型,開(kāi)發(fā)過(guò)程中的活動(dòng)和任務(wù)通常按同意順序被重複使用採(cǎi)用漸進(jìn)模型的一些原因1)需要某些用戶經(jīng)驗(yàn)來(lái)改進(jìn)和完善需求;2)某些部分的實(shí)現(xiàn)可能取決於未來(lái)技術(shù)的可用性;3)某些新的用戶需求被預(yù)料到,但目前還不清楚;4)某些需求可能比遇到的那些還難以滿足,並且確定不允許因這些需求推遲可用的交付。漸進(jìn)模型的使用風(fēng)險(xiǎn)和適用情況風(fēng)險(xiǎn)突然提出一些功能長(zhǎng)時(shí)期內(nèi)有限的資源投入適用情況需要早期獲得功能中間產(chǎn)品可以提供使用系統(tǒng)被自然地劃分成增量工作人員和(或)資金可以逐步增加需要用戶回饋來(lái)理解全部需求便於對(duì)技術(shù)變化的監(jiān)督原型開(kāi)發(fā)模型需求分析快速設(shè)計(jì)用戶評(píng)價(jià)原型建立原型生產(chǎn)產(chǎn)品修改原型原型分類拋棄式原型開(kāi)發(fā)樣品式原型開(kāi)發(fā)漸增式原型開(kāi)發(fā)螺旋模型B.Boehm於1988年提出螺旋模型描述瀑布模型和漸進(jìn)模型相結(jié)合,增加風(fēng)險(xiǎn)分析用來(lái)指導(dǎo)大型軟體專案的開(kāi)發(fā)將開(kāi)發(fā)劃分為制定計(jì)畫(huà)、風(fēng)險(xiǎn)分析、實(shí)施工程、客戶評(píng)估四類活動(dòng)沿螺旋線每轉(zhuǎn)一圈,表示開(kāi)發(fā)出一個(gè)更完善的新的軟體版本噴泉模型噴泉模型描述1990年B.H.Sollers和J.M.Edwards提出主要用於採(cǎi)用面向?qū)ο蠹夹g(shù)的專案噴泉體現(xiàn)迭代和無(wú)間隙的特徵軟體的某些部分常常被重複工作多次,相關(guān)對(duì)象在每次迭代中隨之加入漸進(jìn)的軟體成分在分析、設(shè)計(jì)、實(shí)現(xiàn)等各項(xiàng)活動(dòng)之間無(wú)明顯邊界RUP模型軟體過(guò)程模型的選擇1)模型應(yīng)符合軟體本身的性質(zhì)(規(guī)模、複雜性)2)模型應(yīng)滿足軟體應(yīng)用系統(tǒng)整體開(kāi)發(fā)進(jìn)度要求3)模型應(yīng)有可能控制並消除軟體開(kāi)發(fā)風(fēng)險(xiǎn)4)模型應(yīng)有可用的電腦輔助工具(如快速原型工具)的支持5)模型應(yīng)與用戶和軟體開(kāi)發(fā)人員的知識(shí)和技能相匹配6)模型應(yīng)有利於軟體開(kāi)發(fā)的管理與控制航太型號(hào)軟體研製過(guò)程模型航太型號(hào)研製經(jīng)歷方案階段、模樣、初樣、試樣(正樣)、定型型號(hào)軟體研製通常也經(jīng)歷模樣、初樣、試樣(正樣)模樣、初樣、正樣軟體是針對(duì)同一個(gè)軟體開(kāi)展的迴圈研製,側(cè)重面不同。結(jié)合原型、漸進(jìn)模型,以原型-基本型-更新型來(lái)形成航太型號(hào)軟體研製過(guò)程模型原型、基本型、更新型基本思想是:首先在需求尚不明確的情況下,對(duì)已知的需求和尚不能確定的需求進(jìn)行分析整理,在此基礎(chǔ)上簡(jiǎn)單地設(shè)計(jì)、編制軟體,產(chǎn)生一個(gè)軟體的原型,並對(duì)原型進(jìn)行多方面的研究、分析和討論,以便確定所採(cǎi)取的技術(shù)實(shí)現(xiàn)方案是否可行,需求還要做哪些補(bǔ)充、修改和完善,從而獲得一個(gè)內(nèi)容較完整、介面較明確的軟體需求和一個(gè)切實(shí)可行的軟體實(shí)現(xiàn)技術(shù)途徑;其次在軟體原型研製的基礎(chǔ)上,進(jìn)行一次完整、嚴(yán)格的軟體研製工作,獲得一個(gè)高質(zhì)量的軟體基本型;最後在軟體基本型的基礎(chǔ)上,針對(duì)更新的軟體需求,採(cǎi)用軟體更新與更改的的方法,對(duì)軟體進(jìn)行更新,獲得軟體的更新型模樣、初樣、試樣-正樣模樣初樣正樣原型基本型更新型更新版本1更新版本2……原型軟體原型研製的目的是明確介面、確定需求、試驗(yàn)系統(tǒng)方案需求分析:根據(jù)系統(tǒng)的任務(wù)分解和技術(shù)要求,對(duì)已知需求、應(yīng)有需求、未確認(rèn)需求等進(jìn)行綜合分析,形成粗略的原型軟體需求規(guī)格說(shuō)明。設(shè)計(jì):對(duì)軟體的總體結(jié)構(gòu)和介面進(jìn)行設(shè)計(jì),形成軟體設(shè)計(jì)說(shuō)明。編碼調(diào)試:編制程式並調(diào)試通過(guò)。分析總結(jié):運(yùn)行軟體,並與系統(tǒng)總體、相應(yīng)介面單位進(jìn)行詳細(xì)的分析討論,對(duì)軟體需求進(jìn)行補(bǔ)充、修改和完善,並確定技術(shù)途徑的可行性。對(duì)高質(zhì)量要求的軟體研製,軟體原型研製所獲的程式應(yīng)廢棄,不帶入以後的研製階段?;拘突拘脱醒u的任務(wù)是根據(jù)基本確定的軟體需求,全面開(kāi)展軟體的研製工作,形成一個(gè)基本滿足系統(tǒng)對(duì)軟體各項(xiàng)要求的基本型軟體,以直接應(yīng)用於型號(hào)或作為下一步更新的基礎(chǔ)?;拘蛙涹w的研製,必須採(cǎi)用瀑布式開(kāi)發(fā)過(guò)程,嚴(yán)格執(zhí)行。研製階段包括:系統(tǒng)需求、軟體需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、軟體實(shí)現(xiàn)、軟體組裝測(cè)試、軟體確認(rèn)測(cè)試、系統(tǒng)聯(lián)試軟體開(kāi)發(fā)方法軟體開(kāi)發(fā)方法是軟體開(kāi)發(fā)過(guò)程所遵循的方法和步驟,其目的在於有效地得到一些工作產(chǎn)品,既程式和文檔,並且滿足品質(zhì)要求程式設(shè)計(jì)方法是軟體開(kāi)發(fā)方法的組成部分此外還有分析方法和設(shè)計(jì)方法評(píng)價(jià)軟體開(kāi)發(fā)方法的四大特徵技術(shù)特徵:支持各種技術(shù)概念的方法特色,如層次性、抽象性、並行性、安全性、正確性等使用特徵:用於具體開(kāi)發(fā)時(shí)的特色,如易理解性、易移植性、易複用性、工具的支持、任務(wù)範(fàn)圍、使用的廣度、活動(dòng)過(guò)渡的可行性、產(chǎn)品的易修改性、對(duì)正確性的支持等管理特徵:增強(qiáng)對(duì)軟體開(kāi)發(fā)活動(dòng)管理的能力方面的特色,如易管理性、支持或阻礙團(tuán)隊(duì)工作的程度、中間階段的確定、工作產(chǎn)品、配置管理、階段結(jié)束準(zhǔn)則、費(fèi)用估計(jì)等經(jīng)濟(jì)特徵:給軟體組織產(chǎn)生的在品質(zhì)和生產(chǎn)力方面的可見(jiàn)效益,如分析活動(dòng)的局部效益、全生存週期效益、獲得該開(kāi)發(fā)方法的代價(jià)、使用它的代價(jià)、管理的代價(jià)等選用軟體開(kāi)發(fā)方法的考慮因素1對(duì)該開(kāi)發(fā)方法是否已具有經(jīng)驗(yàn),或者已有受過(guò)培訓(xùn)的人員2開(kāi)發(fā)專案的進(jìn)度、人員組成情況3為開(kāi)發(fā)專案提供的資源如何4計(jì)畫(huà)、組織、管理的可行性5開(kāi)發(fā)專案的領(lǐng)域知識(shí)準(zhǔn)備情況航太的考慮結(jié)構(gòu)化方法較全面、最成熟、最基礎(chǔ)、使用最廣泛、有成功經(jīng)驗(yàn)結(jié)構(gòu)化方法適合航太軟體研製工作結(jié)構(gòu)化方法是基礎(chǔ)性方法結(jié)構(gòu)化方法包括就形成了配套的軟體結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計(jì)方法和結(jié)構(gòu)化編程方法,其核心和基礎(chǔ)是結(jié)構(gòu)化程式設(shè)計(jì)理論為什麼要講這些所謂的“方法”?“我只要滿足需求就可以了,我自己開(kāi)發(fā)使用什麼方法你管不著?!薄斑@些方法根本沒(méi)有什麼用處,我們那裏高手很多,我們不屑於使用這些方法。”“結(jié)構(gòu)化”起源:對(duì)GOTO的認(rèn)識(shí)1968年Dijkstra在ACM通訊中發(fā)表了“GOTO語(yǔ)句是有害的”文章,認(rèn)為:GOTO語(yǔ)句是有害的,是造成程式混亂的禍根,程式的品質(zhì)與GOTO語(yǔ)句的數(shù)量成反比,應(yīng)該在所有高級(jí)程式設(shè)計(jì)語(yǔ)言中取消GOTO語(yǔ)句激起了強(qiáng)烈的反響和長(zhǎng)期廣泛的論戰(zhàn)論據(jù)1966年,Boehm和Jacopini證明了程式設(shè)計(jì)語(yǔ)言只要上旬、選擇和重複三種形式的控制結(jié)構(gòu)就足以表達(dá)出各種其他形式的結(jié)構(gòu)1970年McKeeman稱其XPL編譯程序僅用一個(gè)GOTO語(yǔ)句1972年C.Strachey設(shè)計(jì)的操作系統(tǒng)只在五處使用了標(biāo)號(hào)和GOTO語(yǔ)句爭(zhēng)辯否定GOTO取消GOTO後,程式易理解、易排錯(cuò)、易維護(hù)沒(méi)有其他好的結(jié)構(gòu)代替GOTO的話,容易濫用GOTO無(wú)GOTO的程式容易進(jìn)行正確性證明肯定GOTO在塊和進(jìn)程的非正常出口處往往需要使用GOTO會(huì)使程式執(zhí)行效率較高在合成程式目標(biāo)時(shí),GOTO語(yǔ)句往往是有用的,如返回語(yǔ)句用GOTO結(jié)論1974年Knuth發(fā)表了總結(jié)性文章:“帶有GOTO的結(jié)構(gòu)化程式設(shè)計(jì)”令人信服地總結(jié)和證實(shí)了以下三點(diǎn):濫用GOTO語(yǔ)句確實(shí)有害,應(yīng)儘量避免完全避免使用GOTO語(yǔ)句也並非是個(gè)明智的方法,有些地方使用GOTO語(yǔ)句,會(huì)使程式流程更清楚、效率更高爭(zhēng)論的焦點(diǎn)不應(yīng)該放在是否取消GOTO語(yǔ)句,而應(yīng)該放在用什麼樣的程式結(jié)構(gòu)上最後一點(diǎn)使關(guān)鍵,肯定以提高程式清晰性為目標(biāo)的結(jié)構(gòu)化方法“方法”的核心是模型所謂的“方法”通常圍繞一系列的模型展開(kāi),給出這些模型的建立,校驗(yàn)和轉(zhuǎn)換方法。COMPUTERMODELREALREAL仿自:CantwellSmith“Computers,ModelsandtheEmbeddingWorld”方法與模型電腦設(shè)計(jì)模型REAL實(shí)際分析模型分析編碼設(shè)計(jì)分析模型和設(shè)計(jì)模型分析模型:對(duì)當(dāng)前所處的環(huán)境,或者現(xiàn)實(shí)情況建立的模型,用於分析和評(píng)估。設(shè)計(jì)模型:對(duì)未來(lái)要建造的系統(tǒng)或者環(huán)境建立的模型,用於系統(tǒng)實(shí)施,也用於交流和評(píng)價(jià)。建立模型有助於精確有效地表達(dá)和溝通。結(jié)構(gòu)化方法結(jié)構(gòu)化程式設(shè)計(jì):一種良好定義的軟體開(kāi)發(fā)技術(shù),它採(cǎi)用自頂向下設(shè)計(jì)和實(shí)現(xiàn)方法,並嚴(yán)格地採(cǎi)用結(jié)構(gòu)化程式的控制構(gòu)造結(jié)構(gòu)化方法的原則清晰第一效率第二設(shè)計(jì)先於編碼自頂向下逐步細(xì)化1清晰第一效率第二著名的“清晰第一,效率第二”已成為當(dāng)今主導(dǎo)的程式設(shè)計(jì)風(fēng)格“先求清楚後求快”“保持程式簡(jiǎn)單以求快”“寫(xiě)清楚——不要為‘效率’犧牲清晰”2設(shè)計(jì)先於編碼“開(kāi)始寫(xiě)程式越早,完成程式需要的時(shí)間就越長(zhǎng)?!薄霸O(shè)計(jì)先於編碼”已成為所有程式設(shè)計(jì)必須遵守的一條原則。設(shè)計(jì)一定要利用各種設(shè)計(jì)工具來(lái)進(jìn)行。3逐步細(xì)化的設(shè)計(jì)方法…逐步細(xì)化方法是結(jié)構(gòu)化程式設(shè)計(jì)的心臟。1)中心思想a.程式設(shè)計(jì)是一個(gè)由粗到細(xì)的過(guò)程;b.程式設(shè)計(jì)不僅包括對(duì)控制結(jié)構(gòu)的設(shè)計(jì),也包括對(duì)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),兩者都要一步步地細(xì)化。3逐步細(xì)化的設(shè)計(jì)方法2)指導(dǎo)原則a.先分解主要問(wèn)題,次要的問(wèn)題可暫時(shí)擱置;b.堅(jiān)持漸進(jìn)的原則,每一步的變化不要太大;c.過(guò)程的細(xì)化與數(shù)據(jù)結(jié)構(gòu)的細(xì)化宜並行、交叉地進(jìn)行;d.選用適合於問(wèn)題的設(shè)計(jì)工具;e.最後一步應(yīng)詳細(xì)到所得結(jié)果可以直接翻譯為根源程式。3)優(yōu)點(diǎn)a.便於控制開(kāi)發(fā)的複雜性;b.便於驗(yàn)證程式的正確性。結(jié)構(gòu)化方法採(cǎi)用的原則抽象逐步求精資訊隱藏模組化模組獨(dú)立模組化原則模組是由邊界元素限定的相鄰的程式元素(例如,數(shù)據(jù)說(shuō)明,可執(zhí)行的語(yǔ)句)的序列,而且有一個(gè)總體識(shí)別字來(lái)代表它。模組是構(gòu)成程式的基本構(gòu)件。模組化就是把程式劃分成獨(dú)立命名且可獨(dú)立訪問(wèn)的模組,每個(gè)模組完成一個(gè)子功能,把這些模組集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。模組化原則主要思想是:將整個(gè)系統(tǒng)進(jìn)行分解成為若干功能獨(dú)立的,能分別設(shè)計(jì)、編程和測(cè)試的模組程式員能單獨(dú)地負(fù)責(zé)一個(gè)或幾個(gè)模組的開(kāi)發(fā)開(kāi)發(fā)一個(gè)模組不需要知道系統(tǒng)其他模組的內(nèi)部結(jié)構(gòu)和編程細(xì)節(jié)模組之間的介面盡可能簡(jiǎn)明,模組應(yīng)盡可能彼此隔離模組化和軟體成本Meyer模組化五條標(biāo)準(zhǔn)…(1)模組可分解性如果一種設(shè)計(jì)方法提供了把問(wèn)題分解為子問(wèn)題的系統(tǒng)化機(jī)制,它就能降低整個(gè)問(wèn)題的複雜性,從而可以實(shí)現(xiàn)一種有效的模組化解決方案。(2)模組可組裝性如果一種設(shè)計(jì)方法能把現(xiàn)有的(可重用的)設(shè)計(jì)構(gòu)件組裝成新系統(tǒng),它就能提供一種並非一切都從頭開(kāi)始做的模組化解決方案。Meyer模組化五條標(biāo)準(zhǔn)…(3)模組可理解性如果可以把一個(gè)模組作為一種獨(dú)立單元(無(wú)需參考其他模組)來(lái)理解,那麼,這樣的模組是易於構(gòu)造和易於修改的。(4)模組連續(xù)性如果對(duì)系統(tǒng)需求的微小修改只導(dǎo)致對(duì)個(gè)別模組,而不是對(duì)整個(gè)系統(tǒng)的修改,則修改所引起的副作用將最小。Meyer模組化五條標(biāo)準(zhǔn)…(5)模組保護(hù)性如果在一個(gè)模組內(nèi)出現(xiàn)異常情況時(shí),它的影響局限在該模組內(nèi)部,則由錯(cuò)誤引起的副作用將最小。模組化應(yīng)達(dá)到的要求具有可修改性:對(duì)整個(gè)系統(tǒng)的一次修改只涉及少數(shù)幾個(gè)模組,這種局部性的修改不僅能滿足系統(tǒng)修改的要求,而且不會(huì)影響系統(tǒng)已經(jīng)具有的良好品質(zhì)具有易讀性:每個(gè)模組的含義和職責(zé)被明確,模組之間的介面關(guān)係清楚,從而降低複雜性,使得閱讀和理解比較方便具有易驗(yàn)證性:只有每個(gè)模組能實(shí)現(xiàn)正確,才可能使整個(gè)系統(tǒng)的正確性有必要的前提抽象人類在認(rèn)識(shí)複雜現(xiàn)象的過(guò)程中使用的最強(qiáng)有力的思維工具是抽象。人們?cè)趯?shí)踐中認(rèn)識(shí)到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過(guò)程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象。抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮細(xì)節(jié)。逐步求精逐步求精是人類解決複雜問(wèn)題時(shí)採(cǎi)用的基本技術(shù),也是許多軟體工程技術(shù)的基礎(chǔ)??梢园阎鸩角缶x為:“為了能集中精力解決主要問(wèn)題而儘量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮?!鼻缶珜?shí)際上是細(xì)化過(guò)程。抽象與求精抽象與求精是一對(duì)互補(bǔ)的概念抽象使得設(shè)計(jì)者能夠說(shuō)明過(guò)程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié)??梢园殉橄罂醋魇且环N通過(guò)忽略多餘的細(xì)節(jié)同時(shí)強(qiáng)調(diào)有關(guān)的細(xì)節(jié),而實(shí)現(xiàn)逐步求精的方法。求精則幫助設(shè)計(jì)者在設(shè)計(jì)過(guò)程中揭示出低層細(xì)節(jié)。這兩個(gè)概念都有助於設(shè)計(jì)者在設(shè)計(jì)演化過(guò)程中創(chuàng)造出完整的設(shè)計(jì)模型。資訊隱藏應(yīng)用模組化原理時(shí),自然會(huì)產(chǎn)生的一個(gè)問(wèn)題:“為了得到最好的一組模組,應(yīng)該怎樣分解軟體”P(pán)arnas提出的資訊隱藏是模組化程式設(shè)計(jì)的基本方法資訊隱藏:為了實(shí)現(xiàn)部件的可見(jiàn)性控制,在分層構(gòu)造軟體模組時(shí),要求這些部件只在模組內(nèi)部可見(jiàn),在模組外部不可見(jiàn)模組獨(dú)立“模組獨(dú)立”概念是模組化、抽象、逐步求精和資訊隱藏等概念的直接結(jié)果,也是完成有效的模組設(shè)計(jì)的基本標(biāo)準(zhǔn)。模組的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)來(lái)度量,這兩個(gè)標(biāo)準(zhǔn)分別稱為內(nèi)聚和耦合。耦合衡量不同模組彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模組內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。耦合耦合是對(duì)一個(gè)軟體結(jié)構(gòu)內(nèi)不同模組之間互連程度的度量。耦合強(qiáng)弱取決於模組間接口的複雜程度,進(jìn)入或訪問(wèn)一個(gè)模組的點(diǎn),以及通過(guò)介面的數(shù)據(jù)。應(yīng)該追求盡可能鬆散耦合的系統(tǒng)。研究、測(cè)試或維護(hù)任何一個(gè)模組可以不需要對(duì)系統(tǒng)的其他模組有很多瞭解。發(fā)生在一處的錯(cuò)誤傳播到整個(gè)系統(tǒng)的可能性就很小。內(nèi)聚內(nèi)聚標(biāo)誌一個(gè)模組內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是資訊隱蔽和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模組只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以採(cǎi)用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。內(nèi)聚和耦合內(nèi)聚和耦合是密切相關(guān)的,模組內(nèi)的高內(nèi)聚往往意味著模組間的松耦合。內(nèi)聚和耦合都是進(jìn)行模組化設(shè)計(jì)的有力工具,但是實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模組的內(nèi)聚程度上。事實(shí)上,沒(méi)有必要精確確定內(nèi)聚的級(jí)別。重要的是設(shè)計(jì)時(shí)力爭(zhēng)做到高內(nèi)聚,並且能夠辨認(rèn)出低內(nèi)聚的模組,有能力通過(guò)修改設(shè)計(jì)提高模組的內(nèi)聚程度降低模組間的耦合程度,從而獲得較高的模組獨(dú)立性。啟發(fā)規(guī)則以下的啟發(fā)規(guī)則有助於模組化:改進(jìn)軟體結(jié)構(gòu)提高模組獨(dú)立性模組規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模組的作用域應(yīng)該在控制域之內(nèi)力爭(zhēng)降低模組介面的複雜程度設(shè)計(jì)單入口單出口的模組模組功能應(yīng)該可以預(yù)測(cè)結(jié)構(gòu)化方法圖示數(shù)據(jù)字典DFDSTDERD加工規(guī)約數(shù)據(jù)對(duì)象描述控制規(guī)約介面設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)過(guò)程設(shè)計(jì)結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析(SA)方法是結(jié)構(gòu)化程式設(shè)計(jì)理論在軟體需求分析階段的運(yùn)用。它是七十年代中期宣導(dǎo)的基於功能分解的分析方法,常用於基於瀑布模型的軟體研製過(guò)程的需求分析階段,其目的是幫助弄清用戶對(duì)軟體的需求。按照DeMarco的定義,“結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、結(jié)構(gòu)化英語(yǔ)、決策表和決策樹(shù)等工具,來(lái)建立一種新的、稱為結(jié)構(gòu)化規(guī)格說(shuō)明的目標(biāo)文檔?!苯Y(jié)構(gòu)化分析五個(gè)步驟1)通過(guò)對(duì)用戶的調(diào)查,以軟體的需求為線索,獲得當(dāng)前系統(tǒng)的具體模型;2)去掉具體模型中非本質(zhì)因素,抽象出當(dāng)前系統(tǒng)的邏輯模型;3)根據(jù)電腦的特點(diǎn)分析當(dāng)前系統(tǒng)與目標(biāo)系統(tǒng)的差別,建立目標(biāo)系統(tǒng)的邏輯模型;4)完善目標(biāo)系統(tǒng)並補(bǔ)充細(xì)節(jié),寫(xiě)出目標(biāo)系統(tǒng)的軟體需求規(guī)格說(shuō)明;5)評(píng)審直到確認(rèn)完全符合用戶對(duì)軟體的需求。八條指導(dǎo)原則1)請(qǐng)用戶共同參與開(kāi)發(fā);2)編寫(xiě)用戶資料,考慮他們的專門(mén)技術(shù)水準(zhǔn)和閱讀與使用資料的目的;3)使用畫(huà)圖工具做媒介,減少與用戶交流時(shí)發(fā)生問(wèn)題的可能性;4)進(jìn)行系統(tǒng)設(shè)計(jì)之前建立一個(gè)系統(tǒng)的邏輯模型;5)自頂向下進(jìn)行分析設(shè)計(jì);6)自頂向下的方法進(jìn)行測(cè)試;7)驗(yàn)收之前,就讓用戶看到系統(tǒng)的某些主要輸出,使用戶能夠儘早地看到結(jié)果,及時(shí)地提出意見(jiàn);8)對(duì)系統(tǒng)的評(píng)價(jià)不僅是指開(kāi)發(fā)和運(yùn)行費(fèi)用的評(píng)價(jià),而是對(duì)整個(gè)生存過(guò)程中的費(fèi)用和收益的評(píng)價(jià)。結(jié)構(gòu)化分析方法四大特點(diǎn)一是用畫(huà)圖的方法二是自頂向下地分解三是強(qiáng)調(diào)邏輯而不是物理四是沒(méi)有重複性結(jié)構(gòu)化分析的工具1)數(shù)據(jù)流圖(DFD);2)控制流圖(CFD);3)數(shù)據(jù)字典(DD);4)控制邏輯表達(dá)方法,包括狀態(tài)轉(zhuǎn)換圖(STD)等;5)處理邏輯表達(dá)方法,包括結(jié)構(gòu)化語(yǔ)言、判斷樹(shù)和判斷表;6)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)規(guī)範(fàn)化;7)數(shù)據(jù)立即存取圖(DIAD)。四句指導(dǎo)工作的準(zhǔn)則分層分片,均衡分解;父子平衡,推遲細(xì)節(jié)。分層就是逐步細(xì)化;分片就是用一組數(shù)據(jù)流圖來(lái)代替一大張包羅萬(wàn)象的總圖。均衡分解是指自頂向下畫(huà)分層數(shù)據(jù)流圖時(shí),各個(gè)子系統(tǒng)的分解程度應(yīng)大致均勻。父子平衡是指數(shù)據(jù)流圖的父圖與子圖在輸入數(shù)據(jù)和輸出數(shù)據(jù)上應(yīng)該分別保持一致。推遲細(xì)節(jié)是指為了優(yōu)先考慮重要問(wèn)題,允許將一些細(xì)節(jié)推遲到下層數(shù)據(jù)流圖來(lái)處理。結(jié)構(gòu)化設(shè)計(jì)方法70年代提出的面向數(shù)據(jù)流、重點(diǎn)確定軟體結(jié)構(gòu)的設(shè)計(jì)方法“結(jié)構(gòu)化設(shè)計(jì)就是採(cǎi)用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個(gè)組成部分以及各成分之間的內(nèi)部聯(lián)繫的技術(shù)。也就是說(shuō),結(jié)構(gòu)化設(shè)計(jì)是這樣一個(gè)過(guò)程,它決定用哪些方法把哪些部分聯(lián)繫起來(lái),才能解決好某個(gè)具體有清楚定義的問(wèn)題。”基本思想是將軟體設(shè)計(jì)成由相對(duì)獨(dú)立、單一功能的模組組成的結(jié)構(gòu)。評(píng)價(jià)模組結(jié)構(gòu)品質(zhì)的兩個(gè)具體標(biāo)準(zhǔn)——內(nèi)聚度和耦合度耦合度耦合度:耦合度是各模組之間相互聯(lián)繫的一種度量,它是對(duì)模組獨(dú)立性的直接衡量,耦合度越弱就意味著模組的獨(dú)立性越高,則模組間相互影響就越小。耦合度的強(qiáng)弱可以由弱至強(qiáng)分為非直接耦合、數(shù)據(jù)耦合、特徵耦合、控制耦合、外部耦合、公共耦合和內(nèi)容耦合七個(gè)等級(jí)。內(nèi)聚度內(nèi)聚度是指一個(gè)模組內(nèi)部各成分(語(yǔ)句或語(yǔ)句段)之間的聯(lián)繫程度,內(nèi)聚度高,則模組的相對(duì)獨(dú)立性勢(shì)必會(huì)提高。內(nèi)聚度由低到高可劃分為偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過(guò)程內(nèi)聚、通訊內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚七個(gè)等級(jí)。結(jié)構(gòu)化設(shè)計(jì)方法設(shè)計(jì)步驟1)建立初始結(jié)構(gòu)圖;2)改進(jìn)初始結(jié)構(gòu)圖。建立初始結(jié)構(gòu)圖開(kāi)始細(xì)化/修改軟體需求規(guī)格說(shuō)明中的數(shù)據(jù)流圖是變換型嗎?變換分析事物分析將映射得來(lái)的初始結(jié)構(gòu)圖改進(jìn)為最終結(jié)構(gòu)圖對(duì)最終結(jié)構(gòu)圖進(jìn)行評(píng)審結(jié)束是否從數(shù)據(jù)流圖過(guò)渡到結(jié)構(gòu)圖傳入傳入部分變換中心傳出部分(a)變換型結(jié)構(gòu)傳出變換接受事務(wù)分析動(dòng)作1動(dòng)作2動(dòng)作3接受部分事務(wù)中心(b)事務(wù)型結(jié)構(gòu)DFD主模組輸入模組主加工模組輸出模組(a)事務(wù)控制模組接受模組動(dòng)作發(fā)送模組動(dòng)作1模組動(dòng)作1模組動(dòng)作1模組(b)SC改進(jìn)初始結(jié)構(gòu)圖…

1)減少塊間聯(lián)繫,降低耦合度:可從方式、作用、數(shù)量等方面著手,其中最常用的是減少模組間傳遞的參數(shù)個(gè)數(shù);2)消除管道性模組,提高內(nèi)聚度:管道性模組的塊內(nèi)聯(lián)系很弱,只是像管道一樣將一些參數(shù)從主模組傳送到它的幾個(gè)下層模組,對(duì)這樣的模組,應(yīng)予以消除;3)適當(dāng)考慮系統(tǒng)將來(lái)可能發(fā)生的變化;改進(jìn)初始結(jié)構(gòu)圖4)注意模組的大小:限制模組大小是降低複雜性的手段之一;5)適當(dāng)調(diào)整調(diào)用和被調(diào)用的次數(shù),即深度、寬度、扇出和扇入都要適當(dāng)。一個(gè)模組調(diào)用或被調(diào)用過(guò)多,往往是設(shè)計(jì)不好的跡象;6)整體考慮問(wèn)題:即盡可能研究整張結(jié)構(gòu)圖,而不是只分別考慮一張結(jié)構(gòu)圖的各個(gè)部分。三條指導(dǎo)規(guī)則1)對(duì)模組分割、合併和變動(dòng)模組調(diào)用關(guān)係的指導(dǎo)規(guī)則2)保持高扇入/低扇出的規(guī)則3)把作用域保持在控制域之內(nèi)的規(guī)則對(duì)模組分割、合併和變動(dòng)模組調(diào)用關(guān)係的指導(dǎo)規(guī)則分割或合併結(jié)構(gòu)圖中的模組,應(yīng)以提高模組獨(dú)立性為首要的標(biāo)準(zhǔn):力求提高內(nèi)聚,降低耦合,簡(jiǎn)化介面,少用全局性和控制型資訊要適當(dāng)考慮快的大小對(duì)模組位置應(yīng)否變更,視處理是否方便來(lái)定,不必拘泥於數(shù)據(jù)流圖保持高扇入/低扇出的規(guī)則扇入數(shù)指調(diào)用該模組的模組個(gè)數(shù)扇出數(shù)指該模組調(diào)用的模組個(gè)數(shù)扇入高則上級(jí)模組多,能增加利用率扇出低則下級(jí)模組少,能減少複雜度扇出數(shù)以3-4為宜,最好不超過(guò)5-7軟體結(jié)構(gòu)通常具有“甕”形或“清真寺”形的形狀把作用域保持在控制域之內(nèi)的規(guī)則一個(gè)模組的控制域,等於模組本身加上其下級(jí)模組。一個(gè)模組的作用域,是受這個(gè)模組中的判定所影響的模組。規(guī)則的含義是:a.作用域不要超過(guò)控制域的範(fàn)圍;b.軟體系統(tǒng)的判定,其位置離受它控制的模組越近越好。結(jié)構(gòu)化編程方法用一組標(biāo)準(zhǔn)的準(zhǔn)則和工具從事程式設(shè)計(jì),稱為結(jié)構(gòu)化程式設(shè)計(jì);這些準(zhǔn)則和工具包括一組基本控制結(jié)構(gòu),自頂向下擴(kuò)展原則,模組化和逐步求精結(jié)構(gòu)化編程方法派生於結(jié)構(gòu)化程式設(shè)計(jì)理論,它要求使用順序、選擇、迴圈等基本控制結(jié)構(gòu),並遵循增加程式產(chǎn)量、提高程式可讀性、容易測(cè)試和驗(yàn)證的原則來(lái)編寫(xiě)程式。結(jié)構(gòu)化編程應(yīng)遵循的原則…1)使用程式設(shè)計(jì)語(yǔ)言中的順序、選擇、迴圈等有限的控制結(jié)構(gòu)表示程式的控制邏輯;2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口;3)程式語(yǔ)句組成容易識(shí)別的塊,每塊只有一個(gè)入口和一個(gè)出口;4)複雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)來(lái)實(shí)現(xiàn);結(jié)構(gòu)化編程應(yīng)遵循的原則5)語(yǔ)言中所沒(méi)有的控制結(jié)構(gòu),應(yīng)該採(cǎi)用前後一致的方法來(lái)模擬;6)嚴(yán)格控制GOTO語(yǔ)句,僅在下列情況才可使用:a.用一個(gè)非結(jié)構(gòu)化的程式設(shè)計(jì)語(yǔ)言去實(shí)現(xiàn)一個(gè)結(jié)構(gòu)化的構(gòu)造;b.若不使用GOTO語(yǔ)句會(huì)使功能模糊;c.在某種可以改善而不是損害程式可讀性的情況下。結(jié)構(gòu)化編程方法的主要優(yōu)點(diǎn)1)易於理解、使用和維護(hù)。程式員採(cǎi)用結(jié)構(gòu)化編程方法,降低了程式的複雜性,因此容易編寫(xiě)程式。程式員能夠進(jìn)行逐步求精、程式證明和測(cè)試,以確保程式的正確性,程式容易閱讀並被人理解,便於用戶使用和維護(hù)。2)提高編程工作的效率,降低了軟體開(kāi)發(fā)成本。由於結(jié)構(gòu)化編程方法能夠把錯(cuò)誤控制到最低限度,因此能夠減少調(diào)試和查錯(cuò)時(shí)間。結(jié)構(gòu)化程式是由一些為數(shù)不多的基本結(jié)構(gòu)模組組成,這些模組甚至可以由機(jī)器自動(dòng)生成,從而極大地減輕了編程工作量。結(jié)構(gòu)化方法的缺點(diǎn)著名的“兩個(gè)鴻溝”“數(shù)據(jù)和過(guò)程的鴻溝”“分析和設(shè)計(jì)的鴻溝”專注於過(guò)程的分析模型,其抗擊變動(dòng)的能力和可複用性就相對(duì)較差。軟體開(kāi)發(fā)的原則(1)規(guī)範(fàn)嚴(yán)格的原則遵循嚴(yán)格化原則,可以達(dá)到開(kāi)發(fā)出正確、成功的軟體產(chǎn)品的目的軟體開(kāi)發(fā)過(guò)程是創(chuàng)造性的工作過(guò)程,但嚴(yán)格化不會(huì)抑制創(chuàng)造性嚴(yán)格的分析設(shè)計(jì)可以增強(qiáng)對(duì)創(chuàng)造性成果的信心嚴(yán)格化對(duì)可靠性、維護(hù)性、可移植性、可理解性等產(chǎn)生影響過(guò)程詳細(xì)記錄可供精確地掌握和控制開(kāi)發(fā)過(guò)程軟體開(kāi)發(fā)的原則(2)分隔化的原則解決複雜問(wèn)題時(shí)從不同的方面把問(wèn)題分隔開(kāi),然後單獨(dú)集中精力解決每一個(gè)方面的問(wèn)題分隔化原則是要將相互關(guān)係不太緊密的方面分割開(kāi),對(duì)相互聯(lián)繫僅考慮其影響分隔的途徑:以時(shí)間次序、以品質(zhì)指標(biāo)、以軟體規(guī)模、以不同的視圖、以開(kāi)發(fā)人員的技能軟體開(kāi)發(fā)的原則(3)模組化的原則先對(duì)複雜問(wèn)題進(jìn)行分析,找出基本要素,儘量使之獨(dú)立,然後各個(gè)擊破簡(jiǎn)單的單元易於加工、維修,可以標(biāo)準(zhǔn)化、通用化複雜問(wèn)題的分解,基於自頂向下的思路已有模組的組合,基於自底向上的思路軟體開(kāi)發(fā)的原則(4)抽象化的原則重要、帶有普遍意義特徵的方面或內(nèi)容被抽象出來(lái),次要的、缺乏普遍意義的方面或內(nèi)容被忽略抽象是分隔化原則的一種特殊應(yīng)用軟體開(kāi)發(fā)的原則(5)預(yù)見(jiàn)變動(dòng)的原則軟體由於其錯(cuò)誤、新需求、新環(huán)境而產(chǎn)生變化要求開(kāi)發(fā)時(shí)就要考慮到軟體變動(dòng)的要求PARNAS的原則開(kāi)發(fā)系列產(chǎn)品漸進(jìn)開(kāi)發(fā),從子集出發(fā),資訊隱藏,保持介面不變採(cǎi)用為變化而設(shè)計(jì)的技術(shù)軟體開(kāi)發(fā)的原則(6)通用化的原則儘量找出對(duì)類似問(wèn)題或相關(guān)問(wèn)題的具有一定普遍意義的解決方法,並在相應(yīng)產(chǎn)品開(kāi)發(fā)中應(yīng)用,使軟體產(chǎn)品具有一定的通用性對(duì)普遍性、通用性問(wèn)題的解決方法具有品質(zhì)、經(jīng)濟(jì)方面的價(jià)值對(duì)通用和專用,需要在經(jīng)濟(jì)和效率方面進(jìn)行權(quán)衡通用性原則是設(shè)計(jì)通用的軟體產(chǎn)品的一個(gè)最基本原則軟體開(kāi)發(fā)的原則(7)逐步完善的原則由於難以確定用戶的具體需求,只能從不完善逐步走向完善必須注意:記錄每一個(gè)有意義的漸進(jìn)文檔必須儘早反映變動(dòng),變動(dòng)得到控制MICROSOFT在採(cǎi)用逐步完善原則方面取得了成功軟體開(kāi)發(fā)的原則(8)有關(guān)軟體品質(zhì)的原則用戶至上的原則以用戶的利益為前提處處為用戶使用方便著想千方百計(jì)幫助用戶使用好軟體注意與用戶的交流品質(zhì)可靠的原則在品質(zhì)、成本之間進(jìn)行權(quán)衡軟體開(kāi)發(fā)的原則(9)有關(guān)軟體文檔的原則文檔標(biāo)準(zhǔn)化原則用戶手冊(cè)簡(jiǎn)明原則用詞規(guī)範(fàn)盡可能使用用戶的專業(yè)術(shù)語(yǔ)或行話通俗易懂描述的句子不要太長(zhǎng)軟體開(kāi)發(fā)的原則(10)有關(guān)設(shè)計(jì)編碼的原則根據(jù)文檔設(shè)計(jì)(需求記錄在文檔)注意概念的完整整個(gè)軟體要適於變動(dòng)、易於維護(hù)程式編制簡(jiǎn)明清晰注意技術(shù)與工具更新軟體開(kāi)發(fā)的原則(11)有關(guān)軟體測(cè)試的原則測(cè)試的獨(dú)立性原則克服心理障礙獨(dú)立公正專業(yè)優(yōu)勢(shì)成功的測(cè)試是發(fā)現(xiàn)問(wèn)題的測(cè)試要分析錯(cuò)誤產(chǎn)生的原因,舉一反三需求分析概念軟體需求的定義客戶定義的“需求”對(duì)開(kāi)發(fā)者是一個(gè)較高層次的產(chǎn)品概念。開(kāi)發(fā)者所說(shuō)的“需求”對(duì)用戶來(lái)說(shuō)像是詳細(xì)說(shuō)明。軟體需求包含多個(gè)層次,不同層次的需求從不同角度與不同程度反映著細(xì)節(jié)問(wèn)題。IEEE軟體工程術(shù)語(yǔ)(1997)的需求定義:(1)用戶解決問(wèn)題或達(dá)到目標(biāo)所需的條件或能力。(2)系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)範(fàn)或其他正式強(qiáng)制性檔所需具有的條件或能力。(3)反映上面(1)或(2)所描述的條件或能力的文檔說(shuō)明。上述定義包括從用戶(外部)、從開(kāi)發(fā)者(內(nèi)部)角度來(lái)闡述需求。需求的層次業(yè)務(wù)需求(businessrequirement):反映組織機(jī)構(gòu)或客戶對(duì)系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求。用戶需求(userrequirement):描述用戶使用產(chǎn)品必須要完成的任務(wù)。功能需求(functionalrequirement):定義開(kāi)發(fā)人員必須實(shí)現(xiàn)的軟體功能。需求規(guī)格說(shuō)明中還包括非功能需求。軟體需求各組成部分之間關(guān)係業(yè)務(wù)需求用戶需求功能需求系統(tǒng)需求品質(zhì)屬性其他非功能需求約束條件專案視圖與範(fàn)圍檔使用實(shí)例文檔軟體需求規(guī)格說(shuō)明需求管理的困難性不成熟的需求分析無(wú)足夠用戶參與用戶需求的不斷增加摸棱兩可的需求不必要的特徵(鍍金)過(guò)於精簡(jiǎn)的規(guī)格說(shuō)明忽略了用戶分類不準(zhǔn)確的計(jì)畫(huà)高質(zhì)量需求過(guò)程的獲益開(kāi)發(fā)後期和整個(gè)維護(hù)階段的重做的工作大大減少Boehm發(fā)現(xiàn)可以節(jié)省成本68倍有研究認(rèn)為可以節(jié)省成本200倍強(qiáng)調(diào)產(chǎn)品開(kāi)發(fā)中的通力合作,面向市場(chǎng),讓用戶積極參與,可以建立忠實(shí)的客戶關(guān)係,避免在無(wú)用功能上白耗精力,彌補(bǔ)用戶期望和開(kāi)發(fā)者實(shí)際開(kāi)發(fā)間的期望鴻溝採(cǎi)用系統(tǒng)方法將需求分配到各子系統(tǒng)可以簡(jiǎn)化集成有效的變更控制和影響分析能降低變更的負(fù)面影響清晰、無(wú)二義的需求文檔有利於測(cè)試需求說(shuō)明的特徵完整性正確性可行性必要性劃分優(yōu)先順序無(wú)二義性可驗(yàn)證性需求規(guī)格說(shuō)明的特點(diǎn)完整性先用TBD標(biāo)明缺項(xiàng)在開(kāi)發(fā)前必須解決所有TBD一致性可修改性每項(xiàng)需求只在SRS中出現(xiàn)一次可追蹤性結(jié)構(gòu)、粒度方便設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試的追蹤誰(shuí)是客戶定制軟體:合同甲方(提出方)通用軟體:高層管理者和(或)市場(chǎng)部嵌入式軟體:軟體所屬電腦系統(tǒng)客戶的權(quán)利1要求分析人員使用符合客戶語(yǔ)言習(xí)慣的表達(dá)2要求分析人員瞭解客戶的業(yè)務(wù)及目標(biāo)3要求分析人員編寫(xiě)軟體需求規(guī)格說(shuō)明4要求得到需求工作結(jié)果的解釋說(shuō)明5要求開(kāi)發(fā)人員尊重你的意見(jiàn)6要求開(kāi)發(fā)人員對(duì)需求及產(chǎn)品實(shí)施提供建議7描述產(chǎn)品易使用的特性8調(diào)整需求,允許重用已有的軟體組件9要求對(duì)變更的代價(jià)提供真實(shí)可信的評(píng)估10獲得滿足客戶功能和品質(zhì)要求的系統(tǒng)客戶的義務(wù)1給分析人員講解你的業(yè)務(wù)2抽出時(shí)間清楚地說(shuō)明並完善需求3準(zhǔn)確而詳細(xì)地說(shuō)明需求4及時(shí)地作出決定5尊重開(kāi)發(fā)人員的需求可行性及成本評(píng)估6劃分需求優(yōu)先順序別7評(píng)審需求文檔和原型8需求出現(xiàn)變更要馬上聯(lián)繫9應(yīng)遵守開(kāi)發(fā)機(jī)構(gòu)處理需求變更的過(guò)程10尊重開(kāi)發(fā)人員採(cǎi)用的需求工程過(guò)程對(duì)簽定需求協(xié)議的認(rèn)識(shí)簽約是客戶同意需求的標(biāo)誌行為客戶不應(yīng)當(dāng)忽略簽約的嚴(yán)肅性開(kāi)發(fā)方不應(yīng)當(dāng)因此拒絕變更簽約應(yīng)當(dāng)建立在一個(gè)需求協(xié)議的基線上應(yīng)當(dāng)理解為:“我同意這份文檔表達(dá)了目前我們對(duì)專案軟體需求的瞭解。進(jìn)一步的變更可在此基礎(chǔ)上通過(guò)專案定義的變更過(guò)程來(lái)進(jìn)行。我知道變更可能會(huì)使我們要重新協(xié)商成本、資源和專案時(shí)間工期任務(wù)等?!毙枨箝_(kāi)發(fā)過(guò)程需求開(kāi)發(fā)過(guò)程需求獲取需求分析編寫(xiě)需求規(guī)格說(shuō)明需求驗(yàn)證知識(shí)培訓(xùn)需求管理專案管理需求獲取的內(nèi)容在同用戶的交流過(guò)程中收集各種用戶的資訊認(rèn)真理解用戶的各項(xiàng)要求澄清模糊排除不合理明確約束分析人員的兩個(gè)信條第一:只有在徹底瞭解和掌握了用戶的全部意圖之後,才有可能建立起成功的軟體系統(tǒng)。第二:一切從用戶的角度著想,在條件允許的情況下,應(yīng)盡可能地保證用戶從所構(gòu)造的軟體系統(tǒng)中獲得最大的利益。容易產(chǎn)生的問(wèn)題交流障礙誤解各方缺乏共同的語(yǔ)言“完整性”問(wèn)題需求永遠(yuǎn)會(huì)變化用戶本身的意見(jiàn)不一致錯(cuò)誤的要求認(rèn)識(shí)上混淆目標(biāo)和需求需求獲取的過(guò)程確定需求開(kāi)發(fā)過(guò)程編寫(xiě)專案目標(biāo)和範(fàn)圍文檔將用戶群分類並歸納各自特點(diǎn)選擇各類用戶的產(chǎn)品代表建立起典型用戶的核心隊(duì)伍讓用戶代表確定使用實(shí)例召開(kāi)應(yīng)用程式開(kāi)發(fā)聯(lián)繫會(huì)議分析用戶工作流程確定品質(zhì)屬性和其他非功能屬性通過(guò)檢查當(dāng)前系統(tǒng)的問(wèn)題報(bào)告來(lái)進(jìn)一步完善需求跨專案重用需求工作流程用戶調(diào)查具體模型邏輯抽象當(dāng)前系統(tǒng)邏輯模型當(dāng)前系統(tǒng)計(jì)算機(jī)化評(píng)審修改正式模型完善細(xì)節(jié)目標(biāo)系統(tǒng)目標(biāo)系統(tǒng)初始模型經(jīng)認(rèn)可的問(wèn)題需求系統(tǒng)模型用戶建立模型的步驟分析現(xiàn)有系統(tǒng)和過(guò)程,建立物理模型抽取特徵,建立舊系統(tǒng)的邏輯模型根據(jù)新的要求,補(bǔ)充和建立新的邏輯模型需求分析的任務(wù)需求分析的內(nèi)容提煉、分析和仔細(xì)審查已收集到的需求確保所有利益相關(guān)者都明白其含義並找出其中的錯(cuò)誤、遺漏或其他不足的地方是從用戶最初的非形式化需求到滿足用戶要求的軟體產(chǎn)品的映射過(guò)程是對(duì)用戶意圖不斷進(jìn)行提示和判斷的過(guò)程需求分析的步驟繪製系統(tǒng)關(guān)聯(lián)圖創(chuàng)建用戶介面(介面)原型分析需求可行性確定需求的優(yōu)先順序別為需求建立模型創(chuàng)建數(shù)據(jù)字典使用品質(zhì)功能調(diào)配(QFD)明確哪些是客戶最關(guān)心的特徵編制需求規(guī)格說(shuō)明的過(guò)程採(cǎi)用軟體需求規(guī)格說(shuō)明(SRS)模版指明需求的來(lái)源為每項(xiàng)需求注上標(biāo)號(hào)記錄業(yè)務(wù)規(guī)範(fàn)(操作原則)創(chuàng)建需求跟蹤矩陣需求規(guī)格說(shuō)明的作用為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方便支持目標(biāo)軟體系統(tǒng)的確認(rèn)控制軟體開(kāi)發(fā)進(jìn)程軟體需求規(guī)格說(shuō)明文檔條目1範(fàn)圍2引用文檔3工程需求3.1外部介面需求3.2功能需求3.3內(nèi)部介面3.4數(shù)據(jù)元素要求3.5適應(yīng)性要求3.6容量和時(shí)間要求3.7安全要求3.8保密要求3.9設(shè)計(jì)約束3.10軟體品質(zhì)因素3.11人的工程需求3.12需求的可跟蹤性4合格性需求4.1合格性方法4.2特殊的合格性需求5交付準(zhǔn)備軟體需求必須包括的屬性1)標(biāo)識(shí):每項(xiàng)軟體需求都必須有標(biāo)識(shí),使以後的各階段容易跟蹤。2)需要:基礎(chǔ)軟體需求必須用上述標(biāo)識(shí)標(biāo)明?;A(chǔ)軟體需求是非協(xié)商性的;其他不那麼重要的需求是可協(xié)商的。3)優(yōu)先順序:對(duì)於遞增式交付,每一項(xiàng)需求必須包括優(yōu)先順序程度,以便決定研製進(jìn)度。4)穩(wěn)定性:某些需求在軟體生存期內(nèi)是穩(wěn)定的;另一些可能是更依賴來(lái)自各設(shè)計(jì)階段的回饋,或可能在軟體生存期內(nèi)要有所修改,這種非穩(wěn)定性需求應(yīng)當(dāng)被指出。5)源:每一項(xiàng)軟體需求都必須有一個(gè)能回溯到系統(tǒng)需求的索引。6)清晰性:如果需求有一個(gè)並且只有一個(gè)解釋它就是清晰的。7)驗(yàn)證性:每一軟體需求都必須是能被驗(yàn)證的。這意味著必須能做到:檢查需求已經(jīng)體現(xiàn)在設(shè)計(jì)中;證明該軟體將實(shí)現(xiàn)需求;測(cè)試該軟體確實(shí)能實(shí)現(xiàn)需求。IEEE需求規(guī)格說(shuō)明的編寫(xiě)8原則1從實(shí)際重分離功能,描述“做什麼”不描述“怎麼做”2要求有一個(gè)面向處理的軟體系統(tǒng)規(guī)格說(shuō)明語(yǔ)言,以描述軟體系統(tǒng)的動(dòng)態(tài)行為3必須對(duì)以該軟體為元素的系統(tǒng)進(jìn)行說(shuō)明,以描述清楚之間的關(guān)係4必須對(duì)軟體系統(tǒng)的運(yùn)行環(huán)境進(jìn)行說(shuō)明,以保持介面描述的一致性5必須是認(rèn)識(shí)的模型而不是實(shí)際的模型6必須是可操作的7必須容忍不完備性和可修改性8必須局部化和鬆散耦合,使得變化時(shí)只修改一個(gè)片段SRS編寫(xiě)風(fēng)格(Kovitz1999)保持語(yǔ)句和段落的簡(jiǎn)短採(cǎi)取主動(dòng)語(yǔ)態(tài)的表達(dá)方式編寫(xiě)具有正確的語(yǔ)法、拼寫(xiě)和標(biāo)點(diǎn)的完整句子使用的術(shù)語(yǔ)和辭彙表中所定義的應(yīng)該一致需求陳述應(yīng)該採(cǎi)用一致的樣式,如“主體+動(dòng)作+可觀察的結(jié)果”避免使用模糊的、主觀的術(shù)語(yǔ)以避免不確定性避免使用比較性的辭彙需求表達(dá)需求說(shuō)明語(yǔ)句保持語(yǔ)句和段落的簡(jiǎn)短採(cǎi)用主動(dòng)語(yǔ)態(tài)的表達(dá)方式編寫(xiě)具有正確的語(yǔ)法和標(biāo)點(diǎn)的完整句子使用的術(shù)語(yǔ)應(yīng)該和辭彙表中定義的一致需求陳述應(yīng)該具有一致的式樣,例如“系統(tǒng)必須……”,或者“用戶必須……”,並緊跟一個(gè)行為動(dòng)作和可觀察的結(jié)果,例如“倉(cāng)庫(kù)管理子系統(tǒng)必須現(xiàn)實(shí)一張?jiān)谒?qǐng)求的倉(cāng)庫(kù)中有存貨的藥品名單。”需求表達(dá)為了減少不確定性,避免採(cǎi)用模糊的、主觀的術(shù)語(yǔ),例如,用戶友好、容易、簡(jiǎn)單、迅速、有效、支持、許多、最新技術(shù)、優(yōu)越的、可接受的和健壯的。避免使用比較性的辭彙,例如:提高,最大化,最小化和最佳化。定量地說(shuō)明所需要提高的程度或者說(shuō)清一些參數(shù)可接受的最大值和最小值。需求表達(dá)“產(chǎn)品必須在固定的時(shí)間間隔內(nèi)提供狀態(tài)消息,並且每次時(shí)間間隔不得小於60秒”後臺(tái)任務(wù)管理器應(yīng)該在用戶介面的指定區(qū)域顯示狀態(tài)消息在後臺(tái)任務(wù)進(jìn)程啟動(dòng)之後,消息必須每隔60(+_10)秒更新一次,並且保持連續(xù)的可見(jiàn)性。如果正在正常處理後臺(tái)任務(wù)進(jìn)程,那麼後臺(tái)任務(wù)管理器必須顯示後臺(tái)任務(wù)進(jìn)程已完成的百分比當(dāng)完成後臺(tái)任務(wù)時(shí),後臺(tái)任務(wù)管理器必須顯示一個(gè)“已完成”的消息。如果後臺(tái)任務(wù)中止執(zhí)行,那麼後臺(tái)任務(wù)管理器必須顯示一個(gè)出錯(cuò)資訊。需求表達(dá)“產(chǎn)品必須在顯示和隱藏非列印字元之間進(jìn)行瞬間切換”“用戶在編輯文檔時(shí),通過(guò)啟動(dòng)特定的觸發(fā)機(jī)制,可以在顯示和隱藏所有HTML標(biāo)記之間進(jìn)行切換。”需求表達(dá)“分析程式應(yīng)該能生成HTML標(biāo)記出錯(cuò)的報(bào)告,這樣就可以使HTML的初學(xué)者使用它來(lái)迅速排錯(cuò)”在HTML分析程式完全分析完一個(gè)檔後,該分析程式必須生成一個(gè)出錯(cuò)報(bào)告,這個(gè)報(bào)告中包含了在分析檔中所發(fā)生錯(cuò)誤的HTML所在的行號(hào)以及文本內(nèi)容,還包含了對(duì)每個(gè)錯(cuò)誤的描述。如果分析過(guò)程中未發(fā)生任何錯(cuò)誤,就不必生成任何錯(cuò)誤報(bào)告需求驗(yàn)證審查需求文檔以需求為依據(jù)編寫(xiě)測(cè)試用例編寫(xiě)用戶手冊(cè)確定判別產(chǎn)品合格的準(zhǔn)則需求驗(yàn)證的內(nèi)容一致性:任何需求不與其它需求矛盾可行性:現(xiàn)有技術(shù)條件下可以實(shí)現(xiàn)完整性:包括用戶需要的每一個(gè)功能和性能有效性:正確有效,確實(shí)能夠解決用戶面對(duì)的問(wèn)題知識(shí)培訓(xùn)培訓(xùn)需求分析人員培訓(xùn)軟體需求的用戶代表和管理人員讓開(kāi)發(fā)人員瞭解應(yīng)用領(lǐng)域的基本概念編寫(xiě)專案術(shù)語(yǔ)彙編分析員的職責(zé)1)作為管理員、用戶和顧客的顧問(wèn);2)從各種來(lái)源收集數(shù)據(jù),並綜合問(wèn)題的解答;3)分析新的系統(tǒng),並評(píng)價(jià)現(xiàn)有的系統(tǒng);4)準(zhǔn)備文檔和管理報(bào)告;5)理解硬體和軟體的介面;6)為了產(chǎn)生軟體需求規(guī)格說(shuō)明,必要時(shí)要進(jìn)行一些研究工作;7)為編寫(xiě)軟體需求規(guī)格說(shuō)明主持座談會(huì);8)不斷吸收先進(jìn)技術(shù)。分析員的素質(zhì)1)能夠合乎邏輯地、象徵性地、抽象地、創(chuàng)造性地思考問(wèn)題;2)能作為小組中的一個(gè)成員很好地開(kāi)展工作;3)熟悉電腦硬體和軟體的能力;4)自覺(jué)遵守時(shí)間,能按規(guī)定的進(jìn)度完成任務(wù);5)在系統(tǒng)的分析和設(shè)計(jì)中能發(fā)揮其他人的作用;6)能保持教師和學(xué)生的雙重身份,願(yuàn)意培養(yǎng)其他人,而他本人亦能通過(guò)夜校、自學(xué)、培訓(xùn)班等不斷提高;7)能夠傾聽(tīng)別人的意見(jiàn),但又能根據(jù)客觀事實(shí)來(lái)作決策,而不是依賴別人的意見(jiàn);8)熟悉商業(yè)和政策管理部門(mén)的組織、原則。分析員應(yīng)該顯示的性格特徵1)善於領(lǐng)會(huì)一些抽象的概念,重新整理使之成為各種邏輯成分,並根據(jù)各種邏輯成分綜合出問(wèn)題的解決辦法。2)善於從各種相應(yīng)衝突或混淆的原始資料中汲取恰當(dāng)?shù)囊罁?jù)。3)能夠理解用戶——需求者的環(huán)境。4)具備把系統(tǒng)的硬體部分和(或)軟體部分應(yīng)用於用戶——需求者環(huán)境的能力。5)具備良好的用書(shū)面或口頭形式進(jìn)行討論及交換意見(jiàn)的能力。6)具有“既能看到樹(shù)木,又能看到森林”的能力。需求管理確定需求變更控制過(guò)程建立變更控制委員會(huì)(CCB)進(jìn)行需求變更影響分析跟蹤所有受需求變更影響的工作產(chǎn)品建立需求基準(zhǔn)版本和需求控制版本文檔維護(hù)需求變更歷史記錄跟蹤每項(xiàng)需求的狀態(tài)衡量需求穩(wěn)定性使用需求管理工具與需求分析相關(guān)的專案管理選擇一種合適的軟體開(kāi)發(fā)模型基於需求的專案計(jì)畫(huà)發(fā)生需求變更時(shí)協(xié)商專案約定文檔化和管理與需求相關(guān)的風(fēng)險(xiǎn)跟蹤需求工程耗費(fèi)的工作量需求分析方法工具描述工具數(shù)據(jù)流圖(DataFlowDiagram,簡(jiǎn)稱DFD)控制流圖(ControlFlowDiagram,簡(jiǎn)稱CFD)狀態(tài)轉(zhuǎn)換圖(StateTransitiondiagram,簡(jiǎn)稱STD)數(shù)據(jù)字典(DataDictionary,簡(jiǎn)稱DD)處理說(shuō)明分析模型的結(jié)構(gòu)實(shí)體—關(guān)係圖狀態(tài)—遷移圖數(shù)據(jù)流圖數(shù)據(jù)對(duì)象描述加工規(guī)格說(shuō)明數(shù)據(jù)字典控制規(guī)格說(shuō)明數(shù)據(jù)和控制模型的關(guān)係過(guò)程模型PSPECDFD控制模型CSPECCFD控制輸入數(shù)據(jù)輸出控制輸出數(shù)據(jù)輸入數(shù)據(jù)條件過(guò)程啟動(dòng)數(shù)據(jù)流圖:DFD(DataFlowDiagram)數(shù)據(jù)流圖是用來(lái)描述系統(tǒng)邏輯模型的一種圖形工具數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫(huà)數(shù)據(jù)流從輸入到輸出的移動(dòng)變換過(guò)程數(shù)據(jù)流圖圖符2.1列印數(shù)據(jù)流DataFlow加工處理Process外部實(shí)體ExternalEntity數(shù)據(jù)存儲(chǔ)DataStore數(shù)據(jù)流圖圖符說(shuō)明數(shù)據(jù)流:箭頭表示數(shù)據(jù)流方向。一般在旁邊標(biāo)注數(shù)據(jù)流名。加工處理:對(duì)數(shù)據(jù)進(jìn)行加工、處理和變換,從而實(shí)現(xiàn)某個(gè)功能或操作外部實(shí)體:表示要加工處理的數(shù)據(jù)是從外部得到或從外部提供,同時(shí)也是數(shù)據(jù)結(jié)果的接收者,可以是人、組織、其他系統(tǒng)數(shù)據(jù)存儲(chǔ):表示處理過(guò)程中存放各種數(shù)據(jù)的檔建立DFD的步驟由外向裏:先畫(huà)系統(tǒng)的輸入輸出,然後畫(huà)系統(tǒng)的內(nèi)部,再畫(huà)處理的內(nèi)部。由頂向下:頂層、中間層、底層數(shù)據(jù)流圖逐層分解:從外向裏數(shù)據(jù)流圖的層次結(jié)構(gòu)為了表達(dá)數(shù)據(jù)處理過(guò)程的數(shù)據(jù)加工情況,需要採(cǎi)用層次結(jié)構(gòu)的數(shù)據(jù)流圖。按照系統(tǒng)的層次結(jié)構(gòu)進(jìn)行逐步分解,並以分層的數(shù)據(jù)流圖反映這種結(jié)構(gòu)關(guān)係,能清楚地表達(dá)和容易理解整個(gè)系統(tǒng)數(shù)據(jù)流圖的層次頂層DFD用一個(gè)加工處理表示軟體含所有相關(guān)外部實(shí)體含外部實(shí)體與軟體中間的數(shù)據(jù)流不含數(shù)據(jù)存儲(chǔ)唯一描述軟體的作用範(fàn)圍,對(duì)總體功能、輸入、輸出進(jìn)行抽象描述,反映軟體和系統(tǒng)、環(huán)境的關(guān)係ABC軟體abcd頂層數(shù)據(jù)流圖軟體系統(tǒng)外部實(shí)體外部實(shí)體……外部實(shí)體外部實(shí)體……輸入數(shù)據(jù)流輸入數(shù)據(jù)流輸出數(shù)據(jù)流輸出數(shù)據(jù)流中間和底層DFD2.1aaa2.2bbb2.3cccddd數(shù)據(jù)分層的數(shù)據(jù)流圖F0A0B0F11A0B0F12F13F14F15p1C1D1M1N1F21M1F22N1F23K2F24W2F25p1Y2X2第n

層第n+1

層第n+2

層數(shù)據(jù)流圖的層次在多層數(shù)據(jù)流圖中,頂層流圖僅包含一個(gè)加工,它代表被開(kāi)發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)底層流圖是指其加工不需再做分解的數(shù)據(jù)流圖,它處在最底層中間層流圖則表示對(duì)其上層父圖的細(xì)化。它的每一加工可能繼續(xù)細(xì)化,形成子圖。數(shù)據(jù)流圖中的其他圖形元素ABC------有A則B或者C,或者兩者都有*ABC+ABC------有A則B與C,或者兩者同時(shí)有------有A則B或C,但不會(huì)同時(shí)有B與C------當(dāng)A或B有一個(gè)存在就有CABC*ABC------只有當(dāng)A與B都存在,則有CDFD規(guī)則和注意事項(xiàng)數(shù)據(jù)存儲(chǔ)不出現(xiàn)在頂層圖中,外部實(shí)體通常不出現(xiàn)在頂層圖外數(shù)據(jù)存儲(chǔ)之間不應(yīng)該有數(shù)據(jù)流仔細(xì)、恰當(dāng)?shù)貫樘幚砻禾幚?對(duì)象仔細(xì)、恰當(dāng)?shù)貫閿?shù)據(jù)流命名:反映整體含義對(duì)處理建立唯一、層次性編號(hào)每個(gè)處理通常要求既有輸入又有輸出一個(gè)DFD的處理個(gè)數(shù)為7±2(魔數(shù)7±2)不要試圖讓DFD反映處理的順序檢查數(shù)據(jù)流圖的正確性a.數(shù)據(jù)守恆某個(gè)處理用以產(chǎn)生輸出的數(shù)據(jù)沒(méi)有輸入給這個(gè)處理,即出現(xiàn)遺漏另一種是一個(gè)處理的某些輸入並沒(méi)有在處理中使用以產(chǎn)生輸出b.數(shù)據(jù)存儲(chǔ)(檔)的使用數(shù)據(jù)存儲(chǔ)(檔)應(yīng)被數(shù)據(jù)流圖中的處理讀和寫(xiě),而不是僅讀不寫(xiě)、或僅寫(xiě)不讀c.父圖和子圖的平衡父子關(guān)係和平衡規(guī)則父圖表示子圖間的介面,即數(shù)據(jù)流的方向和數(shù)量子圖代表父圖中某個(gè)處理的細(xì)節(jié)子圖個(gè)數(shù)不大於父圖中的處理個(gè)數(shù)所有子圖的輸入、輸出數(shù)據(jù)流和父圖中相應(yīng)處理的輸入、輸出數(shù)據(jù)流必須一致父圖和子圖的平衡發(fā)票1.3開(kāi)領(lǐng)書(shū)單領(lǐng)書(shū)單(a)父圖1.3.1學(xué)生領(lǐng)書(shū)單1.3.21.3.3教材(b)子圖遵守加工編號(hào)規(guī)則頂層加工不編號(hào)第二層的加工編號(hào)為1,2,3,…,n號(hào)第三層編號(hào)為1.1,1.2,1.3…n.1,n.2…等號(hào)依此類推人工銷售教材系統(tǒng)流程圖舉例學(xué)生開(kāi)購(gòu)書(shū)證明購(gòu)書(shū)證明開(kāi)購(gòu)書(shū)發(fā)票

發(fā)票收書(shū)費(fèi)

領(lǐng)書(shū)單發(fā)書(shū)學(xué)生學(xué)生教材購(gòu)銷系統(tǒng)購(gòu)書(shū)單領(lǐng)書(shū)單缺書(shū)單進(jìn)書(shū)通知進(jìn)書(shū)通知保管員1銷售購(gòu)書(shū)單領(lǐng)書(shū)單學(xué)生缺書(shū)單進(jìn)書(shū)通知2採(cǎi)購(gòu)保管員第1

層第2

教材存量表F1

缺書(shū)登記表F2外部實(shí)體外部實(shí)體

教材銷售子系統(tǒng)無(wú)效書(shū)單購(gòu)書(shū)單1.3登記並開(kāi)領(lǐng)書(shū)單1.2開(kāi)發(fā)票1.1審查有效性1.4登記缺書(shū)1.5補(bǔ)售教材采購(gòu)學(xué)生學(xué)生進(jìn)書(shū)通知有效書(shū)單發(fā)票領(lǐng)書(shū)單暫缺書(shū)單1銷售購(gòu)書(shū)單領(lǐng)書(shū)單缺書(shū)單進(jìn)書(shū)通知2採(cǎi)購(gòu)進(jìn)書(shū)通知缺書(shū)登記表教材存量表學(xué)生保管員第2

層補(bǔ)售書(shū)單第3層

教材存量表F1

缺書(shū)登記表F2F1書(shū)號(hào)單價(jià)數(shù)量

各班用書(shū)表F3

售書(shū)登記表F4外部項(xiàng)1銷售購(gòu)書(shū)單領(lǐng)書(shū)單缺書(shū)單進(jìn)書(shū)通知2採(cǎi)購(gòu)進(jìn)書(shū)通知缺書(shū)登記表教材存量表學(xué)生保管員採(cǎi)購(gòu)子系統(tǒng)

第2層第3

層缺書(shū)單2.3修改教材庫(kù)存和待購(gòu)量銷售進(jìn)書(shū)通知進(jìn)書(shū)通知2.1按書(shū)號(hào)匯總?cè)睍?shū)2.2按出版社統(tǒng)計(jì)缺書(shū)保管員

教材存量表F1

待購(gòu)教材表F5

教材一覽表F6

缺書(shū)登記表F2控制板感測(cè)器家庭安全軟體電話線警報(bào)控制板顯示警報(bào)類型感測(cè)器狀態(tài)用戶命令和數(shù)據(jù)顯示數(shù)據(jù)電話號(hào)碼信號(hào)與用戶交互1配置系統(tǒng)2啟/停系統(tǒng)3顯示消息狀態(tài)5處理口令4監(jiān)控系統(tǒng)6配置資訊用戶命令和數(shù)據(jù)配置請(qǐng)求配置數(shù)據(jù)啟/停口令配置數(shù)據(jù)配置數(shù)據(jù)啟/停消息顯示消息感測(cè)器資訊有效標(biāo)識(shí)消息感測(cè)器狀態(tài)電話號(hào)碼信號(hào)警報(bào)類型評(píng)價(jià)防備設(shè)置6.1顯示格式化6.2生成警報(bào)信號(hào)6.3撥電話6.5讀感測(cè)器6.4配置資訊感測(cè)器標(biāo)識(shí),類型感測(cè)器狀態(tài)電話號(hào)碼配置數(shù)據(jù)感測(cè)器標(biāo)識(shí),定位警報(bào)數(shù)據(jù)感測(cè)器資訊電話號(hào)碼信號(hào)控制流圖(CFD)2.1列印控制流ControlFlow加工處理Process外部實(shí)體ExternalEntity數(shù)據(jù)存儲(chǔ)DataStore控制說(shuō)明與用戶交互1配置系統(tǒng)2啟/停系統(tǒng)3顯示消息狀態(tài)5處理口令4監(jiān)控系統(tǒng)6配置資訊顯示動(dòng)作狀態(tài)(完成、進(jìn)行中)控制板控制板顯示警報(bào)電話線感測(cè)器感測(cè)器事件閃爍標(biāo)誌警報(bào)狀態(tài)時(shí)間溢出警報(bào)信號(hào)啟/停開(kāi)關(guān)數(shù)據(jù)字典(DD)數(shù)據(jù)字典是對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對(duì)於輸入、輸出、存儲(chǔ)成分和中間計(jì)算結(jié)果有共同的理解。數(shù)據(jù)字典把不同的需求文檔和分析模型緊密結(jié)合在一起數(shù)據(jù)字典的作用DFD中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)表示某個(gè)有組織的數(shù)據(jù)集合,它們要由SA的其他描述工具-需求字典(數(shù)據(jù)字典)來(lái)描述,包括:詞條描述數(shù)據(jù)結(jié)構(gòu)描述加工邏輯說(shuō)明數(shù)據(jù)字典的內(nèi)容DD包含的資訊名稱(標(biāo)識(shí))別名來(lái)源去向組成(內(nèi)容描述)流動(dòng)屬性(頻率、數(shù)據(jù)量)補(bǔ)充資訊數(shù)據(jù)的層次關(guān)係原數(shù)據(jù)元素組合項(xiàng)重複項(xiàng)選擇項(xiàng)可選項(xiàng)數(shù)據(jù)字典基本符號(hào)=表示“等於”,“定義為”,“由什麼構(gòu)成”+表示“與”,“和”[|]表示“或”,即選擇括弧中用“|”號(hào)分隔的各項(xiàng)中的某一項(xiàng){}表示“重複”,即括弧中的項(xiàng)要重複若干次,重複次數(shù)的上下限也可以在括弧邊上標(biāo)出()表示“可選”,即括弧中的項(xiàng)可以沒(méi)有**表示“注釋”(1)數(shù)據(jù)流詞條描述數(shù)據(jù)流名:說(shuō)明:簡(jiǎn)要介紹作用即它產(chǎn)生的原因和結(jié)果數(shù)據(jù)流來(lái)源:來(lái)自何方數(shù)據(jù)流去向:去向何處數(shù)據(jù)流組成:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)量流通量:數(shù)據(jù)量,流通量舉例:購(gòu)書(shū)單發(fā)票領(lǐng)書(shū)單審查並開(kāi)發(fā)票開(kāi)領(lǐng)書(shū)單無(wú)效書(shū)單學(xué)生12各班學(xué)生用書(shū)表學(xué)生教材存量表數(shù)據(jù)流詞條說(shuō)明舉例數(shù)據(jù)流名:發(fā)票別名:

無(wú)簡(jiǎn)述:

學(xué)生購(gòu)書(shū)時(shí)填寫(xiě)的專案來(lái)源:

學(xué)生去向:

加工1“審查並開(kāi)發(fā)票”組成:(學(xué)號(hào))+姓名+{書(shū)號(hào)+數(shù)量}數(shù)據(jù)流量:1000次/周

高峰值:開(kāi)學(xué)期間1000次/天

(2)數(shù)據(jù)元素詞條描述數(shù)據(jù)元素名:類型:數(shù)字(離散值,連續(xù)值),文字(編碼類型)長(zhǎng)度:取值範(fàn)圍:相關(guān)的數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)元素詞條舉例資料項(xiàng)目名:貨物編號(hào)別名:G-No,G-num簡(jiǎn)述:本公司的所有貨物的編號(hào)類型:字串長(zhǎng)度:10取值範(fàn)圍及含義:

第1位:[J|G](進(jìn)口/國(guó)產(chǎn))

第2-4位:LB01..LB29(類別)

第5-7位:“A00”..“A99”(規(guī)格)

第8-10位:“001”..“999”(品名編號(hào))(3)數(shù)據(jù)檔詞條描述數(shù)據(jù)檔案名:簡(jiǎn)述:存放的是什麼數(shù)據(jù)輸入數(shù)據(jù):輸出數(shù)據(jù):數(shù)據(jù)檔組成:數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)方式:順序,直接,關(guān)鍵碼存取頻率:數(shù)據(jù)檔(存儲(chǔ))詞條舉例檔案名:庫(kù)存記錄別名:無(wú)簡(jiǎn)述:存放庫(kù)存所有可供貨物的資訊組成:貨物名稱+編號(hào)+生

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論