《程序設(shè)計及軟件工程基礎(chǔ)》由會員分享,可在線閱讀,更多相關(guān)《程序設(shè)計及軟件工程基礎(chǔ)(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,第二章,程序設(shè)計及軟件工程基礎(chǔ),二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),本章主要內(nèi)容,程序設(shè)計方法和風格,結(jié)構(gòu)化程序設(shè)計,面向?qū)ο蟪绦蛟O(shè)計,軟件工程基本概念,結(jié)構(gòu)化分析方法,軟件測試,程序的調(diào)試,過關(guān)練習(xí),二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),什么是程序,指令的集合,。(解釋指令),通過硬件控制系統(tǒng)自動完成某一功能。,通過一系列代碼實現(xiàn)。,程序設(shè)計語言,計算機本身僅能識別二進制代碼“,0”,、“,1”,。,編譯程序和解釋程序,編程最直接、最低級的就是,機器語言,。,匯編語言,。,高級語言,。如,C
2、,、,PASCAL,、,FORTRAN,、,BASIC,、,JAVA,等,2.1 程序設(shè)計方法和風格,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),程序設(shè)計風格,基本概念:,編寫程序時所表現(xiàn)出來的特點、習(xí)慣和邏輯思路。一般從以下四部分加以規(guī)范:,源程序中的內(nèi)部文檔:,選擇標示符的名字、注釋(序言性和功能性注釋)、程序的視覺組織。,數(shù)據(jù)說明:,顯式地說明一切變量、數(shù)據(jù)說明的次序應(yīng)該規(guī)范化、便于查找變量(按順序排列)、對復(fù)雜數(shù)據(jù)結(jié)構(gòu)應(yīng)注釋說明,語句的結(jié)構(gòu):,每條語句簡單明了、盡量不用或少用,GOTO,語句、盡量只采用,3,種基本控制結(jié)構(gòu)編程,輸入和輸出:,對所有輸入數(shù)據(jù)進行校驗和合理性檢查、輸入輸出格式
3、保持一致、設(shè)計良好的輸出報表,2.1 程序設(shè)計方法和風格,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),程序設(shè)計三種方法,結(jié)構(gòu)化設(shè)計法,模塊內(nèi)部程序各部分要按照自頂向下的結(jié)構(gòu)劃分,各程序部分應(yīng)按功能組合,快速原型法(軟件工程法),利用現(xiàn)有的工具和原型方法快速地開發(fā)所要的程序,面向?qū)ο蟪绦蛟O(shè)計法,以對象為核心,與人類習(xí)慣的思維方法一致,2.1 程序設(shè)計方法和風格,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),基本思想,對大型的程序設(shè)計,使用一些基本的結(jié)構(gòu)來設(shè)計程序,無論多復(fù)雜的程序,都可以使用這些基本結(jié)構(gòu)按一定的順序組合起來。這些基本結(jié)構(gòu)的特點都是,只有一個入口、一個出口,。由這些基本結(jié)構(gòu)組成的程序就避免了
4、任意轉(zhuǎn)移、閱讀起來需要來回尋找的問題。,設(shè)計原則,自頂向下,逐步求精,模塊化,限制使用,goto,語句,2.2 結(jié)構(gòu)化程序設(shè)計,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),基本結(jié)構(gòu):順序、選擇、循環(huán),2.2 結(jié)構(gòu)化程序設(shè)計,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),2.3 面向?qū)ο蟪绦蛟O(shè)計,基本思想,客觀世界中任何一個事物都可以被看成是一個對象,,面向?qū)ο蠓椒ǖ谋举|(zhì)就是主張從客觀世界固有的事物出發(fā)來構(gòu)造系統(tǒng),,系統(tǒng)中的對象及對象之間的關(guān)系能夠如實地反映問題域中固有的事物及其關(guān)系。,結(jié)構(gòu)化與面向?qū)ο蠓椒ū容^,結(jié)構(gòu)化的分解突出過程,即,如何做,(How to do)?,它強調(diào)代碼的功能是如何實現(xiàn)的;,面
5、向?qū)ο蟮姆纸馔怀霈F(xiàn)實世界和抽象的對象,即,做什么,(What to do)?,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),主要優(yōu)點,與人類習(xí)慣的思維方法一致,穩(wěn)定性好,可重用性好,易于開發(fā)大型軟件產(chǎn)品,可維護性好,2.3 面向?qū)ο蟪绦蛟O(shè)計,面向?qū)ο蟪绦蛟O(shè)計主要考慮的是提高軟件的可重用性!,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),面向?qū)ο蟮幕靖拍?對象,(Object),對象是基本的運行時認得實體,它既包括數(shù)據(jù)(,屬性,),也包括作用于數(shù)據(jù)的操作(,行為,)。,一個對象把屬性和行為封裝為一個整體,一個對象通??捎蓪ο竺?、屬性和操作,3,部分組成,面向?qū)ο?(Object Oriented,OO),
6、從該問題所涉及的對象入手來研究問題。,消息,(Message),對象之間進行通信的一種數(shù)據(jù)構(gòu)造,消息包括:接受消息對象名、消息標識符、零個或多個參數(shù)。,2.3 面向?qū)ο蟪绦蛟O(shè)計,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),面向?qū)ο蟮幕靖拍?類,(Class),一個類定義了一組大體上相似的對象。,一個類所包含的,方法和數(shù)據(jù),描述一組對象的共同行為和屬性。,類是在對象之上的抽象,對象是類的具體化,是類的實例,封裝,(Encapsulation),將數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)銜接在一起,構(gòu)成一個具有類類型的對象的描述。,對象的內(nèi)部實現(xiàn)受保護,外界不能訪問,封裝簡化了程序員對對象的使用,2.3 面向?qū)ο蟪绦蛟O(shè)
7、計,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),面向?qū)ο蟮幕靖拍?繼承,(Inheritance),繼承是父類和子類之間共享數(shù)據(jù)的方法的機制,一個子類可以繼承它的父類(或祖先類)中的屬性和操作,子類中可以定義自己的屬性和操作,單重繼承、多重繼承,多態(tài)性,(Polymorphism),不同的對象收到同一消息可以產(chǎn)生完全不同的結(jié)構(gòu),這一現(xiàn)象叫做多態(tài)性,多態(tài)的實現(xiàn)受到繼承的支持,2.3 面向?qū)ο蟪绦蛟O(shè)計,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件的定義,軟件,(software),是計算機系統(tǒng)中與硬件,(hardware),相互依存的另一部分。,軟件包括三個部分:程序,(program),、相關(guān)數(shù)據(jù)
8、,(data),、說明文檔,(document),。,軟件的特點,軟件是一種邏輯實體,不是物理實體,具有抽象性。,軟件沒有明顯的制造過程。,軟件在使用過程中,沒有磨損、老化問題,軟件依賴與硬件和環(huán)境,導(dǎo)致了移植問題,軟件是復(fù)雜的,而且以后會更復(fù)雜,軟件的成本相當昂貴,軟件工作牽涉到很多社會因素,2.4 軟件工程基本概念,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件危機,早期的軟件主要指程序,采用個體工作方式,缺少相關(guān)文檔,質(zhì)量低,維護困難,這些問題稱為“軟件危機”,,軟件工程概念的出現(xiàn)源自于軟件危機,。,軟件工程,軟件工程是指應(yīng)用計算機科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來解決軟件
9、問題的工程。,其目的是提高軟件生產(chǎn)率、提高軟件質(zhì)量、降低軟件成本。,軟件工程基本目標,在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。,2.4 軟件工程基本概念,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件工程原則:,抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。,1),抽象:,抽象是事物最基本的特性和行為,忽略非本質(zhì)細節(jié),采用分層次抽象,自頂向下,逐層細化來控制軟件開發(fā)過程的復(fù)雜性。,2,)信息隱蔽:,采用封裝技術(shù),將程序模塊的實現(xiàn)細節(jié)隱蔽起來,使模塊接口盡量簡單。,3,)模塊
10、化:,模塊是程序中相對獨立的成分,一個獨立的編程單位。模塊的大小要適中,過大模塊內(nèi)部復(fù)雜性增加,太小整個系統(tǒng)過于復(fù)雜。,4,)局部化:,保證模塊間具有松耦合性,模塊內(nèi)部有高內(nèi)聚性。,5,)確定性:,軟件中所有概念的表達應(yīng)是確定、無歧義且規(guī)范的。,6,)一致性:,內(nèi)外部接口保持一致,系統(tǒng)規(guī)格說明與行為保持一致。,7,)完備性:,軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需功能。,8,)可驗證性:,遵循容易檢查、測評、評審原則,確保系統(tǒng)正確性,2.4 軟件工程基本概念,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件工程三要素,方法:,完成軟件工程項目的技術(shù)手段,工具:,支持軟件的開發(fā)、管理、文檔生成
11、,過程:,支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理,軟件工具和軟件開發(fā)環(huán)境,軟件工具,(CASE),:,用來輔助軟件開、運行、維護、管理、支持等過程中的活動的軟件,軟件開發(fā)環(huán)境:,支持軟件產(chǎn)品開發(fā)的軟件系統(tǒng),它由軟件工具集和環(huán)境集成機制構(gòu)成,2.4 軟件工程基本概念,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件生命周期,軟件產(chǎn)品,從提出、實現(xiàn)、使用維護到停止使用退役的過程,稱為軟件生命周期。分為軟件定義、軟件開發(fā)及軟件運行維護,3,個階段。,1,)軟件定義階段:,包括制定計劃和需求分析。,制定計劃:確定總目標;可行性研究;探討解決方案;制定開發(fā)計劃。,需求分析:對待開發(fā)軟件提出的需求進行分析并給出詳
12、細的定義。,2,)軟件開發(fā)階段:,軟件設(shè)計:分為概要設(shè)計和詳細設(shè)計兩個部分。軟件實現(xiàn):把軟件設(shè)計轉(zhuǎn)換成計算機可以接受的程序代碼。,軟件測試:在設(shè)計測試用例的基礎(chǔ)上檢驗軟件的各個組成部分。,3,)軟件運行維護階段(生命周期中花費最多的階段):,軟件投入運行,并在使用中不斷地維護,進行必要的擴充和刪改。,2.4 軟件工程基本概念,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),需求分析,用戶對目標軟件系統(tǒng)在功能、行為、性能、設(shè)計約束等方面的期望。,需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求的過程。,需求分析將創(chuàng)建所需的,數(shù)據(jù)模型,、,功能模型,和,控制模型,。,需求分析的四步驟,需求獲取、需求分析、編
13、寫需求規(guī)格說明書和需求評審,需求分析的方法,結(jié)構(gòu)化分析方法、面向?qū)ο蠓治龇椒?2.5 結(jié)構(gòu)化分析方法,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),結(jié)構(gòu)化分析方法,結(jié)構(gòu)化程序設(shè)計理論在軟件需求分析階段的運用,其,目的是幫助弄清用戶對軟件的需求。,常用工具,數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹、判定表,開發(fā)策略,自頂向下,逐層分解,2.5 結(jié)構(gòu)化分析方法,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),數(shù)據(jù)流圖,(DFD),:,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,,它反映了系統(tǒng)必須完成的邏輯功能,是結(jié)構(gòu)化分析方法中用于表示系統(tǒng)邏輯模型的一種工具。,2.5 結(jié)構(gòu)化分析方法,加工,存儲文件,源、,潭,數(shù)據(jù)流,加工
14、(轉(zhuǎn)換):,輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出。,數(shù)據(jù)流:,沿箭頭方向傳送數(shù)據(jù)的通道,旁邊標注數(shù)據(jù)流名。,存儲文件(數(shù)據(jù)源):,表示處理過程中存放各種數(shù)據(jù)的文件。,源、潭:,表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體。,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),畫數(shù)據(jù)流圖的基本步驟,自外向內(nèi),自頂向下,逐層細化,完善求精,2.5 結(jié)構(gòu)化分析方法,數(shù)據(jù)流圖的示例,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),數(shù)據(jù)字典,(DD),:,對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,,其,作用是對數(shù)據(jù)流圖中出現(xiàn)的被命名的圖形元素的確切解釋,。,數(shù)據(jù)字典常包括,5,個部分:,數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、數(shù)據(jù)處理。,
15、數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的核心,2.5 結(jié)構(gòu)化分析方法,軟件需求規(guī)格說明書(,SRS,),:,需求分析階段的最后成果,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設(shè)計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。,二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),需求分析主要解決,“做什么”,的問題,而,軟件設(shè)計,主要解決,“怎么做”,的問題。,從技術(shù)觀點來看,,軟件設(shè)計包括軟件,結(jié)構(gòu)設(shè)計,、,數(shù)據(jù)設(shè)計,、,接口設(shè)計,、,過程設(shè)計,。,結(jié)構(gòu)設(shè)計:,定義軟件系統(tǒng)各主要部件之間的關(guān)系。,數(shù)據(jù)設(shè)計:,將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。,接口設(shè)計:,描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及
16、軟件與人之間如何通信。,過程設(shè)計:,把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程性描述,2.6 結(jié)構(gòu)化設(shè)計方法,軟件設(shè)計的基礎(chǔ),二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),從工程角度來看,,軟件設(shè)計分兩步完成,即,概要設(shè)計,和,詳細設(shè)計,。,概要設(shè)計:又稱結(jié)構(gòu)設(shè)計,,將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu);確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;,編寫概要設(shè)計文檔、概要設(shè)計文檔評審。,詳細設(shè)計:,確定每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適當方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。,2.6 結(jié)構(gòu)化設(shè)計方法,軟件設(shè)計的基礎(chǔ),二級ACCESS軟件設(shè)計及軟件工程基礎(chǔ),軟件設(shè)計基本原理:,抽象,、,模塊化,、,信息隱蔽,和,模塊獨立性,。,抽象:,抽象是一種思維工具,就是把事物本質(zhì)的共同特性提取出來而不考慮其他細節(jié)。,模塊化:,解決一個復(fù)雜問題時自頂向下逐步把軟件系統(tǒng)劃分成較小的、相對獨立但又不相互關(guān)聯(lián)的模塊的過程。,信息隱蔽:,模塊的實施細節(jié)對于其他模塊來說是隱蔽的。,模塊獨立性:,軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,和軟件系統(tǒng)中其他模塊的接口是簡單的。,模塊獨立性指標:,耦合性,和,內(nèi)聚性,模塊劃分原則是:,高內(nèi)聚