軟件技術(shù)基礎(chǔ)知識之軟件工程課件



《軟件技術(shù)基礎(chǔ)知識之軟件工程課件》由會員分享,可在線閱讀,更多相關(guān)《軟件技術(shù)基礎(chǔ)知識之軟件工程課件(169頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,,,,,,,,,,,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,,,*,軟件技術(shù)基礎(chǔ),--,軟件工程,計算機軟件基礎(chǔ)之一,,,軟件技術(shù)基礎(chǔ)--軟件工程計算機軟件基礎(chǔ)之一,1,第三部分 軟件工程,目的與要求,講課內(nèi)容與學(xué)時,參考資料,,,第三部分 軟件工程目的與要求,2,目的與要求,學(xué)習(xí)、掌握和了解軟件工程的概念,掌握軟件工程的方法和軟件開發(fā)的過程,初步了解對軟件開發(fā)質(zhì)量的監(jiān)控和管理,,,目的與要求學(xué)習(xí)、掌握和了解軟件工程的概念,3,講課內(nèi)容與學(xué)時,軟件工程的基本概念(2),軟件開發(fā)方法與工作模型(2),結(jié)構(gòu)化開發(fā)方法概述(2),小結(jié)與習(xí)題(2)
2、,,,講課內(nèi)容與學(xué)時軟件工程的基本概念(2),4,教科書、參考書,孫淑霞、肖陽春等編,,2000,,《,軟件技術(shù)基礎(chǔ),》,,成都理工大學(xué),黃迪明編,,1998,,,《,軟件技術(shù)基礎(chǔ),》,,電子科技大學(xué)出版社,鄭人杰,軟件工程與軟件工程管理,講座,國際標(biāo)準(zhǔn),ISO 8631<,信息處理,--,程序構(gòu)造及其表示法的約定,>,國家標(biāo)準(zhǔn),GB8566-88<,軟件開發(fā)規(guī)范,>,CMM,軟件成熟度模型,,,教科書、參考書孫淑霞、肖陽春等編,2000 《軟件技術(shù)基礎(chǔ)》,5,第三部分 軟件工程,軟件工程的基本概念,軟件開發(fā)方法與工作模型,結(jié)構(gòu)化開發(fā)方法概述,習(xí)題,,,,第三部分 軟件工程軟件工程的基本概
3、念,6,1 軟件工程的基本概念,1.1,軟件工程學(xué)的形成和發(fā)展,1.2,軟件工程學(xué)研究的內(nèi)容,1.3,軟件與軟件生命周期,1.4,軟件工程基本原則,,,,1 軟件工程的基本概念1.1 軟件工程學(xué)的形成和發(fā)展,7,1.1 軟件工程學(xué)的形成和發(fā)展,軟件工程學(xué)是在克服,60,年代末所出現(xiàn)的“軟件危機”(,software crisis,)的過程中逐漸形成與發(fā)展起來的,而所謂“軟件危機”是在軟件的規(guī)模越來越大,復(fù)雜度不斷增加,軟件需求量不斷增大的情況下出現(xiàn)的,由于軟件開發(fā)過程是一種高密度的腦力勞動,軟件開發(fā)的模式及技術(shù)不能適應(yīng)軟件發(fā)展的需要,所以“軟件危機”便產(chǎn)生了,,,1.1 軟件工程學(xué)的
4、形成和發(fā)展軟件工程學(xué)是在克服60年代末,8,軟件工程的發(fā)展,計算機軟件發(fā)展至今經(jīng)歷了三個不同的發(fā)展時期:,程序設(shè)計時期(,20,世紀(jì),50,年代,——60,年代),軟件時期(,20,世紀(jì),60,年代中期,——70,年代),軟件工程時期(,20,世紀(jì),70,年代,——,現(xiàn)在),,,軟件工程的發(fā)展計算機軟件發(fā)展至今經(jīng)歷了三個不同的發(fā)展時期:,9,發(fā)展,程序設(shè)計語言,(Programming),機器語言,匯編語言,ALGOL60,FORTRAN,COBOL,BASIC,軟件,(Software) 1960,程序,文檔,數(shù)據(jù),軟件危機引出軟件工程,(Software Engineering),軟
5、件開發(fā)工程化,1968 NATO,軟件開發(fā)階段與瀑布模型,軟件工程標(biāo)準(zhǔn),,,發(fā)展程序設(shè)計語言 (Programming),10,焦點,目標(biāo),少資源、高效益,在人力投入、開發(fā)期、成本、質(zhì)量諸方面求得最佳,風(fēng)險,需求:不明與變更,人員流動,軟件知識產(chǎn)權(quán)保護,不存在絕對無缺陷的軟件產(chǎn)品,,,焦點目標(biāo),11,成功的標(biāo)志,如期完成,預(yù)算內(nèi)完成,達(dá)到質(zhì)量要求(需求和希望),,,成功的標(biāo)志如期完成,12,軟件業(yè)與制造業(yè)的差異,,,,,,,,,,,|,?,設(shè)計,?,||,?,,生產(chǎn),?,||,運 輸,||,倉 儲,| |,功能度,…..,制造業(yè),,大量,,,,,|,?,設(shè)計(開發(fā)),?,||,?,,生產(chǎn),
6、?,||,運輸,||,倉儲,||,功能度,…..,軟件業(yè),,,,,,大量,,,軟件業(yè)與制造業(yè)的差異 |?設(shè)計?||? 生產(chǎn),13,軟件的特點,軟件是一種邏輯實體,具有抽象性,這個特點使它與其他工程對象有著明顯的差異,人們可以把它記錄在紙上、內(nèi)存和磁盤、光盤上,但卻無法看到軟件本身的形態(tài),必須通過觀察、分析、思考、判斷,才能了解它的功能、性能等特性,軟件沒有明顯的制造過程,一旦研制開發(fā)成功,就可以大量拷貝同一內(nèi)容的副本,所以對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下工夫,軟件在使用過程中,沒有磨損、老化的問題,軟件在生存周期后期不會因為磨損而老化,但會為了適應(yīng)硬件、環(huán)境以及需求的變化而
7、進行修改,而這些修改又不可避免地引入錯誤,導(dǎo)致軟件失效率升高,從而使得軟件退化,當(dāng)修改的成本變得難以接受時,軟件就被拋棄,軟件對硬件和環(huán)境有著不同程度的依賴性,這導(dǎo)致了軟件移植的問題,,,軟件的特點軟件是一種邏輯實體,具有抽象性,14,軟件的特點 (cont.),軟件的開發(fā)至今尚未完全擺脫手工作坊式的開發(fā)方式,生產(chǎn)效率低,軟件是復(fù)雜的,而且以后會更加復(fù)雜,軟件是人類有史以來生產(chǎn)的復(fù)雜度最高的工業(yè)產(chǎn)品,軟件涉及人類社會的各行各業(yè)、方方面面,軟件開發(fā)常常涉及其他領(lǐng)域的專門知識,這對軟件工程師提出了很高的要求,軟件的成本相當(dāng)昂貴,軟件開發(fā)需要投入大量、高強度的腦力勞動,成本非常高,風(fēng)險也大,現(xiàn)在軟件
8、的開銷已大大超過了硬件的開銷,軟件工作牽涉到很多社會因素,許多軟件的開發(fā)和運行涉及機構(gòu)、體制和管理方式等問題,還會涉及到人們的觀念和心理,這些人的因素,常常成為軟件開發(fā)的困難所在,直接影響到項目的成敗,,,軟件的特點 (cont.)軟件的開發(fā)至今尚未完全擺脫手工作坊,15,軟件危機 (software crisis),軟件危機是指計算機軟件開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題,軟件的數(shù)量急劇膨脹,軟件需求日趨復(fù)雜,維護的難度越來越大,開發(fā)成本令人吃驚地高,而失敗的軟件開發(fā)項目卻屢見不鮮,它主要包含兩個方面的問題:,如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求,——,軟件產(chǎn)品質(zhì)量低劣,甚至開發(fā)
9、過程就夭折,如何維護數(shù)量不斷膨脹的軟件產(chǎn)品,——,軟件生產(chǎn)率低,不能滿足需要,,,軟件危機 (software crisis)軟件危機是指計算,16,軟件危機的表現(xiàn),對軟件開發(fā)成本和進度的估計常常不準(zhǔn)確,開發(fā)成本超出預(yù)算,實際進度比預(yù)定計劃一再拖延的現(xiàn)象并不罕見,用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生,軟件產(chǎn)品的質(zhì)量往往靠不住,,Bug,一大堆,,Patch,一個接一個,軟件的可維護程度非常之低,軟件通常沒有適當(dāng)?shù)奈臋n資料,軟件的成本不斷提高,軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長,,,軟件危機的表現(xiàn)對軟件開發(fā)成本和進度的估計常常不準(zhǔn)確,開發(fā)成本,17,產(chǎn)生軟件危機的原因,由于
10、軟件本身的特點,管理和控制軟件開發(fā)過程相當(dāng)困難,而且軟件維護較難,軟件是一種高智力活動,由復(fù)雜的邏輯、復(fù)雜的運算和復(fù)雜的關(guān)聯(lián)等構(gòu)成,由于對軟件開發(fā)與軟件維護的不正確方法,產(chǎn)生了軟件危機,軟件規(guī)模越來越大,功能越來越強,導(dǎo)致軟件結(jié)構(gòu)非常復(fù)雜,忽視軟件開發(fā)前期的需求分析,開發(fā)過程沒有統(tǒng)一的、規(guī)范的方法論的指導(dǎo),文檔資料不齊全,忽視人與人的交流,忽視測試階段的工作,提交用戶的軟件質(zhì)量差,輕視軟件的維護;等等,,,產(chǎn)生軟件危機的原因由于軟件本身的特點,管理和控制軟件開發(fā)過程,18,對軟件看法的轉(zhuǎn)變,早期那些被認(rèn)為是優(yōu)秀的程序常常很難被別人看懂,通篇充滿了程序技巧,現(xiàn)在人們普遍認(rèn)為優(yōu)秀的程序除了功能正確
11、,性能優(yōu)良之外,還應(yīng)該容易看懂、容易使用、容易修改和擴充,,,對軟件看法的轉(zhuǎn)變早期那些被認(rèn)為是優(yōu)秀的程序常常很難被別人看懂,19,軟件的定義,軟件,(software),是計算機系統(tǒng)中與硬件,(hardware),相互依存的另一部分,它包括:,程序,(program)——,是按照事先設(shè)計的功能和性能要求執(zhí)行的指令序列,相關(guān)數(shù)據(jù),(data)——,是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu),說明文檔,(document)——,是與程序開發(fā)維護和使用有關(guān)的各種圖文資料,,,軟件的定義軟件(software)是計算機系統(tǒng)中與硬件(ha,20,軟件工程,(software engineering),提出,1968
12、,年秋季,,NATO,(北約)的科技委員會召集了近,50,名一流的編程人員、計算機科學(xué)家和工業(yè)界巨頭,討論和制定擺脫“軟件危機”的對策。在那次會議上第一次提出了軟件工程這個概念。,軟件工程的定義,軟件工程是一門研究如何用系統(tǒng)化、規(guī)范化、數(shù)量化等工程原則和方法去進行軟件的開發(fā)和維護的學(xué)科。,,,軟件工程(software engineering)提出,21,1 軟件工程的基本概念,1.1,軟件工程學(xué)的形成和發(fā)展,1.2,軟件工程學(xué)研究的內(nèi)容,1.3,軟件與軟件生命周期,1.4,軟件工程基本原則,,,,1 軟件工程的基本概念1.1 軟件工程學(xué)的形成和發(fā)展,22,1.2 軟件工程學(xué)研究的內(nèi)容
13、,“軟件工程”是軟件工程人員尋求解決出現(xiàn)的軟件危機而產(chǎn)生的,它的核心思想是,采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護,,,1.2 軟件工程學(xué)研究的內(nèi)容“軟件工程”是軟件工程人員尋求,23,,,質(zhì)量,成本,,,效率,工具,方法,過程,,產(chǎn)品需求,產(chǎn)品,,,資源,,,,管理 ???!,高效率、低成本地,開發(fā)高質(zhì)量的軟件!,軟件工程面對的挑戰(zhàn),,,質(zhì)量成本效率工具方法過程產(chǎn)品需求產(chǎn)品資源管理 ???!高效率、,24,軟件工程兩個方面的內(nèi)容,軟件開發(fā)技術(shù),軟件開發(fā)方法學(xué),軟件工具,軟件工程環(huán)境,軟件項目管理,軟件度量,項目估算,進度控制,人員組織,配置管理,項目計劃等,,,軟件工程兩個方面的內(nèi)容
14、軟件開發(fā)技術(shù)軟件項目管理,25,1 軟件工程的基本概念,1.1,軟件工程學(xué)的形成和發(fā)展,1.2,軟件工程學(xué)研究的內(nèi)容,1.3,軟件與軟件生命周期,1.4,軟件工程基本原則,,,,1 軟件工程的基本概念1.1 軟件工程學(xué)的形成和發(fā)展,26,1.3 軟件與軟件生命周期,關(guān)于軟件,要糾正那種認(rèn)為“軟件就是程序,開發(fā)軟件就是編寫程序”的錯誤觀念,軟件應(yīng)是“程序以及開發(fā)、使用和維護程序所需的所有文檔”。具體來說是由:,應(yīng)用程序:面向用戶,為解決各種特定問題編寫的程序,系統(tǒng)程序:面向硬件,為應(yīng)用程序服務(wù)的程序,面向用戶的文檔:如何使用和維護應(yīng)用程序的資料,面向開發(fā)者的文檔:記載了應(yīng)用程序的設(shè)計和開
15、發(fā)過程,以便進一步開發(fā)和修改,,,1.3 軟件與軟件生命周期關(guān)于軟件,27,1.3 軟件與軟件生命周期,軟件生命周期(,SLC,),軟件生命周期是指從軟件開發(fā)到報廢的全過程,也稱軟件生存期,軟件生命周期的描述模型,瀑布模型(經(jīng)典),快速原型模型,軟件生命周期的三個時期,定義時期,開發(fā)時期,維護時期,,,1.3 軟件與軟件生命周期軟件生命周期(SLC),28,瀑布模型,問題定義,可行性研究,需求分析,設(shè) 計,編 程,測 試,運行與維護,目標(biāo)與范圍說明書,可行性論證報告,需求說明書,設(shè)計文檔,程序,測試報告,維護報告,計劃時期,開發(fā)時期,運行時期,,,瀑布模型問題定義可行性研究需求分析
16、設(shè) 計編 程測 試運,29,快速原型模型,需求分析,原型開發(fā),原型評定,目標(biāo)系統(tǒng)設(shè)計,目標(biāo)系統(tǒng)實現(xiàn),用戶意見,,,快速原型模型需求分析原型開發(fā)原型評定目標(biāo)系統(tǒng)設(shè)計目標(biāo)系統(tǒng)實現(xiàn),30,軟件開發(fā)流程,,,,,,用 戶,初始需求,交付的軟件,,運行,維護,分析定義,需求規(guī)格說明,設(shè)計,設(shè)計文檔,實現(xiàn),測試,源程序,,,軟件開發(fā)流程用 戶初始需求交付的軟件運行分析定義需求規(guī)格說,31,軟件生命周期——定義期,定義期,要為被開發(fā)的軟件規(guī)定“做什么”,開發(fā)人員要確定,軟件將處理什么信息,軟件的功能,軟件的性能,建立什么樣的接口,要考慮什么設(shè)計限制,軟件開發(fā)成功的確認(rèn)標(biāo)準(zhǔn),,,軟件生命周期——定義
17、期定義期,32,軟件生命周期——定義期,定義期包括三個階段的工作,系統(tǒng)分析,把軟件要完成的工作與整個計算機系統(tǒng)的其他部分,如硬件,操作人員及數(shù)據(jù)庫等應(yīng)完成的工作區(qū)分開來,軟件項目計劃,確定軟件開發(fā)總目標(biāo),進行風(fēng)險分析,資源分配,成本估計,規(guī)定工作任務(wù)和進度安排,需求分析,更明確地確定軟件做什么,給出所開發(fā)軟件的功能,性能,用戶接口,對數(shù)據(jù)流進行分析,給出功能說明,寫出用戶手冊初稿,,,軟件生命周期——定義期定義期包括三個階段的工作,33,軟件生命周期——開發(fā)期,開發(fā)期,著重解決所開發(fā)軟件“怎么做”的問題,開發(fā)期要進行,設(shè)計數(shù)據(jù)結(jié)構(gòu),設(shè)計軟件總體結(jié)構(gòu),實現(xiàn)軟件的過程細(xì)節(jié),將設(shè)計轉(zhuǎn)換成程序語言,進
18、行測試,,,軟件生命周期——開發(fā)期開發(fā)期,34,軟件生命周期——開發(fā)期,開發(fā)期含有以下三個階段,軟件設(shè)計,把已經(jīng)確定的軟件需求轉(zhuǎn)換成特定形式的設(shè)計表示,使其得以實現(xiàn),程序編制,用某個編程語言表達(dá)軟件設(shè)計時確定的處理過程算法,軟件測試,對已編制的程序進行測試,以找出其中功能上、邏輯上和實現(xiàn)中的錯誤,,,軟件生命周期——開發(fā)期開發(fā)期含有以下三個階段,35,軟件生命周期——維護期,運行維護期,著重解決因多種原因軟件要做的變更,軟件投入使用后,要對軟件作變更的理由,開發(fā)期中存在的問題,當(dāng)時未能發(fā)現(xiàn)和及時解決,適應(yīng)變更了的軟件運行環(huán)境,軟件需進一步完善,用戶需求較小的變化,,,軟件生命周期——維護期運行
19、維護期,36,軟件生存周期,軟件生存期的三個時期有時也籠統(tǒng)地稱為軟件開發(fā),為更清楚地表達(dá)生存期內(nèi)各個階段的工作和各階段間的關(guān)系,可為生存期設(shè)計不同的范型,或稱模型。如:,瀑布模型,螺旋模型,噴泉模型,,,軟件生存周期軟件生存期的三個時期有時也籠統(tǒng)地稱為軟件開發(fā),37,軟件生存周期方法學(xué),軟件工程采用的生存周期方法學(xué)就是,從時間角度對軟件開發(fā)和維護的復(fù)雜問題進行分解,將軟件的生存周期分為若干階段,需求定義,軟件設(shè)計,編程,測試,運行維護等,每個階段有相對獨立的任務(wù),便于分工協(xié)作,使軟件開發(fā)過程按有秩序能管理的方式組織起來,從而降低軟件開發(fā)的難度,,,軟件生存周期方法學(xué)軟件工程采用的生存周期方法學(xué)
20、就是,38,軟件生命周期的花費比例,,,軟件生命周期的花費比例,39,1 軟件工程的基本概念,1.1,軟件工程學(xué)的形成和發(fā)展,1.2,軟件工程學(xué)研究的內(nèi)容,1.3,軟件與軟件生命周期,1.4,軟件工程基本原則,,,,1 軟件工程的基本概念1.1 軟件工程學(xué)的形成和發(fā)展,40,1.4 軟件工程基本原則,通用性和指導(dǎo)性,軟件工程實踐總結(jié)出的基本現(xiàn)象,穩(wěn)定性,不會時時改變,不依賴于采用的技術(shù)、方法和工具,概括性,針對軟件工程和軟件產(chǎn)品特性的抽象描述,基礎(chǔ)性,理解和采用它需有具體的方法和技術(shù)做補充,,,1.4 軟件工程基本原則通用性和指導(dǎo)性,41,軟件工程的原則,,,,,,原則,方法與技術(shù),
21、方法學(xué),工具,,Principle,Method & Technique,體現(xiàn)原則的途徑和步驟,Methodology,方法和技術(shù)的組合,支持整個軟件工程過程,Tools,支持方法、技術(shù)和方法學(xué)的軟件,,,,軟件工程的原則原則方法與技術(shù)方法學(xué)工具PrincipleMe,42,一般性原則,嚴(yán)格性與形式化,復(fù)雜性和分解,模塊化,抽象性和細(xì)化,變更預(yù)見性,通用性與復(fù)用性,遞增式,,,一般性原則嚴(yán)格性與形式化,43,軟件質(zhì)量管理原則,產(chǎn)品質(zhì)量以滿足用戶需求為最高準(zhǔn)則,質(zhì)量第一,以人為本,質(zhì)量與生產(chǎn)率,質(zhì)量成本,密切與用戶的聯(lián)系,盡早排除缺陷,實施過程質(zhì)量控制,,,軟件質(zhì)量管理原則產(chǎn)品質(zhì)量以滿足用戶需求
22、為最高準(zhǔn)則,44,文檔編制原則,在文檔標(biāo)準(zhǔn)基礎(chǔ)上剪裁,注意讀者對象,便于使用和查找,使用術(shù)語、概念不應(yīng)有矛盾,描述的精確性,無多義性,專職人員與開發(fā)人員結(jié)合,獨立性,,,文檔編制原則在文檔標(biāo)準(zhǔn)基礎(chǔ)上剪裁,45,需求分析與定義原則,編制需求規(guī)格說明以前,必須十分明確要解決的問題,即應(yīng)先明確需求,真正弄清需求,還應(yīng)包括為什么這樣定義,需求不清必將導(dǎo)致預(yù)算不準(zhǔn),總結(jié)產(chǎn)生錯誤的原因:,需求變更,遺漏重要需求,與用戶交流不暢,需求分析不充分,需求規(guī)格說明質(zhì)量低劣,發(fā)現(xiàn)需求規(guī)格說明中有問題,應(yīng)立即著手解決,不可將其帶入后續(xù)開發(fā)階段,需求規(guī)格說明中不應(yīng)含有待確定的部分,進行需求分析時不做設(shè)計,不應(yīng)將需求分析
23、做什么與如何做混淆,,,需求分析與定義原則編制需求規(guī)格說明以前,必須十分明確要解決的,46,設(shè)計原則,重視需求向設(shè)計轉(zhuǎn)化工作,必要時比較多個設(shè)計方案,設(shè)計應(yīng)能和需求對應(yīng),保證每項需求均在設(shè)計中得到體現(xiàn),設(shè)計文檔是設(shè)計的成果,頭腦中的設(shè)想不是設(shè)計,盡可能復(fù)用一切可復(fù)用的部分,設(shè)計應(yīng)易于變更、易于維護、易于排錯,優(yōu)秀的設(shè)計出自優(yōu)秀人才之手,,,設(shè)計原則重視需求向設(shè)計轉(zhuǎn)化工作,必要時比較多個設(shè)計方案,47,編碼原則,簡明清晰,盡可能少用、甚至不用全局變量,程序執(zhí)行速度不應(yīng)優(yōu)先于正確性的考慮,命名易記,充分注釋,命名唯一,可追溯,注意常見的規(guī)律是:編碼錯誤通常相對集中,,,編碼原則簡明清晰,48,管理
24、原則,大型復(fù)雜項目管理重于技術(shù),人員不在多,而在精,計劃指標(biāo)應(yīng)切合實際,不作不切實際的計劃,注意收集、積累數(shù)據(jù),不求一次估算能十分精確,但求不斷調(diào)整,大型項目重視風(fēng)險分析,項目進展快需分析原因,不可盲目樂觀,項目完成以后,總結(jié)分析有益于積累經(jīng)驗,,,管理原則大型復(fù)雜項目管理重于技術(shù),49,軟件過程改進,質(zhì)量依賴于過程,過程需要管理,軟件過程,包括哪些過程,如何改進,能力成熟度水平:,CMM,五級,軟件過程改進(,SPI,),,,軟件過程改進質(zhì)量依賴于過程,50,不成熟過程的特征,隨意的,非強制性的,主要依賴于實踐者,產(chǎn)品的功能、質(zhì)量和進度常有沖突,引入新技術(shù)時的風(fēng)險,質(zhì)量難以預(yù)測,,,不成熟過
25、程的特征隨意的,51,成熟過程的特征,工作按計劃有序地進行,過程、規(guī)程、文檔規(guī)范,有定義、文檔化,易理解、易使用、可裁減,可持續(xù)改進,管理的可見性,產(chǎn)品和過程可度量、可預(yù)測,新技術(shù)可以及時得到有效應(yīng)用,,,成熟過程的特征工作按計劃有序地進行,52,CMU/SEI,,5,級,-,優(yōu)化層,* 過程更改管理,* 技術(shù)更改管理,* 錯誤預(yù)防,,4,級,-,管理層,* 質(zhì)量管理,* 過程量化管理,,3,級,-,定義層,*,同級評審,組間協(xié)作,* 軟件產(chǎn)品工程,* 軟件集成管理,培訓(xùn)計劃,* 軟件過程定義,* 軟件過程要點,,2,級,-,可重復(fù)層,軟件配置管理,軟件質(zhì)量保證,軟件子合同管理,* 軟件項目追
26、蹤與監(jiān)控,軟件項目計劃,需求管理,,1,級,-,初始層,軟件過程成熟度模型的關(guān)鍵子過程域,能力成熟度模型,,,CMU/SEI5級-優(yōu)化層4級-管理層3級-定義層2級-可重,53,第三部分 軟件工程,軟件工程的基本概念,軟件開發(fā)方法與工作模型,結(jié)構(gòu)化開發(fā)方法概述,習(xí)題,,,,,第三部分 軟件工程軟件工程的基本概念,54,2 軟件開發(fā)方法與工作模型,2.1,結(jié)構(gòu)化開發(fā)方法,2.2,原型化方法,2.3,面向?qū)ο蟮拈_發(fā)方法,,,,2 軟件開發(fā)方法與工作模型2.1 結(jié)構(gòu)化開發(fā)方法,55,2.1 結(jié)構(gòu)化開發(fā)方法,結(jié)構(gòu)化方法是現(xiàn)有軟件開發(fā)方法中最成熟,應(yīng)用最廣泛的方法,結(jié)構(gòu)化開發(fā)方法的主要特點是
27、快速,自然和方便,結(jié)構(gòu)化程序設(shè)計的概念首先是從編寫程序中使用轉(zhuǎn)向(,GOTO,)語句引起的,GOTO,語句的過多使用使得程序結(jié)構(gòu)混亂,容易出錯,且出錯后不易發(fā)現(xiàn)和更正,,,2.1 結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化方法是現(xiàn)有軟件開發(fā)方法中最成熟,56,結(jié)構(gòu)化開發(fā)方法,結(jié)構(gòu)化開發(fā)方法的出發(fā)點,為了保證程序設(shè)計的質(zhì)量,使設(shè)計程序具有易讀性、易理解性、通用性好,執(zhí)行時具有較高的效率,結(jié)構(gòu)化開發(fā)方法的基本要求,在詳細(xì)設(shè)計階段所有的模塊只用三種基本控制結(jié)構(gòu),單入口、單出口和順序,選擇,循環(huán),在設(shè)計過程中采用自頂向下逐步求精的設(shè)計方法,,,結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化開發(fā)方法的出發(fā)點,57,結(jié)構(gòu)化開發(fā)方法,結(jié)構(gòu)化開發(fā)方法的組
28、成,70,年代初 結(jié)構(gòu)化程序設(shè)計方法,SP,法,70,年代中 結(jié)構(gòu)化設(shè)計方法,SD,法,70,年代末 結(jié)構(gòu)化程序分析方法,SA,法,SA,,,SD,,,SP,法相互銜接,形成了一整套開發(fā)方法,若將,SA,,,SD,法結(jié)合起來,又稱為結(jié)構(gòu)化分析與設(shè)計技術(shù)(,SADT,技術(shù)),,,結(jié)構(gòu)化開發(fā)方法結(jié)構(gòu)化開發(fā)方法的組成,58,結(jié)構(gòu)化方法的工作模型,瀑布模型(,Waterfall Model,)是結(jié)構(gòu)化方法的工作模型,但從,80,年代開始,逐漸發(fā)現(xiàn)其不足:,軟件開發(fā)過程是一個充滿回朔過程,而瀑布模型將其分割為獨立的幾個階段, 不能從本質(zhì)上反映軟件開發(fā)過程本身的規(guī)律,過分強調(diào)復(fù)審,并不能完全避免較為頻繁的
29、變動,盡管如此,瀑布模型仍然是開發(fā)軟件產(chǎn)品的一個行之有效的工程模型,,,結(jié)構(gòu)化方法的工作模型瀑布模型(Waterfall Model,59,2 軟件開發(fā)方法與工作模型,2.1,結(jié)構(gòu)化開發(fā)方法,2.2,原型化方法,2.3,面向?qū)ο蟮拈_發(fā)方法,,,,2 軟件開發(fā)方法與工作模型2.1 結(jié)構(gòu)化開發(fā)方法,60,2.2 原型化方法,原型是軟件開發(fā)過程中軟件的一個早期可運行的版本,它反映了最終系統(tǒng)的部分重要特征,原型化方法的基本思想是花費少量代價建立一個可運行的系統(tǒng),使用戶及早獲得學(xué)習(xí)的機會,原型化方法又稱速成原型法(,Rapid Prototyping,),強調(diào)的是軟件開發(fā)人員與用戶的不斷交互,通
30、過原型的演進不斷適應(yīng)用戶任務(wù)改變的需求,將維護和修改階段的工作盡早進行,使用戶驗收提前,從而使軟件產(chǎn)品更加適用,,,2.2 原型化方法原型是軟件開發(fā)過程中軟件的一個早期可運行,61,原型化方法分類,原型化方法按運用原型的目的和方式的不同分為:,快速建立漸進原型(,RSP,法,,Rapid Sequential Prototyping,),該法建立的原型反映了系統(tǒng)的某些特征,讓用戶學(xué)習(xí),有利于獲得更加精確的需求說明書,后階段的工作仍按照瀑布模型開發(fā),快速建立需求規(guī)格原型(,RCP,法,,Rapid Cyclic Prototyping,),該法采用循環(huán)漸進的開發(fā)方式,對系統(tǒng)模型作連續(xù)精化,將系
31、統(tǒng)需要具備的性質(zhì)逐步添加上去,直至所有性質(zhì)全部滿足,此時的原型模型也就是最終的產(chǎn)品,速成原型適合于開發(fā)“探索型”,“實驗型”與“進化型”一類的軟件系統(tǒng),速成原型的工作模型是一個循環(huán)的模型,,,原型化方法分類原型化方法按運用原型的目的和方式的不同分為:,62,循環(huán)的速成原型工作模型,速成原型循環(huán)方式步驟:,快速分析,快速確定軟件系統(tǒng)的基本要求,確定原型所要體現(xiàn)的特征(界面,總體結(jié)構(gòu),功能,性能),構(gòu)造原型,在快速分析的基礎(chǔ)上根據(jù)基本規(guī)定說明,忽略細(xì)節(jié),只考慮主要特征,快速構(gòu)造一個可運行的系統(tǒng),它有三類原型:用戶界面原型,功能原型,性能原型,運行和評價原型,用戶試用原型并與開發(fā)者之間頻繁交流,發(fā)現(xiàn)
32、問題,目的是驗證原型的正確性,修正與改進,對原型進行修改,增刪,,快速分析或修改,運行,構(gòu)造,評價,原型,,,循環(huán)的速成原型工作模型速成原型循環(huán)方式步驟:快速分析或修改運,63,循環(huán)的速成原型工作模型,細(xì)化的速成原型工作模型,快速分析,確定初步規(guī)格說明,構(gòu)造原型,運行,/,評價原型,原型完成否,要細(xì)部說明否,效果滿意否,嚴(yán)格說明細(xì)部,整理原型提供文檔,修正改進原型,N,N,Y,Y,Y,N,,,循環(huán)的速成原型工作模型細(xì)化的速成原型工作模型快速分析,確定初,64,2 軟件開發(fā)方法與工作模型,2.1,結(jié)構(gòu)化開發(fā)方法,2.2,原型化方法,2.3,面向?qū)ο蟮拈_發(fā)方法,,,,2 軟件開發(fā)方法與工作模型
33、2.1 結(jié)構(gòu)化開發(fā)方法,65,2.3 面向?qū)ο蟮拈_發(fā)方法,面向過程的開發(fā)方法,面向數(shù)據(jù)流設(shè)計,面向數(shù)據(jù)結(jié)構(gòu)設(shè)計,面向?qū)ο蟮拈_發(fā)方法(,OOSD,),面向?qū)ο蟮姆治觯?OOA,),面向?qū)ο蟮脑O(shè)計(,OOD,),面向?qū)ο蟮某绦蛟O(shè)計(,OOP,),,,2.3 面向?qū)ο蟮拈_發(fā)方法面向過程的開發(fā)方法,66,面向過程的開發(fā)方法,早期的高級語言都是面向過程的,程序設(shè)計者必然要專注于:,程序?qū)?shù)據(jù)的處理過程,——,面向數(shù)據(jù)流設(shè)計,數(shù)據(jù)結(jié)構(gòu),——,面向數(shù)據(jù)結(jié)構(gòu)設(shè)計,因此,由軟件解決的問題通常用軟件系統(tǒng)的,數(shù)據(jù)流圖,或,數(shù)據(jù)結(jié)構(gòu),來表示,,,面向過程的開發(fā)方法早期的高級語言都是面向過程的,67,面向過程的開
34、發(fā)方法,數(shù)據(jù)流圖,描述軟件系統(tǒng)的數(shù)據(jù)從輸入到輸出的流程,適用于幾乎所有順序處理的軟件,數(shù)據(jù)結(jié)構(gòu),描述軟件系統(tǒng)的輸入輸出數(shù)據(jù)結(jié)構(gòu),適用于數(shù)據(jù)處理,尤其輸入與輸出數(shù)據(jù)結(jié)構(gòu)相似的軟件系統(tǒng),,,面向過程的開發(fā)方法數(shù)據(jù)流圖,68,面向?qū)ο蟮拈_發(fā)方法(OOSD),面向?qū)ο蟮拈_發(fā)方法(,OOSD,,,Object-Oriented Software Development,),根據(jù)穩(wěn)定的對象建立系統(tǒng)模型,可很好地適應(yīng)需要的變化,具有良好的可維護性、可擴充性和可重用性,是軟件工程領(lǐng)域的一個研究重點,被譽為,90,年代軟件的核心技術(shù)之一,,,面向?qū)ο蟮拈_發(fā)方法(OOSD)面向?qū)ο蟮拈_發(fā)方法(OOSD,,69,面
35、向?qū)ο蟮拈_發(fā)方法,——,基本思想,對問題領(lǐng)域進行自然的分割,以便接近人類通常思維的方式,建立問題領(lǐng)域的模型,以便對客觀的信息實體進行結(jié)構(gòu)和行為的模擬,從而使設(shè)計的軟件更直接地表現(xiàn)問題的求解過程,以對象作為最基本的元素分析和解決問題的核心,,,面向?qū)ο蟮拈_發(fā)方法——基本思想對問題領(lǐng)域進行自然的分割,以便,70,面向?qū)ο蟮拈_發(fā)方法,——,組成,面向?qū)ο蟮拈_發(fā)方法的組成,面向?qū)ο蟮姆治觯?OOA,,,Object-Oriented Analysis,),面向?qū)ο蟮脑O(shè)計(,OOD,,,Object-Oriented,,Design,),面向?qū)ο蟮某绦蛟O(shè)計(,OOP,,,Object-Oriented,
36、,Programming,),OOP,是,OOSD,的基礎(chǔ),OOA,和,OOD,是應(yīng)用,OOP,的基礎(chǔ),,,面向?qū)ο蟮拈_發(fā)方法——組成面向?qū)ο蟮拈_發(fā)方法的組成,71,面向?qū)ο蟮姆治?(OOA),OOA,分析階段將系統(tǒng)水平劃分為五個層次,主體,類和對象,結(jié)構(gòu),屬性,方法,OOA,的任務(wù)就是通過分析問題域,建立系統(tǒng)的概念模型,,,面向?qū)ο蟮姆治?(OOA)OOA分析階段將系統(tǒng)水平劃分為五個,72,面向?qū)ο蟮姆治?(OOA),OOA,提供了三種模型:,信息模型,——,定義構(gòu)成系統(tǒng)的類和對象,它們的屬性與操作,狀態(tài)模型,——,描述系統(tǒng)的控制結(jié)構(gòu),即描述任何時刻對象的聯(lián)系以及聯(lián)系的變化,或稱為時序,常用
37、狀態(tài)圖和事件追蹤圖來描述,處理模型,——,描述系統(tǒng)內(nèi)部數(shù)據(jù)的傳送和處理方法,面向?qū)ο蟮姆治觯?OOA,)和設(shè)計(,OOD,)就是把面向?qū)ο蟮姆椒☉?yīng)用到軟件工程的分析和設(shè)計階段,從而建立更加適應(yīng)當(dāng)今龐大、復(fù)雜且易變的系統(tǒng)的模型,,,面向?qū)ο蟮姆治?(OOA)OOA提供了三種模型:,73,面向?qū)ο蟮脑O(shè)計 (OOD),在,OOA,建立的五個水平層次(主體、類和對象、結(jié)構(gòu)、屬性、方法)基礎(chǔ)上,將系統(tǒng)結(jié)構(gòu)在縱向上劃分為:,問題部件,人機交互部件,任務(wù)管理部件,數(shù)據(jù)管理部件,,,面向?qū)ο蟮脑O(shè)計 (OOD)在OOA建立的五個水平層次(主體、,74,面向?qū)ο蟮脑O(shè)計 (OOD),OOD,法分為,概要設(shè)計,細(xì)化對
38、象行為,添加新對象,認(rèn)定類,組類庫,確定外部接口,主要數(shù)據(jù)結(jié)構(gòu),詳細(xì)設(shè)計,加細(xì)對象描述,,,面向?qū)ο蟮脑O(shè)計 (OOD)OOD法分為,75,面向?qū)ο蟮某绦蛟O(shè)計 (OOP),使用面向?qū)ο蟮某绦蛟O(shè)計語言進行程序設(shè)計,如:,C++,,,Delphi,,,Ada,,,SmallTalk,,,Java,面向?qū)ο蟮亩x:,面向?qū)ο?=,對象,+,類,+,繼承,+,消息,如果一個軟件系統(tǒng)是按照這樣四個概念設(shè)計和實現(xiàn)的,則可以認(rèn)為這個軟件系統(tǒng)是面向?qū)ο蟮?,,面向?qū)ο蟮某绦蛟O(shè)計 (OOP)使用面向?qū)ο蟮某绦蛟O(shè)計語言進行,76,面向?qū)ο蟮某绦蛟O(shè)計 (OOP),,OOP,具有三個重要特征:,封裝,封裝是將數(shù)據(jù)和對這
39、些數(shù)據(jù)進行處理所需的各種操作連接在一個根下的技術(shù),繼承,繼承是引用已經(jīng)定義的各種類,并將它們擴充以滿足新的功能的一種技術(shù),多態(tài)性,多態(tài)性實質(zhì)上就是同一個名字可以用于多種目的,,,面向?qū)ο蟮某绦蛟O(shè)計 (OOP) OOP具有三個重要特征:,77,面向過程與面向?qū)ο?傳統(tǒng)的面向過程(函數(shù))的編程方法,代碼和數(shù)據(jù)是分開的,函數(shù)是最重要的,一個程序中的所有代碼都應(yīng)圍繞這些函數(shù)來設(shè)計,面向?qū)ο缶幊谭椒?必須將代碼與數(shù)據(jù)構(gòu)造在一個程序塊中,并且統(tǒng)一來管理,對象是最重要的,程序是圍繞這些對象來設(shè)計的,函數(shù)是第二位的,用對象調(diào)用函數(shù),而不是簡單地將對象(數(shù)據(jù))傳遞給函數(shù),,,面向過程與面向?qū)ο髠鹘y(tǒng)的面向過程(函
40、數(shù))的編程方法面向?qū)ο缶?78,面向?qū)ο蟮幕靖拍?對象(Object),類(Class),繼承(Inheritance),消息(Message),軟件IC(Integrate Circuit),,,面向?qū)ο蟮幕靖拍顚ο螅∣bject),79,面向?qū)ο蟮幕靖拍?對象(,Object,),是對客觀存在的事物的描述,可以是事、物,或概念,對象是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過程封裝在一起的實體,用戶不必知道對象行為的實現(xiàn)細(xì)節(jié),只需根據(jù)對象提供的外部特征接口訪問對象,對象的動作取決于發(fā)送給該對象的消息,消息通知對象要求完成某個功能。即,對象之間的通訊是以“做什么”的消息發(fā)送為契機的,并認(rèn)
41、為接受消息的對象知道如何去做,消息激活對象的相應(yīng)功能,“面向?qū)ο蟆钡幕舅枷刖褪前岩獦?gòu)造的系統(tǒng)表示為對象的集合,,,面向?qū)ο蟮幕靖拍顚ο螅∣bject),80,面向?qū)ο蟮幕靖拍?類(,Class,),是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合,在一個類中,每個對象都是類的實例,它們都可以使用類中提供的函數(shù),類相當(dāng)于,C,語言中的結(jié)構(gòu),或者說它是一種行為抽象數(shù)據(jù)類型,現(xiàn)實世界詞匯中的每一個名詞都表示一類對象,具有一組屬性或行為特征,例如,一個好吃的蘋果是蘋果類中的一部分,同樣也是水果類中的一部分,它也存在于食品這一大類中,若不使用類的概念,則每一個對象都需明確定義其所有的特征,若是使用類的
42、概念,則每一對象就只需定義它在大類中的特殊部分,對于類中共有的特性它可以繼承,,,面向?qū)ο蟮幕靖拍铑悾–lass),81,面向?qū)ο蟮幕靖拍?繼承(,Inheritance,),是使用現(xiàn)存的定義作為基礎(chǔ),建立新定義的技術(shù),繼承性分為:,單重繼承:一個子類只有一個父類,多重繼承:一個子類可有多個父類,一個子類可以從它的基類那里繼承所有的數(shù)據(jù)和操作,并擴充自己的數(shù)據(jù)和操作,基類抽象出共同特性,子類表達(dá)其差別,現(xiàn)存類定義,父類(基類),新類定義,子類(派生類),繼承,,,,面向?qū)ο蟮幕靖拍罾^承(Inheritance)現(xiàn)存類定義父,82,面向?qū)ο蟮幕靖拍?消息(,Message,),對象之間的
43、聯(lián)系可表示為對象間的消息傳遞,即對象間的通訊機制,當(dāng)一個消息發(fā)送給某個對象時,包含要求接收信息的對象去執(zhí)行某個功能的消息,從程序設(shè)計的角度來說消息類似于函數(shù)調(diào)用,消息是開發(fā),Windows,應(yīng)用程序用得最多的一個概念,我們程序所做的工作就是產(chǎn)生消息、傳遞消息、處理消息,Windows,正是通過消息來管理各種資源,并由此實現(xiàn)多任務(wù)功能,,,面向?qū)ο蟮幕靖拍钕ⅲ∕essage),83,面向?qū)ο蟮幕靖拍?軟件,IC,(,Integrate Circuit,),由來:,程序常常涉及到頻繁使用功能相同的模塊,盡管這些模塊對具體應(yīng)用的實現(xiàn)細(xì)節(jié)可能有些不同,如何使用和組合這些模塊,是構(gòu)建可重用模塊需要
44、解決的技術(shù)問題,類和繼承的概念有助于程序員開發(fā)這種共同性,軟件,IC,又稱軟件集成,它的思想是:,用一種集成機制將已經(jīng)成熟的軟件單元制成一個相對獨立的實體,使它們不加改動或做很少改動就可用于新的軟件系統(tǒng)中,從而減少重復(fù)勞動,提高生產(chǎn)率,“軟件,IC”,是一種可重用模塊,軟件,IC,的特征:,模塊性好,可靠性好,連接簡單,封裝性好,內(nèi)部功能高效實現(xiàn),具有清晰、簡明的說明,類,——,充當(dāng)了面向?qū)ο笙到y(tǒng)的構(gòu)造單元,,,面向?qū)ο蟮幕靖拍钴浖蘒C(Integrate Circui,84,第三部分 軟件工程,軟件工程的基本概念,軟件開發(fā)方法與工作模型,結(jié)構(gòu)化開發(fā)方法概述,習(xí)題,,,,,,第三部分 軟
45、件工程軟件工程的基本概念,85,3 結(jié)構(gòu)化開發(fā)方法概述,3.1 結(jié)構(gòu)化分析方法,3.2 結(jié)構(gòu)化設(shè)計方法,3.3 軟件編碼,3.4 軟件測試,3.5 軟件維護,,,,3 結(jié)構(gòu)化開發(fā)方法概述3.1 結(jié)構(gòu)化分析方法,86,3.1 結(jié)構(gòu)化分析方法(SA),結(jié)構(gòu)化分析方法是需求分析中最常用的方法之一,在進行需求分析(結(jié)構(gòu)化分析)之前,需要先進行:,系統(tǒng)分析,實施計劃報告,,,3.1 結(jié)構(gòu)化分析方法(SA)結(jié)構(gòu)化分析方法是需求分析中最常,87,系統(tǒng)分析,系統(tǒng)分析是制定軟件項目計劃的第一步,它決定了所開發(fā)軟件的總目標(biāo),其任務(wù)包括:,確定所開發(fā)軟件的總體要求和適用范圍;,描述所開發(fā)軟件與外界接口關(guān)系;,確
46、定所需的硬、軟件支持;,對開發(fā)的進度和成本的估計;,分析系統(tǒng)的可行性;,確定所開發(fā)軟件與原有軟件的兼容性關(guān)系或其他關(guān)系;,確定所開發(fā)軟件的性能,預(yù)計內(nèi)部復(fù)雜性之間的折衷關(guān)系。,,,系統(tǒng)分析系統(tǒng)分析是制定軟件項目計劃的第一步,它決定了所開發(fā)軟,88,系統(tǒng)分析,在確定以上各項時,常常要設(shè)想多種可能的方案,再根據(jù)需要從中進行比較選擇,系統(tǒng)分析中對系統(tǒng)的可行性分析是十分重要的,這是此項目能否進行的關(guān)鍵,它包括以下方面:,技術(shù)可行性研究,必須明確現(xiàn)有的條件是否能滿足開發(fā)軟件所需的技術(shù)設(shè)備、用戶的技術(shù)要求,開發(fā)時間是否合理等,經(jīng)濟可行性研究,對開發(fā)所需的經(jīng)費和軟件所帶來的經(jīng)濟效益進行估計,社會可行性研究,
47、考慮所開發(fā)的軟件項目是否涉及版權(quán)糾紛等法律問題,以及投入運行后對生產(chǎn)、管理或經(jīng)營體制帶來什么社會影響,,,系統(tǒng)分析在確定以上各項時,常常要設(shè)想多種可能的方案,再根據(jù)需,89,實施計劃報告,在認(rèn)真做好上述系統(tǒng)分析工作的基礎(chǔ)上,要制定一個大致的實施計劃,也就是編寫一個實施計劃報告,這個報告只是對實施方案進行粗略的描述,主要有四個方面的內(nèi)容,開發(fā)進度,人員投入計劃,人員組織,資源的利用,,,實施計劃報告在認(rèn)真做好上述系統(tǒng)分析工作的基礎(chǔ)上,要制定一個大,90,實施計劃報告,一個實施計劃報告的提要實例:,軟件開發(fā)項目名稱,任務(wù)概述,負(fù)責(zé)單位(包括:管理機構(gòu)和任務(wù)的分解),開發(fā)人員組織(包括:組織結(jié)構(gòu)和任
48、務(wù)的分配),人員投入計劃(包括:總估計和各階段投入計劃),其他資源利用(包括:設(shè)備和資料),開發(fā)進度(包括:階段的劃分,各階段的評審時間和提供開發(fā)進展報告時間),項目完成檢驗(包括:檢驗機構(gòu),檢驗方式和交付產(chǎn)品的清單),編寫的實施計劃報告只是對開發(fā)項目的初步設(shè)想,但也要反映出實施方案的主要內(nèi)容,,,實施計劃報告一個實施計劃報告的提要實例:,91,實施計劃報告,在軟件開發(fā)項目實施計劃得到批準(zhǔn)以后,便可開始工作,這時不要急于進行軟件設(shè)計,而是要弄清楚用戶的需要,需求分析做得不好,用戶和軟件開發(fā)人員未能全面地、精確地理解和表達(dá)這些需求,致使一些隱藏的問題隨著開發(fā)工作的進行帶給后面階段,最終將給開發(fā)工
49、作造成不良的影響,,,,,,計劃,需求分析,設(shè)計,編碼,測試,需求分析中發(fā)生的問題對后期開發(fā)工作造成的影響示意圖,,,實施計劃報告在軟件開發(fā)項目實施計劃得到批準(zhǔn)以后,便可開始工作,92,結(jié)構(gòu)化分析方法,需求分析最常用的方法是結(jié)構(gòu)化分析方法(Structured Analysis),它適用于分析大型數(shù)據(jù)處理系統(tǒng),該方法簡明,易于掌握,與設(shè)計階段的結(jié)構(gòu)化方法相銜接,將取得良好的設(shè)計效果,,,結(jié)構(gòu)化分析方法需求分析最常用的方法是結(jié)構(gòu)化分析方法(Stru,93,結(jié)構(gòu)化分析方法的基本思想和步驟,結(jié)構(gòu)化分析方法的基本思想是采用“分解”和“抽象”的基本手段,由頂向下逐層分解,具體步驟為:,理解當(dāng)前的現(xiàn)狀環(huán)境
50、,建立當(dāng)前系統(tǒng)的“具體模型”,從當(dāng)前系統(tǒng)的“具體模型”抽象出當(dāng)前系統(tǒng)的“邏輯模型”,分析目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)在邏輯上的差別,建立目標(biāo)系統(tǒng)的邏輯模型,為了對目標(biāo)系統(tǒng)做完整的描述,還需要考慮人機界面和其他一些問題,,,結(jié)構(gòu)化分析方法的基本思想和步驟結(jié)構(gòu)化分析方法的基本思想是采用,94,結(jié)構(gòu)化分析方法的描述方法,數(shù)據(jù)流圖(DFD)和分層的數(shù)據(jù)流圖,數(shù)據(jù)詞典(DD, Data Dictionary),加工說明,,,結(jié)構(gòu)化分析方法的描述方法數(shù)據(jù)流圖(DFD)和分層的數(shù)據(jù)流圖,95,(1),數(shù)據(jù)流圖,(DFD, Data Flow Diagram),數(shù)據(jù)流圖以圖形的方式表示系統(tǒng)中的信息變換和傳遞的過程,數(shù)據(jù)
51、流圖的基本符號只有下列四種:,數(shù)據(jù)流,加工,數(shù)據(jù)存儲,數(shù)據(jù)源點及數(shù)據(jù)終點,畫,DFD,圖的方法:由外向里,自頂而下,逐層分解,,,,,(1)數(shù)據(jù)流圖(DFD, Data Flow Diagram,96,數(shù)據(jù)流圖的基本符號,數(shù)據(jù)流,數(shù)據(jù)流是具有名字且具有流向的數(shù)據(jù),用標(biāo)有名字的箭頭表示。每條數(shù)據(jù)流表示在這條流水線上有一組由一定成分組成的數(shù)據(jù)流動。,加工,表示對數(shù)據(jù)進行的加工或變換。數(shù)據(jù)流圖中以標(biāo)有名字的圓圈代表加工,名字表示加工的含義,指向加工的數(shù)據(jù)流是該加工的輸入數(shù)據(jù),離開加工數(shù)據(jù)流是該加工的輸出數(shù)據(jù)。,數(shù)據(jù)存儲,文件是數(shù)據(jù)存儲形式的統(tǒng)稱,它表示了數(shù)據(jù)流在加工過程中需要存儲或查找的信息。文件以
52、標(biāo)有名字的粗線表示。,數(shù)據(jù)源點及數(shù)據(jù)終點,標(biāo)明數(shù)據(jù)處理過程的數(shù)據(jù)來源和數(shù)據(jù)去向,數(shù)據(jù)流圖中已有名的方框表示,它只起到注釋作用,補充說明系統(tǒng)與其他外界環(huán)境的聯(lián)系。,,,數(shù)據(jù)流圖的基本符號數(shù)據(jù)流,97,銀行取款過程的數(shù)據(jù)流圖,,儲戶,,,核查,,登錄,,付款,取款信息,付款信息,取款信息,存折,取款單,無余拒付,帳卡,存折,,,銀行取款過程的數(shù)據(jù)流圖核查登錄付款取款信息付款信息取款信息存,98,分層的數(shù)據(jù)流圖DFD,畫分層,DFD,圖的基本原則,(,注:,DFD,圖不是流程圖,),數(shù)據(jù)守恒與數(shù)據(jù)封閉原則,加工的輸入輸出數(shù)據(jù)流是否匹配,應(yīng)成對出現(xiàn),即每一個加工既有輸入數(shù)據(jù)流又有輸出數(shù)據(jù)流,加工分解的
53、原則,畫分層,DFD,圖時,各子系統(tǒng)的分解速度應(yīng)大致均勻,保持同步擴展,一般情況下,每次每一加工可以分解為,2,~,4,個加工,至多不超過,7,~,8,個,以免閱讀時增加理解的困難,在上層時分解的速度可略快,越到下層功能越具體,分解速度應(yīng)放慢,,,分層的數(shù)據(jù)流圖DFD畫分層DFD圖的基本原則 (注:DFD圖,99,分層的數(shù)據(jù)流圖DFD,畫分層,DFD,圖的基本原則,(cont.),子圖與父圖的“平衡”,在分層圖中,每一層都是它下層的父圖,同時又是它上層的子圖,父子平衡是父圖與子圖在輸入數(shù)據(jù)與輸出數(shù)據(jù)上應(yīng)保持信息的連續(xù)性,合理使用文件,為了優(yōu)先考慮重要問題,允許將某些細(xì)節(jié)推遲到下層,DFD,圖處
54、理,除出錯處理外,對文件的處理也常常推遲,具體地說,上層,DFD,圖往往只畫出少量文件,借以保持畫面整潔,越往下層,畫出的文件越多,,,分層的數(shù)據(jù)流圖DFD畫分層DFD圖的基本原則(cont.),100,(2),數(shù)據(jù)詞典,(DD, Data Dictionary),數(shù)據(jù)詞典是,SA,方法的主要工具之一,它與數(shù)據(jù)流圖共同構(gòu)成系統(tǒng)的邏輯模型,沒有數(shù)據(jù)流圖則數(shù)據(jù)詞典難發(fā)揮作用,沒有數(shù)據(jù)詞典則數(shù)據(jù)流圖就不嚴(yán)格,數(shù)據(jù)詞典對數(shù)據(jù)流圖中出現(xiàn)的所有數(shù)據(jù)元素給出邏輯定義,有了數(shù)據(jù)詞典,使數(shù)據(jù)流程圖上的數(shù)據(jù)流加工和文件得到確切的解釋,,,(2)數(shù)據(jù)詞典(DD, Data Dictionary)數(shù)據(jù),101,數(shù)據(jù)詞
55、典的條目,數(shù)據(jù)詞典中有四種類型的條目,數(shù)據(jù)流(由多少個數(shù)據(jù)項組成),文件,數(shù)據(jù)項(單項數(shù)據(jù)),加工,,,數(shù)據(jù)詞典的條目數(shù)據(jù)詞典中有四種類型的條目,102,數(shù)據(jù)流條目,數(shù)據(jù)流條目給出某個數(shù)據(jù)流的定義,它通常是列出該數(shù)據(jù)流的定義,在進行數(shù)據(jù)流定義時,可采用如下符號:,“,=”——,表示定義為,“,+”——,表示“與”,“,[|]”——,表示“或”,即選擇括號中的某一項,“,{}”——,表示“重復(fù)”,即括號中的項要重復(fù)若干次,重復(fù)次數(shù)的上下限也可以在括號中標(biāo)出,“()”,——,表示“可選”,,,數(shù)據(jù)流條目數(shù)據(jù)流條目給出某個數(shù)據(jù)流的定義,它通常是列出該數(shù)據(jù),103,文件條目,文件條目給出某個文件的定義
56、,同數(shù)據(jù)流一樣,文件的定義通常是列出文件記錄的組成數(shù)據(jù)項,文件條目還可以指出文件的組織方式,如按單號遞增次序排列等,,,文件條目文件條目給出某個文件的定義,104,數(shù)據(jù)項條目,數(shù)據(jù)項條目給出某個數(shù)據(jù)單項的定義,通常是數(shù)據(jù)項的值類型,允許的取值范圍等,,,數(shù)據(jù)項條目數(shù)據(jù)項條目給出某個數(shù)據(jù)單項的定義,105,加工條目,加工條目又稱小說明,對數(shù)據(jù)流圖中的每一個不能再分解的基本加工都必須有一個小說明給出這個加工的精確描述,,,加工條目加工條目又稱小說明,106,(3)加工說明,結(jié)構(gòu)化語言(簡單,易學(xué),少二義性),判斷樹(描述一般組合條件,較清楚),判斷表(用于較復(fù)雜的組合條件),,,(3)加工說明結(jié)構(gòu)
57、化語言(簡單,易學(xué),少二義性),107,結(jié)構(gòu)化語言 (結(jié)構(gòu)化英語),結(jié)構(gòu)化語言介于自然語言和形式語言之間的一種半形式語言,是描述基本加工條目中的加工說明的常用工具,是自然語言的一個受某些限制的子集,沒有形式語言那么精確,嚴(yán)格,具有自然語言的簡單,易懂的特點,結(jié)構(gòu)化語言一般分為內(nèi),外兩層,外層語法比較具體,外層語法描述操作的控制結(jié)構(gòu),如順序,選擇和循環(huán)等,內(nèi)層語法比較靈活,內(nèi)層語法根據(jù)系統(tǒng)的具體特點以及用戶的接受能力來確定,通常采用有動詞和賓語構(gòu)成的祈使句,,,結(jié)構(gòu)化語言 (結(jié)構(gòu)化英語)結(jié)構(gòu)化語言介于自然語言和形式語言之,108,結(jié)構(gòu)化語言的例子,順序結(jié)構(gòu),,MOVE,單科成績,TO,學(xué)生單科成
58、績表,選擇結(jié)構(gòu),,IF,存貨小于標(biāo)準(zhǔn)點,,DO,定貨,,ELSE,(不小于標(biāo)準(zhǔn)點),,SET,標(biāo)志,重復(fù)結(jié)構(gòu),,FOR,每一個學(xué)員號碼,,PUT,學(xué)員成績,,REPEAT,FROM,消息線,GET,下一個消息,,WRITE,消息正文,,WRITE,消息頭和長度,,UNTIL,消息頭和長度達(dá)到某種條件,,,結(jié)構(gòu)化語言的例子順序結(jié)構(gòu)重復(fù)結(jié)構(gòu),109,判斷樹 (Decision Tree),判斷樹比判斷表更直觀,用它來描述具有多個條件的數(shù)據(jù)加工更容易被用戶接受,樹狀的分支表示多種不同的條件,分支的端點表示該分支對應(yīng)的條件要作的處理,新生錄取系統(tǒng),已達(dá)錄取分?jǐn)?shù)線,未達(dá)錄取分?jǐn)?shù)線,體檢合格,——,錄取,
59、體檢不合格,——,轉(zhuǎn)下一志愿學(xué)校,體檢不合格,——,不錄取,體檢合格,——,轉(zhuǎn)下一志愿學(xué)校,例:,,,判斷樹 (Decision Tree)判斷樹比判斷表更直觀新,110,判斷表 (Decision Table),判斷表由四部分組成,左上部分是決定這組條件的對象,右上部分列出各種可能的條件組合,左下部分列出所有的操作,右下部分說明在對應(yīng)的條件組合下,某個操作是否要執(zhí)行,,,1,2,3,4,條件,成績在錄取分?jǐn)?shù)線上,是,是,否,否,體檢結(jié)果合格,是,否,是,否,操作,錄取,√,,,,轉(zhuǎn)下一志愿學(xué)校,,√,√,,不錄取,,,,√,,,判斷表 (Decision Table)判斷表由四部分組成1,1
60、11,3 結(jié)構(gòu)化開發(fā)方法概述,3.1 結(jié)構(gòu)化分析方法,3.2 結(jié)構(gòu)化設(shè)計方法,3.3 軟件編碼,3.4 軟件測試,3.5 軟件維護,,,,3 結(jié)構(gòu)化開發(fā)方法概述3.1 結(jié)構(gòu)化分析方法,112,3.2 結(jié)構(gòu)化設(shè)計方法,軟件設(shè)計的任務(wù)是,將需求分析階段獲得的需求說明轉(zhuǎn)換為計算機中可實現(xiàn)的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計,包括數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu),最后得到軟件設(shè)計說明書,有代表性的設(shè)計方法有,結(jié)構(gòu)設(shè)計方法,——,其設(shè)計是以數(shù)據(jù)流圖為基礎(chǔ)構(gòu)成模塊結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)(,JACKSON,)方法,——,其設(shè)計是以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)建立模塊結(jié)構(gòu),PARNAS,方法,——,以信息隱藏為原則建立模塊結(jié)構(gòu),,,3.2 結(jié)構(gòu)化設(shè)計
61、方法軟件設(shè)計的任務(wù)是,113,結(jié)構(gòu)化設(shè)計方法,結(jié)構(gòu)化設(shè)計就是采用最佳的可能方法設(shè)計系統(tǒng)的各個組成部分,以及各成分之間的相互聯(lián)系的技術(shù),結(jié)構(gòu)化設(shè)計是這樣一個過程,它決定用哪些方法把哪些部分聯(lián)系起來,才能解決好某個具有清楚定義的問題,,,結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計就是采用最佳的可能方法設(shè)計系統(tǒng)的各個,114,軟件設(shè)計,軟件設(shè)計是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件質(zhì)量,分為兩個階段,總體設(shè)計,解決系統(tǒng)的模塊結(jié)構(gòu),分解模塊,確定系統(tǒng)的模塊層次關(guān)系,詳細(xì)設(shè)計,對系統(tǒng)中的每個模塊的內(nèi)部過程進行設(shè)計和描述,,,軟件設(shè)計軟件設(shè)計是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件質(zhì)量,115,(1) 總體設(shè)計,具體任務(wù),劃分模塊,
62、確定模塊功能,確定模塊間的調(diào)用關(guān)系,確定模塊間的界面,設(shè)計步驟,(,1,)分析系統(tǒng),DFD,圖的類型,將其轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖(,Structured Chart,,簡稱,SC,圖),(,2,)按照“降低塊間聯(lián)系,提高塊內(nèi)聯(lián)系”的設(shè)計總則修改、完善系統(tǒng)的模塊圖,寫出模塊的功能說明,,,(1) 總體設(shè)計具體任務(wù),116,總體設(shè)計步驟,1——,分析系統(tǒng),DFD,圖,通??砂褦?shù)據(jù)流圖分為,轉(zhuǎn)換處理型,——,采用轉(zhuǎn)換分析,事務(wù)處理型,——,采用事務(wù)分析,SD,方法的任務(wù)是,按照,DFD,圖的不同結(jié)構(gòu)類型,分別采用轉(zhuǎn)換分析和事務(wù)分析,從,DFD,圖導(dǎo)出目標(biāo)系統(tǒng)的模塊結(jié)構(gòu),SC,圖,,,總體設(shè)計步驟1—
63、—分析系統(tǒng)DFD圖通??砂褦?shù)據(jù)流圖分為,117,數(shù)據(jù)流圖——轉(zhuǎn)換處理型,轉(zhuǎn)換處理過程和所包含的數(shù)據(jù)流可分為,輸入數(shù)據(jù),——,輸入流,信息由外部數(shù)據(jù)轉(zhuǎn)換為內(nèi)部形式進入系統(tǒng),變換數(shù)據(jù),——,轉(zhuǎn)化流,在轉(zhuǎn)換流中,對內(nèi)部形式的信息進行一系列加工處理,得到內(nèi)部形式的結(jié)果,輸出數(shù)據(jù),——,輸出流,在輸出流中,信息由內(nèi)部形式的結(jié)果轉(zhuǎn)換為外部形式數(shù)據(jù)流出系統(tǒng),,輸入,加工,,中心,加工,,輸出,加工,輸入信息,內(nèi)部結(jié)果,內(nèi)部數(shù)據(jù),輸出信息,,,數(shù)據(jù)流圖——轉(zhuǎn)換處理型轉(zhuǎn)換處理過程和所包含的數(shù)據(jù)流可分為輸入,118,數(shù)據(jù)流圖——事務(wù)處理型,在事務(wù)處理中,輸入數(shù)據(jù)流,——,事務(wù)流,加工,——,事務(wù)中心,若干平行數(shù)據(jù)
64、流,——,事務(wù)路徑,當(dāng)事務(wù)流中的事務(wù)送到事務(wù)中心后,事務(wù)中心分析每一事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì)選擇一個事務(wù)路徑繼續(xù)進行處理,,接收,,事務(wù),分析,,動作,1,,動作,2,,動作,n,······,接收部分,事務(wù)中心,發(fā)送部分,,,數(shù)據(jù)流圖——事務(wù)處理型在事務(wù)處理中接收事務(wù)動作1動作2動作n,119,轉(zhuǎn)換處理型——轉(zhuǎn)換分析,轉(zhuǎn)換分析是系統(tǒng)結(jié)構(gòu)設(shè)計的一種策略,使用轉(zhuǎn)換分析技術(shù)可把轉(zhuǎn)換型處理數(shù)據(jù)流圖轉(zhuǎn)換為初始的標(biāo)準(zhǔn)結(jié)構(gòu),根據(jù)軟件結(jié)構(gòu)的度量準(zhǔn)則、模塊化準(zhǔn)則、模塊獨立性準(zhǔn)則,修改完善軟件結(jié)構(gòu)圖,從而得到結(jié)構(gòu)良好的最終結(jié)構(gòu)圖,轉(zhuǎn)換分析步驟為,確定數(shù)據(jù)流圖的類型,確定輸入流、轉(zhuǎn)換流、輸出流的流界(邊界)
65、,進行一級分解,設(shè)計上層模塊,進行二級分解,設(shè)計中下層模塊,進一步細(xì)化,,,轉(zhuǎn)換處理型——轉(zhuǎn)換分析轉(zhuǎn)換分析是系統(tǒng)結(jié)構(gòu)設(shè)計的一種策略,120,轉(zhuǎn)換處理與事務(wù)處理,通常一個大型軟件系統(tǒng)是轉(zhuǎn)換處理型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu),所以,設(shè)計者常利用以轉(zhuǎn)換分析為主,事務(wù)分析為輔的方式進行軟件結(jié)構(gòu)設(shè)計,當(dāng)數(shù)據(jù)流圖明顯呈現(xiàn)出事務(wù)型特征時,就要用事務(wù)型分析技術(shù),從相應(yīng)的數(shù)據(jù)流程圖導(dǎo)出標(biāo)準(zhǔn)構(gòu)圖,其步驟與轉(zhuǎn)換分析相同,,,轉(zhuǎn)換處理與事務(wù)處理通常一個大型軟件系統(tǒng)是轉(zhuǎn)換處理型結(jié)構(gòu)和事務(wù),121,總體設(shè)計步驟,2——,完善系統(tǒng)模塊圖,具體應(yīng)從以下方面改進:,盡可能建立功能模塊,消除重復(fù)功能,模塊的作用范圍應(yīng)是控制范圍的子
66、集,作用范圍,——,包括模塊本身及其所有下屬模塊,控制范圍,——,是指判斷所涉及到的模塊,模塊的大小恰當(dāng),總行數(shù)在,10,~,100,,最好在,30,~,60,模塊的扇入扇出數(shù)不宜太多(除服務(wù)性模塊外),一個模塊直接控制下屬模塊的個數(shù)稱為該模塊的扇出數(shù),一個模塊的上級模塊個數(shù)稱為扇入數(shù),扇入高可增加模塊的利用率,扇出低可減少模塊調(diào)用和控制的復(fù)雜度,,,總體設(shè)計步驟2——完善系統(tǒng)模塊圖具體應(yīng)從以下方面改進:,122,(2) 詳細(xì)設(shè)計,對系統(tǒng)中的每個模塊的內(nèi)部過程進行設(shè)計和描述,常用的描述方法有:,流程圖(程序框圖),N-S,圖(方框圖),PAD,圖,PDL,語言,UML,,,(2) 詳細(xì)設(shè)計對系統(tǒng)中的每個模塊的內(nèi)部過程進行設(shè)計和描述,123,流程圖 (程序框圖),表達(dá)算法簡明直觀,易于學(xué)習(xí)掌握,是一種常用的詳細(xì)設(shè)計工具,符號名,使用圖形,意 義,端點符,,表示流程圖的開始或結(jié)束,輸入,/,輸出符,,表示數(shù)據(jù)的輸入,/,輸出,處理符,,表示對數(shù)據(jù)的處理,特定處理符,,表示調(diào)用子程序等,,,,,,,流程圖 (程序框圖)表達(dá)算法簡明直觀,易于學(xué)習(xí)掌握,是一種常,124,流程圖 (程序框圖
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅決打好反腐敗斗爭攻堅戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會上和基層單位調(diào)研座談會上的發(fā)言材料
- 總工會關(guān)于2025年維護勞動領(lǐng)域政治安全的工作匯報材料
- 基層黨建工作交流研討會上的講話發(fā)言材料
- 糧食和物資儲備學(xué)習(xí)教育工作部署會上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機關(guān)單位、市紀(jì)委監(jiān)委2025年工作計劃
- 檢察院政治部關(guān)于2025年工作計劃
- 辦公室主任2025年現(xiàn)實表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項規(guī)定精神學(xué)習(xí)教育工作部署會議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動員部署會上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會上的發(fā)言材料
- 國企黨委關(guān)于推動基層黨建與生產(chǎn)經(jīng)營深度融合工作情況的報告材料
- 副書記在2025年工作務(wù)虛會上的發(fā)言材料2篇