第1章-軟件工程基本概念與原理_第1頁
第1章-軟件工程基本概念與原理_第2頁
第1章-軟件工程基本概念與原理_第3頁
第1章-軟件工程基本概念與原理_第4頁
第1章-軟件工程基本概念與原理_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程初級(jí)教程主講:趙曉洪郵件:zhaoxh126@1/86一、課程的性質(zhì)、任務(wù)“軟件工程”是專業(yè)核心基礎(chǔ)課程,它是研究軟件開發(fā)和軟件管理的一門工程科學(xué)。它的主要任務(wù)是掌握支持軟件開發(fā)和管理的理論、方法、技術(shù)、標(biāo)準(zhǔn)以及計(jì)算機(jī)輔助軟件工程的工具(Visio或Rose)環(huán)境等知識(shí);使學(xué)生具有軟件開發(fā)能力(包括熟練進(jìn)行程序設(shè)計(jì)語言的結(jié)構(gòu)化編碼與可視化設(shè)計(jì)能力;UML的閱讀和建模能力;培養(yǎng)用軟件工程化及項(xiàng)目化的思想處理解決問題的能力等)。2/86概括說:軟件開發(fā)能力最關(guān)鍵的步驟有三步:3/86二、通過學(xué)習(xí)應(yīng)能達(dá)到如下目標(biāo):接受一種思想。掌握軟件工程的基本原理、概念與方法----主要包括軟件系統(tǒng)的可行性研究、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、維護(hù)、面向?qū)ο?、?xiàng)目管理等方面的基本知識(shí)與方法。掌握軟件工程中的一些基本技術(shù)方法,如數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)分析方法,面向?qū)ο蠓治龇椒?、集成測(cè)試方法、項(xiàng)目管理的基本方法等。結(jié)合模擬案例,要求學(xué)生從實(shí)際中掌握從面向過程到面向?qū)ο笏枷肜碚摰幕痉椒ê图记伞U莆哲浖_發(fā)文檔的組織編寫等。掌握一種工具。學(xué)期末能用Visio或Rose軟件完成大作業(yè)的設(shè)計(jì)(畫各種軟件工程圖)(指定或自找題目)把目前或以后要學(xué)的程序設(shè)計(jì)知識(shí)(C、Java、VC++、C#、ASP.NET)提高到一定理論高度認(rèn)識(shí)。小提示:

學(xué)會(huì)思想比掌握一種工具更為重要。4/86

“現(xiàn)在大家都已認(rèn)識(shí)到,如果有哪個(gè)項(xiàng)目不遵循軟件工程原則必定會(huì)受到實(shí)踐的懲罰?!薄败浖こ陶n是我們參加工作以后最能直接應(yīng)用的一門專業(yè)課?!薄晃粍偖厴I(yè)參加工作的計(jì)算機(jī)專業(yè)學(xué)生三、體會(huì):5/86目錄第1章軟件工程的基本概念與原理第2章軟件開發(fā)過程第3章軟件項(xiàng)目管理第4章可行性分析與初步計(jì)劃第5章需求分析第6章總體設(shè)計(jì)第7章詳細(xì)設(shè)計(jì)第8章軟件實(shí)現(xiàn)第9章軟件維護(hù)第10章從結(jié)構(gòu)化到面向?qū)ο蟮?1章面向?qū)ο蟮男枨螳@取第12章面向?qū)ο蟮姆治雠c設(shè)計(jì)第13章面向?qū)ο蟮臏y(cè)試6/86第1章軟件工程的基本概念與原理7/86先接受2個(gè)正確觀點(diǎn)1、“開發(fā)軟件不等于編寫程序”—開發(fā)軟件應(yīng)該完成的工作遠(yuǎn)遠(yuǎn)多于編寫程序應(yīng)該完成的工作。設(shè)計(jì)算法(即完成指定功能的步驟),然后用程序設(shè)計(jì)語言(例如:C語言)表達(dá)該算法。而開發(fā)軟件并非就是編寫程序,事實(shí)上編寫程序僅僅是開發(fā)軟件所應(yīng)完成的工作的一部分,而且只占一小部分。為了開發(fā)出一個(gè)符合用戶需要、質(zhì)量合格的軟件,軟件工程師必須首先弄清楚用戶面臨的問題是什么,也就是要明確軟件的“主攻”方向;接下來應(yīng)該進(jìn)行可行性研究方案,分析用戶面臨的問題是否有行得通的解決方案。為避免浪費(fèi)資源,僅在該軟件的開發(fā)是可行的前提下,才進(jìn)行實(shí)質(zhì)性的開發(fā)工作;8/86先接受2個(gè)正確觀點(diǎn)然后應(yīng)該進(jìn)行需求分析工作,通過與用戶的反復(fù)交流,搞清楚用戶對(duì)該軟件的具體需求,這些需求是進(jìn)行軟件設(shè)計(jì)的依據(jù);在編寫程序之前需要先進(jìn)行設(shè)計(jì)。通常,大型軟件的設(shè)計(jì)工作又分成兩個(gè)階段進(jìn)行,先進(jìn)行總體設(shè)計(jì)(又稱為概要設(shè)計(jì)),再進(jìn)行詳細(xì)設(shè)計(jì);編寫程序?qū)嵸|(zhì)上是把設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序;程序編寫出來之后,還需要經(jīng)過嚴(yán)格的測(cè)試過程(需要的工作量通常占軟件開發(fā)全部工作量的40%~50%),軟件確實(shí)符合用戶需求而且質(zhì)量合格,才能交付給用戶使用。9/86先接受2個(gè)正確觀點(diǎn)2、“錯(cuò)誤做法會(huì)導(dǎo)致軟件危機(jī)”。開發(fā)軟件不等于編寫程序。但是,迄今為止,仍然有不少人錯(cuò)誤地認(rèn)為開發(fā)軟件就是編寫程序,或者認(rèn)為開發(fā)軟件主要就是編寫程序。人們之所以有錯(cuò)誤的認(rèn)識(shí)并在開發(fā)軟件時(shí)采用了錯(cuò)誤的做法,主要可歸因于在計(jì)算機(jī)系統(tǒng)發(fā)展的早期階段“開發(fā)軟件”的個(gè)體化特點(diǎn)。所謂軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題絕不僅僅是不能正常運(yùn)行的軟件才具有的,實(shí)際上,幾乎所有軟件都不同程度地存在這些問題。10/861.1軟件工程學(xué)科的誕生1.1.1軟件的特點(diǎn)1.1.2軟件生產(chǎn)的發(fā)展1.1.3軟件危機(jī)1.1.4軟件工程的誕生11/861.1.1軟件的特點(diǎn)軟件的概念:20世紀(jì)60年代提出的,(軟件=程序+文檔)程序——是指令的集合;文檔——有關(guān)程序功能、設(shè)計(jì)、編程使用的文字或圖形資料。軟件產(chǎn)品的特殊性:軟件與硬件構(gòu)成完整的計(jì)算機(jī)系統(tǒng);軟件產(chǎn)品與硬件產(chǎn)品的主要區(qū)別包括:邏輯產(chǎn)品、無形、腦力勞動(dòng)的結(jié)果,以程序和文檔的形式體現(xiàn),保存在特殊介質(zhì)上,被計(jì)算機(jī)執(zhí)行才能體現(xiàn)出它的功能和作用軟件生產(chǎn)成本集中在研制階段;軟件不會(huì)被用壞、不存在磨損和消耗,但會(huì)過時(shí);是腦力創(chuàng)造的結(jié)果,還未完全擺脫手工開發(fā)方式,大部分是”定做”;軟件生產(chǎn)與維護(hù)費(fèi)用不斷增加;12/861.1.1軟件的特點(diǎn)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。計(jì)算機(jī)程序包括源程序和目標(biāo)程序。數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(即數(shù)據(jù)的組織形式)。文檔是與程序開發(fā),維護(hù)和使用有關(guān)的圖文材料。13/861.1.1軟件的特點(diǎn)

