




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程
SoftwareEngineering
第一講王玉善
amywang@課程簡介授課內容授課方式考核方式參考書目:軟件工程:實踐者的研究方法(第5版),RogerS.Pressman機械工業出版社議題第1章軟件工程學概述軟件軟件危機軟件工程
計算機軟件已經成為一種驅動力。它是進行商業決策的引擎;它是現代科學研究和工程問題尋求解答的基礎;它也是鑒別現代產品和服務的關鍵因素。它被嵌入在各種類型的系統中:交通、醫療、電信、軍事、工業生產過程、娛樂、辦公、……難以窮舉。軟件在現代社會中確實是必不可少的。而且我們進入21世紀,軟件將成為從基礎教育到基因工程的所有領域新進展的驅動器。什么是軟件軟件是計算機系統中與硬件相互依存的另一部分,它是包括程序,數據及其相關文檔的完整集合程序是按事先設計的功能和性能要求執行的指令序列數據是使程序能正常操縱信息的數據結構文檔是與程序開發,維護和使用有關的圖文材料軟件的特點軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性軟件的生產與硬件不同,在它的開發過程中沒有明顯的制造過程在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題軟件的特點軟件的特點軟件的開發和運行常受到計算機系統的限制,對計算機系統有著不同程度的依賴性軟件本身是復雜的實際問題的復雜性程序邏輯結構的復雜性軟件成本相當昂貴相當多的軟件工作涉及到社會因素軟件的發展Intheearlydays:“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputerComputerbecamecheaperandmorecommonHighlevellanguageswereinventedProgrammerUserComputerLate1950’s:Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.Middletolate1960s:Trulylargesoftwaresystemswereattempted.After1968:SoftwareEngineering軟件危機(Crisis)軟件危機是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題:成本和進度軟件產品的質量可維護性軟件通常沒有適當的文檔資料。軟件成本在計算機系統總成本中所占的比例逐年上升。軟件開發生產率產生軟件危機的原因⑴項目沒有被很好地理解;計劃不周,最終導致進度拖延。例在20世紀60年代后期,一位熱情的年青工程師受命為一個自動化制造應用項目“編寫”計算機程序。選擇他的理由非常簡單,因為在整個技術小組中他是唯一參加過計算機編程培訓的人。這位工程師對匯編語言的IN和OUT指令以及Fortran語言有所了解,但是卻根本不懂軟件工程,更不要說項目進度安排和跟蹤了。他的老板給了他一大堆相關的手冊,以及需要做些什么的口頭描述。年輕人被告知該項目必須在兩個月之內完成。他閱讀了這些手冊,想好了解決方法,就開始編寫代碼。兩周后,老板將他叫到辦公室詢問項目進展情況。問題出在哪里?“非常好”工程師以年輕人的熱情回答道,“這個項目遠比我想像的簡單。我差不多已經完成了75%的任務。老板笑了,說道:“真是太棒了”然后他囑咐年輕人繼續努力工作,準備好一周后再匯報一次工作進度。一周后老板將年輕人叫到辦公室,問他說:“現在進度如何?”“一切順利”年輕人回答說,“但是我遇到了一些小麻煩。我會排除這些困難,很快就可以回到正軌上來。”“你覺得在最后期限之前能否完成?”老板問道。“沒有問題”工程師答道。“我差不多已經完成了90%”如果你在軟件領域中工作過幾年,你一定可以將這個故事寫完。毫不奇怪,年輕工程師在整個項目工期內始終停留在90%的進度上,(在別人的幫助下)直到交付期限之后一個月才做完⑵沒有充分的文檔資料(documentation)Managers——evaluate,trackprogress,......Programmers——communicatetoeachotherMaintainers——人與人的交流比寫程序困難得多。⑶.軟件缺乏”可見性”,軟件可靠性缺少度量的標準,質量無法保證。
如何保證軟件產品的質量,是非常復雜困難的問題。特別對于規模龐大的軟件.⑷軟件難以維護(maintainability)不易升級(evolvability)負責軟件的管理者像大多數其他行業的管理者一樣,都有巨大的壓力,要維持預算、保持進度,還要提高質量。就像溺水者抓住一根救命稻草,軟件管理者常常抓住軟件神話不放,這些神話能夠緩解其壓力的話(哪怕是暫時的)。神話1:我們已經有了關于建造軟件的標準和規程的書籍,難道它們不能給人們提供所有它們需要知道的信息嗎?現實:不錯,關于標準的書籍已經存在,但真正使用它們了嗎?軟件實踐者知道它們的存在嗎?它們是否反映了現代軟件工程實踐?它們完備嗎?它們對在保持關注質量的情況下改善交付時間是簡便有效的嗎?很多情況下,這些問題的答案是否定的。軟件神話-管理神話神話2:如果我們已經落后于計劃,可以增加更多的程序員趕上進度。現實:給一個已經延遲的軟件項目增加人手只會使其更加延遲。神話3:如果我決定向第三方外包軟件項目,我可以放松并讓承包公司去建造它。現實:如果一個機構不了解如何在內部管理和控制軟件項目,當它外包軟件項目時將總是處于掙扎的境地。軟件神話-客戶神話在許多情況下,客戶相信關于軟件的神話,因為負責軟件開發的管理者和開發人員很少去糾正客戶的錯誤理解。導致客戶過高的期望值,并最終引起對開發人員的不滿意。神話1:有了對目標的一般性描述就足以開始寫程序了,我們可以以后再補充細節。現實:糟糕的系統定義是軟件項目失敗的主要原因。關于信息領域、功能、行為、性能、接口、設計約束及確認標準的形式化的、詳細的描述是必要的。這些內容只有通過客戶和開發者之間徹底地交流后才能確定。神話2:軟件需求確實是經常變更的,但這些變更能夠很容易地滿足,因為軟件是靈活的。現實:軟件需求確實是變更的,但這些變更產生的影響會隨著其被引入的時間而不同的。軟件神話-實踐者神話在軟件的早期階段,程序設計被看成是一門藝術。神話1:一旦我們寫出了程序并使其正常運行,我們的工作就結束了。現實:越早開始寫代碼,就要花越長的時間才能完成它。研究表明在一鼐軟件上所投入的60%到80%的工作量是花費在軟件第一次交付客戶之后。神話2:在程序真正運行之前,沒有辦法評估其質量。現實:從項目一開始就可以應用的最有效的軟件質量保證機制之一是--正式的技術評審。神話3:一個成功項目唯一應該提交的就是運行程序。現實:運行程序僅是軟件配置的一部分,軟件配置包括很多東西。神話4:軟件工程將使我們創建大量的、不必要的文檔,并總是延緩我們的進度。現實:軟件工程并不是為創建文檔,而了創建質量。消除軟件危機的途徑了解產生軟件危機的原因,澄清錯誤認識,建立起關于軟件開發和維護的正確概念,還僅僅是解決軟件危機的開始,全面解決軟件危機需要一系列綜合措施。 ——軟件工程
SoftwareEngineering人們對軟件生產提出了許多疑問:為什么需要那么長的時間才能完成軟件開發。為什么開發成本如此高為什么我們不能在把軟件提交客戶之前就發現所有的錯誤為什么在軟件開發過程總是難以度量其進展造成以上問題的原因主要是:軟件行業發展的速度太快,對經驗總結不足人們對自身處理能力的認識不清解決的方法:多實踐,積累成功和失敗的案例總結、思考、提取經驗建立軟件的模型和模式軟件工程軟件工程是指導計算機軟件開發和維護的工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件并有效地維護它軟件工程FritzBauer:建立并使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法IEEE:軟件工程是開發、運行、維護和修復軟件的系統方法軟件工程的本質特性軟件工程關注于大型程序的構造軟件工程的中心課題是控制復雜性軟件經常變化開發軟件的效率非常重要和諧地工作是開發軟件的關鍵軟件必須有效的支持它的用戶在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創造產品軟件工程的基本原理分階段的生命周期計劃嚴格管理堅持進行階段評審實行嚴格的產品控制——基準配置管理采用現代程序設計技術結果應能清楚地審查開發小組的人員應該少而精1+1<2承認不斷改進軟件工程實踐的必要性軟件工程三要素:方法、工具和過程軟件工程方法為軟件開發提供了“如何做”的技術傳統軟件工程方法學與面向對象方法學軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環境軟件工程過程定義了:
方法使用的順序要求交付的文檔資料為保證質量和適應變化所需要的管理軟件開發各個階段完成的里程碑軟件工程三要素ALayeredTechnologya“quality”focusprocessmodelmethodstoolsObject-orientedmethodRationalRose誰需要軟件工程程序員項目組成員項目負責人為什么需要軟件工程項目延遲用戶需求維護困難項目超支我國軟件業的現狀我國軟件業的規模目前,我國從事軟件開發、研制、銷售、維護和服務的軟件企業有2000家左右,加上兼營的企業,總數大約有10000多家,其中具有自主軟件研發能力的軟件企業約5700家,從事軟件銷售、維護和服務的企業5000多家。在這里面,營業規模超過一億元的軟件企業達到100家以上,超過5億元的達到18家,超過10億元的達到12家。我國軟件業的現狀2001年,世界軟件產品市場銷售額超過1865億美元,我國當年的銷售額為285億元人民幣,只占世界市場不到2%的份額。國內軟件市場有限的份額中大部分為國外軟件廠商所瓜分,國內所開發的軟件產品僅占小部分。我國軟件業的現狀2001年我國軟件銷售總額96.3億美元,軟件企業約5000家,從業人員29萬。2001年印度軟件銷售總額102.3億美元,軟件企業約6000家,從業人員40萬。2001年我國軟件的出口額僅為7.2億美元,2000年與1999年分別為4億美元及2.5億美元。印度在軟件出口方面,則一直保持高速的增長。1990年印度軟件出口只有5000萬美元,1999年就達到了39億美元,2000年達到了62億美元,而2001年印度軟件出口額為77.8億美元,已經占到了印度全部出口總額的10.5%。我國軟件業的現狀我國軟件業發展不理想的原因除了政策和盜版外,最大的問題是我國絕大多數軟件企業對其軟件開發工作過程缺乏有效的管理和控制。多數軟件企業開發和生產基本上處于“技術少標準、開發缺規范、生產無檢驗、質量無保證”的狀態。在這方面印度軟件業的發展能夠給我們以啟發。它山之石印度軟件業能夠這么迅速地發展起來,除了有政府支持、英語程度、人才儲備等原因外,最重要的是從標準化與產品流程入手,重視管理。印度的軟件開發管理的特點是流程重于項目,流程管理人員獨立于研發部門,專門檢查研發部門的開發流程是不是按照既定流程走,如果流程不對,項目肯定就此停止。另外,所謂的項目經理一般都是從編碼人員
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年礦山智能化開采無人作業技術智能化設備市場細分領域分析報告
- 環境災害應急法律法規培訓法規重點基礎知識點歸納
- 真功夫快餐的在外經營模式探索
- 炸雞店的行業調研與競爭分析
- 綠色施工人才培養與發展策略
- 客服人員負面情緒過濾技巧
- 國潮風的春節舞會
- 彩妝選擇 如何選擇適合自己的彩妝產品與技術
- 兒童與老年人護理的特殊考慮因素
- 保險公司猜燈謎活動方案
- 機械設計鏈板式輸送裝置-說明書
- 《工業生態學》課程介紹與教學大綱
- 朗文定義詞匯表中英對照
- AFC檢測技術規程
- 餐飲行業抖音代運營方案
- 抗震支架設計流程
- 中國絲綢簡述ppt課件
- 蘇軾《浣溪沙》優秀課件
- 塑料包裝袋購銷合同
- 年產40萬噸甲醇合成工藝設計
- S7、S9、S11系列變壓器損耗表
評論
0/150
提交評論