第1章
軟件:計算機程序及說(shuō)明程序的各種文檔?!俺绦颉笔怯嬎闳蝿?wù)的處理對象和處理規則的描述;
“文檔”是有關(guān)計算機程序功能、設計、編制、使用的文字或圖形資料。
軟件生產(chǎn)的發(fā)展:程序設計時(shí)代,程序系統時(shí)代,軟件工程時(shí)代。
軟件工程:用科學(xué)知識和技術(shù)原理來(lái)定義、開(kāi)發(fā)、維護軟件的一門(mén)學(xué)科。
軟件工程性質(zhì):它涉及計算機科學(xué)、工程科學(xué)、管理科學(xué)、數學(xué)等領(lǐng)域,計算機科學(xué)著(zhù)重于原理
和理論,而軟件工程著(zhù)重于如何建造一個(gè)軟件系統。軟件工程要用工程科學(xué)中的觀(guān)點(diǎn)來(lái)進(jìn)行費用
估算、制定進(jìn)度、制定計劃和方案。軟件工程要用管理科學(xué)中的方法和原理進(jìn)行軟件生產(chǎn)的管
理。軟件工程要用數學(xué)的方法建立軟件開(kāi)發(fā)中的各種模型和各種算法,如可靠性模型,說(shuō)明用戶(hù)
需求的形式化模型等。
軟件工程研究的主要內容是軟件開(kāi)發(fā)技術(shù)和軟件開(kāi)發(fā)管理兩個(gè)方面。在軟件開(kāi)發(fā)技術(shù)中,主要研
究軟件開(kāi)發(fā)方法、軟件開(kāi)發(fā)過(guò)程、軟件開(kāi)發(fā)工具和環(huán)境。在軟件開(kāi)發(fā)管理中, 主要是研究軟件管
理學(xué)、軟件經(jīng)濟學(xué)、軟件心理學(xué)等。
軟件工程面臨的問(wèn)題:軟件費用;軟件可靠性;軟件維護;軟件生產(chǎn)率;軟件重用。
軟件工程過(guò)程:獲取過(guò)程;供應過(guò)程;開(kāi)發(fā)過(guò)程;操作過(guò)程;維護過(guò)程;管理過(guò)程;支持過(guò)程。
軟件生存周期:可行性分析和項目開(kāi)發(fā)計劃;需求分析;概要設計;詳細設計;編碼;測試;維
護。
軟件生存周期模型是描述軟件開(kāi)發(fā)過(guò)程中各種活動(dòng)如何執行的模型。
瀑布模型是將軟件生存周期各個(gè)活動(dòng)規定為依線(xiàn)性順序連接的若干階段的模型。
增量模型是一種非整體開(kāi)發(fā)的模型。瀑布模型是一種整體開(kāi)發(fā)的模型
螺旋模型將瀑布模型與增量模型結合起來(lái),加入了風(fēng)險分析,用于復雜的大型軟件開(kāi)發(fā);分為幾
個(gè)螺旋周期:第一,制定計劃;第二,風(fēng)險分析;第三,開(kāi)發(fā)實(shí)施;第四,用戶(hù)評估。
噴泉模型是一種以用戶(hù)需求為動(dòng)力,以對象作為驅動(dòng)的模型,適合于面向對象的開(kāi)發(fā)方法。噴泉
模型使開(kāi)發(fā)過(guò)程具有迭代性和無(wú)間隙性。
基本知識的模型又稱(chēng)智能模型,它把瀑布模型和專(zhuān)家系統結合在一起。
變換模型是一種適合于形式化開(kāi)發(fā)方法的模型。從軟件需求形式化說(shuō)明開(kāi)始,經(jīng)過(guò)一系列變換,
最終得到系統的目標程序。
軟件開(kāi)發(fā)方法:
結構化方法由結構化分析、結構化設計、結構化程序設計構成。它是一種面向數據流的開(kāi)發(fā)方
法。結構化方法總的指導思想是自頂向下、逐步求精。它的基本原則是功能的分解與抽象,它是
軟件工程中最早出現的開(kāi)發(fā)方法,特別適合于數據處理領(lǐng)域的問(wèn)題。
Jackson方法是一種面向數據結構的開(kāi)發(fā)方法。
維也納開(kāi)發(fā)方法(VDM)是一種形式化的開(kāi)發(fā)方法,軟件的需求用嚴格的形式語(yǔ)言描述。
面向對象的開(kāi)發(fā)方法包括面向對象分析、面向對象設計、面向對象實(shí)現。面向對象開(kāi)發(fā)方法有
Booch方法、Coad方法
第2章
軟件可行性研究的目的就是用最小的代價(jià)在盡可能短的時(shí)間內確定該軟件項目是否能夠開(kāi)發(fā),是
否值得去開(kāi)發(fā)。注意,可行性研究的目的不是去開(kāi)發(fā)一個(gè)軟件項目,而是研究這個(gè)軟件項目是否
值得去開(kāi)發(fā),其中的問(wèn)提能否解決??尚行匝芯繉?shí)質(zhì)上是要進(jìn)行一次簡(jiǎn)化、壓縮了的需求分析、
設計過(guò)程,要在較高層次上以較抽象的方式進(jìn)行需求分析和設計過(guò)程。
可行性研究的任務(wù)
技術(shù)可行性:對要開(kāi)發(fā)項目的功能、性能、限制條件進(jìn)行分析,確定在現有的資源條件下,技術(shù)
風(fēng)險有多大,項目是否能實(shí)現。包括:開(kāi)發(fā)的風(fēng)險;資源的有效性;技術(shù);開(kāi)發(fā)人員在評估技術(shù)
可行性時(shí),一旦估計錯誤,將會(huì )出現災難性后果。
經(jīng)濟可行性包括成本――效果分析、公司經(jīng)營(yíng)長(cháng)期策略、開(kāi)發(fā)所需的成本和資源、潛在的市場(chǎng)前
景。
社會(huì )可行性包括:合同、責任、侵權、用戶(hù)組織的管理模式及規范,其他一些技術(shù)人員常常不了
解的陷阱等。
典型的可行性研究有下列步驟:確定項目規模和目標;研究正在運行的系統;建立新系統的高層
邏輯模型;導出和評價(jià)各種方案;推薦可行的方案;編寫(xiě)可行性研究報告。
可行性研究報告的主要內容:引言;可行性研究前提;對現有系統的分析;所建議系統的技術(shù)可
行性分析;所建議系統的經(jīng)濟可行性分析;社會(huì )因素可行性分析;其他可供選擇方案;結論意
見(jiàn)。
成本――效益分析首先是估算將要開(kāi)發(fā)的系統的開(kāi)發(fā)成本,然后與可能取得的效益進(jìn)行比較和權
衡。效益分有形效益和無(wú)形效益兩種。有形效益可以用貨幣的時(shí)間價(jià)值、投資回收期、純收入等
指標進(jìn)行度量;無(wú)形效益主要從性質(zhì)上、心理上進(jìn)行衡量,很難直接進(jìn)行量的比較。
投資回收期就是使累計的經(jīng)濟效益等于最初的投資費用所需的時(shí)間。
項目的純收入,也就是在整個(gè)生存周期之內的累計經(jīng)濟效益(折合成現在值)與投資之差。
項目開(kāi)發(fā)計劃:項目概述;實(shí)施計劃;人員組織及分工;交付期限。
第3章
在進(jìn)行可行性研究和軟件計劃以后,如果確認開(kāi)發(fā)一個(gè)新的軟件系統是必要的而且是可能的,那
么就進(jìn)入需求分析階段。
需求分析是指,開(kāi)發(fā)人員要準確理解用戶(hù)的要求,進(jìn)行細致的調查分析,將用戶(hù)非形式的需求陳
述轉化為完整的需求定義,再由需求定義轉換到相應的形式功能規約(需求規格說(shuō)明)的過(guò)程。
它的難點(diǎn)主要體現在以下幾個(gè)方面:?jiǎn)?wèn)題的復雜性;交流障礙;不完備性和不一致性。需求易變
性。
需求分析的基本任務(wù)是要準確地定義新系統的目標,為了滿(mǎn)足用戶(hù)需要,回答系統必須“做什
么”的問(wèn)題。
本階段要進(jìn)行以下幾方面的工作:
問(wèn)題識別:功能需求;性能需求;環(huán)境需求;用戶(hù)界面需求
分析與綜合,導出軟件的邏輯模型
編寫(xiě)文檔:需求規格說(shuō)明書(shū);初步用戶(hù)使用手冊;確認測試計劃;修改完善軟件開(kāi)發(fā)計劃。
結構化分析(SA)是面向數據流進(jìn)行需求分析的方法。
SA方法利用圖形等半形式化的描述方式表達需求,簡(jiǎn)明易懂,用它們形成需求說(shuō)明書(shū)中的主要部
分。這些描述工具是:數據流圖;數據字典;描述加工邏輯的結構化語(yǔ)言,判定表、判定樹(shù)。
“數據流圖(DFD)”描述的分解,即描述系統由哪幾部分組成,各部分之間有什么聯(lián)系等等。
“數據字典”定義了數據流圖中每一個(gè)圖形元素。結構化語(yǔ)言、判定表或判定樹(shù)則詳細描述數據
流圖中不能被再分解的每一個(gè)加工。
數據流是數據在系統內傳播的路徑,因此由一組成分固定的數據項組成。
加工(又稱(chēng)數據處理)。對數據流進(jìn)行某些操作或變換。
數據存儲(又稱(chēng)文件),指暫時(shí)保存的數據,它可以是數據庫文件或任何形式的數據組織。
數據源點(diǎn)或終點(diǎn):是本軟件系統外部環(huán)境中的實(shí)體,統稱(chēng)外部實(shí)體。
數據字典(DD)就是用來(lái)定義數據流圖中的各個(gè)成分的具體含義的,它和數據流圖共同構成了系
統的邏輯模型,是需求規格說(shuō)明書(shū)的主要組成部分。
數據字典的內容及格式
數據項是組成數據流和數據存儲的最小元素。
數據流條目;數據存儲條目;數據項條目;加工條目
數據字典中的加工邏輯主要描述該加工“做什么”,即實(shí)現另工的策略,而不是實(shí)現加工的細
節,它描述如何把輸入數據流變換為輸出數據流的加工規則。
加工邏輯也稱(chēng)為“小說(shuō)明”,描述加工邏輯一般用以下三種工具:結構化語(yǔ)言、判定表、判定
樹(shù)。
結構化語(yǔ)言是介于自然語(yǔ)言和形式語(yǔ)言之間的一種半形式語(yǔ)言。它的結構可分成外層和內層兩
層:外層用來(lái)描述控制結構,采用順序、選擇、重復三種基本結構;內層
對于順序執行和循環(huán)執行的動(dòng)作,用結構化語(yǔ)言描述。對于存在多個(gè)條件復雜組合的判斷問(wèn)題,
用判定表和判定樹(shù)。
IDEF0:用來(lái)描述系統的功能活動(dòng)及其聯(lián)系,建立系統的功能模型。
IDEF1:用來(lái)描述系統的信息及其聯(lián)系,建立系統的信息模型。
IDEF2:用來(lái)進(jìn)行系統模擬,建立系統的動(dòng)態(tài)模型。
傳統的SA方法主要用于數據處理方面的問(wèn)題,主要工具DFD體現了系統“做什么”的功能,但它僅
是一個(gè)靜態(tài)模型,沒(méi)有反映處理的順序,即控制流程。
形式化方法是將需求規格說(shuō)明用形式規約語(yǔ)言來(lái)描述。典型的有基于模型的Z語(yǔ)言及VDM開(kāi)發(fā)方
法。
kingwang
2004-7-20
17:13:33 第4章
在軟件需求分析階段,已經(jīng)搞清楚了軟件“做什么”的問(wèn)題,并把這些需求通過(guò)規格說(shuō)明書(shū)描述了出來(lái),這也是目標系統的邏輯模型。進(jìn)入了設計階段,要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著(zhù)手實(shí)現
軟件的需求,并將設計的結果反映在“設計規格說(shuō)明”文檔中,軟件設計是一個(gè)把軟件需求轉換為軟件表示的過(guò)程,最初這種表示只是描述了軟件的總的體系結構,稱(chēng)為軟件概要設計或結構設計。然后對結構進(jìn)一步細分,稱(chēng)為詳
細設計或過(guò)程設計。
概要設計的基本任務(wù):
1設計軟件系統結構(簡(jiǎn)稱(chēng)軟件結構)――采用某種設計方法,將一個(gè)復雜的系統按功能劃分成模塊;確定每個(gè)模塊的功能;確定模塊之間的接口,即模塊之間傳遞的信息;評價(jià)模塊結構的質(zhì)量。
軟件結構設計是以模塊為基礎的,在需求分析階段,已經(jīng)把系統分解為層次結構。設計階段,以需求分析的結果為依據,從實(shí)現的角度進(jìn)一步劃分為模塊,并組成模塊的層次結構。
2數據結構及數據庫設計
數據庫的設計指數據存儲文件的設計(概念設計、邏輯設計、物理設計)
數據庫的“概念設計”、“邏輯設計”分別對應于系統開(kāi)發(fā)中的“需求分析”與“概要設計”,而數據庫的“物理設計”與模塊的“詳細設計”相對應。
3編寫(xiě)概要設計文檔(概要設計說(shuō)明書(shū)、數據庫設計說(shuō)明書(shū)、用戶(hù)手冊、修訂測試計劃,對測試策略、方法、步驟提出明確要求。)
4評審:對設計部分是否完整地實(shí)現了需求中規定的功能、性能等要求,設計方案的可行性,關(guān)鍵的處理及內外部接口定義正確性、有效性,各部分之間的一致性等等都一一進(jìn)行評審。
模塊的基本屬性:接口指模塊的輸入與輸出;功能指模塊實(shí)現什么功能;邏輯描述內部如何實(shí)現要求的功能及所需的數據;狀態(tài)指該模塊的運行環(huán)境,即模塊的調用與被調用關(guān)系。
功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內部特性。
模塊化是指解決一個(gè)復雜問(wèn)題時(shí)自頂向下逐層把軟件系統劃分為若干模塊的過(guò)程。模塊完成一個(gè)特定的子功能,所有的模塊按某種方法組裝起來(lái),成為一個(gè)整體,完成整個(gè)系統所要求的功能。
開(kāi)發(fā)一個(gè)大而復雜的軟件系統,將它進(jìn)行適當的分解,不但可降低其復雜性,還可減少開(kāi)發(fā)工作量,從而降低開(kāi)發(fā)成本,提高軟件生產(chǎn)率,這就是模塊化的依據。
抽象是認識復雜現象過(guò)程中使用的思維工具,即抽出事物本質(zhì)的共同的特性而暫不考慮它的細節,不考慮其他因素。
通過(guò)抽象,可以確定組成軟件的過(guò)程實(shí)體。通過(guò)信息隱蔽,可以定義和實(shí)施對模塊的過(guò)程細節和局部數據結構的存取限制。信息隱蔽指在設計和確定模塊時(shí),使得一個(gè)模塊內部包含的信息(過(guò)程或數據),對于不需要這些信息的
其他模塊來(lái)說(shuō),是不能訪(fǎng)問(wèn)的。
模塊獨立性指每個(gè)模塊只完成系統要求的獨立子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單,兩個(gè)定性的度量標準――耦合性和內聚性。
耦合性也稱(chēng)塊間聯(lián)系。指軟件系統結構中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性、調用的方式及傳遞的信息。
無(wú)直接耦合 數據耦合 標記耦合 控制耦合 公共耦合 內容耦合(低――高)
1無(wú)直接耦合
2數據耦合指兩個(gè)模塊之間有調用關(guān)系,傳遞的是簡(jiǎn)單的數據值,相當于高級語(yǔ)言的值傳遞。
3標記耦合指兩個(gè)模塊之間傳遞的是數據結構,如高級語(yǔ)言中的數組名、記錄名、文件名等這些名字即標記,其實(shí)傳遞的是這個(gè)數據結構的地址。
4控制耦合指一個(gè)模塊調用另一個(gè)模塊時(shí),傳遞的是控制變量(如開(kāi)關(guān)、標志等),被調模塊通過(guò)該控制變量的值有選擇地執行塊內某一功能。
5公共耦合指通過(guò)一個(gè)公共數據環(huán)境相互作用的那些模塊間的耦合。
公共耦合的復雜程序隨耦合模塊的個(gè)數增加而增加。
6內容耦合:這是最高程度的耦合,也是最差的耦合。當一個(gè)模塊直接使用另一個(gè)模塊的內部數據,或通過(guò)非正常入口而轉入另一個(gè)模塊內部。
內聚性又稱(chēng)塊內聯(lián)系。指模塊的功能強度的度量,即一個(gè)模塊內部各個(gè)元素彼此結合的緊密程度的度量。若一個(gè)模塊內各元素(語(yǔ)名之間、程序段之間)聯(lián)系的越緊密,則它的內聚性就越高。
偶然內聚 邏輯內聚 時(shí)間內聚 通信內聚 順序內聚 功能內聚(低――高)
1偶然內聚指一個(gè)模塊內的各處理元素之間沒(méi)有任何聯(lián)系。
2邏輯內聚指模塊內執行幾個(gè)邏輯上相似的功能,通過(guò)參數確定該模塊完成哪一個(gè)功能。
3時(shí)間內聚:把需要同時(shí)執行的動(dòng)作組合在一起形成的模塊為時(shí)間內聚模塊。
4通信內聚指模塊內所有處理元素都在同一個(gè)數據結構上操作(有時(shí)稱(chēng)之為信息內聚),或者指各處理使用相同的輸入數據或者產(chǎn)生相同的輸出數據。
5順序內聚指一個(gè)模塊中各個(gè)處理元素都密切相關(guān)于同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。
6功能內聚:這是最強的內聚,指模塊內所有元素共同完成一個(gè)功能,缺一不可。與其他模塊的耦合是最弱的。
耦合性與內聚性是模塊獨立性的兩個(gè)定性標準,將軟件系統劃分模塊時(shí),盡量做到高內聚低耦合,提高模塊的獨立性,為設計高質(zhì)量的軟件結構奠定基礎。
軟件結構圖主要內容有:模塊、模塊的控制關(guān)系、模塊間的信息傳遞、兩個(gè)附加符號
結構圖的形態(tài)特征:深度指結構圖控制的層次;寬度指一層中最大的模塊個(gè)數;扇出指一個(gè)模塊直接下屬模塊的個(gè)數;扇入指一個(gè)模塊直接上屬模塊的個(gè)數。
如果若干模塊之間耦合強度過(guò)高,每個(gè)模塊內功能不復雜,可將它們合并,以減少信息的傳遞和公共區的引用。若有多個(gè)相關(guān)模塊,應對它們的功能進(jìn)行分析,消去重復功能。
一個(gè)模塊的作用范圍應在其控制范圍這內,且判定所在的模塊應與受其影響的模塊在層次上盡量靠近。
一個(gè)模塊的作用范圍指受該模塊內一個(gè)判定影響的所有模塊的集合。一個(gè)模塊的控制范圍指模塊本身以及其所有下屬模塊(直接或間接從屬于它的模塊)的集合。
要把數據流圖(DFD)轉換成軟件結構,首先必須研究DFD的類(lèi)型,一般可分為變換型和事務(wù)型兩類(lèi)。
變換型DFD是由輸入、變換(或稱(chēng)處理)和輸出三部分組成。
變換型數據處理的工作過(guò)程一般分為三步:取得數據、變換數據和給出數據,這三步體現了變換型DFD的基本思想。變換是系統的主加工,變換輸入端的數據流為系統的邏輯輸入,輸出端為邏輯輸出。而直接從外部設備輸入數
據稱(chēng)為物理輸入,反之稱(chēng)為物理輸出。
若某個(gè)加工將它的輸入流分離成許多發(fā)散的數據流,形成許多加工路徑,并根據輸入的值選擇其中一個(gè)路徑來(lái)執行,這種特征的DFD稱(chēng)為事務(wù)型的數據流圖,這個(gè)加工稱(chēng)為事務(wù)處理中心。
基于iDEF0圖的設計也是結構化設計技術(shù)之一,它以系統的功能模型和信息結構為基礎設計系統的軟件結構。
HIPO圖是表示軟件系統結構的工具。它既可以描述軟件總的模塊層次結構-H圖(層次圖),又可以描述每個(gè)模塊輸入/輸出數據、處理功能及模塊調用的詳細情況-IPO圖。
kingwang
2004-7-20
17:13:56 第5章
詳細設計是軟件設計的第二階段,主要確定每個(gè)模塊具體執行過(guò)程,故也稱(chēng)“過(guò)程設計”
詳細設計的基本任務(wù):為每個(gè)模塊進(jìn)行詳細的算法設計;為模塊內的數據結構進(jìn)行設計;對數據庫進(jìn)行物理設計,即確定數據庫的物理結構;其他設計(代碼設計、輸入輸出格式設計、人機對話(huà)設計、編寫(xiě)詳細設計說(shuō)明書(shū)、評審
)
處理過(guò)程設計中采用的典型方法是結構化程序設計(SP)方法。詳細設計的目標不僅是邏輯上正確地實(shí)現每個(gè)模塊的功能,還應使設計出的處理過(guò)程清晰易讀。結構化程序設計是實(shí)現該目標的關(guān)鍵技術(shù)之一,它指導人們用良好
的思想方法開(kāi)發(fā)易于理解、易于驗證的程序。
結構化程序設計方法的基本要點(diǎn)是:
1采用自頂向下、逐步求精的程序設計方法
2使用三種基本控制結構構造程序
任何程序都可由順序、選擇、重復三種基本控制結構構造。這三種基本結構的共同點(diǎn)是單入口、單出口。
3主程序員組的組織形式。
詳細描述處理過(guò)程常用三種工具:圖形、表格和語(yǔ)言。
程序流程圖又稱(chēng)為程序框圖,都應由三種基本控制結構順序組合和完整嵌套而成,不能有相互交叉的情況,這樣的流程圖是結構化的流程圖。
PAD圖指問(wèn)題分析圖,它是一種自左往右展開(kāi)的二維樹(shù)型結構??刂屏鞒虨樽陨隙?、從左到右的執行。由機器自動(dòng)通過(guò)走樹(shù)的辦法生成相應的源代碼,大大提高了軟件的生產(chǎn)率。
過(guò)程設計語(yǔ)言(PDL),也稱(chēng)程序描述語(yǔ)言,又稱(chēng)偽碼。它是一種用于描述模塊算法設計和處理細節的語(yǔ)言。偽碼的結構一般分為內外兩層,外層語(yǔ)法應符合一般程序設計語(yǔ)言常用的語(yǔ)法規則,而內層語(yǔ)法則用一些簡(jiǎn)單的句子
、短語(yǔ)和通用的數學(xué)符號,來(lái)描述程序應執行的功能,具有嚴格的關(guān)鍵字外層語(yǔ)法,用于定義控制結構、數據結構和模塊接口,而它表示實(shí)際操作和條件的內層語(yǔ)語(yǔ)法又是靈活自由的,使用自然語(yǔ)言的詞匯。
JACKSON方法是面向數據結構的設計方法,70年代中期出了“面向數據結構”的設計方法,其中有代表性的是由英國M.JACKSON提出的JACKSON方法和由法國人J.WARNIER提出的WARNIER
方法。
JACKSON在JSP的基礎上擴展成了一種系統的開(kāi)發(fā)方法,簡(jiǎn)稱(chēng)JSD。JSD主要以活動(dòng)事件為中心,通過(guò)由一串活動(dòng)順序組合構成的進(jìn)程,建立系統模型,最后實(shí)現該模型。JSP方法定義了一組以數據結構為指導的
映射過(guò)程,它根據輸入、輸出的數據結構,按一定的規則映射成軟件的過(guò)程描述,即程序結構,而不是軟件的體系結構,因此該方法適用于詳細設計階段。
JACKSON方法提供了自己的描述工具――-JACKSON結構圖。無(wú)論數據結構還是程序結構,都限于三種基本結構(順序結構、選擇結構、重復結構)及它們的組合。
JACKSON結構圖的特點(diǎn):
1能對結構進(jìn)行自頂向下分解,因此可以表示層次結構。
2結構易讀,形象直觀(guān)。
3既能表示數據結構也能表示程序結構,且表示的是組成關(guān)系。
JSP方法一般通過(guò)以下五個(gè)步驟來(lái)完成設計:
1分析并確定輸入數據和輸出數據的邏輯結構,并用JACKson結構圖表示這些數據結構。
2找出輸入數據結構和輸出數據結構中有對應關(guān)系的數據單元?!皩P(guān)系”指這些數據單元在數據內容上、數量上和順序上有直接的因果關(guān)系,對于重復的數據單元,重復的次序和次數都相同才有對應關(guān)系。
3按一定的規則由輸入、輸出的數據結構導出程序結構
4列出基本操作與條件,并把它們分配到程序結構圖的適當位置。
5用偽碼寫(xiě)出程序。
kingwang
2004-7-20
17:14:36 第6章
將詳細設計得到的處理過(guò)程的描述轉換為基于某種計算機語(yǔ)言的程序,即源程序代碼。
程序設計語(yǔ)言特性:
1心理特性指影響程序員心理的語(yǔ)言性能,許多這類(lèi)特性是作為程序設計的結果而出現的。
歧義性:有些語(yǔ)法規則容易使人用不同的方式來(lái)解釋語(yǔ)言,這就產(chǎn)生了心理上的二義性。
簡(jiǎn)潔性,人們必須記住的語(yǔ)言成分的數量越多,簡(jiǎn)潔性越差。
局部性和順序性:局部性是指語(yǔ)言的聯(lián)想性,在編碼過(guò)程中,由語(yǔ)句組合成模塊,由模塊組裝成系統結構,并在組裝過(guò)程實(shí)現模塊的高內聚,低耦合,使局部性得到加強。
傳統性:傳統性容易影響人們學(xué)習新語(yǔ)種的積極性。
2工程特性
可移值性:指程序從一個(gè)計算機環(huán)境移植到另一個(gè)計算機環(huán)境的容易程度。
開(kāi)發(fā)工具的可利用性
軟件的可重用性
可維護性。
3技術(shù)特性
為開(kāi)發(fā)一個(gè)特定項目選擇程序設計語(yǔ)言時(shí),必須從技術(shù)特性、工程特性和心理特性幾方面考慮。通常,考慮選用語(yǔ)言的因素有:
1項目的應用領(lǐng)域:科學(xué)工程計算(需要大量的標準庫函數,以便處理復雜的數值計算,可供選用的語(yǔ)言有:FORTRAN Pascal C PL/1);數據處理與數據庫應用(CoBol SQL 4GL);實(shí)時(shí)處
理(匯編語(yǔ)言 Ada);系統軟件(匯編語(yǔ)言 C語(yǔ)言 Pascal語(yǔ)言和Ada語(yǔ)言);人工智能(Lisp是一種函數型語(yǔ)言 Prolog是一種邏輯型語(yǔ)言)
2軟件開(kāi)發(fā)的方法:有時(shí)編程語(yǔ)言的選擇依賴(lài)于開(kāi)發(fā)的方法,如果要用快速原形模型來(lái)開(kāi)發(fā),要求能快速實(shí)現原形,宜采用4GL。如果是面向對象方法,宜采用面向對象的語(yǔ)言編程(C++ JAVA)
3軟件執行的環(huán)境
4算法和數據結構的復雜性
5軟件開(kāi)發(fā)人員的知識。
程序設計風(fēng)格指一個(gè)編制程序時(shí)所表現出來(lái)的特點(diǎn)、習慣、邏輯思想等。
語(yǔ)句構造的原則是:簡(jiǎn)單直接,不能為了追求效率而使代碼復雜化。
效率指處理機時(shí)間和存儲空間的使用:效率是一個(gè)性能要求,目標在需求分析給出;追求效率建立在不損害程序可讀性或可靠性基礎之上;提高程序效率的根本途徑在于選擇良好的設計方法、良好的數據結構與算法,而不是靠編
程時(shí)對程序語(yǔ)句做調整。 第7章
軟件測試的目的:軟件測試是為了發(fā)現錯誤而執行程序的過(guò)程;一個(gè)好的測試用例能夠發(fā)現至今尚未發(fā)現的錯誤;一個(gè)成功的測試是發(fā)現了至今尚未發(fā)現的錯誤的測試。測試階段的基本任務(wù)應該是根據軟件開(kāi)發(fā)各階段的文檔資料
和程序的內部結構,精心設計一組“高產(chǎn)”的測試用例,利用這些實(shí)例執行程序,找出軟件中潛在的各種錯誤和缺陷。
軟件測試中,應注意以下指導原則:測試用例應由輸入數據和預期的輸出數據兩部分組成;測試用例不僅選用合理的輸入數據,還要選擇不合理的輸入數據。這樣能更多的發(fā)現錯誤,提高程序的可靠性。對不合理的輸入數據,程
序應拒絕接受,并給出相應提示。
軟件測試方法一般分為兩大類(lèi):動(dòng)態(tài)測試方法與靜態(tài)測試方法。靜態(tài)測試指被測試程序不在機器上運行,而是采用人工檢測和計算機輔助靜態(tài)分析的手段對程序進(jìn)行檢測。
動(dòng)態(tài)測試指通過(guò)運行程序發(fā)現錯誤,分為黑盒測試法和白盒測試法。
黑盒法:把被測試對象看成一個(gè)黑盒子,測試人員完全不考慮程序的內部結構和處理過(guò)程,只在軟件的接口處進(jìn)行測試,依據需求規格說(shuō)明書(shū),檢查程序是否滿(mǎn)足功能要求。因此,黑盒測試又稱(chēng)為功能測試或數據驅動(dòng)測試。
白盒法:把測試對象看作一個(gè)打開(kāi)的盒子,測試人員須了解程序的內部結構和處理過(guò)程,以檢查處理過(guò)程的細節為基礎,對程序中盡可能多的邏輯路徑進(jìn)行測試,檢驗內部控制結構和數據結構是否有錯,實(shí)際的運行狀態(tài)與預期的
狀態(tài)是否一致。
由于白盒測試是結構測試,所以被測對象基本上是源程序,以程序的內部邏輯為基礎設計測試用例。
1邏輯覆蓋
語(yǔ)句覆蓋是指設計足夠的測試用例,使被測程序中的每個(gè)語(yǔ)句至少執行一次,語(yǔ)句覆蓋是比較弱的覆蓋標準。
判定覆蓋指設計足夠的測試用例,使得被測程序中每個(gè)判定表達式至少獲得一次“真”值和“假”值,從而使程序的每一個(gè)分支至少都通過(guò)一次,因此判定覆蓋也稱(chēng)分支覆蓋。
條件覆蓋指設計足夠的測試用例,使得判定表達式中每個(gè)條件的各種可能的值至少出現一次。
判定/條件覆蓋指設計足夠的測試用例,使得判定表達式中的每個(gè)條件的所有可能取值至少出現一次,并使每個(gè)判定表達式所有可能的結果也至少出現次。
條件組合覆蓋是比較強的覆蓋標準,它是指設計足夠的測試用例,使得每個(gè)判定表達式中條件的各種可能的值的組合至少出現一次,滿(mǎn)足條件組合覆蓋的測試一定滿(mǎn)足“判定覆蓋”、“條件覆蓋”和“判定/條件覆蓋”。
路徑覆蓋是指設計足夠的測試用例,覆蓋被測程序中所有可能的路徑。語(yǔ)句覆蓋發(fā)現錯誤能力最弱。判定覆蓋包含了語(yǔ)句覆蓋,但它可能會(huì )使一些條件得不到測試。P87
2循環(huán)覆蓋
3基本路徑測試是在程序控制流程圖的基礎上,通過(guò)分析控制構造的環(huán)路復雜性,導出基本路徑集合,從而設計測試用例,保證這些路徑至少通過(guò)一次。
獨立路徑是指包括一組以前沒(méi)有處理的語(yǔ)句或條件的一條路徑。從程序圖來(lái)看,一條獨立路徑是至少包含有一條在其他獨立路徑中未有過(guò)的邊的路徑。P89
黑盒測試是功能測試,因此設計測試用例時(shí),需要研究需求規格說(shuō)明和概要設計說(shuō)明中有關(guān)程序功能或輸入、輸出之間的關(guān)系等信息,從而與測試后的結果進(jìn)行分析比較。
1等價(jià)類(lèi)劃分:它將輸入數據域按有效的或無(wú)效的(也稱(chēng)合理的或不合理的)劃分為若干個(gè)等價(jià)類(lèi),測試每個(gè)等價(jià)類(lèi)的代表值就等于對該類(lèi)其他值的測試。
用等價(jià)類(lèi)劃分的方法設計測試用例的步驟為:
劃分等價(jià)類(lèi)
確定測試用例的步驟:為每一個(gè)等價(jià)類(lèi)編號;設計一個(gè)測試用例,使其盡可能多地覆蓋尚未被覆蓋過(guò)的合理等價(jià)類(lèi)。重覆這步,直到所有合理等價(jià)類(lèi)被測試用例覆蓋;設計一個(gè)測試用例,使其只覆蓋一個(gè)不合理等價(jià)類(lèi)。重覆這一
步,直到所有不合理等價(jià)類(lèi)被覆蓋。
2邊界值分析
使用邊界值分析方法設計測試用例時(shí)一般與等價(jià)類(lèi)劃分結合起來(lái)。但它不是從一個(gè)等價(jià)類(lèi)中任選一個(gè)例子作為代表,而將測試邊界情況作為重點(diǎn)目標,選取正好等于、剛剛大于或剛剛小于邊界值的測試數據。
3錯誤推測:在測試程序時(shí),人們可能根據經(jīng)驗或直覺(jué)推測程序中可能存在的各種錯誤,從而有針對性地編寫(xiě)檢查這些錯誤的測試用例,這就是錯誤推測法。
4因果圖:因果圖能有效地檢測輸入條件的各種組合可能會(huì )引起的錯誤。因果圖的基本原理是通過(guò)畫(huà)因果圖,把用自然語(yǔ)言描述的功能說(shuō)明轉換為判定表,最后為判定表的每一列設計一個(gè)測試用例。
kingwang
2004-7-20
17:15:2 5綜合策略
軟件測試時(shí)需要三類(lèi)信息:
1軟件配置:指需求規格說(shuō)明書(shū)、設計說(shuō)明書(shū)、源程序等。
2測試配置:指測試方案、測試用例、測試驅動(dòng)程序等
3測試工具:指計算機輔助測試的有關(guān)工具。
軟件產(chǎn)品在交付使用之前要經(jīng)過(guò)哪些測試呢?一般要經(jīng)過(guò)以下四步測試:?jiǎn)卧獪y試、集成測試、確認測試和系統測試。
軟件測試的步驟及與各開(kāi)發(fā)階段的關(guān)系
單元測試指對源程序中每一個(gè)程序單元進(jìn)行測試,檢查各個(gè)模塊是否正確實(shí)現規定的功能,從而發(fā)現模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細設計的文檔。各模塊經(jīng)過(guò)單元測試后,將各模塊組裝起來(lái)進(jìn)行集成測試,
以檢查與設計相關(guān)的軟件體系結構的有關(guān)問(wèn)題。確認測試主要檢查已實(shí)現的軟件是否滿(mǎn)足需求規格說(shuō)明書(shū)中確定了的各種需求。系統測試指把已確認的軟件與其他系統元素結合在一起進(jìn)行測試。
單元測試主要針對模塊的以下五個(gè)基本特征進(jìn)行測試:模塊接口、局部數據結構、重要的執行路徑、錯誤處理、邊界條件。
在單元測試時(shí),需要為被測模塊設計驅動(dòng)模塊和樁模塊。
驅動(dòng)模塊的作用是用來(lái)模擬被測模塊的上級調用模塊,它只完成接受測試數據,以上級模塊調用被測模塊的格式驅動(dòng)被測模塊,接收被測模塊的測試結果并輸出。
樁模塊用來(lái)代替被測試模塊所調用的模塊。它的作用是返回被測試模塊所需的信息。
集成測試是指在單元測試的基礎上,將所有模塊按照設計要求組裝成一個(gè)完整的系統進(jìn)行的測試,故也稱(chēng)組裝測試或聯(lián)合測試。
集成測試的方法主要有兩種:非漸增式測試和漸增式測試。
非漸增式方法把單元測試和集成測試分成兩個(gè)不同的階段。P97
漸增式測試有以下兩種不同的組裝模塊的方法:自頂向下結合(深度優(yōu)先策略、寬度優(yōu)先策略);自底向上結合
確認測試又稱(chēng)有效性測試。它的任務(wù)是檢查軟件的功能與性能是否與需求規格說(shuō)明書(shū)中確定的指標相符合,確認測試階段有兩項工作:進(jìn)行確認測試與軟件配置審查。
確認測試一般是在模擬環(huán)境下運用黑盒測試方法,由專(zhuān)門(mén)測試人員和用戶(hù)參加的測試。
軟件配置審查的任務(wù)是檢查軟件的所有文檔資料的完整性、正確性。如發(fā)現遺漏和錯誤,應補充和改正。
軟件測試的目的是盡可能多地發(fā)現程序中的錯誤,而調試則是在進(jìn)行了成功的測試之后才開(kāi)始的工作,因此調試也稱(chēng)為糾錯。
歸納法調試從測試結果發(fā)現的線(xiàn)索入手,分析它們之間的聯(lián)系,導出錯誤原因的假設,然后再證明或否定這個(gè)假設。
步驟:收集有關(guān)數據;組織數據;提出假設;證明假設
演繹法調試是列出所有可能的錯誤原因的假設,然后利用測試數據排除不適當的假設,最后再測試數據驗證余下的假設確實(shí)是出錯的原因。
步驟:列出所有可能的錯誤原因的假設;排除不適當的假設;精化余于的假設;證明余于的假設。
回溯法調試:該方法從程序產(chǎn)生錯誤的地方出發(fā),人工沿程序的邏輯路徑反向搜索,直到找到錯誤原因為止。
第8章
軟件維護的內容有四種:校正性維護,適應性維護,完善性維護和預防性維護。
校正性維護:為了識別和糾正錯誤,修改軟件性能上的缺陷,應進(jìn)行確定和修改錯誤的過(guò)程,這個(gè)過(guò)程就稱(chēng)為校正性維護。
適應性維護:為了使應用軟件適應硬件和軟件環(huán)境的變化而修改軟件的過(guò)程稱(chēng)為適應性維護。
完善性維護:增加軟件功能、增強軟件性能、提高軟件運行效率而進(jìn)行的維護活動(dòng)稱(chēng)為完善性維護。
預防性維護:為了提高軟件的可維護性和可靠性而對軟件進(jìn)行的修改稱(chēng)為預防性維護。
軟件的開(kāi)發(fā)過(guò)程對軟件的維護有較大的影響。若不采用軟件工程的方法開(kāi)發(fā)軟件,則軟件只有程序而無(wú)文檔,維護工作非常困難,這是一種非結構化的維護。若采用軟件工程的方法開(kāi)發(fā)軟件,則各階段都有相應的文檔,容易進(jìn)行
維護工作,這是一種結構化的維護。
用于軟件維護工作的活動(dòng)可分為生產(chǎn)性活動(dòng)和非生產(chǎn)性活動(dòng)兩種。生產(chǎn)性活動(dòng)包括分析評價(jià)、修改設計和編寫(xiě)程序代碼等。非生產(chǎn)性活動(dòng)包括理解程序代碼功能、解釋數據結構接口特點(diǎn)和設計約束。P106
維護的流程:制定維護申請報告;審查申請報告并批準;進(jìn)行維護并做詳細記錄;覆審。
維護申請報告是一種由用戶(hù)生產(chǎn)的文檔,它用作計劃維護任務(wù)的基礎。
不管維護類(lèi)型如何,大體上要開(kāi)展相同的技術(shù)工作。這些工作包括修改軟件設計、必要的代碼修改、單元測試、集成測試、確認測試以及復審。
有兩類(lèi)維護技術(shù),它們是面向維護的技術(shù)和維護支援技術(shù)。面向維護的技術(shù)是在軟件開(kāi)發(fā)階段用來(lái)減少錯誤、提高軟件可維護性的技術(shù)。維護支援技術(shù)是在軟件維護階段用來(lái)提高維護作業(yè)的效率和質(zhì)量的技術(shù)。這些技術(shù)方法都能
減少軟件錯誤,提高軟件的可維護性。
因修改軟件而造成的錯誤或其他不希望出現的情況稱(chēng)為維護的副作用。(編碼副作用、數據副作用、文檔副作用)在軟件交付這前對整個(gè)軟件配置進(jìn)行評審,以減少文檔副作用。
軟件可維護性的定義:軟件能夠被理解、校正、適應及增強功能的容易程度。
軟件的可維護性、可使用性、可靠性是衡量軟件質(zhì)量的幾個(gè)主要特性。軟件的可維護性可用下面七個(gè)質(zhì)量特性可來(lái)衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對不同類(lèi)型的維護,這七種特性
的側重點(diǎn)也不相同。
提高可維護性的方法:建立明確的軟件質(zhì)量目標;利用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和工具;建立明確的質(zhì)量保證工作;選擇可維護的程序設計語(yǔ)言;改進(jìn)程序文檔。
為了保證可維護性,以下四類(lèi)檢查是非常有用的:在檢查點(diǎn)進(jìn)行檢查;驗收檢查;周期性的維護檢查;對軟件包的檢查。
kingwang
2004-7-20
17:15:25 第9章
傳統的瀑布模型本質(zhì)上是一種線(xiàn)性順序模型,各階段之間存在著(zhù)嚴格的順序性和依賴(lài)性,特別強調預先定義需求的重要性。
瀑布模型屬于整體開(kāi)發(fā)模型,它規定在開(kāi)始下一個(gè)階段的工作之前,必須完成前一階段的所有細節。而增量模型屬于非整體開(kāi)發(fā)模型,它推遲某些階段或所有階段中的細節,從而較早的產(chǎn)生工作軟件。
增量模型是在項目的開(kāi)發(fā)過(guò)程中以一系列的增量方式開(kāi)發(fā)系統。增量方式包括增量開(kāi)發(fā)和增量提交。增量開(kāi)發(fā)是指在項目開(kāi)發(fā)周期內,以一定的時(shí)間間隔開(kāi)發(fā)部分工作軟件;增量提交是指在項目開(kāi)發(fā)周期內,以一定的時(shí)間間隔增
量方式向用戶(hù)提交工作軟件及相應文檔。
根據增量的方式和形式的不同,分為漸增模型和原型模型。
漸增模型是瀑布模型的變種,有兩類(lèi)漸增模型:
1增量構造模型:它在瀑布模型基礎上,對一些階段進(jìn)行整體開(kāi)發(fā),對另一些階段進(jìn)行增量開(kāi)發(fā)。前面的開(kāi)發(fā)階段按瀑布模型進(jìn)行整體開(kāi)發(fā),后面的開(kāi)發(fā)階段按增量方式開(kāi)發(fā)。
2演化提交模型:它在瀑布模型的基礎上,所有階段都進(jìn)行增量開(kāi)發(fā),也就是說(shuō)不僅是增量開(kāi)發(fā),也是增量提交。
原形模型又稱(chēng)快速原形模型,它是增量模型的另一種形式。根據原型的不同作用,有三類(lèi)原型模型:
1探索型原型:這種類(lèi)型的原型模型是把原型用于開(kāi)發(fā)的需求分析階段,目的是要弄清用戶(hù)的需求,確定所期望的特性,并探索各種方案的可行性。它主要針對開(kāi)發(fā)目標模糊,用戶(hù)與開(kāi)發(fā)都對項目都缺乏經(jīng)驗的情況,通過(guò)對原型
的開(kāi)發(fā)來(lái)明確用戶(hù)的需求。
2實(shí)驗型原型:主要用于設計階段,考核實(shí)現方案是否合適,能否實(shí)現。
3演化型原型:主要用于及早向用戶(hù)提交一個(gè)原型系統,該原型系統或者包含系統的框架,或者包含系統的主要功能,在得到用戶(hù)的認可后,將原型系統不斷擴充演變?yōu)樽罱K的軟件系統。它將原型的思想擴展到軟件開(kāi)發(fā)的全過(guò)程
。
軟件開(kāi)發(fā)中的原型是軟件的一個(gè)早期可運行的版本,它反映了最終系統的重要特性。
快速原型是利用原型輔助軟件開(kāi)發(fā)的一種新思想。經(jīng)過(guò)簡(jiǎn)單快速分析,快速實(shí)現一個(gè)原型,用戶(hù)與開(kāi)發(fā)者在試用原型過(guò)程中加強通信與反饋,通過(guò)反覆評價(jià)和改進(jìn)原型,減少誤解,彌補遺漏,適應變化,最終提高軟件質(zhì)量。
由于運用原形的目的和方式不同,在使用原型時(shí)也采取不同的策略,有拋棄策略和附加策略。
1拋棄策略:用于開(kāi)發(fā)過(guò)程某一階段(探索型和實(shí)驗型快速原型就是采用此策略)
2附加策略:由基本核心開(kāi)始(演化型快速原型就采用此策略)
對于探索型,用原型過(guò)程來(lái)代替需求分析,把原型作為需求說(shuō)明的補充形式,運用原型盡可能使需求說(shuō)明完整、一致、準確、無(wú)二義性,但在整體上仍采用瀑布模型。
對于實(shí)驗型,用原形過(guò)程來(lái)代替設計階段,即在設計階段引入原型,快速分析實(shí)現方案,快速構造原形,通過(guò)運行,考察設計方案的可行性與合理性,原型成為設計的總體框架或設計結果的一部分。
對于演化型,用原型過(guò)程來(lái)代替全部開(kāi)發(fā)階段,這是典型的演化提交模型的形式,它是有強有力的軟件工具和環(huán)境支持下,通過(guò)原型過(guò)程的反覆循環(huán),直接得到軟件系統。
原形開(kāi)發(fā)步驟:快速分析、構造原形、運行原型、評價(jià)原型、修改
構造原型的技術(shù):可執行的規格說(shuō)明;基于腳本的設計;采用非常高級語(yǔ)言或專(zhuān)門(mén)語(yǔ)言;能重用軟件。
kingwang
2004-7-20
17:15:49 第10章
對象具有狀態(tài)。一個(gè)對象用數據值來(lái)描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實(shí)現了數據和操作的結合,使數據和操作封裝于對象的統一體中。
具有相同或相似性質(zhì)的對象的抽象就是類(lèi)。因此,對象的抽象是類(lèi),類(lèi)的具體化就是對象,也可以說(shuō)類(lèi)的實(shí)例是對象。
類(lèi)具有屬性,它是對象的狀態(tài)的抽象,用數據結構來(lái)描述類(lèi)的屬性。
類(lèi)具有操作,它是對象的行為的抽象,用操作名和實(shí)現該操作的方法來(lái)描述。
在客觀(guān)世界中有若干類(lèi),這些類(lèi)之間有一定的結構關(guān)系。通常有兩種主要的結構關(guān)系,即一般――具體結構關(guān)系,整體――部分結構關(guān)系。
一般――具體結構稱(chēng)為分類(lèi)結構,也可以說(shuō)是“或”關(guān)系,或者是“is a”關(guān)系。
整體――部分結構稱(chēng)為組裝結構,它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。
在類(lèi)的層次結構中,通常上層類(lèi)稱(chēng)為父類(lèi)或超類(lèi),下層類(lèi)稱(chēng)為子類(lèi)。
對象之間進(jìn)行通信的構造叫做消息。在對象的操作中,當一個(gè)消息發(fā)送給某個(gè)對象時(shí),消息包含接收對象去執行某種操作的信息。接收消息的對象經(jīng)過(guò)解釋?zhuān)缓蠼o予響應。這種通信機制稱(chēng)為消息傳遞。
類(lèi)中操作的實(shí)現過(guò)程叫做方法,一個(gè)方法有方法名、參數、方法體。當一個(gè)對象接收一條消息后,它所包含的方法決定對象怎樣動(dòng)作。
面向對象的特征:對象惟一性;分類(lèi)性;繼承性;多態(tài)性(多形性)。
子類(lèi)只繼承一個(gè)父類(lèi)的數據結構方法,則稱(chēng)為單重繼承。
子類(lèi)繼承了多個(gè)父類(lèi)的數據結構和方法,則稱(chēng)為多重繼承。
面向對象的要素:
1抽象:是指強調實(shí)體的本質(zhì)、內在的屬性,忽略一些無(wú)關(guān)緊要的屬性。類(lèi)實(shí)現了對象的數據(即狀態(tài))和行為的抽象,它是對象的共性的抽象。
2封裝性:是指所有軟件部件內部都有明確的范圍以及清楚的外部邊界。每個(gè)軟件部件都有友好的界面接口,軟件部件的內部實(shí)現與外部可訪(fǎng)問(wèn)性分離。
3共享性(3個(gè)級別):面向對象技術(shù)在不同級別上促進(jìn)了共享。同一個(gè)類(lèi)中的共享――同一個(gè)類(lèi)中的對象有著(zhù)相同數據結構,也有著(zhù)相同的行為特征。在同一個(gè)應用中共享――在同一應用的類(lèi)層次結構中,存在繼承關(guān)系的各相
似子類(lèi)中,存在數據結構和行為的繼承,使各相似子類(lèi)共享共同的結構和行為。在不同應用中的共享。
面向對象開(kāi)發(fā)方法有coad方法、booch方法、omt方法和oose方法等。
Booch方法通過(guò)分析正文描述,將其中的名詞映射為對象,將其中的動(dòng)詞映射為方法,從而為對象和方法的認定提供了一種簡(jiǎn)單的策略。雖然booch方法原是面向ada語(yǔ)言的,但仍處于面向對象開(kāi)發(fā)的奠基性地位。
Coad方法完成了從需求角度出發(fā)的對象和分類(lèi)結構的認定工作,面向對象設計可以在此基礎上,從設計的角度進(jìn)一步進(jìn)行類(lèi)和類(lèi)層次結構的認定。
Omt方法是一種新興的面向對象的開(kāi)發(fā)方法,開(kāi)發(fā)工作的基礎是對真實(shí)世界的對象建模,然后圍繞這些對象使用分析模型來(lái)進(jìn)行獨立于語(yǔ)言的設計。
Uml語(yǔ)言不公統一了booch方法、omt方法、oose方法的表示方法,而且對其作了進(jìn)一步的發(fā)展,最終統一為大眾所接受的標準建模語(yǔ)言。
對象模型表示了靜態(tài)的、結構化的系統數據性質(zhì),描述了系統的靜態(tài)結構,它是從客觀(guān)世界實(shí)體的對象關(guān)系角度來(lái)描述。表現了對象的相互關(guān)系。該模型主要關(guān)心系統中對象的結構,屬性和操作,使用了對象圖的工具來(lái)刻劃,它
是分析階段三個(gè)模型的核心。
屬性指的是類(lèi)中對象所具有的性質(zhì)(數據值)。不同對象的同一屬性可以具有相同或不同的屬性值。
操作是類(lèi)中對象所使用的一種功能或變換。類(lèi)中的各對象可以共享操作。方法是類(lèi)的操作的實(shí)現步驟。
鏈表示對象間的物理與概念聯(lián)結,關(guān)聯(lián)表示類(lèi)之間的一種關(guān)系,就是一些可能的鏈的集合,鏈是關(guān)聯(lián)的實(shí)例,關(guān)聯(lián)是鏈的抽象。兩個(gè)類(lèi)之間的關(guān)聯(lián)稱(chēng)為二元關(guān)聯(lián),三個(gè)類(lèi)之間的關(guān)聯(lián)稱(chēng)為三元關(guān)聯(lián)。
1聚集關(guān)系。聚集是一種“整體――部分”關(guān)系。在這種關(guān)系中,有整體類(lèi)和部分類(lèi)之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對性。
2一般化關(guān)系
一般化關(guān)系是在保留對象差異的同時(shí)共享對象相似性的一種高度抽象方法。它是“一般--具體”的關(guān)系,一般化類(lèi)又稱(chēng)父類(lèi),具體類(lèi)又稱(chēng)子類(lèi)。
繼承有單重繼承和多重繼承。單重繼承指的是子類(lèi)只有一個(gè)父親,在一個(gè)類(lèi)層次結構中,若只有單重繼承,則該類(lèi)層次結構是樹(shù)型層次結構。多重繼承指的是子類(lèi)繼承了多個(gè)父類(lèi)的性質(zhì),在一個(gè)類(lèi)層次結構中,若有多重繼承,則
該類(lèi)層次結構是網(wǎng)狀層次結構。
動(dòng)態(tài)模型是與時(shí)間和變化有關(guān)的系統性質(zhì)。該模型描述了系統的控制結構,它表示了瞬時(shí)的、行為化的系統控制性質(zhì),它關(guān)心的是系統的控制,操作的執行順序,它從對象的事件和狀態(tài)的角度出發(fā),表現了對象的相互行為。
該模型描述的系統懺屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。
現實(shí)世界中,各對象之間相互觸發(fā),一個(gè)觸發(fā)行為就是一個(gè)事件。對事件的響應取決于接受該觸發(fā)的對象的狀態(tài),響應包括狀態(tài)的改變或形成一個(gè)新的觸發(fā)。事件可以看成是信息從一個(gè)對象到另一個(gè)對象的單向傳遞。各事件將信
息從一個(gè)對象傳到另一個(gè)對象中去,因此要確定各事件的發(fā)送對象和接收對象。事件跟蹤圖用來(lái)表示事件、事件的接收對象和發(fā)送對象。
狀態(tài)是對象屬性值的抽象,狀態(tài)指明了對象對輸入事件的響應。
狀態(tài)圖反映了狀態(tài)與事件的關(guān)系,狀態(tài)圖確定了由事件序列引起的狀態(tài)序列。
活動(dòng)是一種有時(shí)間間隔的操作,它是依附于狀態(tài)的操作。
動(dòng)作是一種瞬時(shí)操作,它是與事件聯(lián)系在一起的操作。
功能模型描述了系統的所有計算。功能模型指出發(fā)生了什么,動(dòng)態(tài)模型確定什么時(shí)候發(fā)生,而對象模型確定發(fā)生的客體。功能模型由多張數據流圖組成。
數據流圖中包含有處理、數據流、動(dòng)作對象和數據存儲對象。
功能模型用來(lái)說(shuō)明值是如何計算的,表明值之間的依賴(lài)關(guān)系及其相關(guān)的功能,數據流圖有助于表示功能依賴(lài)關(guān)系,其中的處理對應于狀態(tài)圖的活動(dòng)和動(dòng)作,其中的數據流對應于對象圖中的對象或屬性。
操作與對象模型中屬性和關(guān)聯(lián)的查詢(xún)有關(guān),與動(dòng)態(tài)模型的事件有關(guān),與功能模型的處理有關(guān)。
瀑布模型把設計進(jìn)一步劃分成概要設計和詳細設計兩個(gè)階段,類(lèi)似地,也可以把面向對象設計再細分為系統設計和對象設計。系統設計確定實(shí)現系統的策略和目標系統的高層結構。對象設計確定解空間中的類(lèi)、關(guān)聯(lián)、接口形式及
實(shí)現操作的算法。
面向對象設計的準則:模型化;抽象;信息隱蔽;低耦合;高內聚(操作內聚、類(lèi)內聚、一般――具體內聚)
在面向對象方法中,信息隱蔽通過(guò)對象的封裝性來(lái)實(shí)現。類(lèi)結構分離了與實(shí)現,從而支持了信息隱蔽。
kingwang
2004-7-20
17:16:11 第11章
軟件質(zhì)量定義:
1與所確定的功能和性能需求的一致性?!?
2與所成文的開(kāi)發(fā)標準的一致性。
3與所有專(zhuān)業(yè)開(kāi)發(fā)的軟件所期望的隱含特性的一致性。
軟件質(zhì)量保證就是向用戶(hù)及社會(huì )提供滿(mǎn)意的高質(zhì)量的產(chǎn)品,確保軟件產(chǎn)品從誕生到消亡為止的所有階段的質(zhì)量的活動(dòng),即確定、達到和維護需要的軟件質(zhì)量而進(jìn)行的所有有計劃、有系統的管理活動(dòng)。
軟件質(zhì)量保證應從產(chǎn)品計劃和設計開(kāi)始,直到投入使用和售后服務(wù)的軟件生存期的每一階段中的每一步驟。
為了提高軟件的質(zhì)量,軟件質(zhì)量保證的任務(wù)大致可歸結為以下幾點(diǎn):
1正確定義用戶(hù)要求
2技術(shù)方法的應用
3提高軟件開(kāi)發(fā)的工程能力
4軟件的復用
5發(fā)揮每個(gè)開(kāi)發(fā)者的能力
6組織外部力量協(xié)作
7排除無(wú)效勞動(dòng)
8提高計劃和管理質(zhì)量。
軟件質(zhì)量必須在設計和實(shí)現過(guò)程中加以保證,為了確保每個(gè)開(kāi)發(fā)過(guò)程的質(zhì)量,防止把軟件差錯傳遞到下一個(gè)過(guò)程,必須進(jìn)行質(zhì)量檢驗。因此須在軟件開(kāi)發(fā)工程的各個(gè)階段實(shí)施檢驗,檢驗的實(shí)施有兩種形式:實(shí)際運行檢驗(即白盒
測試和黑盒測試)和鑒定??稍诟鏖_(kāi)發(fā)階段中結合起來(lái)使用。
針對面向軟件產(chǎn)品的運行、修正、轉移,軟件質(zhì)量概念包括11個(gè)特性:(面向軟件產(chǎn)品操作)正確性、可靠性、效率、完整性、可性。(面向軟件產(chǎn)品修改)可維護性、可測試性、適應性。(面向軟件產(chǎn)品適應)可移植性、可
重用性、可互操作性
ISO三層次中的第一層為質(zhì)量特性,第二層為質(zhì)量子特性、第三層為度量。
軟件復雜性主要表現在程序的復雜性。程序的復雜性主要指模塊內程序的復雜性。它直接關(guān)聯(lián)到軟件開(kāi)發(fā)費用的多少、開(kāi)發(fā)周期長(cháng)短和軟件內部潛伏錯誤的多少。
軟件可靠性是指在給定的時(shí)間內,在規定的環(huán)境條件下系統完成所指定的功能的概率。
通常,把“質(zhì)量”理解為“用戶(hù)滿(mǎn)意程序”。
1設計的規格說(shuō)明書(shū)要符合用戶(hù)的要求。
2程序要按照設計規格說(shuō)明所規定的情況正確執行。
我們把上述條件1稱(chēng)為“設計質(zhì)量”,把條件2稱(chēng)為“程序質(zhì)量”。
軟件的規格說(shuō)明分為外部規格說(shuō)明和內部規格說(shuō)明。外部規格說(shuō)明是從用戶(hù)角度來(lái)看的規格,包括硬件/軟件系統設計(在分析階段進(jìn)行)、功能設計(在需求分析階段與概要設計階段進(jìn)行)。而內部規格說(shuō)明是為了實(shí)現外部規
格的更詳細的規格,即軟件模塊結構與模塊處理過(guò)程的設計(在概要設計與詳細設計階段進(jìn)行)。因此,內部規格說(shuō)明是從開(kāi)發(fā)者角度來(lái)看的規格說(shuō)明。將上述兩概念聯(lián)系起來(lái),因此,設計質(zhì)量是由外部規格說(shuō)明決定的,程序質(zhì)
量是由內部規格說(shuō)明決定的。
設計質(zhì)量評審的對象是在需求分析階段產(chǎn)生的軟件需求規格說(shuō)明、數據需求規格說(shuō)明,在軟件概要設計階段產(chǎn)生的軟件概要設計說(shuō)明書(shū)等。
程序質(zhì)量評審通常它是從開(kāi)發(fā)者的角度進(jìn)行評審,直接與開(kāi)發(fā)技術(shù)有關(guān)。它是著(zhù)眼于軟件本身的結構、與運行環(huán)境的接口、變更帶來(lái)的影響而進(jìn)行的評審活動(dòng)。
提高軟件質(zhì)量和可靠性的技術(shù)大致可分為兩類(lèi),一類(lèi)是避開(kāi)錯誤技術(shù),即在開(kāi)發(fā)的過(guò)程中不讓差錯潛入軟件的技術(shù);另一類(lèi)是容錯技術(shù),即對某些無(wú)法避開(kāi)的差錯,使其影響減到最小的技術(shù)。避開(kāi)錯誤技術(shù)是進(jìn)行質(zhì)量管理,實(shí)現
產(chǎn)品應有質(zhì)量所必不可少的技術(shù)。
實(shí)現容錯技術(shù)的主要手段是冗余。冗余是指實(shí)現系統規定功能是多余的那部分資源,包括硬件、軟件、信息和時(shí)間。(結構冗余、信息冗余、時(shí)間冗余、冗余附加技術(shù))
第12章
軟件工程管理的具體內容包括對開(kāi)發(fā)人員、組織機構、用戶(hù)、文檔資料等方面的管理。
軟件開(kāi)發(fā)人員一般分為:項目負責人、系統分析員、高級程序員、初級程序員、資料員和其他輔助人員。
軟件開(kāi)發(fā)的組織機構沒(méi)有統一的模式:主程序員組織機構;專(zhuān)家組織機構;民主組織機構。
控制包括進(jìn)度控制、人員控制、經(jīng)費控制和質(zhì)量控制。
在軟件項目管理過(guò)程中一個(gè)關(guān)鍵的活動(dòng)是制定項目計劃,它是軟件開(kāi)發(fā)工作的第一步。軟件項目計劃是由系統分析員與用戶(hù)共同經(jīng)過(guò)“可行性研究與計劃”階段后制定的。所以軟件項目計劃是可行性研究階段的結果產(chǎn)品。但由于
可行性研究是在高層次進(jìn)行系統分析,未能考慮軟件系統開(kāi)發(fā)的細節情況,因此軟件項目計劃一般在需求分析階段完成后才定稿的。軟件項目計劃包括兩個(gè)任務(wù):研究與估算。即通過(guò)研究確定該軟件項目的主要功能、性能和系統
界面。
軟件工程規范可選用現成的各種規范,也可自己制定。目前軟件工程規范可分為三級:國家標準與國際標準;行業(yè)標準與工業(yè)部門(mén)標準;企業(yè)級標準與開(kāi)發(fā)小組級標準。
風(fēng)險分析實(shí)際上就是貫穿在軟件工程中的一系列風(fēng)險管理步驟,其中包括風(fēng)險識別、風(fēng)險估計、風(fēng)險管理策略、風(fēng)險解決和風(fēng)險監督。
軟件配置管理,簡(jiǎn)稱(chēng)SCM,它用于整個(gè)軟件工程過(guò)程。其主要目標是:標識變更;控制變更;確保變更正確地實(shí)現;報告有關(guān)變更。SCM是一組管理整個(gè)軟件生存期各階段中變更的活動(dòng)。軟件配置項(SCI)是軟件工程中
產(chǎn)生的信息項。
軟件工程過(guò)程中某一階段的變更,均要引起軟件配置的變更,這種變更必須嚴格加以控制和管理,保持修改信息,并把精確、清晰的信息傳遞到軟件工程過(guò)程的下一步驟。
變更控制包括建立控制點(diǎn)和建立報告與審查制度。其中“檢出”和“登入”處理實(shí)現了兩個(gè)重要的變更控制要素,即存取控制和同步控制。存取控制管理各個(gè)用戶(hù)存取和修改一個(gè)特定軟件配置對象的權限。同步控制可用來(lái)確保由
不同用戶(hù)所執行的并發(fā)變更。
軟件工程標準的類(lèi)型也是多方面的。它可能包括過(guò)程標準(如方法、技術(shù)、度量等)、產(chǎn)品標準(如需求、設計、部件、描述、計劃報告等)、專(zhuān)業(yè)標準(如職別、道德、準則、認證、特許、課程等),以及記法標準(如術(shù)語(yǔ)、
表示法、語(yǔ)言等)。
根據軟件工程標準制定的機構與適用的范圍,它分為國際標準、國家標準、行業(yè)標準、企業(yè)規范及項目(課題)規范五個(gè)等級。
kingwang
2004-7-20
17:16:31 第13章
軟件開(kāi)發(fā)環(huán)境是指相關(guān)的一組軟件工具集合,它支持一定的軟件開(kāi)發(fā)方法或按照一定的軟件開(kāi)發(fā)模型組織而成。
軟件開(kāi)發(fā)環(huán)境的目標是提高軟件開(kāi)發(fā)的生產(chǎn)率和軟件產(chǎn)品的質(zhì)量。因而理想的軟件開(kāi)發(fā)環(huán)境應是能支持整個(gè)軟件生存期階段的開(kāi)發(fā)活動(dòng),并能支持各種處理模型的軟件方法學(xué),同時(shí)實(shí)現這些開(kāi)發(fā)方法的自動(dòng)化。
按解決的問(wèn)題分類(lèi):程序設計環(huán)境;系統合成環(huán)境;項目管理環(huán)境。
按軟件開(kāi)發(fā)環(huán)境的演變趨向分類(lèi):以語(yǔ)言為中心的環(huán)境;工具箱環(huán)境;基于方法的環(huán)境。
按集成化程度分類(lèi):第一代;第二代;第三代。
軟件工具是指為支持計算機軟件的開(kāi)發(fā)、維護、模擬、移植或管理而研制的程序系統。開(kāi)發(fā)軟件工具的主要目的是為了提高軟件生產(chǎn)率和改善軟件的質(zhì)量。
軟件工具通常由工具、工具接口和工具用戶(hù)接口三部分構成。工具通過(guò)工具接口與其他工具、操作系統或網(wǎng)絡(luò )操作系統,以及通信接口、環(huán)境信息庫接口等進(jìn)行交互作用。當工具需要與用戶(hù)進(jìn)行交互作用時(shí)則通過(guò)工具的用戶(hù)接口
。
軟件工具的發(fā)展有以下特點(diǎn):
1軟件工具由單個(gè)工具向多個(gè)工具集成化方向發(fā)展。
2重視用戶(hù)界面的設計
3不斷地采用新理論和新技術(shù)。
4軟件工具的商品化推動(dòng)了軟件產(chǎn)業(yè)的發(fā)展,而軟件產(chǎn)業(yè)的發(fā)展,又增加了對軟件工具的需求,促進(jìn)了軟件工具的商品化進(jìn)程。
CASE是一組工具和方法的集合,可以輔助軟件開(kāi)發(fā)生命周期各階段進(jìn)行軟件開(kāi)發(fā)。CASE把軟件開(kāi)發(fā)技術(shù)、軟件工具和軟件開(kāi)發(fā)方法集成到一個(gè)統一而一致的框架中,并且吸收了CAD、軟件工程、操作系統、數據庫、網(wǎng)
絡(luò )和許多其他計算機領(lǐng)域的原理和技術(shù)。
CASE系統所涉及到的技術(shù)有兩類(lèi):一類(lèi)是支持軟件開(kāi)發(fā)過(guò)程本身的技術(shù),如支持規約、設計、實(shí)現、測試等;另一類(lèi)是支持軟件開(kāi)發(fā)過(guò)程管理的技術(shù),如支持建模、過(guò)程管理等。
CASE集成:
1平臺集成:工具運行在相同的硬件/操作系統平臺上。
2數據集成:工具使用共享數據模型來(lái)操作。
3表示集成:工具提供相同的用戶(hù)界面。
4控制集成:工具激活后能控制其他工具的操作。
5過(guò)程集成:工具在一個(gè)過(guò)程模型和“過(guò)程機“的指導下使用。
數據集成指不同軟件工程能相互交換數據。因而,一個(gè)工具的結果能作為另一個(gè)工具的輸入。有許多不同級別的數據集成:1共享文件;2共享數據結構;3共享倉庫。
表示集成或用戶(hù)界面集成意指一個(gè)系統中的工具使用共同的風(fēng)格,以及采用共同的用戶(hù)交互標準集。工具有一個(gè)相似的外觀(guān)。目前,表示集成有如下三種不同級別:1窗口系統集成;命令集成;交互集成。
控制集成支持工作臺或環(huán)境中一個(gè)工具對系統中其他工具的訪(fǎng)問(wèn)。
過(guò)程集成意指CASE系統嵌入了關(guān)于過(guò)程活動(dòng)、階段、約束和支持這些活動(dòng)所需的工具的知識。
一個(gè)CASE工作臺是一組工具集,支持像設計、實(shí)現或測試等特定的軟件開(kāi)發(fā)階段。工作臺工具能通過(guò)共享文件、共享倉庫或共享數據結構來(lái)集成。
原作者: 中國系統分析員
來(lái) 源: 中國系統分析員