面向過程的程序=算法+數(shù)據(jù)結(jié)構(gòu)

面向?qū)ο蟮某绦?對(duì)象+消息

面向構(gòu)件的程序=構(gòu)件+構(gòu)架

軟件=程序+數(shù)據(jù)+文檔14/86軟件的維護(hù)曲線修改點(diǎn)圖1-3實(shí)際的軟件故障曲線圖故障率時(shí)間由于副作用造成故障率的提高15/861.1軟件工程的產(chǎn)生1.1.1軟件的特點(diǎn)1.1.2軟件生產(chǎn)的發(fā)展1.1.3軟件危機(jī)1.1.4軟件工程16/861.1.2軟件生產(chǎn)的發(fā)展軟件生產(chǎn)經(jīng)歷了三個(gè)階段:程序設(shè)計(jì)時(shí)代(46年-56年)軟件開發(fā)時(shí)代(56年-68年)軟件工程時(shí)代(68年以后)17/86程序設(shè)計(jì)時(shí)代(46年-56年)個(gè)體手工方式;低級(jí)語言、編程效率低、難,編程是聰明人的事;追求編程技巧和程序運(yùn)行效率;代碼不規(guī)范,不易讀,不易維護(hù);只重視編碼,不重視設(shè)計(jì)和文檔;硬件資源緊缺;18/86程序系統(tǒng)時(shí)代(56年-68年)作坊式小團(tuán)隊(duì)開發(fā);出現(xiàn)高級(jí)語言,編程效率有所提高;追求寫代碼技巧,但提出了結(jié)構(gòu)化程序設(shè)計(jì)方法;軟件復(fù)雜性增加,需求增加,但軟件開發(fā)方法和軟件項(xiàng)目管理技術(shù)跟不上,開發(fā)速度慢,與計(jì)算機(jī)硬件發(fā)展速度拉大距離;軟件數(shù)量猛增,但質(zhì)量差,可維護(hù)性差,維護(hù)成本急劇增加;上述矛盾越來越顯著,最終導(dǎo)致了軟件危機(jī);19/86軟件工程時(shí)代(68年以后)軟件工程學(xué)科誕生,引入了“工程化”思想;結(jié)構(gòu)化和面向?qū)ο蟮姆椒ǔ墒?;使用?shù)據(jù)庫(kù)、開發(fā)工具、開發(fā)環(huán)境、網(wǎng)絡(luò)、分布式技術(shù)開發(fā)軟件;軟件開發(fā)技術(shù)有了很大進(jìn)步,但沒有突破性,軟件價(jià)格不斷上升,沒有完全擺脫軟件危機(jī);20/86計(jì)算機(jī)軟件發(fā)展的三個(gè)時(shí)期及特點(diǎn)

