第一篇:自考軟件工程總結(jié)
何謂科學,何謂工程?(第一章)
科學是反映自然、社會、思維的發(fā)展與變化規(guī)律的知識體系??茖W(研究)是以發(fā)現(xiàn)為核心的人類活動,探索事物的本質(zhì)和運動規(guī)律,追求真理,認識世界,回答“為什么”,體現(xiàn)非物質(zhì)形態(tài)財富。
工程是與生產(chǎn)、建設相關(guān),運用自然科學理論和技術(shù)原理得以實現(xiàn)的活動(狹)。以構(gòu)建、運行與集成為核心的人類活動,遵循社會需求,追求一定條件下的集成與綜合優(yōu)化。
2什么是可移植性(方法)?P347
把一個程序從一個硬件或軟件系統(tǒng)環(huán)境移植到另一個環(huán)境所需的工作量。
3什么是軟件生存周期?p7
軟件生存周期是軟件產(chǎn)品從形成概念,經(jīng)過開發(fā)、使用和維護直至最后退役的全過程。大致分為如下6個階段計算機系統(tǒng)工程、需求分析、設計、編碼、測試、運行和維護
4.什么是可維護性p347
定位和修復程序中一個錯誤所需的工作量。
5文檔功能是記錄軟件-____開發(fā)___活動和階段成果,能供人和機器閱讀,是有永久保存屬性。
6.計算機軟件是指與計算機系統(tǒng)有關(guān)的程序、規(guī)則、規(guī)程有任何與之有關(guān)的文檔和數(shù)據(jù)。包括機器可執(zhí)行的程序及有關(guān)數(shù)據(jù);機器不可執(zhí)行的與軟件開發(fā)、運行、維護、使用和培訓有關(guān)的文檔。P1 程序:用程序設計語言描述的,計算機能夠處理的語言序列。
文檔:一種數(shù)據(jù)媒體及其上所記錄的數(shù)據(jù)。文檔(功能/作用)記錄軟件開發(fā)活動和階段成果,能供人和機器閱讀,具有永久保存屬性。
7軟件開發(fā)包括哪些階段,主要解決什么問題?P19
概念定義,具體包括計劃和需求分析階段,主要解決做什么的問題。
開發(fā),具體包括設計,編碼,測試階段,主要解決怎么做的問題。
使用維護,即運行維護階段,包括些交付、安裝、運行、維護和退役等。
8.軟件概念定義包括那三部分,主要解 決什么問題。P4P1
(英文:Software)是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。一般來講劃分為系統(tǒng)軟件、支撐軟件和應用軟件。
9軟件需求是指用戶對目標系統(tǒng)在功能、行為、性能、設計、約束等方面的 期望P48
10.什么是模塊?
模塊指具有一定功能的可以用名字調(diào)用的程序語句集合。
模塊化是指把一個待開發(fā)的軟件劃分成若干小的簡單部件,每個部件稱為一個模塊,每個模塊完成一個相對獨立的一個子功能,所有這些模塊集成起來就可以完成軟件系統(tǒng)的指定功能,滿足問題的要求。P66 模塊化的目的是使程序的結(jié)構(gòu)清晰,易閱讀、易測試和修改。采用模塊化方法,可以控制復雜問題的求解規(guī)模,減低問題復雜度和減少求解成本。
11什么 模塊耦合度,什么是模塊內(nèi)聚度?P68
耦合是一個軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間互相連接(依賴)的緊密程度。
耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。耦合度衡量不同模塊彼此間相互依賴的緊密程度。
內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。好內(nèi)聚的模塊只做一件事情。內(nèi)聚度衡量同一個模塊內(nèi)部的各個元素彼此結(jié)合的緊密程度。
模塊的獨立性可以由兩項指標來衡量:內(nèi)聚度與耦合度。.結(jié)構(gòu)圖最主要的質(zhì)量指標是模塊的 內(nèi)聚度和 偶合度。(第五章)
13在設計用戶界面(也稱人機界面)的過程中,幾乎總會遇到系統(tǒng)響應時間,用戶求助機制,出錯--信息處理和命令交互方式四個方面的問題。P242
14.什么是系統(tǒng)響應時間?P242
系統(tǒng)響應時間指從用戶執(zhí)行某個控制動作(如按回車鍵或單擊鼠標)到軟件做出響應(期望的輸出或動作)的時間。
15簡答有哪三類人機界面設計指南(黃金原則)?p243
讓用戶擁有控制權(quán);減少用戶的記憶負擔;保持界面一致
16.簡述什么是編碼?第十章P251
編碼就是把軟件設計結(jié)果翻譯成用某種程序設計語言書寫的程序。
17何謂程序設計風格或編碼風格?P255
程序設計風格指一個人編制程序時所表現(xiàn)出來的特點,習慣邏輯思路等.在程序設計中要使程序結(jié)構(gòu)合理、清晰,形成良好的編程習慣,對程序的要求不僅是可以在機器上執(zhí)行,給出正確的結(jié)果,而且要便于程序的調(diào)試和維護,這就要求編寫的程序不僅自己看得懂,而且也要讓別人能看懂。
包括4個方面:源程序文檔化、數(shù)據(jù)說明、語句結(jié)構(gòu)、和輸入輸出。256
編寫規(guī)則:文檔化、結(jié)構(gòu)化、模塊化、節(jié)簡化、簡單化、格式化。
18.為一個開發(fā)項目選擇程序設計語言時,通常會考慮 項目所屬的領(lǐng)域 ;算法和計算復雜性;軟件運行環(huán)境;用戶需求中關(guān)于性能方面的要求;數(shù)據(jù)結(jié)構(gòu)的復雜性,軟件開發(fā)人員的知識水平因素。P255 19軟件測試的目標是什么?P263PPT 第11章
軟件測試就是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤,進而改正錯誤的過程。發(fā)現(xiàn)和改正錯誤越多,交付的軟件就質(zhì)量越高,后期糾錯性維護就越少。測試是一項很艱苦的工作,也是一項“建設性”活動
測試目標1.期望用最少的時間和人力找出軟件中潛在的各種錯誤和缺陷 2.證明軟件的功能和性能與規(guī)格說明的吻合程度3.為可靠性分析提供依據(jù) 4.通常測試每一種可能情況是不現(xiàn)實的5.沒有發(fā)現(xiàn)程序中的錯誤,并不能證明軟件沒有錯誤
20.基本路徑測試的基本思想是什么?P273程序環(huán)路復雜性有什么意義?PPT 第11章
基本思想:根據(jù)軟件詳細設計或代碼中的控制結(jié)構(gòu)流程確定復雜度,然后以該復雜度定義執(zhí)行路徑的基本集合,并由此導出一組測試用。
程序的環(huán)路復雜性確定程序基本路徑集合中的獨立路徑條數(shù)。獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。用流圖術(shù)語描述,一條獨立路徑至少包含一條在其他獨立路徑中從沒有過的邊的路徑。21簡析等價類劃分法?P277PPT 第11章
等價類劃分法是把程序的輸入數(shù)據(jù)集合按輸入條件劃分成若干個等價類,每一個等價類相對于輸入條件表示為一組有效或無效的輸入,然后據(jù)此為每一個等價類設計一個測試用例。
22.簡述驅(qū)動模塊和樁模塊的作用? PPT 第11章
驅(qū)動模塊調(diào)用被測模塊,接收測試輸入數(shù)據(jù)并把這些數(shù)據(jù)傳送給被測試的模塊,被測模塊調(diào)用后,驅(qū)動模塊接受被測模塊的返回數(shù)據(jù)。
樁模塊也叫存根模塊,它代替被測試的模塊所調(diào)用的模塊。樁模塊使用被它代替的模塊的接口,但內(nèi)部只做少量的數(shù)據(jù)操作,并且把控制和模擬結(jié)果歸還給調(diào)用它的模塊。
23為何要引入驅(qū)動模塊和樁模塊? PPT 第11章
驅(qū)動模塊和樁模塊是測試使用的軟件,它們不是軟件的組成部分,但需要一定的開發(fā)費用。簡單的驅(qū)動模塊和樁模塊不能完成某些模塊的測試任務,只能在集成測試過程中同時完成對這些模塊的詳盡測試。
引用驅(qū)動模塊和樁模塊原則有:單元測試通常與編碼工作結(jié)合起來,通常,模塊本身不是一個獨立的程序,因此在測試模塊中必須為每一個被測模塊開發(fā)一個(引用)驅(qū)動模塊和若干個樁模塊。
24.何謂調(diào)試? PPT 第11章
調(diào)試,又名排錯,它是根據(jù)測試出問題的外部現(xiàn)象(又名錯誤或外錯),分析找出問題的內(nèi)在原因(又名故障或內(nèi)錯)并加以改正的代碼執(zhí)行與人工活動。調(diào)試的任務就是確定錯誤的準確位置(定位錯誤)、分析引發(fā)錯誤的原因,最終排除錯誤。
黑盒測試(行為測試)檢查程序功能是否符合按照規(guī)格說明書的規(guī)定,測試只在程序界面上進行。包括等價類劃分、邊界值分析、比較測試、錯誤猜測何因果圖方法。
白盒測試(結(jié)構(gòu)測試)檢驗程序中的每條邏輯通路能否都按預定要求正確工作,測試按照程序內(nèi)部的邏輯進行。包括邏輯覆蓋測試、基本路徑測試、數(shù)據(jù)流測試和循環(huán)測試。
25旅行社把預定機票的旅客信息,如姓名、年齡、單位、身份證號、旅行時間、目的地等輸入預定機票系統(tǒng),系統(tǒng)為旅客安排航班,打印出取票通知單(附有應交的賬款)旅客在飛機起飛前交付票款,系統(tǒng)檢查無誤后,輸出機票給旅客。
試用結(jié)構(gòu)化分析方法描述系統(tǒng)的邏輯模型(系統(tǒng)的功能需求)并建立相應的數(shù)據(jù)字典,要求數(shù)據(jù)字典中至少包括一個數(shù)據(jù)流、一個數(shù)據(jù)文件、一個加工的詳細的定義。
26.為方便儲戶,某銀行擬開發(fā)計算機儲蓄管理系統(tǒng),儲戶填寫的存款單或取款單由銀行柜臺業(yè)務員鍵入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名,住址,存款日期,利率等信息,并印出存款單給儲戶;如果是取款,系統(tǒng)進行取款處理并印出結(jié)算單給儲戶,請用結(jié)構(gòu)化分析方法描述系統(tǒng)的邏輯模型(系統(tǒng)的功能需求),并建立相應的數(shù)據(jù)字典,要求數(shù)據(jù)字典中至少包括一個數(shù)據(jù)流,一個文件和一個加工的詳細定義。
第二篇:自考軟件工程筆記總結(jié)
第一章 緒論
1.1 軟件工程的產(chǎn)生
1.1.1 軟件的特點
軟件的定義:計算機程序及其說明程序的各種文檔 軟件的特性:
(1)軟件是一種邏輯產(chǎn)品,它與物質(zhì)產(chǎn)品有很大的區(qū)別
(2)軟件產(chǎn)品的生產(chǎn)主要是研制,軟件產(chǎn)品的成本主要體現(xiàn)在軟件的開發(fā)和研制上,軟件開發(fā)研制完成后,通過復制就產(chǎn)生了大量軟件產(chǎn)品
(3)軟件產(chǎn)品不會用壞,不存在磨損、消耗問題
(4)軟件產(chǎn)品的生產(chǎn)主要是腦力勞動,還未完全擺脫手工開發(fā)方式,大部分產(chǎn)品是“定做”的
(5)軟件費用不斷增加,軟件成本相當昂貴
1.1.2 軟件生產(chǎn)的發(fā)展
1)程序設計時代(1946年~1956年)
這個階段的生產(chǎn)方式是個體手工勞動,使用的工具是機器語言、匯編語言。
開發(fā)方法是追求編程技巧,追求程序運行效率 程序難讀、難懂、難修改
硬件特征是價格貴、存儲容量小、運行可靠性差
軟件特征是只有程序、程序設計概念,不重視程序設計方法 2)程序系統(tǒng)時代(1956年~1968年)
這個階段的生產(chǎn)方式是作坊式的小集團合作生產(chǎn),生產(chǎn)工具是高級語言
開發(fā)方式仍舊靠個人技巧,但開始提出結(jié)構(gòu)化方法
硬件特征是速度、容量、工作可靠性有明顯提高,價格降低,銷售有爆炸性增長
軟件特征是程序員數(shù)量猛增,大量其他行業(yè)人員進入這個行業(yè),因為缺乏訓練,因而開發(fā)人員素質(zhì)差
這時已意識到軟件開發(fā)的重要性,但開發(fā)技術(shù)沒有新的突破,大量軟件開發(fā)的需求已提出,但開發(fā)人員的素質(zhì)和落后的開發(fā)技術(shù)不適應規(guī)模大、結(jié)構(gòu)復雜的軟件開發(fā),產(chǎn)生了尖銳的矛盾,導致了軟件危機的產(chǎn)生
3)軟件工程時代(1968年至現(xiàn)在)
這階段的生產(chǎn)方式是工程化的生產(chǎn),使用數(shù)據(jù)庫、開發(fā)工具、開發(fā)環(huán)境、網(wǎng)絡、分布式、面向?qū)ο蠹夹g(shù)來開發(fā)軟件
硬件特征是向超高速、大容量、微型化以及網(wǎng)絡化方向發(fā)展
軟件特征是開發(fā)技術(shù)有很大進步,但是未能獲得突破性進展,軟件價格不斷上升,沒有完全擺脫軟件危機
1.1.3 軟件危機
1.軟件危機的產(chǎn)生
軟件發(fā)展到第二階段末期,軟件開發(fā)技術(shù)的進步跟不上硬件發(fā)展的速度
2.軟件危機的表現(xiàn) 1.1.4(1)經(jīng)費預算經(jīng)常突破,完成時間一再拖延(2)開發(fā)的軟件不能滿足用戶要求(3)開發(fā)的軟件可維護性差(4)開發(fā)的軟件可靠性差 3.軟件危機的原因
(1)軟件的規(guī)模越來越大,結(jié)構(gòu)越來越復雜(2)軟件開發(fā)管理困難而復雜(3)軟件開發(fā)費用不斷增加(4)軟件開發(fā)技術(shù)落后(5)生產(chǎn)方式落后(6)開發(fā)工具落后 軟件工程
1968年北大西洋公約組織的工作會議上首先提出“軟件工程”的概念,要用工程化的思想來開發(fā)軟件 1.軟件工程定義
用科學知識和技術(shù)原理來定義、開發(fā)、維護軟件的一門科學 2.軟件工程的性質(zhì)
軟件工程是一門綜合性的交叉學科,涉及計算機科學、工程科學、管理科學、數(shù)學等領(lǐng)域
計算機科學中的研究成果均可用于軟件工程,但計算機科學著重于原理和理論,而軟件工程著重于如何建造一個軟件系統(tǒng)
軟件工程要用工程科學中的觀點來進行費用估算、制定進度、制定計劃和方案
軟件工程要用管理科學的方法和原理進行軟件的生產(chǎn)和管理 軟禁工程要用數(shù)學的方法建立軟件開發(fā)中各個種模型和各種算法 3.軟件工程目標
目的是成功的建造一個大型軟件系統(tǒng) 所謂成功,是要達到
付出較低的開發(fā)成本
達到要求的軟件功能
取得較好的軟件性能
開發(fā)的軟件易于移植
需要較低的維護費用
能按時完成開發(fā)任務,及時交付使用
開發(fā)的軟件可靠性高 4.軟件工程內(nèi)容
主要是軟件開發(fā)技術(shù)和軟件管理兩個方面
軟件開發(fā)技術(shù)中主要研究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境
軟件開發(fā)管理中主要研究軟件管理學、軟件經(jīng)濟學、軟件心理學 5.軟件工程面臨的問題
a)軟件費用 b)軟件可靠性 c)軟件維護 d)軟件生產(chǎn)率 e)軟件重用
1.2 軟件工程過程和軟件生存周期
1.2.1 軟件工程過程
目的是為各種人員提供一個公共的框架,以便用相同的語言進行交流
(1)獲取過程(2)供應過程(3)開發(fā)過程(4)操作過程(5)維護過程(6)管理過程(7)支持過程 1.2.2 軟件生存周期
指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個過程
(1)可行性分析和項目開發(fā)計劃
必須要回答的問題是“要解決的問題是什么”,有可行的解決辦法嗎,如果有需要多少費用多少資源時間 明確項目性質(zhì) 明確項目目標 明確項目規(guī)模
確定該問題有沒有可行的解決辦法 指定項目開發(fā)計劃(2)需求分析
確定軟件系統(tǒng)必須做什么
確定軟件系統(tǒng)必須具備哪些功能(3)概要設計
把確定的各項功能需求轉(zhuǎn)換成需要的體系結(jié)構(gòu) 設計軟件的結(jié)構(gòu),明確該結(jié)構(gòu)的模塊組成(4)詳細設計
為每個模塊完成的功能進行具體描述,把功能描述轉(zhuǎn)變?yōu)榫_地、結(jié)構(gòu)化的過程描述(5)編碼
把每個模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計算機可接受的程序代碼,即寫成以某種特定程序設計語言表示的“原程序清單”(6)測試
保證軟件質(zhì)量的重要手段(7)維護
1.3 軟件生存周期模型、方法和工具
1.3.1 軟件生存周期模型
描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型 1.瀑布模型
將軟件生存周期各個活動規(guī)定為依線性順序連接的若干階段的模型 包括所有的軟件生存周期環(huán)節(jié),規(guī)定了由前至后、相互銜接的固定次序 1.3.2 缺點:
理想的線性開發(fā)模式,缺乏靈活性
開發(fā)過程中用戶看不到軟件是什么樣子,造成開發(fā)方向錯誤 2.增量模型
一種非整體開發(fā)的模型,軟件在該模型中是“逐漸”開發(fā)出來的,開發(fā)一部分展示一部分,可以及早發(fā)現(xiàn)問題?;蛘唛_發(fā)一個“原型”軟件,完成部分主要功能再逐步完善
具有較大的靈活性,適合于軟件需求不明確、設計方案有一定風險的軟件項目 缺點:
對于復雜的大型軟件,開發(fā)一個原型往往達不到要求 3.螺旋模型
將瀑布模型與增量模型結(jié)合起來,加入了兩種模型均忽略了的風險分析
開發(fā)過程分為幾個螺旋周期,每個螺旋周期大致和瀑布模型相符合 每個周期內(nèi)分四個工作不:制定計劃、風險分析、開發(fā)實施、用戶評估
適合于大型軟件的開發(fā) 缺點:
需要有相當豐富的風險評估經(jīng)驗和專門知識,使得應用受到一定限制 4.噴泉模型
一種以用戶需求為動力,以對象作為驅(qū)動的模型,適合于面向?qū)ο蟮拈_發(fā)方法
克服了瀑布模型不支持軟件重用和多想開發(fā)活動集成的局限性 是開發(fā)過程具有迭代性和無間隙性 5.基于知識的模型
又稱只能模型,它把瀑布模型和專家系統(tǒng)結(jié)合在一起 還處于研究實驗階段,還未達到實用階段 6.變換模型
適合于形式化開發(fā)的模型 軟件開發(fā)方法
使用早已定義好的技術(shù)集和符號表示習慣來組織軟件生產(chǎn)的過程 1.結(jié)構(gòu)化方法
由結(jié)構(gòu)化分析,結(jié)構(gòu)化設計、結(jié)構(gòu)化程序設計構(gòu)成,是一種面向數(shù)據(jù)流的開發(fā)方法。簡單實用,應用較廣,技術(shù)成熟 2.Jackson方法
面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法 3.維也納開發(fā)方法(VDM)
一種形式化的開發(fā)方法,軟件需求用嚴格的形式語言描述,然后把描述模型逐步變換成目標系統(tǒng) 4.面向?qū)ο蟮拈_發(fā)方法
90年代主流
基本出發(fā)點是盡可能按照人類認識世界的方法和思維方式來分析和解決問題
包括面向?qū)ο蠓治?、面向?qū)ο笤O計、面向?qū)ο髮崿F(xiàn)
1997年推出統(tǒng)一建模語言UML,是面向?qū)ο蟮臉藴式UZ言
1.3.3 軟件開發(fā)工具
1. 軟件工具的重要性
為了支持軟件人員開發(fā)和維護活動而使用的軟件
項目估算工具、需求分析工具、編碼工具、測試工具、維護工具等 2. 工具箱
將各種軟件工具簡單組合起來就構(gòu)成工具箱
工具箱的工具界面不同意,工具內(nèi)部無聯(lián)系,工具切換由人工操作 3. 軟件開發(fā)環(huán)境
工具系統(tǒng)的整體化及集成化,使之形成完整的軟件開發(fā)環(huán)境 使軟件工具支持整個生存周期 4. 計算機輔助軟件工程
新的軟件工具目的是實現(xiàn)軟件生存周期各個環(huán)節(jié)的自動化,主要用于軟件的分析和設計,使用這些工具開發(fā)人員可以以對話的方式建立各種軟件系統(tǒng)
計算機輔助軟件工程可以簡單的定義為軟件開發(fā)的自動化,CASE 結(jié)構(gòu)化方法可以用于瀑布模型、增量模型、螺旋模型進行開發(fā) Jackson方法可以用于瀑布模型、增量模型 維也納方法只能用于變換模型進行開發(fā)
第二章 軟件可行性研究與項目開發(fā)計劃
2.1 可行性研究
目的是用最小的代價在盡可能短的時間內(nèi)去確定該項目是否能夠開發(fā),是否值得開發(fā)
在較高層次上以較抽象的方式進行需求分析和設計過程 2.1.1 可行性研究的任務
進行概要的分析研究,初步確定項目的規(guī)模和目標,確定項目的約束和限制,列舉出來。然后進行簡要的需求分析,抽象出項目的邏輯結(jié)構(gòu),建立邏輯模型,從邏輯模型出發(fā)經(jīng)過壓縮的設計,探索出若干種可供選擇的解決辦法,對每種解決方法都要研究它的可行性
可以從以下三個方面分析研究每種解決方法的可行性
1.技術(shù)可行性、技術(shù)可行性一般要考慮的情況包括(1)開發(fā)的風險(2)資源的有效性(3)技術(shù)
(4)開發(fā)人員在評估技術(shù)可行性時,一旦估計錯誤,將會出現(xiàn)災難性后果
2.經(jīng)濟可行性
進行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項目是否值得投資開發(fā) 3.社會可行性
要開發(fā)的項目時候存在任何侵犯、妨礙等責任問題,要開發(fā)項目的運行方式在用戶組織內(nèi)是否行得通,現(xiàn)有管理制度、人員素質(zhì)、操作方式是否可行
2.1.2 可行性研究的具體步驟
1.確定項目規(guī)模和目標
2.研究正在運行的系統(tǒng)
3.建立新系統(tǒng)的高層邏輯模型
使用建立邏輯模型的工具——數(shù)據(jù)流圖和數(shù)據(jù)字典描述數(shù)據(jù)在系統(tǒng)中的流動和處理情況。不是需求分析階段,不是完整詳細的描述,只是概括的描述高層的數(shù)據(jù)處理和流動
4.導出和評價各種方案
5.推薦可行的方案
6.編寫可行性研究報告
2.1.3 可行性研究報告的主要內(nèi)容
1.引言
2.可行性研究前提
3.對象有系統(tǒng)的分析
4.所建議系統(tǒng)的技術(shù)可行性分析
5.所建議系統(tǒng)的經(jīng)濟可行性分析
6.社會因素可行性分析
7.其他可供選擇方案
8.結(jié)論意見 2.2 系統(tǒng)流程圖
1.系統(tǒng)流程圖的作用
用圖形符號來表示系統(tǒng)中的各個元素。表達了系統(tǒng)中各個元素之間的心理流動的情況
2.系統(tǒng)流程圖的符號
3.系統(tǒng)流程圖的例子
2.3
成本——效益分析
目的是從經(jīng)濟角度評價開發(fā)一個新的軟件項目是否可行
估算將要開發(fā)的系統(tǒng)的開發(fā)成本,與可能取得的效益進行比較和權(quán)衡 效益分有形效益和無形效益 有形效益的分析 1. 貨幣的時間價值 2. 投資回收期 3. 純收入 2.4 項目開發(fā)計劃
1.項目概述
2.實施計劃
3.人員組織及分工
4.交付期限
第三章 軟件需求分析
3.1 需求分析的任務
3.1.1 需求分析的概念
開發(fā)人員要準確的理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義裝換到相應的形式功能規(guī)約(需求規(guī)格說明)的過程 需求分析的難點:(1)問題的復雜性(2)交流障礙
(3)不完備性和不一致性(4)需求易變性
軟件需求分析與說明的方法適用的基本原則:(1)必須能夠表達和理解問題的數(shù)據(jù)域和功能域
(2)可以把一個復雜問題按功能進行分解并可逐層細化(3)建模
結(jié)構(gòu)化分析方法和面向?qū)ο蠓治龇椒ǘ甲裱陨显瓌t
3.1.2 需求分析的基本任務
要準確的定義新系統(tǒng)的目標,為了滿足用戶的需要,回答系統(tǒng)必須“做什么”的問題??尚行匝芯亢蛙浖媱濍A段對這個問題的回答是概括的、粗略的 本階段主要進行以下幾個方面的工作: 1.問題識別
雙方確定對問題的綜合需求,這些需求包括:
(1)功能需求:所開發(fā)的系統(tǒng)必須具備什么樣的功能,這是最重要的(2)性能需求:待開發(fā)的軟件的技術(shù)性能指標。存儲容量,運行時間(3)環(huán)境需求:軟件運行時所需要的軟、硬件的要求
(4)用戶界面需求:人機交互方式、輸入輸出數(shù)據(jù)格式等等
另外還有可靠性、安全性、保密性、可移植性、可維護性等方面的需求 2.分析與綜合,導出軟件的邏輯模型
對獲取的需求,進行分析檢查,逐步細化軟件的功能,劃分成各個子功能,以確定系統(tǒng)的構(gòu)成及主要成分,建立新系統(tǒng)的邏輯模型 3.編寫文檔
(1)編寫“需求規(guī)格說明書”(2)編寫初步用戶使用手冊(3)編寫確認測試計劃(4)修改完善軟件開發(fā)計劃
3.1.3 需求規(guī)格說明書主要內(nèi)容 3.2 結(jié)構(gòu)化分析方法
簡稱SA,是面向數(shù)據(jù)流進行需求分析的方法
3.2.1 自頂向下逐層分解的分析策略
對一個復雜問題分析人員不可能一開始就考慮到問題的所有方面及全部細節(jié),對此采取的策略是分解,把一個復雜問題劃分成若干小問題,然后分別解決,將問題的復雜性降低到人可以掌握的程度
分解可分層進行,先考慮問題最本質(zhì)的方面,忽略細節(jié)形成問題的高層概念,然后逐層添加細節(jié)。頂層抽象的概括整個系統(tǒng),底層具體畫出系統(tǒng)的每個細節(jié),中間層是逐步過渡
這種層次分解使分析人員分析問題時不至于一下子陷入細節(jié),而是逐步的去了解更多細節(jié)
依照這個策略,對于任何復雜的系統(tǒng),分析工作都可以有計劃、有步驟、有條不紊的進行
3.2.2 描述工具
SA方法的描述工具是:
(1)數(shù)據(jù)流圖(2)數(shù)據(jù)字典
(3)描述加工邏輯的結(jié)構(gòu)化語言、判定表、判定樹
數(shù)據(jù)流圖描述系統(tǒng)的分解,及系統(tǒng)由哪幾部分組成,各部分之間的聯(lián)系等等 數(shù)據(jù)字典定義了數(shù)據(jù)流圖中每一個圖形元素 結(jié)構(gòu)化語言、判定便或判定樹詳細描述數(shù)據(jù)流圖中不能被再分解的每一個加工
3.2.3 SA分析步驟
(1)了解當前系統(tǒng)的工作流程,獲得當前系統(tǒng)的物理模型(2)抽象出當前系統(tǒng)的邏輯模型(3)建立目標系統(tǒng)的邏輯模型(4)做進一步補充和優(yōu)化
3.3 數(shù)據(jù)流圖(DFD)
簡稱DFD,是SA方法中表示系統(tǒng)邏輯模型的一種工具,只反應系統(tǒng)必須完成的邏輯功能,所以是一種功能模型
3.3.1 基本圖形符號
數(shù)據(jù)流圖有四種基本圖形符號:
(1)數(shù)據(jù)流。是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,由一組成分固定的數(shù)據(jù)項組成,必須有流向,除了與數(shù)據(jù)存儲之間的數(shù)據(jù)流不用命名,其他用名詞或名詞短語命名
(2)加工(又稱為數(shù)據(jù)處理)。對數(shù)據(jù)流進行某些操作或變換。加工用動詞短語命名
(3)數(shù)據(jù)存儲(又稱為文件)。指暫時保存的數(shù)據(jù),它可以是數(shù)據(jù)庫文件或任何形式的數(shù)據(jù)組織。流向數(shù)據(jù)存儲的數(shù)據(jù)流可以理解為寫入文件或查詢文件,流出的數(shù)據(jù)可以理解為從文件讀取數(shù)據(jù)或得到查詢結(jié)果
(4)數(shù)據(jù)源點或終點:軟件系統(tǒng)外部環(huán)境中的實體(包括人員、組織或其他軟件系統(tǒng)),統(tǒng)稱為外部實體
在一張圖上可重復畫同名的源/終點,在方框的右下角加斜線則表示是一個實體。有時數(shù)據(jù)存儲也需重復標識
3.3.2 畫數(shù)據(jù)流圖的步驟
按問題的層次結(jié)構(gòu)進行逐步分解,并以一套分層的數(shù)據(jù)流圖反應這種結(jié)構(gòu)關(guān)系
(1)首先畫系統(tǒng)的輸入輸出,即先畫頂層數(shù)據(jù)流圖。
頂層流圖只包含一個加工,用以表示被開發(fā)的系統(tǒng),然后考慮系統(tǒng)的輸入輸出數(shù)據(jù)。頂層圖的作用在于表明被開發(fā)的系統(tǒng)范圍以及它與周圍化境的數(shù)據(jù)交換關(guān)系
(2)畫系統(tǒng)內(nèi)部,即畫下層數(shù)據(jù)流圖。一般將層號從0開始編號,采用自頂向下,由外向內(nèi)的原則。一般沿著輸入流的方向,凡數(shù)據(jù)流的組成或值發(fā)生變化的地方則設置一個加工,這樣一直進行到輸出數(shù)據(jù)流。知道每一個加工足夠簡單,不能再分解為止,不能再分解的加工稱為基本加工(3)注意事項
a)命名
b)畫數(shù)據(jù)流而不是控制流
圖中不反應加工的執(zhí)行順序 c)一般不畫物質(zhì)流
d)每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流,反映出此加工數(shù)據(jù)的來源與加工的結(jié)果 e)編號
子圖的編號就是父圖中相應加工的編號,加工的編號由子圖號,小數(shù)點和局部號組成 f)父圖與子圖的平衡
子圖的輸入輸出數(shù)據(jù)流同父圖相應加工的輸入輸出數(shù)據(jù)流必須一致 保證了數(shù)據(jù)流圖的一致性 g)局部數(shù)據(jù)存儲
h)提高數(shù)據(jù)流圖的易理解性
注意合理分解
為了使數(shù)據(jù)流圖便于在計算機上輸入與輸出,以下給出了描述數(shù)據(jù)流圖的另一套基本符號
3.3.3 實例——售票管理系統(tǒng)
3.4 數(shù)據(jù)字典(DD)
簡稱DD,用來定義數(shù)據(jù)流圖中各個成分的具體含義,它以一種準確的、無二義性的說明方式為系統(tǒng)的分析、設計及維護提供了有關(guān)元素的一致的定義和詳細的描述 它和數(shù)據(jù)流圖共同構(gòu)成了系統(tǒng)的邏輯模型,是需求規(guī)格說明書的主要組成部分
3.4.1 數(shù)據(jù)字典的內(nèi)容及格式
數(shù)據(jù)字典是為分析人員查找數(shù)據(jù)流圖中有關(guān)名字的詳細定義而服務的,因此也像普通字典一樣,要把所有條目按一定的次序排列起來,以便查閱 數(shù)據(jù)字典有以下四類條目: 數(shù)據(jù)流 數(shù)據(jù)項 數(shù)據(jù)存數(shù) 基本加工
數(shù)據(jù)項是組成數(shù)據(jù)流和數(shù)據(jù)存儲的最小元素。源點終點一般不在字典中說明 1.數(shù)據(jù)流條目
數(shù)據(jù)流條目給出了DFD中數(shù)據(jù)流的定義,通常列出數(shù)據(jù)流的各組成數(shù)據(jù)項
在定義數(shù)據(jù)流或數(shù)據(jù)存儲組成時,使用下表給出的符號:
2.數(shù)據(jù)存儲條目
數(shù)據(jù)存儲條目是對數(shù)據(jù)存儲的定義,主要內(nèi)容舉例如下:
3.數(shù)據(jù)項條目 數(shù)據(jù)項條目是不可再分解的數(shù)據(jù)單位,其定義格式及舉例如下:
4.加工條目
加工條目是用來說明DFD中基本加工的處理邏輯的,由于上層的加工是由下層的基本加工分解而來,只要有了基本加工的說明,就可理解其他加工
加工條目的內(nèi)容及舉例如下:
數(shù)據(jù)字典中的加工邏輯主要描述該加工“做什么”,即實現(xiàn)加工的策略,而不是實現(xiàn)加工的細節(jié),它描述如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則。加工邏輯有幾種常用的描述方法,結(jié)構(gòu)化語言、判定表、判定樹
3.4.2 數(shù)據(jù)字典的實現(xiàn)
建立數(shù)據(jù)字典一般有兩種形式:
1.手工建立:數(shù)據(jù)字典的內(nèi)容用卡片形式存放
(1)按四類條目規(guī)范的格式印制卡片(2)在卡片上分別填寫各類條目的內(nèi)容
(3)先按圖號順序排列,同一圖號的所有條目按數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲和數(shù)據(jù)加工的順序排列(4)同一圖號中的同一類條目(如數(shù)據(jù)流卡片)可按名字的字典順序存放,加工一般按編號順序存放
(5)統(tǒng)一成分在父圖和子圖都出現(xiàn)時,則只在父圖上定義(6)建立索引目錄
2.利用計算機輔助建立并維護(1)編制一個“字典生成與管理程序”,可以按規(guī)定的格式輸入各類條目,能對字典條目增、刪、改,能打印查詢報告和清單,能進行完整性一致性檢查。美國密執(zhí)安大學研究的PSL/PSA就是這樣一個系統(tǒng)(2)利用已有的數(shù)據(jù)庫開發(fā)工具,針對數(shù)據(jù)字典建立一個數(shù)據(jù)庫文件,可將數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲和加工分別以矩陣表的形式來描述各個表項的內(nèi)容,如數(shù)據(jù)流的矩陣表為:
有的DBMS本身包含一個數(shù)據(jù)字典子系統(tǒng),建庫時能自動生成數(shù)據(jù)字典
計算機輔助開發(fā)數(shù)據(jù)字典比手工建立數(shù)據(jù)字典有更多的優(yōu)點,能保證數(shù)據(jù)的一致性和完整性,使用也方便,但增加了技術(shù)難度與積極開銷
3.5 加工邏輯的描述
加工邏輯也稱為“小說明”,描述加工邏輯一般用一下三種工具:
結(jié)構(gòu)化語言
判定表
判定樹
3.5.1 結(jié)構(gòu)化語言
介于自然語言和形式語言之間的一種半形式語言
結(jié)構(gòu)可分為外層和內(nèi)層兩層:
1.外層:用來描述控制結(jié)構(gòu),采用順序、選擇、重復三種基本結(jié)構(gòu)
(1)順序結(jié)構(gòu):是一組祈使語句、選擇語句、重復語句的順序排列(2)選擇結(jié)構(gòu):一般用IF——THEN——ELSE——ENDIF、CASE——OF——ENDCASE等關(guān)鍵詞(3)重復結(jié)構(gòu):一般用DO——WHILE——ENDDO、REPEAT——UNTIL等關(guān)鍵字
2.內(nèi)層:一般是采用祈使語句的自然語言短語,使用數(shù)據(jù)字典中的名詞和有限的自定義詞,其動詞含義要具體,盡量不用形容詞和副詞來修飾。還可使用一些簡單的算術(shù)運算和邏輯運算符號
3.5.2 判定表
在有些情況下,數(shù)據(jù)流圖中的某個加工的一組動作依賴于多個邏輯條件的取值。這時用判定表就能夠清楚地表示復雜的條件組合與應作的動作之間的對應關(guān)系
判定表由四部分組成,用雙線分隔開四個區(qū)域:
構(gòu)造一張判定表,可采取以下步驟: 1.提取問題中的條件 2.標出條件的取值
3.計算所有條件的組合數(shù)N 4.提取可能采取的動作或措施 5.制作判定表 6.完善判定表
初始的判定表可能不完善,表現(xiàn)在以下幾個方面:(1)缺少判定列中應采取的動作
(2)有冗余的判定列:兩個或多個規(guī)則中,具有相同的動作,而與它所對應的各個條件組合中有取值無關(guān)的條件
判定表能夠把在什么條件下系統(tǒng)應做什么動作準確無誤的表示出來,但不能描述循環(huán)的處理特性,循環(huán)處理還需結(jié)構(gòu)化語言 例子:
3.5.3 判定樹
判定樹是判定表的變形,一般情況下它比判定表更直觀,更易于理解和使用
這三種描述加工邏輯的工具各有優(yōu)缺點
對于順序執(zhí)行和循環(huán)執(zhí)行的動作,用結(jié)構(gòu)化語言描述
對于存在多個條件復雜組合的判斷問題,用判定表和判定樹 判定樹較判定表直觀易讀,判定表進行邏輯驗證較嚴格,能把所有的可能性全部都考慮到,可將兩種工具結(jié)合起來,先用判定表做底稿,在此基礎上產(chǎn)生判定樹
經(jīng)過需求分析,開發(fā)人員已經(jīng)基本上理解了用戶的要求,確定了目標系統(tǒng)的功能,定義了系統(tǒng)的數(shù)據(jù),描述了處理這些數(shù)據(jù)的基本策略。將這些共同的理解進行整理,最后形成文檔——需求說明書
3.6 IDEF方法
IDEF方法是美國空軍在1981年針對集成化計算機輔助制造工程項目中用于進行復雜系統(tǒng)分析和設計的方法。IDEF方法分為三部分:
IDEF0:用來描述系統(tǒng)的功能活動及其聯(lián)系,建立系統(tǒng)的功能模型 IDEF1:用來描述系統(tǒng)的信息及其聯(lián)系,建立系統(tǒng)的信息模型 IDEF2:用來進行系統(tǒng)模擬,建立系統(tǒng)的動態(tài)模型
3.6.1 IDEF0的圖形表示
該方法中,將系統(tǒng)功能稱為活動,將表示系統(tǒng)功能的圖形稱為活動圖形
一個活動可以沒有輸入,但一定要有控制
3.6.2 建立功能模型的基本方法
1.確定建模的范圍、觀點及目的 2.建立系統(tǒng)的內(nèi)外關(guān)系圖——A-0圖 3.建立頂層圖——A0圖 4.建立低層次的圖形
分解時,應遵循兩條原則:
首先,保持在同一水平上分解(寬度優(yōu)先),如A1,A2,A3等圖,而不是A1,A11,A111(深度優(yōu)先),可避免較高層次的變化影響較低層次,造成可能的重復工作,同時可較早的查出錯誤及遺漏
其次,對于同一水平層次上的各個方框,選擇難度最大的部分往下分解,其后分解較容易的部分
在IDEF0圖中幾個活動之間無明確的順序和時間,要注意分解時箭頭表示的上下層之間的平衡關(guān)系。
3.6.3 IDEF0方法的特點
1.采用方框和箭頭等簡單的圖形符號描述系統(tǒng)的活動和數(shù)據(jù)流,描述活動所受到的約束條件及實現(xiàn)機制 IDEF0圖宜作為正式文檔
2.采用嚴格的自頂向下、逐層分解的方式建立系統(tǒng)功能模型
因此,IDEF0是建立系統(tǒng)功能模型的有效方法。在開發(fā)CIMS——計算機集成制造系統(tǒng)的管理信息系統(tǒng)(MIS)過程中,大都采用此方法建立軟件需求分析的功能模型
3.7 結(jié)構(gòu)化分析方法小結(jié)
結(jié)構(gòu)化分析方法是軟件需求分析中公認的、有成效的、技術(shù)成熟、使用廣泛的一種方法,它較適合于開發(fā)數(shù)據(jù)處理型軟件的需求分析 SA方法的弱點主要表現(xiàn)在:(1)不適合描述實時控制系統(tǒng)(2)
(3)
(4)
(5)為了解決實時軟件的需求分析,提出了控制流圖(CFD)的定義,也有用描述系統(tǒng)動態(tài)行為的狀態(tài)轉(zhuǎn)換圖(STD)代替CFD SA方法使用DFD在分析與描述“數(shù)據(jù)要求”方面是有局限的
數(shù)據(jù)庫技術(shù)使許多大型數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)都組織成數(shù)據(jù)庫的形式,DFD應與數(shù)據(jù)庫技術(shù)中的實體聯(lián)系圖(ER圖)結(jié)合起來 DFD不適合描述人機界面系統(tǒng)的需求
對于一些頻繁的人機交互的軟件系統(tǒng),SA方法往往對這一部分用自然語言做補充,對這類系統(tǒng)可采用其它的分析方法(如面向?qū)ο蠓治龇椒ǎ┎槐阌趯崿F(xiàn)自動化
SA方法可與形式化方法結(jié)合起來,形式化是軟件自動化發(fā)展的基礎 形式化方法典型的有基于模型的Z語言及VDM開發(fā)方法 需求分析的質(zhì)量及效率不夠高 可以借助需求分析工具提高
第三篇:自考軟件工程問答總結(jié)
一.什么是軟件
1.滿足功能要求和性能的指令或計算機程序集合;2.處理信息的數(shù)據(jù)結(jié)構(gòu);3.描述程序功能以及程序如何操作和使用所要求的文檔;
二.軟件危機以及產(chǎn)生軟件危機的原因
1.軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機迅速普及的趨勢.軟件產(chǎn)品“供不應求”.2.軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升.3.軟件開發(fā)人員和用戶之間的信息交流往往很不充分,用戶對“已完成的”的軟件系統(tǒng)不滿足的現(xiàn)象經(jīng)常發(fā)生.4.軟件產(chǎn)品的質(zhì)量不容易保證.5.軟件產(chǎn)品常常是不可維護的.6.軟件產(chǎn)品的重用性差,同樣的軟件多次重復開發(fā).7.軟件通常沒有適當?shù)奈臋n資料.產(chǎn)生軟件危機的原因可歸結(jié)為兩個重要的方面: 軟件生產(chǎn)本身存在的復雜性;軟件開發(fā)所使用的方法和技術(shù).三.有哪些軟件工程方法學及其要素
1.使用最廣泛的軟件工程方法學是結(jié)構(gòu)化方法學和面向?qū)ο蟮姆椒▽W.2.要素:方法,工具和過程.四.什么是軟件生存周期 有哪些活動
4.1軟件生存周期
一個軟件從提出開發(fā)要求開始到軟件廢棄不用的整個過程.4.2 開發(fā)活動
可行性分析和項目開發(fā)計劃,需求分析和定義,軟件設計(先后細分為:概要設計和詳細設計),編碼,測試和運行維護 4.3 各活動階段主要文檔
4.3.1可行行分析和項目開發(fā)計劃 可性行研究報告 項目開發(fā)計劃
4.3.2需求分析中的文檔 需求規(guī)格說明書 初步用戶使用手冊 確認測試計劃
修改完善的軟件開發(fā)計劃 4.3.3 概要設計階段文檔 概要設計說明書 數(shù)據(jù)庫說明書 用戶手冊
修訂的測試計劃(測試的策略,方法,步驟)4.4.4 詳細設計階段 詳細設計說明書 4.4.5 系統(tǒng)測試階段 系統(tǒng)測試計劃文檔
五.有哪些主要生命周期模型
瀑布模型,原型開發(fā)模型(快速原型模型,演化模型,增量模型),螺旋模型,噴泉模型,基于知識的模型和變化模型.5.1 瀑布模型
瀑布模型(傳統(tǒng)的軟件周期模型)嚴格遵循軟件生命周期各階段的固定順序:計劃,分析,設計,編程,測試和維護,上一階段完成后才能進入到下一階段,整個模型就像一個飛流直下的瀑布 優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法,嚴格規(guī)定了各階段必須提交的文檔;要求每一階段結(jié)束后,都要進行嚴格的評審.與它最相適應的開發(fā)方法是結(jié)構(gòu)化方法.缺點:不適應用戶需求的改動.5.2 原型模型
5.2.1 快速原型模型
快速原型的用途是獲知用戶的真正需求,一旦需求確定了,原型即被拋棄.主要用于需求分析階段.不追求也不可能要求對需求的嚴格定義,而是采用了動態(tài)定義需求的方法,所以不能定義完善的文檔.特征:簡化項目管理,盡快建立初步需求,加強用戶參與和決策.具有廣泛技能水平的原型化人員是原型實施的重要保證.原型化人員應該是具有經(jīng)驗與才干,訓練有素的專業(yè)人員.衡量原型化人員能力的重要標準是他是否能夠從用戶的模糊描述中快速獲取需求.5.2.2 演化模型
在快速原型模型中,原型的用途是獲知用戶的真正需求,一旦需求確定了,原型即被拋棄.而演化模型應用于整個軟件開發(fā)過程,是從初始模型逐步演化為最終軟件產(chǎn)品的漸進過程.也就是說,快速原型模型是一種“拋棄式”的原型化方法,而演化模型則是一種“漸進式”的原型化方法.5.2.3增量模型
增量模型主要用于設計階段,把軟件產(chǎn)品劃分為一系列的增量構(gòu)件,分別進行設計,編程,集成和測試.新的增量構(gòu)件不得破壞已經(jīng)開發(fā)出來的產(chǎn)品 5.2.4 原型模型小結(jié)
從下面的有關(guān)原型化方法的敘述中,選擇出正確的敘述:(1)快速原型方法是一種企圖克服傳統(tǒng)軟件周期模型缺點的開發(fā)方法.(2)在用戶的數(shù)據(jù)資源沒有得到很好地組織和管理的時候,應該使用原型化方法.(3)在用戶沒有明確地肯定其需求的時候,應該使用原型化方法.(4)在用戶不希望把自己的時間花在軟件開發(fā)過程中的時候,應該使用原型化方法.(5)使用原型化方法時應該使用第三代編程語言.(6)原型化加強了開發(fā)過程中用戶的參與和決策.(7)原型化方法大致可分為三類:拋棄式,演化式和遞增式.(8)原型化方法大致可分為演化式和遞增式.(9)采用原型化方法時,軟件的開發(fā)成本較高.(10)采用原型化方法時,關(guān)鍵的因素是建立原形的速度,而不是原形運行的效率.5.3 螺旋模型
螺旋模型綜合了瀑布模型和原型模型中的演化模型的優(yōu)點,還增加了風險分析.螺旋線第一圈的開始點可能是一個概念項目.從第二圈開始,一個新產(chǎn)品開發(fā)項目開始了,新產(chǎn)品的演化沿著螺旋線進行若干次迭代,一直轉(zhuǎn)到軟件生命期結(jié)束.5.4 噴泉模型
噴泉模型主要用于描述面向?qū)ο蟮拈_發(fā)過程.噴泉一詞體現(xiàn)了面向?qū)ο箝_發(fā)過程的迭代和無間隙特征.六.軟件過程基礎知識 6.1 軟件過程
軟件過程是指人們用于開發(fā)和維護軟件及相關(guān)產(chǎn)品的一系列活動,包括軟件工程過程和軟件管理過程.6.2 評估工具
軟件過程的評估,通常采用軟件能力成熟度 模型(Capability Maturity Model,CMM).CMM1.1的5個等級(由低級到高級): 初始級
軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決于個人努力,管理是反應式(消防式)的.可重復級
建立了基本的項目管理過程來跟蹤費用,進度和功能特性.制定了必要的過程紀律,能重復早先類似應用項目取得的成功.已定義級
已將軟件管理和工程兩方面的過程文檔化,標準化,并綜合成該組織的標準化軟件過程.所有項目均使用經(jīng)標準,裁減的標準軟件過程來開發(fā)和維護軟件.已管理級
收集對軟件過程和產(chǎn)品質(zhì)量的詳細度量,對軟件過程和產(chǎn)品都有定量的理解與控制.優(yōu)化級
加強了定量分析,通過來自過程質(zhì)量反饋和來自新觀念,新技術(shù)的反饋使過程能持續(xù)不斷地改進.七.軟件工程項目管理基本知識
軟件項目管理開始于任何技術(shù)活動之前,并且貫穿于整個的軟件生命周期.軟件工程項目管理一般分為時間管理,成本管理,人力資源管理,風險管理.7.1時間管理 7.1.1 Gantt圖
是一種簡單的水平條形圖,它以水平線段表示子任務的工作階段,線段的起點和終點分別對應著子任務的起始時間,線段長度指示完成該任務所需要的時間.甘特圖的優(yōu)點:直觀簡明,易學易繪,可從圖上清楚地標出子任務間的時間對比,但它也有 缺點:
(a)不能顯示地描繪各項彼此間的依賴關(guān)系;(b)進度計劃的關(guān)鍵部分不明顯,難以判斷哪些部分應當是主攻和主控的對象;(c)計劃中有潛力的部分以及潛力的大小不明確,往往造成潛力的浪費.7.1.2 PERT網(wǎng)圖與關(guān)鍵路徑
PERT網(wǎng)圖是一個由箭頭(標識任務)和結(jié)點(標識事件)組成的有向圖.將網(wǎng)絡方法用于工作計劃安排的評審和檢查.開發(fā)模塊A,B,C模塊的任務網(wǎng)絡圖 PERT圖不僅給出了每個任務的開始時間,結(jié)束時間和完成該任務所需的時間,還給出了任務之間的依賴關(guān)系,即哪些任務完成后才能開始另一些任務,以及如期完成整個工程的“關(guān)鍵路徑”.關(guān)鍵路徑(Critical Path)是由一連串的任務所組成的鏈,距離最大的一條路徑.軟件項目的管理人員應該密切注視關(guān)鍵任務的進展情況.如果希望縮短工期,只有往關(guān)鍵任務中增加資源才會有效果.7.2成本管理
一種常用的成本估算方法是先估計完成軟件項目所需的工作量(人月數(shù)),然后根據(jù)每個人月的代價(金額)計算機軟件的開發(fā)費用: 開發(fā)費用 = 人月數(shù)×每個人月的代價
另一種方法是估計軟件的規(guī)模(通常指源代碼行數(shù)),然后根據(jù)每行源代碼的平均開發(fā)費用(包括分析,設計,編碼,測試所花的費用),計算機軟件的開發(fā)費用: 開發(fā)費用=源代碼行數(shù)×每行平均費用
估算源代碼行數(shù)時,可以請n為有經(jīng)驗的專家,每位專家對軟件給出3各估計值: ai---最少源代碼行數(shù)(該軟件可能的最小規(guī)模)bi---最大源代碼行數(shù)(該軟件可能的最大規(guī)模)mi---最可能的代碼行數(shù)(該軟件最可能的規(guī)模)然后計算出每位專家的估算期,n位專家的估算期望值的平均值就是代碼行數(shù)的估算值.7.3 其他管理 人力資源管理 風險管理
風險管理的主要活動有風險識別,風險估算,風險評價和風險控制.八.模塊化基本知識
模塊是指執(zhí)行某一特定任務的數(shù)據(jù)和可執(zhí)行語句程序元素的集合,通常是指可通過名字來訪問的過程,函數(shù),子程序或宏調(diào)用等.模塊化就是將一個待開發(fā)的軟件劃分成若干個可完成某一子功能的模塊,每個模塊可獨立地開發(fā),測試,最后組裝成完整的程序.8.1模塊特性 8.1.1 可分解性
如果一種設計方法提供了將問題分解成子問題的系統(tǒng)化機制,它就能降低整個系統(tǒng)的復雜性,從而實現(xiàn)一種有效的模塊化解決方案.8.1.2 可組裝性
如果一種設計方法使現(xiàn)存的(可復用的)設計構(gòu)件能被組裝成新系統(tǒng),它就能提供一種不需要一切從頭開始的模塊化解決方案.8.1.3 可理解性
如果一個模塊可以作為一個獨立的單位(不用參考其他模塊)被理解,那么它就易于構(gòu)造和修改.8.1.4 連續(xù)性
如果對系統(tǒng)需求的微小修改只導致對單個模塊,而不是整個系統(tǒng)的修改,則修改引起副作用就會被最小化.8.1.5 保護性
如果模塊內(nèi)部出現(xiàn)異常情況,并且它的影響限制在模塊內(nèi)部,不會影響其他模塊,則錯誤引起的副作用就會被最小化.8.2 模塊與模塊的耦合性
耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程序的度量.耦合可以分成下列幾種,它們之間的耦合度由高到低排列.8.2.1 內(nèi)容耦合
直接操作或修改另一模塊的數(shù)據(jù),或不通過正常入口轉(zhuǎn)入另一個模塊.軟件設計時應堅決禁止內(nèi)容耦合,應設計成單入口,單出口的模塊,避免病態(tài)連接.8.2.2 公共耦合
多個模塊引用同一全局數(shù)據(jù)區(qū).例如,C語言中的external數(shù)據(jù)類型,磁盤文件等都是全局數(shù)據(jù)區(qū).8.2.3 外部耦合
模塊與軟件以外的環(huán)境有關(guān)聯(lián).例如,輸入輸出把一個模塊與特定的設備,格式,通信協(xié)議耦合在一起.8.2.4 控制耦合
一模塊明顯把開關(guān)量,名字等信息送入另一模塊,控制另一模塊的功能.8.2.5 標記耦合
兩個模塊之間通過傳遞公共指針或地址相互作用的耦合.8.2.6 數(shù)據(jù)耦合
模塊間通過傳遞數(shù)據(jù)交換信息.8.2.7 非直接耦合(無耦合)模塊間無任何關(guān)系,獨立工作
原則上講,模塊化設計總是希望模塊之間的耦合表現(xiàn)為非直接耦合方式.在以上耦合中,耦合度從高到低,內(nèi)容耦合度最高,非直接耦合度最低.8.3 模塊的內(nèi)聚性
內(nèi)聚是指一個模塊內(nèi)各個元素彼此結(jié)合的緊密程序,它是信息隱蔽和局部的概念的自然擴展.設計時應該力求高內(nèi)聚,理想內(nèi)聚的模塊應當恰好做一件事情.1).偶然內(nèi)聚:一個模塊的各成分之間毫無關(guān)系.比如:一組語句在程序的多處出現(xiàn),為了節(jié)省內(nèi)存空間,這些語句放在一個模塊中,該模塊的內(nèi)聚是偶然內(nèi)聚的.2)邏輯內(nèi)聚:把幾種邏輯上相關(guān)的功能組放在同一模塊中.3)瞬時內(nèi)聚(時間內(nèi)聚):一個模塊所包含的任務必須在同一時間間隔內(nèi)執(zhí)行,例如初始化模塊.4)過程內(nèi)聚:一個模塊的處理元素是相關(guān)的,而且必須按特定的次序執(zhí)行.5)通信內(nèi)聚:一個模塊的所有成分都結(jié)合再同一個數(shù)據(jù)結(jié)構(gòu)上.6)順序內(nèi)聚:模塊的成分同一個功能密切相關(guān),且輸出,作為另外一個成分的輸入.7)功能內(nèi)聚:模塊內(nèi)的所有成分屬于一個整體,完成單一的功能.在以上的內(nèi)聚中,內(nèi)聚度從低到高,偶然內(nèi)聚度最低,功能內(nèi)聚度最高.模塊的高內(nèi)聚,低耦合的原則稱為模塊獨立原則,也稱為模塊設計的原則.8.4 模塊的深度,寬度,扇出與扇入 深度:表示軟件結(jié)構(gòu)中控制的層數(shù).寬度是軟件結(jié)構(gòu)中同一個層次上的模塊總數(shù)的最大值 一個模塊的扇入是指直接調(diào)用該模塊的上級模塊的個數(shù).一個模塊的扇出是指該模塊直接調(diào)用的下級模塊的個數(shù).設計原則:低扇出 高扇入 8.5 模塊作用域和控制域
軟件設計時,模塊的作用域應在控制域之內(nèi).8.6 模塊化基礎知識小結(jié)
通過模塊的合并和分解,降低模塊的耦合度.模塊的扇入應盡量大,扇出應盡量小.一個模
塊的扇入是指直接調(diào)用該模塊的上級模塊的個數(shù).一個模塊的扇出是指該模塊直接調(diào)用的下級模塊的個數(shù).扇入大表示模塊的重用性高,利用率高.扇出大表示模塊的復雜度高.所以要高扇入低扇出.要將模塊的作用范圍限制在模塊的控制范圍之內(nèi).降低模塊之間的復雜性,避免“病態(tài)連接”.九.什么是軟件開發(fā)方法 有哪些主要方法
軟件開發(fā)方法:使用已定義好的技術(shù)集及符號表示習慣組織軟件生產(chǎn)的過程.結(jié)構(gòu)化方法,面向?qū)ο蠓椒?JACKSON方法,維也納開發(fā)方法(VDM).9.1 結(jié)構(gòu)化方法學
結(jié)構(gòu)化方法學也稱為生命周期方法學(瀑布模型方法),是一種面向數(shù)據(jù)流的需求分析方法.它的基本思想是自頂向下逐層分解.為了在需求改變時對軟件的影響較小,結(jié)構(gòu)化分析時應該使程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應.常用工具: 數(shù)據(jù)流圖(DFD),數(shù)據(jù)字典(DD),實例—關(guān)系圖(E—R圖)及描述加工處理的結(jié)構(gòu)化語言,判定表,判定樹.9.1.1數(shù)據(jù)流圖(DFD圖)DFD的基本成分
數(shù)據(jù)流圖主要由4種成分組成
數(shù)據(jù)流(data flow):由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流向.它可以從源,文件流向加工,也可以從加工流向文件和宿,還可以從一個加工流向另一個加工.通常每個數(shù)據(jù)流必須有一個合適的名字,一方面是為了區(qū)別,另一方面也給人一個直觀的印象,使人容易理解這個數(shù)據(jù)流的含義.但流向文件或從文件流出的數(shù)據(jù)流不必命名,因為這種數(shù)據(jù)流的組成部分就是相應文件的組成部分.加工(process):描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流之間的變換,也就是輸入數(shù)據(jù)流做了什么處理后變成了輸出數(shù)據(jù)流.每個加工有一個名字和一個編號.編號反映了該加工位于分層DFD的哪個層次和哪張圖中以及它是哪個加工分解出來的子加工.文件(file):可以表示數(shù)據(jù)文件,也可以表示一個數(shù)據(jù)記錄.流向文件的數(shù)據(jù)流表示寫文件,流出文件的數(shù)據(jù)流表示讀文件,雙向箭頭表示對文件既讀又寫.每個文件都有一個文件名.源/宿(source/sink):源是指系統(tǒng)所需數(shù)據(jù)的發(fā)源地,宿(也稱數(shù)據(jù)池)是指系統(tǒng)所產(chǎn)生的數(shù)據(jù)的歸宿地.無論源或宿,均對應于外部實體,在框內(nèi)應加注實體的名字,在一個軟件各級軟件系統(tǒng)中,有些源和宿可以是一個外部實體,外部實體是指存在于軟件系統(tǒng)之外的人員或組織,它指出系統(tǒng)所需數(shù)據(jù)的發(fā)源地和系統(tǒng)所產(chǎn)生數(shù)據(jù)的歸宿地.分層數(shù)據(jù)流圖
一套分層的的數(shù)據(jù)流圖由頂層,底層,和中間層組成.畫分層數(shù)據(jù)流圖基本原則與注意事項 a.自外向內(nèi),自頂向下,逐層細化,完善 求精.b.保持父圖與子圖的平衡.也就是說,父
圖中某加工的輸入數(shù)據(jù)流中的數(shù)據(jù)必須與它的子圖的輸入數(shù)據(jù)流在數(shù)量和名字上相同.c.保持數(shù)據(jù)守恒.也就是說,一個加工所 有輸出數(shù)據(jù)流中的數(shù)據(jù)必須能從該加工的輸入數(shù)據(jù)流中直接獲得,或者是通過該加工能產(chǎn)生的數(shù)據(jù).c.加工細節(jié)隱藏.根據(jù)抽象原則,在畫父
圖時,只需畫出加工和加工之間的關(guān)系,而不必畫出各個加工內(nèi)部的細節(jié).d.簡化加工間關(guān)系.在數(shù)據(jù)流圖中,加工
間的數(shù)據(jù)流越少,各加工就越相對獨立,所以應盡量減少加工間輸入輸出數(shù)據(jù)流的數(shù)目.e.均勻分解.應該使一個數(shù)據(jù)流中的各個 加工分解層次大致相同.f.適當?shù)貫閿?shù)據(jù)流,加工,文件,源/宿命
名,名字應反映該成分的實際意義,避免空洞的名字.g.忽略枝節(jié).應集中精力于主要的數(shù)據(jù)流, 而暫不考慮一些例外情況,出錯處理等枝節(jié)性問題.h.表現(xiàn)的是數(shù)據(jù)流而不是控制流.i.每個加工必須既有輸入數(shù)據(jù)流,又有輸
出數(shù)據(jù)流.在整套數(shù)據(jù)流圖中,每個文件必須既有讀文件的數(shù)據(jù)流又有寫文件的數(shù)據(jù)流,但在某一張子圖中可能只有讀沒有寫或者只有寫沒有讀.小結(jié):一個軟件系統(tǒng),其數(shù)據(jù)流圖往往有多層.如果父圖有N個加工(Process),則父圖允許有0~N張子圖,但是每張子圖只能對應一張父圖.在一張DFD圖中,任意兩個加工之間可以有0條或多條名字互不相同的數(shù)據(jù)流;在畫數(shù)據(jù)流圖時,應該注意父圖和子圖的平衡,即父圖中某加工的輸入輸出數(shù)據(jù)流必須與其輸入輸出流在數(shù)量和名字上相同.DFD信息流大致可分為兩類:交換流和事務流.9.1.2 數(shù)據(jù)字典
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合也就是對 數(shù)據(jù)流圖中包含的所有元素的定義的集合.組成部分: a.數(shù)據(jù)項條目 b.數(shù)據(jù)流條目 c.文件條目 d.加工條目
加工條目是對數(shù)據(jù)流圖中每一個不能再分 解的基本加工的精確說明.對于加工的描述是數(shù)據(jù)字典的組成內(nèi)容之一,常用的加工描述方法有結(jié)構(gòu)化語言,判定樹和判定表.9.1.3 結(jié)構(gòu)化語言
結(jié)構(gòu)化語言實際上是一種半形式化語言, 它的結(jié)構(gòu)通常可分為內(nèi)外兩層.外層接近于形式化語言,而內(nèi)層近似于自然語言的描述.9.1.4 實體——關(guān)系圖(E—R圖)實體——關(guān)系圖(Entity-Relabionship Diagram),簡稱E-R圖,包含實體,關(guān)系和屬性等3種基本成分.通常用矩形框代表實體,并用直線把實體(或關(guān)系)與其屬性連接起來.E-R圖通常用于數(shù)據(jù)庫應用系統(tǒng).9.2 結(jié)構(gòu)化設計
結(jié)構(gòu)化設計通??煞譃楦乓O計和詳細設計,但是主要用于概要設計階段.概要設計的任務是確定軟件系統(tǒng)的結(jié)構(gòu),進行模塊劃分,確定每個模塊的功能,接口以及模塊間的調(diào)用關(guān)系.詳細設計的任務是為每個模塊設計實現(xiàn)的細節(jié).9.2.1 概要設計
經(jīng)過需求分析階段的工作,系統(tǒng)必須“做什么”已經(jīng)清楚了,概要設計的基本目的就是回答“概括地說,系統(tǒng)應該如實現(xiàn) ”這個問題.概要設計的重要任務:
將一個復雜的系統(tǒng)按功能化分為模塊,確
定每個模塊的功能,確定模塊之間的調(diào)用關(guān)系,確定模塊之間的接口(模塊之間傳遞的信息),評價模塊的結(jié)構(gòu)質(zhì)量.1.軟件結(jié)構(gòu)圖形工具
結(jié)構(gòu)化設計方法(SD)方法采用結(jié)構(gòu)圖(Structure Chart),層次圖和HIPO圖描述軟件結(jié)構(gòu).結(jié)構(gòu)圖的主要成分有模塊,調(diào)用和數(shù)據(jù),結(jié)構(gòu)圖中的模塊用矩形表示,在矩形框內(nèi)可標上模塊的名字.模塊間如有箭頭或直線相連,表明它們之間有調(diào)用關(guān)系.層次圖用來描繪軟件的層次結(jié)構(gòu).層次圖中一個矩形框代表一個模塊,方框間的連線表示模塊間的調(diào)用關(guān)系.HIPO圖實際上就是層次圖加輸入/處理/輸出圖.HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”,是在層次圖里出了最頂層的方框之外,每個方框都加了編號.編號規(guī)則和數(shù)據(jù)流圖的編號規(guī)則一樣.2.概要設計中的信息流
變換流:信息沿著輸入通道進入系統(tǒng),然后通過變換中心(也稱主加工)處理,再沿著輸出通道離開系統(tǒng).具有這一特性的信息流稱為變換流.具有變換流型的數(shù)據(jù)流圖可明顯地分成輸入,變換(主加工),輸出三大部分.事務流:信息流沿著輸入通道到達一個事務中心,事務中心根據(jù)輸入信息(即事務)的類型在若干個動作序列(稱為活動流)中選擇一個來執(zhí)行,這種信息流稱為事務流.事務流有明顯的事務中心,各活動以事務中心為起點呈輻射狀流出.9.2.2 詳細設計
概要設計已經(jīng)確定了每個模塊的功能和接口,詳細設計的任務就是為每個模塊設計其實現(xiàn)的細節(jié).詳細設計階段的根本目標是確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),得出對目標系統(tǒng)的精確描述.1.詳細設計階段的內(nèi)容
為每個模塊進行詳細的算法設計.為模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)進行設計.對數(shù)據(jù)庫進行物理設計.其他
詳細設計工具主要包括程序流程圖(系統(tǒng)流程圖),盒圖(N-S圖),PAD圖和偽碼(PDL).2.人機界面設計
人機界面的設計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價.界面的美觀,靈活和風格都很重要,但人機界面設計中最重要的也是最基本的目標是軟件的易操作性.人機界面設計主要包括系統(tǒng)響應時間,用戶幫助設計,出錯信息處理和命令交互設計等幾個方面.9.3 Jackson方法
上面講的結(jié)構(gòu)化設計方法是面向數(shù)據(jù)流的,另外還有一種面向數(shù)據(jù)結(jié)構(gòu)的設計方法, Jackson方法是最著名的面向數(shù)據(jù)結(jié)構(gòu)的設計方法,而不是面向數(shù)據(jù)流的設計方法.Jackson方法的基本步驟是:建立系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);以數(shù)據(jù)結(jié)構(gòu)為基礎,對應地建立程序結(jié)構(gòu);列出程序中要用到的各種基本操作,再將這些操作分配到程序結(jié)構(gòu)適當?shù)哪K中.9.4 面向?qū)ο蠓治龇椒?00A)OTM方法的三個模型,分別從三個不同側(cè)面描述了所要開發(fā)的系統(tǒng):功能模型指明了系統(tǒng)應該“做什么”;動態(tài)模型明確了什么時候做;對象模型則定義了做事情的實體.對象模型描述了系統(tǒng)中對象的靜態(tài)結(jié)構(gòu)及對象間的聯(lián)系,用對象模型圖來表示.動態(tài)模型描述了與時間和操作次序有關(guān)的系統(tǒng)屬性.動態(tài)模型由多張狀態(tài)圖組成.各個類的狀態(tài)圖通過共享事件組成系統(tǒng)的動態(tài)模型.功能模型描述系統(tǒng)內(nèi)數(shù)據(jù)值的變化,它由數(shù)據(jù)流圖組成.數(shù)據(jù)流圖說明數(shù)據(jù)流是如何從外部輸入,經(jīng)過操作和內(nèi)部存儲而得到輸出的.十.軟件工具
軟件工具是指用于輔助軟件開發(fā),運行,維護,管理,支持等過程中的活動的軟件.通常也稱為CASE(Computer Aided Software Engineering,計算機輔助軟件工程)工具.按軟件過程的活動分為軟件開發(fā)工具,軟件維護工具和軟件管理工具等.十一.軟件開發(fā)環(huán)境
集成型開發(fā)環(huán)境通常可由工具集和環(huán)境集成機制兩部分組成.這種環(huán)境應具有開放性和可裁減性.環(huán)境集成機制主要有數(shù)據(jù)集成機制,控制集成機制和界面集成機制.十二.軟件質(zhì)量管理基礎知識 12.1 軟件質(zhì)量
ISO/IEC 9126軟件質(zhì)量模型可從軟件功能性,可靠性,可用性,效率,可維護性,可移植性6個方面來衡量.(1).功能性
與功能及其指定的性質(zhì)的一組軟件屬性.(2)可靠性
軟件在規(guī)定的一段時間內(nèi)和規(guī)定的條件下保持其性能水平有關(guān)的一組軟件屬性.也可以稱為在規(guī)定的條件下和規(guī)定的時間間隔內(nèi),軟件實現(xiàn)其規(guī)定功能的概率.(3)可用性
與使用的難易程序及規(guī)定或隱含用戶對使用 方式所做的評價有關(guān)的軟件屬性.(4)效率
與在規(guī)定條件的性能水平與所用資源量之間的關(guān)系有關(guān)的一組軟件屬性.(5)可維護性
與軟件維護的難易程序有關(guān)的一組軟件屬性.(6)可移植性
軟件可從某一環(huán)境轉(zhuǎn)移到另一環(huán)境的能力有關(guān)的一組屬性.即軟件從一個計算機系統(tǒng)轉(zhuǎn)換到另一個計算機系統(tǒng)運行的難易程度是指軟件的可移植性.為了提高可移植性,應注意提高軟件的設備獨立性.采用表格驅(qū)動程序有助于提高設備獨立性.為了提高可移植性,還應有完備的文檔資料.使用C語言開發(fā)的系統(tǒng)軟件具有較好的可移植性.12.2 軟件質(zhì)量保證
軟件質(zhì)量保證的主要困難表現(xiàn)在以下幾個方面: 1)軟件開發(fā)的管理人員往往關(guān)心項目開發(fā)的成本與進度.因為成本和進度是顯而易見的,而軟件質(zhì)量則難以度量.如果軟件開發(fā)的管理人員對交付的軟件含有多少隱患并不必負什么責任,他們必定沒有太高的熱情去控制開發(fā)的質(zhì)量,更不必說保證質(zhì)量并不容易且代價昂貴.開發(fā)人員的習慣一旦形成難以改變,他們的形為也難于控制,而高質(zhì)量的軟件產(chǎn)品,又主要取決于參與開發(fā)的人員.復雜的軟件項目需要許多技術(shù)人員和管理人員參與,對問題的不同認識和誤解如不能及時消除必然影響軟件質(zhì)量.軟件開發(fā)人員的頻繁流動,特別是骨干開發(fā)人員的流失,也會使軟件質(zhì)量受到一定的影響.軟件質(zhì)量的保證手段: 開發(fā)初期制定質(zhì)量保證計劃,并在開發(fā)中堅持實行.開發(fā)前選定或制定開發(fā)標準或開發(fā)規(guī)范,并遵照實施.從開始就選擇分析設計方法和工具,形成高質(zhì)量的分析模型和設計模型.嚴格執(zhí)行階段評審,以便及時發(fā)現(xiàn)問題.各個開發(fā)階段的測試.對軟件的每次“變動”都要經(jīng)過申請,評估,批準,實施等步驟.軟件質(zhì)量特性的度量化.軟件生存期的各階段都要完整的文檔.12.3 代碼評審技術(shù)
常用方法有代碼走查和代碼審查技術(shù).代碼走查
程序員和測試員組成審查小組,通過邏輯運行程序.第一步:小組成員提前閱讀設計規(guī)格書,程序文本等相關(guān)文檔;第二步:利用測試用例,使程序邏輯運行,記錄程序的蹤跡,發(fā)現(xiàn),討論,解決問題 代碼審查
程序員和測試員組成審查小組.第一步:小組成員提前閱讀設計規(guī)格書,程 序文本等相關(guān)文檔;第二步:召開程序?qū)彶闀?開發(fā)人員讀程序,審查小組討論,發(fā)現(xiàn),解決問題.兩者的區(qū)別
代碼審查是一種正式的評審活動,而代碼走 查的討論過程是非正式的.十三.成本-效益分析可用哪些指標進行度量
投資回收率:通常把建立系統(tǒng)若干年后所取得的收益折算成現(xiàn)在的價值和開發(fā)系統(tǒng)所需的費用進行比較得出投資回收率.投資回收期:就是使累計的經(jīng)濟效益等于最初的投資費用所需的時間.純收入:整個軟件生命周期之內(nèi)的累計經(jīng)濟效益(折成現(xiàn)在值)與投資之差.十四.第四代語言(4GL)的主要特征
友好的用戶界面
兼有過程性和非過程性兩種特性 高校的程序代碼 完備的數(shù)據(jù)庫 應用程序生成器
十五.軟件測試
軟件測試的費用已經(jīng)超過軟件開發(fā)費用的30%左右.“高產(chǎn)”測試是指用少量的測試用例,發(fā)現(xiàn)被測試程序盡可能多的錯誤.15.1 軟件測試經(jīng)過的步驟
單元測試->集成測試->確認測試->系統(tǒng)測試 15.2 測試與軟件開發(fā)各階段的關(guān)系
單元測試對程序中每一個程序單元進行測試,檢查各個模塊是否爭取實現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯誤,該階段涉及編碼和詳細設計文檔.集成測試是為了檢查與設計相關(guān)的軟件體系結(jié)構(gòu)的有關(guān)問題,也就是檢查概要設計是否合理有效.確認測試主要是檢查已實現(xiàn)的軟件是否滿足需求規(guī)格說明書中已確定了的各種需求.系統(tǒng)測試是把已確認的軟件與其他系統(tǒng)元素(如硬件,其他支持軟件,數(shù)據(jù),人工等)結(jié)合在一起進行測試,以確定軟件是否可以支付使用.15.3 白盒測試
白盒測試又稱為結(jié)構(gòu)測試.可以把程序看成裝在一個透明盒子里,測試者(一般為編程者)完全知道程序的結(jié)構(gòu)和處理算法.按照程序內(nèi)部邏輯設計測試用例,檢測程序中的主要執(zhí)行通路是否能按預定要求正常工作.白盒測試多用于單元測試階段.邏輯覆蓋是主要的白盒測試技術(shù).白盒測試時,確定測試數(shù)據(jù)應根據(jù)程序的內(nèi)部邏輯和指定的覆蓋方式.采用一下幾種邏輯覆蓋標準: 語句覆蓋 判定覆蓋 條件覆蓋
判定/條件覆蓋 條件組合覆蓋 路徑覆蓋
滿足條件組合覆蓋測試用例,也一定滿足判定條件覆蓋.因此,條件組合覆蓋是上述五種覆蓋標準中最強的一種.15.4 黑盒測試
黑盒測試,又稱為功能測試.把軟件看做是一個不透明的黑盒子,完全不考慮(或不了解)軟件內(nèi)部結(jié)構(gòu)和處理算法,它只檢測軟件功能是否能按照軟件需求說明書的要求正常使用,軟件是否能適當?shù)慕邮茌斎霐?shù)據(jù)并產(chǎn)生正確的輸出信息,軟件運行過程中能否保持外部信息(例如文件和數(shù)據(jù)庫)的完整性等.常用的黑盒測試技術(shù)包括等價類劃分,邊值分析,錯誤推測和因果圖等.其中等價類劃分和邊界值分析法方法最常用.如果兩者結(jié)合使用,更有可能發(fā)現(xiàn)軟件中的錯誤.15.4灰盒測試
灰盒測試介于白盒測試和黑盒測試之間,它把軟件看做是一個半透明的灰盒子,結(jié)合考慮軟件的內(nèi)部結(jié)構(gòu)和外部功能設計測試用例 15.5 回歸測試
糾正了程序中的錯誤之后,選擇部分或全部原先已測試過的測試用例,對修改后程序重新測試以驗證對軟件修改后有沒有引出新的錯誤,稱為回歸測試.15.6 單元測試
單元測試(Unit testing)也稱為模塊測試或結(jié)構(gòu)測試,通??煞旁诰幊屉A段(實現(xiàn)階段),主要采用邏輯覆蓋技術(shù),由程序員對自己編寫的模塊自行測試,檢查模塊是否能實現(xiàn)了詳細設計說明書中規(guī)定的功能和算法.單元測試主要發(fā)現(xiàn)編程和詳細設計中產(chǎn)生的錯誤.測試一個模塊時需要為該模塊編寫一個驅(qū)動模塊和若干個樁(stub)模塊.頂層模塊測試時不需要驅(qū)動模塊,底層模塊測試時不需要樁模塊.在進行單元測試時,常用的方法是白盒測試(采用邏輯覆蓋的測試技術(shù)),輔之以黑盒測試.15.7集成測試
集成測試(integration testing)也稱為組裝測試,在單元測試的基礎之上,把所有的模塊組裝成一個系統(tǒng)進行測試.主要測試設計階段產(chǎn)生的錯誤,集成測試計劃應該在概要設計階段制定.非漸增式集成測試
首先將每個模塊分別進行單元測試,再把所有的模塊組裝成一個完整的系統(tǒng)進行測試.目前在進行集成測試時已普遍采用漸增式集成.漸增式集成測試
又可以分為自頂向下集成和自底向上集成.自頂向下集成先測試上層模塊,再測試下層模塊,由于測試下層模塊時上層模塊已經(jīng)測試過,所以不必要另外編寫驅(qū)動模塊.自底向上集成,先測試下層模塊,再測試上層模塊.頂層模塊測試時不需要驅(qū)動模塊,底層模塊測試時不需要樁模塊.軟件的集成測試最好由不屬于該軟件開發(fā)組的軟件設計人員承擔,以提高集成測試的效果.三明治測試
從系統(tǒng)的三個角往中間包圍測試的方法.15.8 確認測試
在系統(tǒng)驗收測試中,驗證測試是在模擬的環(huán)境中進行強度測試的基礎上進行,主要依據(jù)軟件需求說明書檢測軟件的功能,性能及其他特征是否與用戶的要求一致,而確認測試是在一個實際環(huán)境中使用真實數(shù)據(jù)運行系統(tǒng).確認測試計劃應該在需求分析階段制定.α測試
由用戶在開發(fā)者的場所進行,并且在開發(fā)者的指導下進行測試.開發(fā)者負責紀錄發(fā)現(xiàn)的錯誤和使用中遇到的問題,也就是說α測試是在受控的環(huán)境中進行的.β測試是在一個或多個用戶的現(xiàn)場由該軟件的最終用戶實施的,開發(fā)者通常不在現(xiàn)場,用戶負責記錄發(fā)現(xiàn)的錯誤和使用中遇到的問題并把這些問題報告給開發(fā)者.也就是說,β測試是在受控的環(huán)境中進行的.經(jīng)過確認測試之后的軟件通常就可以交付使用了.15.9 系統(tǒng)測試
系統(tǒng)測試是將已經(jīng)確認的軟件,計算機硬件,外設和網(wǎng)絡等其他因素結(jié)合在一起,進行信息系統(tǒng)的各種組裝測試和確認測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方.包括以下的測試: 恢復測試:監(jiān)測系統(tǒng)的容錯能力
安全性測試:監(jiān)測系統(tǒng)的安全機制,保密措施是否完善等防范能力.強度測試:測試軟件的異常情況的處理能力.性能測試:監(jiān)測系統(tǒng)是否滿足系統(tǒng)設計方案說明書對性能的要求.可靠性測試:從平均失效間隔是否超過了規(guī)定的時限,因故障而停機的時間在一年中不應超過的時間來進行檢測.安裝測試:監(jiān)測軟件在安裝過程中是否有錯誤,是否容易操作等.系統(tǒng)測試計劃在系統(tǒng)測試階段初期制定.十六.軟件工程標準和軟件文檔
GB/T8566-2001,GB/T12504-1990,GB/T12505-1990是我國現(xiàn)階段最重要的三個軟件開發(fā)規(guī)范標準.國家標準局1988年1月批準并發(fā)布的《GB/T8567-1988計算機軟件產(chǎn)品開發(fā)文件編制指南》規(guī)定在一項軟件開發(fā)過程中應該產(chǎn)生14中文件 可行性研究報告 項目開發(fā)計劃 軟件需求說明書 數(shù)據(jù)要求說明書 概要設計說明書 詳細設計說明書 數(shù)據(jù)庫設計說明書 用戶手冊 操作手冊 模塊開發(fā)卷宗 測試計劃 測試分析報告 開發(fā)進度月報 項目開發(fā)總結(jié)報告
軟件運行和維護基礎知識
管理人員主要使用:項目開發(fā)計劃,可行性研究報告,模塊開發(fā)卷宗,開發(fā)進度月報,項目開發(fā)總結(jié)報告.開發(fā)人員:項目開發(fā)計劃,可行性研究報告,軟件需求說明書,數(shù)據(jù)要求說明書,數(shù)據(jù)庫設計說明書,概要設計說明書,詳細設計說明書,測試計劃,測試分析報告.維護人員:概要設計說明書,詳細設計說明書,數(shù)據(jù)庫設計說明書,模塊開發(fā)卷宗,測試分析報告,維護報告.用戶:用戶手冊,操作手冊.十七.軟件維護
用于軟件維護的花費約為整個軟件生命周期花費的75%(或60%~80%之間)而且還在逐年上升.17.1 軟件維護類型
根據(jù)引起軟件維護的原因,軟件維護可分為以下四種類型(1)改正性維護
使用過程中發(fā)現(xiàn)了隱蔽的錯誤后,為了診斷和改正這些隱蔽錯誤而修改軟件的活動(2)適應性維護
為了適應環(huán)境的變化而修改軟件的活動(3)完善性維護
為了擴充或完善原有軟件的功能或性能而修改軟件的活動.(4)預防性維護
預防性維護是指為了提高軟件的可維護性和可靠性,為未來的進一步改進打下基礎而修改軟件的活動.17.2 軟件的可維護性 通常影響軟件可維護性的因素有可理解性,可測試性和可修改性.(1)可理解性
可理解性是指維護人員理解軟件的結(jié)構(gòu),接口,功能和內(nèi)部過程的難易程度.采用良好的編程風格有助于提高軟件的易理解性.(2)可測試性
可測試性是指測試和診斷軟件錯誤的難易程度.(3)可修改性
可修改性是指修改軟件的難易程度.怎樣提高軟件的可維護性
在軟件生命周期的各個階段都必須充分考慮維護問題.結(jié)構(gòu)化設計的幾條主要原則,如模塊化,信息隱藏,高內(nèi)聚,低耦合等,對于提高軟件的可理解性,可測試性和可修改性也都有重要的作用.書寫詳細正確的文檔,書寫源文件的內(nèi)部注解,使用良好的編程語言,具有良好的程序設計風格,也有助于提高軟件的可理解性.使用先進的測試工具,保存以前的測試過程和測試用例,則有助于提高軟件的可測試性.十八.軟件的可靠性
在給定的時間內(nèi),在給定的環(huán)境條件下系統(tǒng)完成所指定工作的概率.衡量的標準是:平均失效等待時間MTTF 和平均失效間隔時間MTBF.
第四篇:軟件工程自考課后習題4
第八章習題參考答案 軟件維護有哪些內(nèi)容? 答:(1)校正性維護。在軟件交付使用后,一些隱含的錯誤在某些特定的使用環(huán)境下會暴露出來。為了識別和糾正錯誤,修改軟件性能上的缺陷,應進行確定和修改錯誤的過程,這個過程就稱為校正性維護。(2)適應性維護。為了使應用軟件適應計算機硬件、軟件環(huán)境及數(shù)據(jù)環(huán)境的不斷發(fā)生的變化而修改軟件的過程稱為適應性維護。(3)完善性維護。為增加軟件功能、增強軟件性能、提高軟件運行效率而進行的維護活動稱為完善性維護。(4)預防性維護。為了提高軟件的可維護性和可靠性而對軟件進行的修改稱為預防性維護。軟件維護的特點是什么? 答:主要體現(xiàn)在三個方面:
(1)非結(jié)構(gòu)化維護和結(jié)構(gòu)化維護。軟件的開發(fā)過程對軟件的維護有很大的影響。若不采用軟件工程的方法開發(fā)軟件,則軟件只有程序而無文檔,維護工作非常困難,這是一種非結(jié)構(gòu)化的維護。若采用軟件工程的方法開發(fā)軟件,則各階段都有相應的文檔,容易進行維護工作,這是一種結(jié)構(gòu)化的維護。
(2)維護的困難性。軟件維護的困難性是由于軟件需求分析和開發(fā)方法的缺陷。軟件生存周期中的開發(fā)階段沒有嚴格而又科學的管理和規(guī)劃,就會引起軟件運行時的維護困難。
(3)軟件維護的費用。軟件維護的費用在總費用中的比重是在不斷增加的,這是軟件維護有形的代價。另外還有無形的代價,即要占有更多的資源。軟件維護費用增加的占有原因是軟件維護的生產(chǎn)率非常低。軟件維護的流程是什么?
答:軟件維護的流程如下:知道維護申請報告、審查申請報告并批準、運行維護并做詳細記錄、復審。軟件維護的副作用有哪些? 答:維護的副作用有以下三種:
(1)編碼副作用。在使用程序設計語言修改源代碼時可能引入的錯誤。
(2)數(shù)據(jù)副作用。在修改數(shù)據(jù)結(jié)構(gòu)時,有可能造成軟件設計與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導致軟件錯誤。數(shù)據(jù)副作用是修改軟件信息結(jié)構(gòu)導致的結(jié)果。但它可以通過詳細的設計文檔加以控制。
(3)文檔副作用。如果對可執(zhí)行軟件的修改沒有反映在文檔中,就會產(chǎn)生文檔副作用。什么是軟件可維護性?可維護性度量的特性是什么?
答:軟件可維護性的定義:軟件能夠被理解、校正、適應及增強功能的容易程度。軟件的可維護性可用以下七個質(zhì)量特性來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。提高可維護性的方法有哪些? 答:(1)建立明確的軟件質(zhì)量目標。(2)使用先進的軟件開發(fā)技術(shù)和工具。(3)建立明確的質(zhì)量保證。(4)選擇可維護性的程序設計語言。(5)改進程序的文檔。第九章習題參考答案
漸增模型有幾種?各有何特點? 答:漸增模型有兩種類型,一是增量構(gòu)造模型,二是演化提交模型。增量構(gòu)造模型是在瀑布模型基礎上,對一些階段進行整體開發(fā),對另一些階段進行增量開發(fā)。演化提交模型則是在瀑布模型的基礎上,所有階段都進行增量開發(fā),不僅是增量開發(fā),也是增量提交。
2、快速原型模型有幾種,各有什么特點?
答:快速原形模型根據(jù)原型的不同作用,有三類原型模型:
探索型原型:把原型用于開發(fā)的需求分析階段,目的是要弄清用戶的需求,確定所期望的特性,并探索各種方案的可行性。它主要針對開發(fā)目標模糊,用戶與開發(fā)者對項目都缺乏經(jīng)驗的情況,通過對原型的開發(fā)來明確用戶的需求。
實驗型原型:主要用于設計階段,考核實現(xiàn)方安是否合適,能否實現(xiàn)。對于一個大型系統(tǒng),若對設計方案心中沒有把握時,可通過這種原型的開發(fā)來證實設計方案的正確性。
(3)演化型原型:它將原型思想擴展到軟件開發(fā)的全過程,就是及早向用戶提交一個原型系統(tǒng),在得到用戶認可后,將原型系統(tǒng)不斷擴充演化為最終的軟件系統(tǒng)??焖僭偷拈_發(fā)步驟是什么? 答:快速原型的開發(fā)步驟是:(1)快速分析:在分析人員與用戶的配合下,迅速確定系統(tǒng)基本需求并開始構(gòu)造原型。(2)構(gòu)造原型:在快速分析的基礎上,根據(jù)基本需求說明盡快實現(xiàn)一個可運行的系統(tǒng)。(3)運行原型:通過運行快速原型,發(fā)現(xiàn)問題,消除誤解,達到開發(fā)者也用戶的充分協(xié)調(diào)。(4)評價原型:在運行的基礎上,評價原型的特性,分析運行效果是否滿足用戶的需求,提出全面的修改意見。(5)修改:根據(jù)評價原型的活動結(jié)果進行修改,修改過程代替初始的快速分析,從而實現(xiàn)原型開發(fā)的循環(huán)過程。用戶與開發(fā)者在這種循環(huán)過程中不斷接近系統(tǒng)的最終要求。上述步驟在軟件工具的支持下往往是互相交融在一起的,而不再象瀑布模型那樣嚴格的階段劃分,線性推進。評價快速原型模型的優(yōu)缺點。答:快速原型的優(yōu)點是:(1)可及早為用戶提供有用的產(chǎn)品。(2)可及早發(fā)現(xiàn)問題,隨時糾正錯誤。(3)減少技術(shù)、應用風險,縮短開發(fā)時間,減少費用、提高生產(chǎn)率。(4)通過實際運行原型,提供直接評價系統(tǒng)的方法,促使用戶主動參與開發(fā)活動,加強了信息反饋,促進各類人員的協(xié)調(diào),減少誤解,適應需求變化,能有效提高系統(tǒng)質(zhì)量。快速原型的缺點是:1.缺乏豐富而強有力的軟件工具和開發(fā)環(huán)境。2.缺乏有效的管理機制,還未建立起自己的開發(fā)標準。3.對設計開發(fā)環(huán)境要求較高。(4)在多次重復改變原型的過程中,程序員會感到厭倦。(5)系統(tǒng)的易變性對測試有一定影響,難于做到徹底測試,更新文檔較為困難。
4、比瀑布模型與增量模型,指出增量模型的新思路。
答:瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個階段的工作之前,必須完成前一階段的所有細節(jié)。瀑布模型很難適應需求可變、模糊不定的軟件系統(tǒng)的開發(fā),而且在開發(fā)過程中用戶很難參與進去,只有到開發(fā)結(jié)束才能看到整個軟件系統(tǒng)。這種理想的、線性的開發(fā)過程缺乏靈活性,不適應實際的開發(fā)過程。增量模型是在瀑布模型的基礎上加以修改而形成的。屬于非整體開發(fā)模型。
它的基本思路是為了使開發(fā)過程具有一定的靈活性和可修改性,在開發(fā)過程中推遲某些階段或所有階段中的細節(jié),從而較早的產(chǎn)生工作軟件。第十章習題參考答案
說明對象、類、類結(jié)構(gòu)、消息的基本概念。答:(1)對象:對象是人們要進行研究的任何事物,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。對象包括有形實體、作用、事件、性能說明等類型。對象具有狀態(tài)和行為。一個對象用數(shù)據(jù)值來描述它的狀態(tài),對象的操作則用于改變狀態(tài),對象及其操作就是對象的行為。對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。對象內(nèi)的數(shù)據(jù)具有自己的操作,從而可靈活地專門描述對象的獨特行為,具有較強的獨立性和自治性,其內(nèi)部狀態(tài)不受或很少受外界的影響,具有很好的模塊化特點。為軟件重用奠定了堅實的基礎。(2)類:具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象就是類,類的具體化就是對象,也可以說類的實例是對象。(3)類結(jié)構(gòu):類與類之間的結(jié)構(gòu)關(guān)系,包括一般-具體結(jié)構(gòu)關(guān)系和整體-部分結(jié)構(gòu)關(guān)系。一般-具體關(guān)系結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系或“is a”關(guān)系,類的這種層次結(jié)構(gòu)可用來描述現(xiàn)實世界中的一般化的抽象關(guān)系,通常越在上層的類越具有一般性和共性,越在下層的類越具體、越細化。整體-部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。類的這種層次關(guān)系可用來描述現(xiàn)實世界中的類的組成的抽象關(guān)系。上層的類具有整體性,下層的類具有成員性。在類的層次結(jié)構(gòu)中,通常上層的類稱為父類或超類,下層類稱為子類。(4)消息:對象之間進行通信的構(gòu)造叫做消息。在對旬的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。接收消息的對象經(jīng)過解釋,然后給予響應。這種通信機制稱為消息傳遞。發(fā)送一條消息的格式是“對象名.方法名(參數(shù))”。說明面向?qū)ο蟮奶卣骱鸵亍4穑好嫦驅(qū)ο蟮奶卣魇牵海?)對象唯一性。每個對象都有自身唯一的標識,在對象生存期中,其標識不變,不同的對象不能有不同的標識。(2)分類性。是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類(3)繼承性。是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。(4)多態(tài)性。是指相同的操作或函數(shù)過程可以作用于多種類型的對象上并獲得不同的結(jié)果。面向?qū)ο蟮囊厥牵?.抽象。2.封裝性(信息隱蔽)(3)共享性。說明動態(tài)模型的特征,說明事件,腳本、狀態(tài)的含義。
答:動態(tài)模型是與時間和變化有關(guān)的系統(tǒng)性質(zhì),該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬時的、行為化的系統(tǒng)控制性質(zhì),它關(guān)心的是系統(tǒng)的控制,操作的執(zhí)行順序,它從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了相互行為。事件是指特定時刻發(fā)生的某件事情,它是某事情發(fā)生的信號,它沒有持續(xù)時間,它是一種相對性的快速事件。腳本是完成系統(tǒng)某個功能事件序列,側(cè)重于表達說明發(fā)生于系統(tǒng)執(zhí)行過程中的一個特定場景,用事件跟蹤圖表達。狀態(tài)是對象屬性值的抽象。狀態(tài)指明了對象對輸入事件的響應。說明功能模型的特征,比較功能模型的DFD和結(jié)構(gòu)化方法的DFD異同。
答:功能模型描述了系統(tǒng)的所有計算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。功能模型表明一個計算如何從輸入值得到輸出值,它不考慮所計算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖說明數(shù)據(jù)流是如何從外部輸入、經(jīng)過操作和內(nèi)部存儲輸出到外部的。功能模型也包括對象模型中值的約束條件。
說明三種分析模型的關(guān)系。答:三種分析模型之間關(guān)系是這樣的:功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。說明對象建模的過程。
答:對象建模的過程如下:首先標識類和關(guān)聯(lián),因為它們影響了整體結(jié)構(gòu)和解決問題的方法,其次是增加屬性,進一步描述類和關(guān)聯(lián)的基本網(wǎng)絡,使用繼承合并和組織類,最后將操作增加到類中去作為構(gòu)造動態(tài)模型和功能模型的副產(chǎn)品。(1)確定類。構(gòu)造對象模型的第一步是標出來自問題域的相關(guān)對象類,包括物理實體和概念。所有類在應用中都必須有意義。檢查問題陳述中的所有名詞,產(chǎn)生暫定類。然后去掉不必要的類和不正確的類。(2)準備數(shù)據(jù)字典。為所有建模實體準備一個數(shù)據(jù)詞典。準確描述各個類的精確含義,描述當前問題中的類的范圍,包括對類的成員、用法方面的假設或限制。1.確定關(guān)聯(lián)。兩個或多個類之間的相互依賴就是關(guān)聯(lián)。從問題中抽取所有可能的關(guān)聯(lián)表示,把它們記下來,但不要過早去細化這些表述。2.確定屬性。屬性是個體對象的性質(zhì),通常用修飾性的名詞詞組來表示。只考慮與具體應用直接相關(guān)的屬性,不考慮那些超出問題范圍的屬性,首先找出重要屬性,避免那些只用于實現(xiàn)的屬性,要為各個屬性取有意義的名字。3使用繼承來細化類。4.完善對象模型。說明功能建模的過程。答:功能建模的過程如下:(1)確定輸入、輸出值(2)建立數(shù)據(jù)流圖
10、說明對象設計的步驟。
答:對象設計要確定實現(xiàn)用到的類、關(guān)聯(lián)的完整定義,接口的形式以及實現(xiàn)操作方法的算法,可以增加實現(xiàn)必須的內(nèi)部對象,對數(shù)據(jù)結(jié)構(gòu)和算法進行優(yōu)化。1.獲得操作 2確定操作的目標對象 3.算法設計 4.優(yōu)化設計 5.控制的實現(xiàn) 6調(diào)整繼承(7)關(guān)聯(lián)的設計 第十一章習題參考答案
軟件質(zhì)量與軟件質(zhì)量保證的含義是什么? 答:從實際應用來說,軟件質(zhì)量定義包括三個一致性:1.與所確定的功能和性能需求的一致性;(2)與所成文的開發(fā)標準的一致性; 3.與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性。4.軟件質(zhì)量保證是指確定、達到和維護所需要的軟件質(zhì)量而進行的所有有計劃、有系統(tǒng)的管理活動。影響軟件質(zhì)量的因素有哪些? 答:影響軟件質(zhì)量的因素分為可以直接度量的因素(如單位時間內(nèi)千行代碼中所產(chǎn)生的錯誤)和只能間接度量的因素(如可用性和可維護性)。
什么是軟件質(zhì)量保證策略?軟件質(zhì)量保證的主要任務是什么? 答:軟件質(zhì)量保證策略是指軟件質(zhì)量保證工作的過程和側(cè)重點。
質(zhì)量保證的主要任務包括以下幾點:1.正確定義用戶的要求。2.技術(shù)方法的應用。3.提高軟件開發(fā)的工程能力。4.軟件的復用。5.發(fā)揮每個開發(fā)者的能力。6.組織外部力量協(xié)作。7.排除無效勞動。(8)提高計劃和管理質(zhì)量。
程序復雜性的度量方法有哪些? 答:軟件復雜性的度量方法有:1.代碼行度量法:以源代碼行數(shù)作為程序復雜性的度量。
2、McCabe度量法:一種基于程序控制流的復雜性度量方法。什么是軟件的可靠性?它們能否定量計算? 答:軟件可靠性是指在給定的時間內(nèi),在規(guī)定的環(huán)境條件下系統(tǒng)完成所指定功能的概率。衡量軟件可靠性的兩個常用指標是平均失效等待時間MTTF和平均失效間隔時間MTBF。就是說可以定量計算。
7、說明容錯軟件的定義與容錯的一般方法。答:容錯軟件的定義有四種,指規(guī)定功能的軟件,(1)在一定程度上對自身錯誤的作用具有屏蔽能力的軟件。(2)在一定程度上能從錯誤狀態(tài)自動恢復到正常狀態(tài)的軟件。(3)在因錯誤而發(fā)生錯誤時,仍然能在一定程度上完成預期的功能的軟件。(4)在一定程度上具有容錯能力的軟件。
實現(xiàn)容錯技術(shù)的主要手段是冗余。冗余通常分為四類:1.結(jié)構(gòu)冗余,又分為靜態(tài)、動態(tài)和混合冗余三種。2.信息冗余 3.時間冗余(4)冗余附加技術(shù) 第十二章習題參考答案
軟件工程管理包括哪些內(nèi)容? 答:軟件工程管理的具體內(nèi)容包括對開發(fā)人員、組織機構(gòu)、用戶、文檔資料等方面的管理。
2、軟件項目計劃中包括哪些內(nèi)容?
答:軟件項目計劃內(nèi)容包括:1.范圍 2.資源 3.進度安排 4成本估算(5)培訓計劃
3、軟件開發(fā)成本估算方法有哪幾種? 答:軟件開發(fā)成本估算的方法主要有:(1)自頂向下估算方法(2)自底向上估算方法(3)差別估算方法 以及專家估算法、類推估算法、算式估算法等幾類方法。
4、什么是軟件配置管理?什么是基線?
答:軟件配置管理,簡稱SCM(Software Configuration Management),是指一組管理整個軟件生存期各階段中變更的活動。軟件配置管理技術(shù)可以使軟件變更所產(chǎn)生的錯誤達到最小并最有效地提高生產(chǎn)率?;€:是軟件生存期中各開發(fā)階段的一個特定點,它的作用是把開發(fā)各階段工作的劃分更加明確化,使本來連續(xù)的工作在這些點上斷開,以便于檢查與肯定階段成果。
5、軟件工程標準化的意義是什么?都有哪些軟件工程標準? 答:軟件工程標準化可以為軟件工程各個階段的活動提供統(tǒng)一的行動規(guī)范和衡量準則,使得各種工作都能有章可循。軟件工程標準根據(jù)其制定機構(gòu)與適用范圍,可分為:1.國際標準2.國家標準 3.行業(yè)標準 4.企業(yè)規(guī)范
5、項目(課題)規(guī)范
6、請說明軟件文檔的作用?
答:軟件文檔的作用是:1.提高軟件開發(fā)過程的能見度;2.提高開發(fā)效率;3.作為開發(fā)人員階段工作成果和結(jié)束標志;4.記錄開發(fā)過程的有關(guān)信息便于使用與維護;5.提供軟件運行、維護和培訓有關(guān)資料;6.便于用戶了解軟件功能、性能。第十三章習題參考答案
1、什么是軟件開發(fā)環(huán)境?請列出其發(fā)展情況。
答:軟件開發(fā)環(huán)境是指在計算機的基本軟件的基礎上,為支持軟件的開發(fā)而提供的一組工具軟件系統(tǒng)。具體地說,軟件開發(fā)環(huán)境是一組相關(guān)工具的集合。這些相關(guān)工具按一定的開發(fā)方法或一定開發(fā)處理模型組織起來的,這些相關(guān)工具支持整個軟件生存期的各階段或部分階段。軟件開發(fā)環(huán)境的發(fā)展階段:
(1)70年代,軟件開發(fā)與設計方法出現(xiàn)了結(jié)構(gòu)化分析技術(shù)的一整套相互銜接的SA-SD的方法學。與此相適應的計算機輔助軟件工程技術(shù)則主要由開發(fā)孤立的軟件工具而逐步向程序設計環(huán)境的開發(fā)和使用方向發(fā)展,出現(xiàn)了第一代的基于正文的CASE工具。
(2)80年代中期與后期,主要是實時系統(tǒng)設計方法,以及面向?qū)ο蟮姆治龊驮O計方法的發(fā)展,它克服了結(jié)構(gòu)化技術(shù)的缺點。在這期間開發(fā)了第二代的CASE工具,其特點是支持使用圖形表示的結(jié)構(gòu)化方法,如數(shù)據(jù)流圖與結(jié)構(gòu)圖。其開發(fā)環(huán)境表現(xiàn)在提高環(huán)境中工具的集成性方面,如“集成的項目支持環(huán)境”。
(3)80年代后期和90年代初期出現(xiàn)了“基于信息工程CASE”技術(shù),這種環(huán)境集成了用于項目計劃、分析、設計、編程、測試和維護的一個工具箱的集合。
(4)90年代出現(xiàn)一系列集成的CASE軟件產(chǎn)品,用以實現(xiàn)需求管理、應用程序分析設計和建模、編碼、軟件質(zhì)量保證和測試、過程和項目管理及文檔生成管理等軟件開發(fā)工作的規(guī)范化、工程化和自動化。
2、請敘述軟件開發(fā)環(huán)境的分類。答:軟件開發(fā)環(huán)境可按解決的問題、軟件開發(fā)環(huán)境的演變趨向和集成化程度進行分類:(1)按解決的問題可分為:程序設計環(huán)境、系統(tǒng)合成環(huán)境、項目管理環(huán)境三類。(2)按軟件開發(fā)環(huán)境的演變趨向可分為:以語言為中心的環(huán)境、工具箱環(huán)境和基于方法的環(huán)境三類。(3)按集成化程度有第一代、第二代、第三代的開發(fā)環(huán)境。
3、何謂軟件工具?通常包含哪幾部分?答:軟件工具的定義是:可用來幫助和支持軟件需求分析、軟件開發(fā)、測試、維護、模擬、移植或管理而編制的計算機程序或軟件。軟件工具是一個程序系統(tǒng)。軟件工具通常由工具、工具接口和工具用戶接口三部分構(gòu)成。
4、當今軟件工具發(fā)展有何特點? 答:軟件工具的發(fā)展有以下特點:(1)軟件工具由單個工具向多個工具集成化方向發(fā)展。(2)重視用戶界面設計。(3)不斷地采用新理論和新技術(shù)。(4)軟件工具的商品化與軟件產(chǎn)業(yè)的發(fā)展形成良性互動。
5、什么是CASE?CASE工具有哪些分類?答:CASE是一組工具和方法的集合,可以輔助軟件開發(fā)生命周期各階段進行軟件開發(fā)。CASE把軟件開發(fā)技術(shù)、軟件工具和軟件開發(fā)方法集成到一個統(tǒng)一而一致的架中,并且吸收了CAD(計算機輔助設計)、軟件工程、操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡和許多其他計算機領(lǐng)域的原理和技術(shù)。因而,CASE領(lǐng)域是一個應用、集成和綜合的領(lǐng)域。根據(jù)CASE系統(tǒng)對軟件過程的支持范圍,CASE可分為三類:(1)支持單個過程任務的工具。(2)支持某一過程所有活動或某些活動的工作臺。(3)環(huán)境支持軟件過程大部分乃至所有活動,一般包括幾個不同工作臺的集合。
6、請敘述集成化CASE的五級模型。答:集成化CASE的五級模型包括(1)平臺集成:工具運行在相同的硬件/操作系統(tǒng)平臺上(2)數(shù)據(jù)集成:工具使用共享數(shù)據(jù)模型來操作(3)表示集成:工具使用相同的用戶界面(4)控制集成:工具激活后能控制其他操作(5)過程集成:工具在一個過程模型和“過程機”的指導下使用
7、CASE工作臺有哪些分類? 答:CASE工具臺是一組工具集,支持像設計、實現(xiàn)或測試等特定的軟件開發(fā)階段。CASE工具組裝成一個工具臺后工具能協(xié)同工作,可提供比單一工具更好的支持。CASE工作臺包括:(1)程序設計工作臺。由支持程序設計的一組工具組成。(2)分析和設計工作臺。支持軟件過程的分析和設計階段。(3)測試工作臺。(4)交叉開發(fā)工作臺。這些工作臺支持在一種機器上開發(fā)軟件,而在其他的系統(tǒng)上運行所開發(fā)的軟件。(5)配置管理(CM)工作臺。這些工作臺支持配置管理。(6)文檔工作臺。這些工具支持高質(zhì)量文檔的制作。(7)項目管理工作臺。支持項目管理活動。
第五篇:軟件工程總結(jié)
軟件工程課程總結(jié)
摘要:
計算機是20世紀最重大的科學技巧成就之一,使當代社會的經(jīng)濟、軍事、科研、教育、服務等方面在概念和技巧上發(fā)生了性的變化,對人類社會的進步已經(jīng)并還將產(chǎn)生極為深刻的影響。目前,計算機是世界各發(fā)達國度劇烈競爭的科學技巧領(lǐng)域之一。
電子計算機早期功效主要是計算,后來已遠遠超越單純計算的功效,還可模擬、思維、進行自適應反饋處理等等,把它叫做“電腦”更為合實際。由于電子計算機功效的飛躍性發(fā)展,應用于生產(chǎn)和生活的各個方面,直接和顯著地提高了生產(chǎn)、工作和生活的效率、節(jié)奏和水平,在軟科學研究和應用中它也起著關(guān)鍵作用,因此它已被公認是現(xiàn)代技巧的神經(jīng)中樞,是未來信息社會的心臟和錄魂。計算機學科分為四個領(lǐng)域,分別是計算機科學,計算機工程,軟件工程和信息系統(tǒng)。
正文:
軟件工程是研究和應用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件,以及如何把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來的學科。包括項目管理,分析,設計,程序的編寫,測試和質(zhì)量控制。它涉及到程序設計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)開發(fā)平臺、標準、設計模式等方面。
學了《軟件工程》這門課程和一些有關(guān)資料后,感覺一些東西都曾經(jīng)接觸過,但在實際工作中有些理論要完全遵循可能還有些障礙,軟件工程只是提供了理論上的一些結(jié)論,但對項目的具體可操作性的規(guī)范的制定方面卻做的很少,《軟件工程》發(fā)展了幾十年,光是開發(fā)模型就達到了10多種,對不同的項目采用合適的開發(fā)模式,有些項目在不同的開發(fā)階段可能還要轉(zhuǎn)換開發(fā)模式,把它們靈活的應用到實際中還是很困難的。
軟件技術(shù)是信息技術(shù)產(chǎn)業(yè)的核心之一,軟件技術(shù)的發(fā)展是與信息技術(shù)產(chǎn)業(yè)的發(fā)展互相促進的。當今世界,信息技術(shù)正處于新一輪重大技術(shù)突破的前夜。預計今后 20~30 年是信息科學技術(shù)的變革突破期,可能導致 21 世紀下半葉一場新的信息技術(shù)革命。近年來,從 IT 界到一些國家首腦,都高度關(guān)注以物聯(lián)網(wǎng)為標志的新一輪信息技術(shù)的發(fā)展態(tài)勢,認為這是繼 20 世紀 80 年代 PC 機、90 年代互聯(lián)網(wǎng)、移動通信網(wǎng)之后,將引發(fā) IT 業(yè)突破性發(fā)展的第三次 IT 產(chǎn)業(yè)化浪潮。每一次重大的技術(shù)變革都會引起企業(yè)間、產(chǎn)業(yè)間甚至國家間競爭格局的重大變化,也促進了軟件技術(shù)與軟件產(chǎn)業(yè)的重大變革與發(fā)展。
近年來,信息技術(shù)、軟件技術(shù)、軟件系統(tǒng)與軟件產(chǎn)業(yè)的發(fā)展備受關(guān)注,已有不少論述、分析與判斷。近10 年內(nèi)網(wǎng)絡技術(shù)經(jīng)歷寬帶化、移動化和三網(wǎng)融合將走向基于 Ipv6 的下一代互聯(lián)網(wǎng),2010 年 1 月,國家 863 計劃信息技術(shù)領(lǐng)域辦公室和國家 863 計劃信息技術(shù)領(lǐng)域?qū)<医M,在上海舉辦“信息-物理融合系統(tǒng) CPS發(fā)展戰(zhàn)略論壇”,提出“信息-物理融合系統(tǒng) CPS 是一個綜合計算、網(wǎng)絡和物理環(huán)境的多維復雜系統(tǒng),是信息和物理世界的深度的融合交互,可實現(xiàn)大型工程系統(tǒng)的實時感知、動態(tài)控制和信息服務,使系統(tǒng)更加可靠、高效與實時協(xié)同,使得人類物理現(xiàn)實和虛擬邏輯逐步融合,具有重要而廣泛的應用前景。業(yè)界關(guān)于軟件工程的代表性觀點創(chuàng)立與使用健全的工程原則,以便經(jīng)濟地獲得可靠且高效率的軟件。應用系統(tǒng)化,遵從原則,可被計量的方法來發(fā)展、操作及維護軟件;也就是把工程應用到軟件上。與開發(fā)、管理及更新軟件產(chǎn)品有關(guān)的理論、方法及工具。一種知識或?qū)W科,目標是生產(chǎn)品質(zhì)良好、準時交貨、符合預算,滿足用戶所需的軟件。實際應用科學知識在設計、建構(gòu)電腦程序,與相伴而來所產(chǎn)生的文件,以及后續(xù)的操作和維護上。
6使用與系統(tǒng)化生產(chǎn)和維護軟件產(chǎn)品有關(guān)之技術(shù)與管理的知識,使軟件開發(fā)與修改可在有限的時間與費用下進行。
7建造由工程師團隊所開發(fā)之大型軟件系統(tǒng)有關(guān)的知識學科。對軟件分析、設計、實施及維護的一種系統(tǒng)化方法。系統(tǒng)化地應用工具和技術(shù)于開發(fā)以計算機為主的應用。
10軟件工程是關(guān)于設計和開發(fā)優(yōu)質(zhì)軟件。
《軟件工程》是一門綜合性和實踐性很強的核心課程,它屬于是一門交叉學科,包含有:軟件開發(fā)技術(shù)(軟件開發(fā)方法學、軟件開發(fā)過程、軟件工具和軟件工程環(huán)境)、軟件工程管理(軟件管理學、軟件經(jīng)濟學、軟件心理學)。主要內(nèi)容包括軟件工程概述、可行性分析、需求分析、概要設計、詳細設計、面向?qū)ο蠓治雠c設計、編碼、軟件測試、項目計劃與管理。
本課程是面向準備從事軟件開發(fā)的畢業(yè)生而開設的一門專業(yè)課程。針對計算機教學中軟件工程這一薄弱環(huán)結(jié),結(jié)合目前軟件開發(fā)商對人才的要求,對計算機專業(yè)的畢業(yè)生進行軟件工程強化培訓,目的是使畢業(yè)生能夠了解和掌握軟件工程的基本理論和方法,并在實際軟件開發(fā)中運用這些方法。
我理解,軟件工程是按照工程學的管理方式,有組織、有計劃的,在一定的質(zhì)量基礎、時間限度和成本范圍內(nèi),實現(xiàn)功能明確的軟件系統(tǒng)。而且,軟件工程在企業(yè)范圍內(nèi)運行,一定需要企業(yè)資源的支持,要與企業(yè)的經(jīng)營、決策、管理體系聯(lián)系在一起,才能夠被踏踏實實的落實下來。
軟件工程項目是一個需要一步一步的計算,分析思考而來的,需要不斷思考,研究不斷進步,軟件業(yè)作為一個服務業(yè),要想得到發(fā)展,首先必須形成一個對軟件服務有迫切需要的市場。其次,這個市場中的消費者必須具備足夠的購買力。軟件的消費群體簡單一點,可以分為個體消費和企業(yè)消費。中國的企業(yè)群體,數(shù)量龐大,但是質(zhì)量不高。上規(guī)模的企業(yè)極少。國內(nèi)目前能夠形成比較大規(guī)模的獨立市場的,肯定是小規(guī)模的軟件系統(tǒng)。
隨著信息化時代的到來其地位越來越受到人們的重視,軟件工程從一個學科,或是某一個研究方向來說,人員僅僅是過程,方法的執(zhí)行者,所以人員素質(zhì)往往被忽略,軟件工程是一門實踐性很強的學科,所以在實際的軟件研究過程中,人員的素質(zhì)占有很重要的地位。要有出色的軟件問世,研發(fā)人員的素質(zhì)至關(guān)重要!
作為軟件工程的學習者應該不斷創(chuàng)新,不斷嘗試、實踐,不斷研究和學習,中國的軟件工程技術(shù)依舊滯后于國外一些軟件工程技術(shù),作為新一代的學習者應該擔當起振興起中國軟件事業(yè),使中國科技得到高速發(fā)展!
現(xiàn)在已經(jīng)是信息化時代,信息化潮流不斷涌現(xiàn),想要掌握主動權(quán)就是掌握信息化的發(fā)展方向,這就需要我們不斷學習,時間,研究,學習國外的先進技術(shù),轉(zhuǎn)變自己的技術(shù),然后融合,創(chuàng)新。
軟件技術(shù)不是一成不變的,是隨著社會的進步的不斷進步,不需要不斷的創(chuàng)新,不斷的改善的,需要我們不斷的學習,不斷的研究,不斷進步。