




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Email:green.lyn@教材:軟件工程導論(第5版)張海藩編著清華大學出版社軟件工程你編寫過的最長的程序有多少行?
A:50行以內B:50-100行
C:100-500行D:500行以上問題一:你編寫過的最長的程序類型:
A:課程實驗B:老師課題
C:自己學習D:其它問題二:1.1軟件危機1.1.1軟件危機的介紹軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。包含下述兩個問題:如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求;如何維護數量不斷膨脹的已有軟件。第一章軟件工程學概述
軟件危機主要有以下一些表現:對軟件開發(fā)成本和進度的估計常常很不準確;用戶對“已完成的”軟件系統(tǒng)不滿意的現象經常發(fā)生;軟件產品的質量往往靠不?。卉浖3J遣豢删S護的;軟件通常沒有適當的文檔資料;軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升;軟件開發(fā)生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。
正像下面一段對軟件危機的形象描述:
“…..正像一只逃亡的野獸落到泥潭中作垂死的掙扎,越是掙扎,陷得越深。最后無法逃脫滅頂的災難,…
程序設計工作正像這樣一個泥潭,….一批批程序員被迫在泥潭中拼命掙扎,……”1.1.2產生軟件危機的原因兩方面的原因:一是軟件本身的特點:軟件不同于硬件,是計算機系統(tǒng)中的邏輯部件而不是物理部件。(運行之前難以評價。)軟件不同于一般程序,它的一個顯著特點是規(guī)模龐大。(分工合作如何組織才能產生高質量軟件?)二是軟件開發(fā)與維護的方法原因。(忽視需求分析,輕視軟件維護)軟件生命周期:一個軟件從定義、開發(fā)、使用和維護,直到最終被廢棄,要經歷一個漫長的時期,這個漫長的時期稱為生命周期。代價高中低早中后變化出現的時期圖1.1引入同一變動付出的代價隨時間變化的趨勢1.1.3消除軟件危機的途徑
1.2軟件工程1.2.1軟件工程的介紹
概括地說,軟件工程是指導計算機軟件開發(fā)和維護的工程學科。采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質量的軟件并有效地維護它,這就是軟件工程。
軟件工程典型的定義:
“軟件工程就是為了經濟地獲得可靠的且能在實際機器上有效地運行的軟件,而建立和使用完善的工程原理。”該定義不僅指出了軟件工程的目標是經濟地開發(fā)出高質量的軟件,而且強調了軟件工程是一門工程學科,它應該建立并使用完善的工程原理。
1993年IEEE進一步給出了一個更全面更具體的定義:“軟件工程是:(1)把系統(tǒng)的、規(guī)范的、可度量的途徑應用于軟件開發(fā)、運行和維護過程,也就是把工程應用于軟件;(2)研究(1)中提到的途徑。
軟件工程的本質特征:
1.軟件工程關注大型程序的構造2.軟件工程的中心課題是控制復雜性3.軟件經常變化4.開發(fā)軟件的效率非常重要5.和諧的合作是開發(fā)軟件的關鍵6.軟件必須有效地支持它的用戶7.在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品1.2.2軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理
2.堅持進行階段評審
3.實行嚴格的產品控制
4.采用現代程序設計技術
5.結果應能清楚的審查
6.開發(fā)小組的人員應該少而精
7.承認不斷改進軟件工程實踐的必要性
1.2.3軟件工程方法學
通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學(methodology),也稱為范型(paradigm)。
軟件工程方法學包含3個要素:方法、工具和過程。其中,方法是完成軟件開發(fā)的各項任務的技術方法,回答“怎樣做”的問題;工具是為運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境;過程是為了獲得高質量的軟件所需要完成的一系列任務的框架。
目前使用的最廣泛的軟件工程方法學,分別是傳統(tǒng)方法學和面向對象方法學。1、傳統(tǒng)方法學傳統(tǒng)方法學也稱為生命周期方法學或結構化范型。它采用結構化技術(結構化分析、結構化設計和結構化實現)來完成軟件開發(fā)的各項任務,并使用適當的軟件工具或軟件工程環(huán)境來支持結構化技術的運用。該方法把軟件生命周期的全過程依次劃分為若干個階段,然后順序地完成每個階段的任務。前一階段任務的完成是下一階段工作開始的前提和基礎。每一階段的開始和結束都有嚴格的標準,在每一階段的結束之前都必須進行正式嚴格的技術審查和管理復審。2.面向對象方法學面向對象方法學具有下述4個要點:
(1)把對象(object)作為融合了數據及在數據上的操作行為的統(tǒng)一的軟件構件。面向對象程序是由對象組成的,程序中任何元素都是對象,復雜對象由比較簡單的對象組合而成,也就是說,用對象分解取代了傳統(tǒng)方法的功能分解。
(2)把所有對象都劃分成類(class)。每個類都定義了一組數據和一組操作,類是對具有相同數據和相同操作的一組相似對象的定義。數據用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息,而施加于數據之上的操作用于實現對象的動態(tài)行為。
(3)按照父類與子類的關系,把若干個相關類組成一個層次結構的系統(tǒng)。在該層次中,派生類自動擁有上層基類中定義的數據和操作,這種現象稱為繼承。(4)對象彼此間僅能通過發(fā)送消息互相聯系。1.3軟件生命周期
軟件生命周期的劃分:軟件定義軟件開發(fā)軟件維護問題定義可行性研究需求分析總體設計詳細設計編碼和單元測試綜合測試
各階段的基本任務:
1.問題定義必須回答的關鍵問題是:“要解決的問題是什么?”
2.可行性研究必須回答的關鍵問題是:“對于上一個階段所確定的問題有行得通的解決辦法嗎?”
3.需求分析準確的確定“為了解決這個問題,目標系統(tǒng)必須做什么”,主要是確定目標系統(tǒng)必須具備那些功能。
4.總體設計必須回答的關鍵問題是:“概括地說,應該如何解決這個問題?”。有兩個任務:(1)考慮幾種可能的解決方案。低成本解決方案;中等成本解決方案;高成本“十全十美”的系統(tǒng);(2)設計軟件結構,即確定程序由哪些模塊組成以及模塊間的關系。
5.詳細設計關鍵問題是:“應該怎樣具體地實現這個系統(tǒng)?”
6.編碼和單元測試關鍵任務是寫出正確的容易理解、容易維護的程序模塊。
7.綜合測試關鍵任務是通過各種類型的測試(及相應的調試)使軟件達到預定的要求。
8.軟件維護關鍵任務是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。維護類型:改正性維護、適應性維護、完善性維護、預防性維護。階段關鍵問題結束標準問題定義問題是什么?關于規(guī)模和目標的報告書可行性研究有可行的解嗎?系統(tǒng)的高層邏輯模型數據流圖成本/效益分析報告需求分析系統(tǒng)必須做什么?系統(tǒng)的邏輯模型數據流圖數據字典算法描述總體設計概括地說,應如何解決這個問題?可能的解法系統(tǒng)流程圖成本/效益分析推薦的系統(tǒng)結構層次圖或結構圖表1.1結構分析設計過程小結階段關鍵問題結束標準詳細設計怎樣具體實現這個系統(tǒng)?編碼規(guī)格說明HIPO圖或PDL編碼和單元測試正確的程序模塊源程序清單單元測試方案和結果綜合測試符合要求的軟件綜合測試方案和結果完整一致的軟件配置維護持久的滿足用戶需要的軟件完整準確的維護記錄表1.1結構分析設計過程小結1.4軟件過程軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它體現了完成各項任務的工作步驟。概括地說,軟件過程描述為了開發(fā)出客戶需要的軟件,什么人(who)、在什么時候(when)、做什么事(what)以及怎樣做(how)這些事以實現某一特定的具體目標。
過程定義了運用方法的順序、應該交付的文檔資料、為保證軟件質量和協調變化所需要采取的管理措施,以及標志軟件開發(fā)各個階段任務完成的里程碑。為了獲得高質量軟件產品,軟件過程必須科學、有效。通常使用生命周期模型簡潔的描述軟件過程。生命周期模型規(guī)定了把生命周期劃分成哪些階段以及各個階段的執(zhí)行順序,因此,也稱為過程模型。
1.4.1瀑布模型把生命周期劃分為階段的目的及實質是:控制開發(fā)工作的復雜性;通過有限的確定步驟,把用戶需求從抽象的邏輯概念逐步轉化為具體的物理實現。圖1.2傳統(tǒng)的瀑布模型問題定義總體設計需求分析可行性研究詳細設計綜合測試編碼與單元測試軟件維護
按照傳統(tǒng)的瀑布模型開發(fā)軟件,有如下幾個特點:1.階段間具有順序性和依賴性這個特點由兩重含義:(1)必須等前一階段的工作完成之后,才能開始后一階段的工作;(2)前一階段的輸出文檔就是后一階段的輸入文檔,因此只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。2.推遲實現地觀點3.質量保證的觀點在瀑布模型的每個階段都應該堅持兩個重要做法:(1)每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務。(2)每個階段結束前都要對所完成的文檔進行評審,以便及早發(fā)現問題,改正錯誤。
圖1.3實際的瀑布模型需求分析驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證1.4.2快速原型模型所謂快速原型是快速建立起來的可以在計算機上運行的程序,它所能完成的功能一般是最終產品能完成的功能的一個子集。如圖1.4所示。
快速原型驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證圖1.4快速原型模型注:實線箭頭表示開發(fā)過程虛線箭頭表示維護過程
從圖1.4可以看出,快速原型模型是不帶反饋環(huán)的,這正是這種過程模型的主要優(yōu)點:軟件產品的開發(fā)基本上是線性順序進行的。(1)原型系統(tǒng)已經通過與用戶交互而得到驗證,據此產生的規(guī)格說明文檔正確地描述了用戶需求,因此,在開發(fā)過程的后續(xù)階段不會因為發(fā)現了規(guī)格說明文檔的錯誤而進行較大的返工。(2)開發(fā)人員通過建立原型已經掌握很多東西。因此,在設計和編碼階段發(fā)生錯誤的可能性也較小,這自然減少后續(xù)階段修改前面錯誤的可能性。1.4.3增量模型增量模型也稱為漸增模型,如圖1.5所示。圖1.5增量模型需求分析驗證規(guī)格說明驗證概要設計驗證針對每個構件,完成詳細設計、編碼和集成,經測試后交付給用戶維護
使用增量模型開發(fā)軟件時,把軟件產品作為一系列的增量構件來設計、編碼、集成和測試。每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。使用增量模型時,第一個增量構件往往實現軟件的基本需求,提供最核心的功能。
圖1.5所示的增量模型表明,必須在開始實現各個構件之前就全部完成需求分析、規(guī)格說明和概要設計的工作。由于在開始構建第一個構件之前就已經有了總體設計,因此風險較小。圖1.6描繪一種風險更大的增量模型:一旦確定了用戶需求之后,就著手擬定第一個構件的規(guī)格說明文檔,完成后規(guī)格說明組將轉向第二個構件的規(guī)格說明,與此同時設計組開始設計第一個構件…用這種方式開發(fā)軟件,不同的構件將并行的構建,因此有可能加快工程進度。但是,使用這種方法將冒構件無法集成到一起的風險。規(guī)格說明設計編碼和集成交付客戶規(guī)格說明設計編碼和集成交付客戶規(guī)格說明設計編碼和集成交付客戶構件1:構件2:構件n:圖1.6風險更大的增量模型1.4.4螺旋模型
軟件開發(fā)總要冒一定風險,項目越大,軟件越復雜,承擔該項目所冒的風險也越大。軟件風險可能在不同程度上損害軟件開發(fā)過程和軟件產品質量。因此,在軟件開發(fā)過程中必須及時識別和分析風險,并且采取適當措施以消除或減少風險的危害。螺旋模型的基本思想是,使用原型及其他方法來盡量降低風險。理解這種模型的簡便方法是,把它看作在每個階段之前都增加了風險分析過程的快速原型模型,如圖1.7所示。風險分析快速原型驗證風險分析規(guī)格說明驗證風險分析設計驗證風險分析編碼測試風險分析綜合測試維護風險分析變化的需求驗證圖1.7簡化的螺旋模型圖1.8完整的螺旋模型1.4.5噴泉模型迭代是軟件開發(fā)過程中普遍存在的一種內在屬性。經驗表明,軟件過程各個階段之間的迭代或一個階段內各個工作步驟之間的迭代,在面向對象范型中比在結構化范型中更常見。圖1.9所示的噴泉模型,是典型的面向對象的軟件過程模型?!皣娙边@個詞體現了面向對象軟件開發(fā)過程迭代和無縫的特性。維護期進一步開發(fā)運行狀態(tài)集成和測試階段編碼階段面向對象設計階段面向對象分析階段需求階段圖1.9噴泉模型
圖中代表不同階段的圓圈相互重疊,這明確表示兩個活動之間存在交疊。圖中在一個階段內的向下箭頭代表該階段內的迭代(或求精)。為避免使用噴泉模型開發(fā)軟件時開發(fā)過程過分無序,應該把一個線性過程(如圖1.9中的中心垂線)作為總目標。1.最佳實踐迭代式開發(fā)管理需求使用基于構件的體系結構可視化建模驗證軟件質量控制軟件變更1.4.6Rational統(tǒng)一過程Rational統(tǒng)一過程(RationalUnifiedProcess,RUP)是由Rational公司推出的一種軟件過程。
RUP總結了6條最有效的軟件開發(fā)經驗,這些經驗被稱為“最佳實踐”。2.RUP軟件開發(fā)生命周期
RUP軟件開發(fā)生命周期是一個二維的生命周期模型。如下圖所示。圖中縱軸代表核心工作流,橫軸代表時間。(1)核心工作流
RUP中有9個核心工作流,其中前6個為核心過程工作流(CoreProcessWorkflows),后3個為核心支持工作流(CoreSupportingWorkflows)。業(yè)務建模(BusinessModeling)
需求(Requirements)
分析和設計(Analysis&Design)
實現(Implementation)
測試(Test)
部署(Deployment)
配置和變更管理(Configuration&ChangeManagement)
項目管理(ProjectManagement)
環(huán)境(Environment)(2)工作階段
RUP中的軟件生命周期在時間上被分解為四個連續(xù)的階段,每個階段都有明確的目標,并且定義了用來評估是否達到這些目標的里程碑。如果評估結果令人滿意的話,可以允許項目進入下一個階段。
四個階段的工作目標分別是:初始階段(Inception):建立業(yè)務模型,定義最終產品視圖,并且確定項目的范圍。精化階段(Elaboration):設計并確定系統(tǒng)的體系結構,制定項目計劃,確定資源需求。構建階段(Construction):開發(fā)出所有構件和應用程序,把它們集成為客戶需要的產品,并且詳盡地測試所有功能。移交階段(Transition):把開發(fā)出的產品提交給用戶使用。(3)RUP迭代式開發(fā)RUP強調采用迭代和漸增的方式來開發(fā)軟件,整個項目開發(fā)過程由多個迭代過程組成。一個迭代是一個完整的開發(fā)循環(huán),產生一個可執(zhí)行的產品版本,是最終產品的一個子集,它增量式地發(fā)展,從一個迭代過程到另一個迭代過程到成為最終的系統(tǒng)。RUP重復一系列組成軟件生命周期的循環(huán),但是,在不同的迭代過程中是以不同的工作重點和強度對這些核心工作流程進行訪問的。1.4.7敏捷過程與極限編程1.敏捷過程為了使軟件開發(fā)團隊具有高效工作和快速響應變化的能力,17位著名的軟件專家于2001年2月聯合起草了敏捷軟件開發(fā)宣言,它由4格簡單的價值觀聲明組成。(1)個體和交互勝過過程和工具(2)可以工作的軟件勝過面面俱到的文檔(3)客戶合作勝過合同談判(4)響應變化勝過遵循計劃2.極限編程極限編程(eXtremeProgramming,XP)是敏捷過程中最富盛名的一個,其名稱中‘極限’二字的含義是指把好的開發(fā)實踐運用到極致。目前,極限編程已經成為一個典型的開發(fā)方法,廣泛應用于需求模糊且經常改變的場合。(1)極限編程的有效實踐客戶作為開發(fā)團隊的成員使用用戶素材(正在進行的關于需求的談話內容的助記符。)使用用戶素材可以合理安排實現該項需求的時間短交付周期驗收測試結對編程測試驅動開發(fā)集體所有持續(xù)集成:一天之內多次集成,不斷回歸測試可持續(xù)的開發(fā)速度開放的工作空間及時調整計劃簡單的設計重構:在不改變系統(tǒng)行為的前提下,重新調整和優(yōu)化系統(tǒng)內部結構,以降低復雜性、消除冗余、增加靈活性和提高性能。使用隱喻:描述系統(tǒng)如何運作,用何種方式加入新功能。(2)極限編程的整體開發(fā)過程
圖1.11描述了極限編程的整體開發(fā)過程。圖1.11XP項目的整體開發(fā)過程(3)極限編程的迭代過程圖1.12描述了極限編程的迭代開發(fā)過程。圖1.12XP迭代開發(fā)過程
綜上所述,以極限編程為杰出代表的敏捷過程,具有對變化和不確定性的更快速,更敏捷的反映特性,而且在快速的同時仍然能保持可持續(xù)的開發(fā)速度。上述這些特點使得敏捷過程能夠較好的適應商業(yè)競爭環(huán)境下對小型項目提出的有限資源和有限開發(fā)時間的約束。項目計劃應該兼顧未來的不確定因素用有效的風險管理來減少不確定因素的影響經常生成并快速地測試軟件地過渡版本,從而提高產品地穩(wěn)定性和可預測性1.4.8微軟過程
作為世界上最大的同時也是最成功的軟件公司之一,Microsoft(微軟)公司擁有自己獨特的軟件開發(fā)過程,幾十年的實踐證明微軟過程是非常成功和行之有效的。
1、微軟過程準則微軟過程遵循下述的基本準則:采用快速循環(huán),遞進地開發(fā)過程用創(chuàng)造性地工作來平衡產品特性和產品成本項目進度表應該具有較高穩(wěn)定性和權威性使用小型項目組并發(fā)地完成開發(fā)工作在項目早期把軟件配置項基線化,項目后期則凍結產品使用原型驗證概念,對項目進行早期論證把零缺陷作為追求的目標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 正面管教課題申報書
- 內蒙古教學課題申報書
- 自籌課題申報書范文格式
- 十三五課題申報書歷史
- 數字法學課題申報指南書
- 課題申報書代寫
- 業(yè)務交易合同范本
- oem合同范本簡版
- 教育教研課題申報書
- 供貨企業(yè)供貨合同范本
- 人教版(PEP)五年級英語下冊第一單元測試卷-Unit 1 My day 含答案
- 企業(yè)名稱預先核準通知書
- 統(tǒng)籌管理方案
- 建筑工程安全文明施工標準化圖集(附圖豐富)
- 人教版 美術二年級上冊 第9課 蜻蜓飛飛 教案
- Unit 1 Travel教案-2023-2024學年高一下學期 中職英語高教版(2023修訂版)基礎模塊2
- DB3206T 1083-2024機關會議服務人員操作技術規(guī)范
- 1.3.1-二項式定理-公開課一等獎課件
- 垃圾清運突發(fā)事件應急預案
- 中醫(yī)淋巴排毒
- 提高鉆孔灌注樁成孔質量一次驗收合格率
評論
0/150
提交評論