程序設(shè)計(jì)程序系統(tǒng)軟件工程現(xiàn)代軟件工程軟件的范疇程序程序及說明書產(chǎn)品軟件(項(xiàng)目軟件)項(xiàng)目工程主要程序設(shè)計(jì)語言匯編及機(jī)器語言高級(jí)語言高級(jí)語言系統(tǒng)、程序設(shè)計(jì)語言面向?qū)ο罂梢暬O(shè)計(jì)語言軟件工作范圍程序編寫包括設(shè)計(jì)和測(cè)試軟件生存期整個(gè)軟件生存期需求者程序設(shè)計(jì)者本人少數(shù)用戶市場(chǎng)用戶面向所有用戶21/86計(jì)算機(jī)軟件發(fā)展的三個(gè)時(shí)期及特點(diǎn)22/861.1軟件工程的產(chǎn)生1.1.1軟件的特點(diǎn)1.1.2軟件生產(chǎn)的發(fā)展1.1.3軟件危機(jī)1.1.4軟件工程誕生23/861.1.3軟件危機(jī)軟件危機(jī)的產(chǎn)生軟件危機(jī)的表現(xiàn)軟件危機(jī)的原因24/861.軟件危機(jī)的產(chǎn)生軟件生產(chǎn)的第二個(gè)階段,硬件生產(chǎn)成本下降、效率提高、性能提高,激發(fā)了軟件需求;軟件復(fù)雜性要求提高、生產(chǎn)效率低,與硬件生產(chǎn)進(jìn)一步拉開距離;軟件質(zhì)量差,難維護(hù),成本急劇增加;軟件項(xiàng)目成功率低;上述矛盾的進(jìn)一步激化,暴發(fā)了軟件危機(jī)25/861.1.3軟件危機(jī)軟件危機(jī)的產(chǎn)生軟件危機(jī)的表現(xiàn)爆發(fā)軟件危機(jī)的原因26/862.軟件危機(jī)的表現(xiàn)(1)經(jīng)費(fèi)超預(yù)算,項(xiàng)目一再拖延;(2)開發(fā)的軟件不能滿足用戶要求;(3)軟件可維護(hù)性差;(4)軟件可靠性差;27/863.軟件危機(jī)產(chǎn)生的原因(1)軟件規(guī)劃越來越大;(2)軟件開發(fā)管理困難且復(fù)雜;(3)軟件開發(fā)費(fèi)用不斷增加;(4)軟件開發(fā)技術(shù)落后;(5)軟件生產(chǎn)方式落后;(6)軟件開發(fā)工具落后;28/861.1軟件工程的產(chǎn)生1.1.1軟件的特點(diǎn)1.1.2軟件生產(chǎn)的發(fā)展1.1.3軟件危機(jī)1.1.4軟件工程的誕生29/861.1.4軟件工程誕生軟件危機(jī)促使軟件工程學(xué)科誕生;借鑒硬件生產(chǎn)的“工程化”思想,1968年,北大西洋公約組織提出了“軟件工程”的概念,主張“用工程化思想來開發(fā)軟件”。30/86第1章軟件工程的基本概念與原理1.1軟件工程的產(chǎn)生1.2軟件工程的基本概念與原理1.軟件工程的定義、性質(zhì)2.軟件工程關(guān)注的主要問題3.軟件工程的目標(biāo)4.軟件的生命周期5.軟件工程的基本原理31/86軟件工程定義、性質(zhì)軟件工程是用科學(xué)知識(shí)、技術(shù)、原理來定義、開發(fā)、維護(hù)軟件的一門學(xué)科。概括地說,軟件工程是指導(dǎo)軟件開發(fā)和維護(hù)的一門工程學(xué)科。軟件工程學(xué)科的根本要求:采用工程化的思想、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把好的管理技術(shù)和開發(fā)技術(shù)方法結(jié)合起來,追求可靠性、可維護(hù)性、滿足用戶需求、高的開發(fā)效率。用工程學(xué)科中的觀點(diǎn)進(jìn)行費(fèi)用估算、進(jìn)度控制、制定計(jì)劃和方案;用管理科學(xué)中的方法和原理進(jìn)行軟件生產(chǎn)過程的管理;用數(shù)學(xué)的方法建立軟件開發(fā)中的各種模型和算法。32/86軟件工程關(guān)注的關(guān)鍵問題(1)關(guān)注于大型程序的構(gòu)造(2)中心課題是控制復(fù)雜性(3)軟件需求經(jīng)常變化(4)開發(fā)軟件的效率非常重要(5)有效的溝通是合作開發(fā)軟件的關(guān)鍵33/86(1)軟件工程關(guān)注于大型程序的構(gòu)造“大”與“小”的分界線并不十分清晰。通常把一個(gè)人在較短時(shí)間內(nèi)寫出的程序稱為小型程序,而把多人合作用時(shí)半年以上才寫出的程序稱為大型程序。傳統(tǒng)的程序設(shè)計(jì)技術(shù)和工具是支持小型程序設(shè)計(jì)的,不能簡(jiǎn)單地把這些技術(shù)和工具用于開發(fā)大型程序。34/86(2)軟件工程中心課題是控制復(fù)雜性通常,軟件所解決的問題十分復(fù)雜,以致于不能把問題放在一起試圖一步解決。人們不得不把問題分解,使得分解出的每個(gè)部分是直觀、明了、可理解的,而且各部分之間保持簡(jiǎn)單的聯(lián)系。用這種方法并不能降低問題的整體復(fù)雜性,但是卻可使它變成容易解決。注意,許多軟件的復(fù)雜性主要不是由問題的內(nèi)在復(fù)雜性造成的,而是由必須處理的大量細(xì)節(jié),讓人看上去覺得很復(fù)雜。結(jié)論:分解的手法,是控制復(fù)雜性的主要手段控制復(fù)雜性的有效方法是分解:面向過程的方法,是按功能分解;面向?qū)ο蟮姆椒?,是按?zé)任分解。35/86(3)軟件需求經(jīng)常變化絕大多數(shù)軟件都模擬了現(xiàn)實(shí)世界的某一部分。現(xiàn)實(shí)世界不斷變化,人們對(duì)其認(rèn)識(shí)也有偏差,這就造成了軟件需求經(jīng)常變化的特性。這種變化不僅存在于開發(fā)過程中和也存在交付使用以后。前者要求在開發(fā)過程中,應(yīng)能靈活調(diào)整設(shè)計(jì)方案,后者要求軟件應(yīng)具有可維護(hù)性。需求變更是軟件開發(fā)活動(dòng)與生俱來的特性,不可避免。變更不是壞事,但它是軟件開發(fā)面臨的最大挑戰(zhàn)。軟件工程追求的是、封裝變更,靈活設(shè)計(jì),應(yīng)對(duì)變更,通過好的設(shè)計(jì)方法,使變更對(duì)原有設(shè)計(jì)方案和已有代碼影響最小。36/86(4)開發(fā)軟件的效率非常重要隨著社會(huì)經(jīng)濟(jì)和文化的發(fā)展,網(wǎng)絡(luò)及各類開發(fā)與應(yīng)用平臺(tái)的不斷翻新,計(jì)算機(jī)硬件性能的不斷提高,社會(huì)對(duì)軟件的數(shù)量、規(guī)模和復(fù)雜性不斷提高,軟件的需求供不應(yīng)求的現(xiàn)象依然日益嚴(yán)重。因此,尋求開發(fā)與維護(hù)軟件的更好、更有效的方法和工具,依然是軟件工程的一個(gè)重要課題。不斷提高軟件開發(fā)效率非常重要規(guī)范的開發(fā)過程好的開發(fā)環(huán)境和工具、提高軟件復(fù)用是軟件工程提高效率的有效辦法。37/86(5)和諧地合作是開發(fā)軟件的關(guān)鍵軟件處理的問題日益復(fù)雜和龐大,軟件開發(fā)往往是多人協(xié)同工作的成果,明確的責(zé)任劃分和有效的互信是團(tuán)隊(duì)成員協(xié)作的關(guān)鍵。事實(shí)上僅有上述規(guī)定還不夠,每個(gè)人還必須嚴(yán)格地按規(guī)定行事。為了迫使團(tuán)隊(duì)成員遵守規(guī)定,應(yīng)該運(yùn)用標(biāo)準(zhǔn)和規(guī)程。通常,可以用工具來支持這些標(biāo)準(zhǔn)和規(guī)程。總之,紀(jì)律是成功地完成軟件開發(fā)項(xiàng)目的一個(gè)關(guān)鍵。團(tuán)隊(duì)合作是必須的,使用有效的工具,進(jìn)行有效的溝通是關(guān)鍵38/86軟件工程的性質(zhì)綜合性、交叉性學(xué)科涉及計(jì)算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)等領(lǐng)域。39/861.2軟件工程的基本概念和原理1.軟件工程的定義、性質(zhì)2.軟件工程面臨的主要問題3.軟件工程的目標(biāo)4.軟件的生命周期5.軟件工程的基本原理40/86軟件工程面臨的問題需求問題質(zhì)量問題(可靠性\可維護(hù)性\可移植性等)生產(chǎn)效率(重用是為了提高效率)費(fèi)用41/861.2軟件工程的基本概念1.軟件工程的定義、性質(zhì)2.軟件工程面臨的主要問題3.軟件工程的目標(biāo)4.軟件的生命周期5.軟件工程的基本原理42/86軟件工程的目標(biāo)運(yùn)用工程化思想組織與管理軟件項(xiàng)目,采用科學(xué)的管理方法、開發(fā)方法及工具,提高軟件開發(fā)效率,保證軟件質(zhì)量,提高軟件的可靠性和可維護(hù)性,在合理的工期內(nèi)生產(chǎn)出能夠滿足用戶需求的軟件產(chǎn)品。43/861.2軟件工程的基本概念1.軟件工程的定義、性質(zhì)2.軟件工程面臨的主要問題3.軟件工程的目標(biāo)4.軟件的生命周期5.軟件工程的基本原理44/864.軟件生命周期理論軟件生存周期的定義軟件生命周期階段的劃分軟件生命周期階段劃分的原則軟件生命周期是軟件工程學(xué)的一個(gè)重要概念。引入軟件生存周期概念,對(duì)于軟件項(xiàng)目管理、進(jìn)度控制有重要意義。在軟件開發(fā)過程中,為了使軟件項(xiàng)目容易控制和管理,把整個(gè)生命周期劃分為若干階段。劃分階段時(shí),遵循“低耦合、高內(nèi)聚”的原則。45/86軟件生存周期的定義軟件生命周期(SoftwareLifeCycle)是從軟件開發(fā)需求被提出,啟動(dòng)可行性分析開始,經(jīng)歷軟件開發(fā)過程,直到軟件被開發(fā)出來、投入使用,最終被淘汰為止的整個(gè)時(shí)間。生存周期理論,把整個(gè)生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),把規(guī)模大、活動(dòng)多、管理復(fù)雜的軟件開發(fā)活動(dòng)變得容易控制和管理。46/86軟件生命周期階段劃分軟件生存周期一般劃分為軟件定義、軟件開發(fā)、運(yùn)行與維護(hù)三個(gè)時(shí)期。軟件定義時(shí)期,可以進(jìn)一步分為問題定義、可行性研究、需求分析三個(gè)階段。軟件開發(fā)時(shí)期,可以分為概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試等階段。軟件交付用戶以后,就進(jìn)入了漫長(zhǎng)的運(yùn)行與維護(hù)期,在軟件被淘汰之前,要經(jīng)歷多次的糾錯(cuò)性、完善性和適應(yīng)性維護(hù)活動(dòng)47/86生命周期理論對(duì)開發(fā)過程的指導(dǎo)意義每個(gè)階段的工作均以前一階段的結(jié)果為依據(jù),并作為下一階段的前提。每個(gè)階段結(jié)束時(shí),都要有技術(shù)審查和管理復(fù)審,從技術(shù)和管理兩方面對(duì)階段性開發(fā)成果進(jìn)行檢查,及時(shí)決定系統(tǒng)的繼續(xù)進(jìn)行,還是停工或返工。每個(gè)階段都進(jìn)行復(fù)審,主要檢查必備的文檔資料的質(zhì)量和有效性。前一階段復(fù)審?fù)ㄟ^了,后一個(gè)階段才能開始。應(yīng)避免到開發(fā)后期才發(fā)現(xiàn)先期工作中存在的嚴(yán)重錯(cuò)誤,造成不可挽回的損失或浪費(fèi)。48/86生命周期理論對(duì)開發(fā)過程的指導(dǎo)意義把軟件生命周期劃分為若干階段,是實(shí)施軟件生產(chǎn)工程化的基礎(chǔ)。軟件規(guī)模、種類、開發(fā)方式、開發(fā)環(huán)境以及開發(fā)使用的方法都會(huì)影響軟件生存周期的階段劃分。分析師可以根據(jù)軟件性質(zhì)、用途及規(guī)模等因素,對(duì)軟件過程中的階段和活動(dòng)進(jìn)行適當(dāng)?shù)牟眉簟?9/861.問題定義階段用戶提出一個(gè)軟件開發(fā)需求以后,分析師首先要明確軟件的實(shí)現(xiàn)目標(biāo)、規(guī)模及類型:如它是數(shù)據(jù)處理問題還是實(shí)時(shí)控制問題,是科學(xué)計(jì)算問題還是人工智能問題等。50/862.可行性研究階段在清楚了項(xiàng)目的性質(zhì)、目標(biāo)、規(guī)模后,要對(duì)項(xiàng)目進(jìn)行可行性分析。分析師進(jìn)行一次大大簡(jiǎn)化了的需求分析和設(shè)計(jì)過程(目的是探索這個(gè)問題是否值得去解決,是否有可行的解決方案。)提交可行性研究報(bào)告??尚行匝芯繄?bào)告中應(yīng)給出項(xiàng)目初步開發(fā)計(jì)劃。根據(jù)項(xiàng)目的目標(biāo)、功能、性能及規(guī)模,估計(jì)開發(fā)需要的資源。還要對(duì)軟件開發(fā)費(fèi)用、開發(fā)進(jìn)度做出估計(jì)。詳細(xì)的項(xiàng)目開發(fā)計(jì)劃,等到需求分析結(jié)束,對(duì)項(xiàng)目有了進(jìn)一步的認(rèn)識(shí)之后,還要進(jìn)行一次細(xì)化。51/863.需求分析階段軟件是為用戶開發(fā)的,軟件的功能性和非功能性要求首先得由用戶提出,這需要用戶配合軟件技術(shù)人員按照用戶的實(shí)際業(yè)務(wù)要求進(jìn)行挖掘。最終得到的軟件產(chǎn)品能否滿足用戶的真實(shí)需求,是斷定項(xiàng)目成敗關(guān)鍵要素。需求分析是詳細(xì)獲取并表述用戶需求的活動(dòng)。需求分析的結(jié)果是后續(xù)設(shè)計(jì)與編程活動(dòng)的依據(jù)。獲取真實(shí)、完整的需求,并以適當(dāng)工具,準(zhǔn)確地表述為需求分析模型是需求分析活動(dòng)的關(guān)鍵。這一階段的結(jié)果是軟件需求規(guī)格說明書。52/864.概要設(shè)計(jì)階段概要設(shè)計(jì)階段,開發(fā)人員根據(jù)軟件需求規(guī)格說明書,構(gòu)造目標(biāo)系統(tǒng)的軟件結(jié)構(gòu)。這一活動(dòng)也被稱為“總體設(shè)計(jì)”,用于獲得目標(biāo)系統(tǒng)的宏觀藍(lán)圖。53/865.詳細(xì)設(shè)計(jì)階段詳細(xì)設(shè)計(jì)包括過程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)等活動(dòng),主要是把概要設(shè)計(jì)的結(jié)果,細(xì)化為可以用某種編程語言實(shí)現(xiàn)的設(shè)計(jì)方案。結(jié)構(gòu)化方法中,主要是程序流程設(shè)計(jì)和用戶界面設(shè)計(jì)。面向?qū)ο蟮姆椒ㄖ?,將是?duì)前期得到的類或?qū)ο竽P瓦M(jìn)行細(xì)節(jié)設(shè)計(jì),使之可以直接支持編程。54/866.編程階段編程又稱為編碼,就是編寫程序源代碼。最終得到的“源程序清單”就是源代碼清單。程序源代碼要經(jīng)過編譯或解釋以后,才能被執(zhí)行。編碼追求的是程序代碼編寫風(fēng)格,要求規(guī)范、友好,便于閱讀和調(diào)試,這是提高程序質(zhì)量和軟件可維護(hù)性的關(guān)鍵活動(dòng)之一。編程往往跟調(diào)試以及單元測(cè)試同時(shí)進(jìn)行,由程序員完成。55/867.測(cè)試階段測(cè)試是軟件質(zhì)量保證活動(dòng)的最后一道防線。測(cè)試分為單元測(cè)試、集成測(cè)試和確認(rèn)測(cè)試。單元測(cè)試就是模塊測(cè)試,與編程活動(dòng)同時(shí)進(jìn)行。獨(dú)立的測(cè)試階段,主要完成集成測(cè)試、確認(rèn)測(cè)試和驗(yàn)收測(cè)試。56/868.運(yùn)行與維護(hù)軟件運(yùn)行和維護(hù)是生存周期中最長(zhǎng)的階段。軟件交付使用后,便進(jìn)入漫長(zhǎng)的運(yùn)行和維護(hù)期,可能持續(xù)幾年甚至幾十年,此間可能要進(jìn)行多次維護(hù)或修改。維護(hù)活動(dòng)按性質(zhì)分為糾錯(cuò)性維護(hù)、完善性維護(hù)和適應(yīng)性維護(hù)。57/861.2軟件工程的基本概念1.軟件工程的定義、性質(zhì)2.軟件工程面臨的主要問題3.軟件工程的目標(biāo)4.軟件的生命周期5.軟件工程的基本原理58/86軟件工程的基本原理軟件工程是一門實(shí)踐性很強(qiáng)的應(yīng)用學(xué)科,掌握必要的原理和行動(dòng)原則,對(duì)于規(guī)范實(shí)踐活動(dòng),深入理解軟件工程思想,提高項(xiàng)目的成功率都有幫助。著名軟件工程專家B.Boehm綜合有關(guān)專家和學(xué)者的意見,并根據(jù)多年開發(fā)軟件的經(jīng)驗(yàn),提出了軟件工程的七條原理。59/86軟件工程的基本原理(1)應(yīng)用生存周期的理論,分階段的計(jì)劃、管理和控制軟件開發(fā)過程。統(tǒng)計(jì)發(fā)現(xiàn),在不成功的軟件項(xiàng)目中有50%左右是由于計(jì)劃不周造成的,項(xiàng)目失控制而造成的。成功的經(jīng)驗(yàn)是運(yùn)行軟件生命周期理論,把軟件開發(fā)與維護(hù)的過程分成三個(gè)時(shí)期若干個(gè)階段,這樣化繁為簡(jiǎn),便于控制與管理。Boehm認(rèn)為,在軟件的整個(gè)生命周期中應(yīng)制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃、運(yùn)行維護(hù)計(jì)劃。60/86軟件工程的基本原理(2)堅(jiān)持進(jìn)行階段性評(píng)審。大部分錯(cuò)誤是在編碼之前造成的因此,在每個(gè)階段都進(jìn)行嚴(yán)格的評(píng)審,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程的錯(cuò)誤嚴(yán)格進(jìn)行階段性成果的評(píng)審,盡早發(fā)現(xiàn)軟件開發(fā)過程中的錯(cuò)誤,可以減少錯(cuò)誤造成的損失。尤其發(fā)現(xiàn)早期的一個(gè)錯(cuò)誤,就可以避免在后期輻射出的成百上千個(gè)錯(cuò)誤。61/86軟件工程的基本原理(3)合理控制需求變動(dòng)。需求變動(dòng)性是軟件項(xiàng)目與生俱來的特性,不變是不可能的。有變動(dòng)的要求,就說明已有的成果有需要糾錯(cuò)和改善的地方,但需求變更有可能對(duì)項(xiàng)目進(jìn)展造成沖擊,要嚴(yán)格進(jìn)行配置管理,合理控制需求變更。在軟件開發(fā)過程中不要隨意改變需求,因?yàn)楦淖兡稠?xiàng)需求往往需要付出較高的代價(jià),但在實(shí)踐中用戶往往會(huì)提出需求變更,因此需要采取科學(xué)的產(chǎn)品控制技術(shù)。目前主要實(shí)行基準(zhǔn)配置管理:基準(zhǔn)配置是指經(jīng)過階段評(píng)審后的軟件配置成分,如各個(gè)階段產(chǎn)生的文檔或程序代碼。對(duì)涉及基準(zhǔn)配置的修改,必須經(jīng)過嚴(yán)格的評(píng)審,通過后才能實(shí)施修改。62/86軟件工程的基本原理(4)采用先進(jìn)的軟件設(shè)計(jì)方法。好的設(shè)計(jì)方法可以得到靈活可靠的軟件結(jié)構(gòu),對(duì)于提高軟件的可靠性、可維護(hù)性、應(yīng)對(duì)需求變更的靈活性都非常關(guān)鍵。通??紤]模塊化、抽象與信息隱蔽、局部化、一致性等準(zhǔn)則。這些準(zhǔn)則在本書軟件設(shè)計(jì)部分還會(huì)詳細(xì)闡述。實(shí)踐表明:采用先進(jìn)的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護(hù)的效率。80年代及之前:結(jié)構(gòu)化分析、設(shè)計(jì)技術(shù)90年代:面向?qū)ο蠓治?、設(shè)計(jì)技術(shù)63/86軟件工程的基本原理(5)開發(fā)文檔要完備,階段性成果應(yīng)能清楚地審查。軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,開發(fā)過程難以評(píng)價(jià)和管理。根據(jù)軟件開發(fā)項(xiàng)目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使所得的結(jié)果能夠清楚地審查64/86軟件工程的基本原理(6)開發(fā)小組的人員應(yīng)少而精。開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。開發(fā)小組人員數(shù)目的增加,使相互交流復(fù)雜、費(fèi)用增加。65/86軟件工程的基本原理(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。遵循前6條基本原理,就能夠按照當(dāng)代軟件工程基本原理實(shí)現(xiàn)軟件的工程化生產(chǎn),但不能保證趕上時(shí)代前進(jìn)的步伐。積極主動(dòng)采納新的軟件技術(shù),且不斷總結(jié)經(jīng)驗(yàn)。66/86第1章軟件工程的基本概念與原理1.1軟件工程學(xué)科的誕生1.2軟件工程的基本概念和原理1.3軟件工程研究的主要內(nèi)容67/861.3軟件工程研究的主要內(nèi)容1.3.1軟件開發(fā)過程1.3.2軟件工程技術(shù)1.3.3軟件項(xiàng)目管理1.3.4計(jì)算機(jī)輔助軟件工程68/861.3.1軟件開發(fā)過程在軟件工程學(xué)科誕生之前,人們只重視編程,很少關(guān)注軟件開發(fā)過程對(duì)軟件項(xiàng)目的響影。實(shí)踐證明,軟件項(xiàng)目是一項(xiàng)復(fù)雜的系統(tǒng)工程,對(duì)開發(fā)過程的組織與施工管理很大程度上決定了軟件的開發(fā)效率、軟件質(zhì)量,甚至項(xiàng)目的成敗。因此,對(duì)軟件開發(fā)過程的研究與不斷改善是軟件工程討論的一項(xiàng)主要內(nèi)容。軟件生命周期理論把軟件開發(fā)與維護(hù)過程劃分為若干個(gè)階段,這是研究軟件開發(fā)過程的基礎(chǔ)。實(shí)踐中,人們對(duì)行之有效的軟件過程組織模式進(jìn)行總結(jié),形成了不同的軟件開發(fā)過程模型。傳統(tǒng)的有瀑布模型、快速原型、增量模型、螺旋模型、噴泉模型等。隨著面向?qū)ο蠓椒ǖ膹V泛應(yīng)用,Rational公司還提出了統(tǒng)一過程模型(簡(jiǎn)稱RUP)。隨著軟件過程越來越多的被重視,作為評(píng)價(jià)軟件組織能力成熟度CMM模型也被提出,并得到了廣泛的應(yīng)用。近年來,代表著新的價(jià)值觀和原則的敏捷聯(lián)盟所倡導(dǎo)的敏捷過程以及軟件過程改進(jìn)成為討論的熱點(diǎn)。關(guān)于軟件過程的詳細(xì)內(nèi)容,本書放在第二章討論。69/861.3.1軟件開發(fā)過程—快速原型模型1.基本思想在獲取一組基本的需求定義后,利用高級(jí)軟件工具的可開發(fā)環(huán)境,快速地建立一個(gè)目標(biāo)系統(tǒng)的最初版本,并把它交給用戶試用、補(bǔ)充和修改,再進(jìn)行新的版本開發(fā)。反復(fù)進(jìn)行這個(gè)過程,直到得出系統(tǒng)的“精確解”,即用戶滿意為止。經(jīng)過這樣一個(gè)反復(fù)補(bǔ)充和修改的過程,應(yīng)用系統(tǒng)的“最初版本”就逐步演變?yōu)橄到y(tǒng)的“最終版本”。原型:一個(gè)具體的可執(zhí)行模型,它實(shí)現(xiàn)了系統(tǒng)的若干功能。原型法:不斷地運(yùn)行系統(tǒng)“原型”來進(jìn)行啟發(fā)、揭示和判斷的系統(tǒng)開發(fā)方法。70/861.3.1軟件開發(fā)過程—快速原型模型原型法的主要思路:根據(jù)用戶的需求迅速構(gòu)造一個(gè)低成本的用于演示及評(píng)價(jià)的試驗(yàn)系統(tǒng)(原型)由用戶對(duì)原型進(jìn)行評(píng)價(jià)在用戶評(píng)價(jià)的基礎(chǔ)上對(duì)原型進(jìn)行修改或重構(gòu)。有了滿意的系統(tǒng)原型,同時(shí)也積累了使用原型的經(jīng)驗(yàn),用戶常會(huì)提出新目標(biāo),從而進(jìn)一步重新構(gòu)造原型周期。新目標(biāo)的范圍要比修改或補(bǔ)充不滿意的原型大。(1)漸增型(2)用于驗(yàn)證軟件需求的原型(3)用于驗(yàn)證設(shè)計(jì)方案71/861.3.1軟件開發(fā)過程—快速原型模型3.軟件原型是軟件的最初版本,以最少的費(fèi)用、最短的時(shí)間開發(fā)出的、以反映最后軟件的主要特征的系統(tǒng)。它具有以下特征:(1)它是一個(gè)可實(shí)際運(yùn)行的系統(tǒng)。(2)它沒有固定的生存期。一種極端是扔掉原型(以最簡(jiǎn)便方式大量借用已有軟件,做出最后產(chǎn)品的模型,證實(shí)產(chǎn)品設(shè)想是成功的,但產(chǎn)品中并不使用);另一種極端是最終產(chǎn)品的一部分即增量原型(先做出最終產(chǎn)品的核心部分,逐步增加補(bǔ)充模塊),演進(jìn)原型居于其中(每一版本扔掉一點(diǎn),增加一點(diǎn),逐步完善至最終產(chǎn)品)。72/861.3.1軟件開發(fā)過程—快速原型模型(3)從需求分析到最終產(chǎn)品都可作原型,即可為不同目標(biāo)作原型。(4)它必須快速、廉價(jià)。(5)它是迭代過程的集成部分,即每次經(jīng)用戶評(píng)價(jià)后修改、運(yùn)行,不斷重復(fù)雙方認(rèn)可。73/861.3.1軟件開發(fā)過程—快速原型模型快速原型法的特點(diǎn):有直觀的系統(tǒng)開發(fā)過程用戶參與系統(tǒng)開發(fā)的全過程可以逐步明確用戶需求用戶直接掌握系統(tǒng)的開發(fā)進(jìn)度用戶接受程度高74/861.3.1軟件開發(fā)過程—快速原型模型快速原型法的不足:不適用于擁有大量計(jì)算或控制功能的系統(tǒng)不適用于大型或復(fù)雜的系統(tǒng)容易掩蓋需求、分析、設(shè)計(jì)等方面的問題結(jié)果不確定——隨原型構(gòu)造評(píng)價(jià)過程而定整體考慮較少快速原型法主要適應(yīng)于:適用于解決有不確定因素的問題適用于對(duì)用戶界面要求高的系統(tǒng)適用于決策支持方面的應(yīng)用適用于中型系統(tǒng)75/861.3.1軟件開發(fā)過程—螺旋模型在原型基礎(chǔ)上,進(jìn)行多次原型反復(fù)并增加風(fēng)險(xiǎn)評(píng)估后形成。76/861.3.1軟件開發(fā)過程—螺旋模型77/861.3.1軟件開發(fā)過程—螺旋模型螺旋模型分析在螺旋模型結(jié)構(gòu)中,維護(hù)只是螺旋模型的另一個(gè)周期,在維護(hù)和開發(fā)之間本質(zhì)上并沒有區(qū)別,從而解決了做太多測(cè)試或未作足夠測(cè)試所帶來的風(fēng)險(xiǎn)。適用條件內(nèi)部的大規(guī)模軟件的開發(fā),不太適合合同軟件。一般只適用于大規(guī)模軟件的開發(fā)78/861.3.2軟件工程技術(shù)總體上,軟件工程討論的主要內(nèi)容可以分為軟件工程技術(shù)和軟件項(xiàng)目管理兩大部分。在軟件開發(fā)過程中,對(duì)于可行性分析、需求規(guī)格說明、系統(tǒng)設(shè)計(jì)、編程與測(cè)試,以及軟件維護(hù)等活動(dòng)都有相應(yīng)的專門技術(shù)需要掌握。79/86從軟件工程技術(shù)的內(nèi)容體系來看,大體上分為:原理、方法、工具和技術(shù)四個(gè)層面。軟件工程原理表明:為了不斷提高軟件質(zhì)量、軟件開發(fā)效率,以及確保軟件項(xiàng)目的成功,軟件工程學(xué)科提出了解決問題的一組原理和相關(guān)原則(即7條原理),無論采用什么過程或方法,這些原理和原則都是應(yīng)該普遍被遵守的。在遵守軟件工程原理和原則的基礎(chǔ)上,不同的專家、學(xué)者及軟件工程實(shí)踐者,從各自的角度認(rèn)識(shí)和研究軟件系統(tǒng)的規(guī)律,并提出了各自認(rèn)識(shí)問題和解決問題的思維模式,最具代表性的就是我們熟悉的結(jié)構(gòu)化方法論和面向?qū)ο蟮姆椒ㄕ?,這就是軟件工程“方法”層面的內(nèi)容。不同的方法論為了在相應(yīng)的思維模式上對(duì)軟件開發(fā)提出解決方案,研究并設(shè)計(jì)了一組從事分析與設(shè)計(jì)活動(dòng)的工具,如結(jié)構(gòu)化的分析與設(shè)計(jì)工具、面向?qū)ο蟮姆治雠c設(shè)計(jì)工具等,這些就構(gòu)成了軟件工程“工具”層面的內(nèi)容。在運(yùn)用這些工具從事分析與設(shè)計(jì)的活動(dòng)中,必不可少的需要掌握一定的技術(shù),這就構(gòu)成了軟件工程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論