第1章軟件工程的思想_第1頁
第1章軟件工程的思想_第2頁
第1章軟件工程的思想_第3頁
第1章軟件工程的思想_第4頁
第1章軟件工程的思想_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

計算機科學與技術學院

軟件工程研究室王宇穎

wangyy@

軟件工程SoftwareEngineering軟件開發既是一門科學,又是一門工程,也是一門藝術

授課對象:軟件工程專業

授課學時:

40學時,課程設計2周先修課程:高級語言程序設計、數據結構、數據庫技術等

后繼課程:面向對象的軟件開發技術系統分析與設計軟件質量保證與測試等。

軟件工程的教學目的

本課程的教學目的是培養學生的基本軟件工程素質,重視軟件項目開發的階段和過程,初步具備對軟件項目的需求分析和設計的能力,為學習后續課程奠定基礎,為今后從事規范化軟件開發奠定基礎,為培養優秀的軟件工程人才奠定基礎。軟件工程知識是從事軟件行業職業的基礎軟件程序員系統分析員軟件設計員系統架構師軟件集成師測試工程師實施工程師首席技術官軟件質量經理軟件項目經理系統管理員數據庫管理員軟件售前人員軟件營銷人員本課程的主要內容和知識結構

第1章軟件工程的思想第2章軟件開發過程模型第3章軟件開發過管理第4章軟件需求分析

(軟件開發關鍵的一步)第5章軟件設計-實現的前提第6章實現-初始結果第8章軟件維護-延長軟件壽命第7章軟件測試和質量保證-得到可交付的結果軟件工程教材叢書需求分析系列設計系列實現系列測試與度量系列項目管理系列質量管理系列面向對象技術系列建模語言系列可用性與復用系列前沿論題系列軟件工程軟件工程方法與技術軟件項目管理軟件過程系列

史濟民等,軟件工程-原理、方法與應用,

高等教育出板社ISBN7-04-011561-12007.08.第8次印刷.

孫家廣,軟件工程-理論、方法與實踐,

高等教育出板社,

2006年5月參考書

SoftwareEngineeringAPractitioner’sApproachAuthor:Rogers.Pressman(軟件工程實踐者的研究方法機械工業出版社)課程的基本要求

了解軟件工程的思想、范圍、基本要素、規范,軟件開發方法和工具。

掌握軟件開發的過程和初步建模

學會運用所學知識進行初步的軟件項目開發。8考試要求

平時成績:占總成績的20%完成一個小型軟件系統的分析、設計文檔,階段性成果占總成績的20%考試成績:占總成績的60%財富可以通過辛勤勞動獲取,也可能由于喜中彩票大獎獲得。知識卻必須是通過一點一滴努力學習逐漸積累而獲得的。珍惜每一天,每一節課,每一分鐘。聽課復習閱讀討論練習,從知到會實踐,從會到通知識—方法—能力如何學習軟件工程

學習讀書

知識課程

你們的收獲不會僅僅局限在本課程之內……課堂教學復習作業參考資料實踐滲透總結屬于自己的“最佳實踐”多動手、多實踐,方可成為合格的軟件工程師;實踐越多、參與的項目越大,積累經驗越多;首先遵循他人提出的“最佳實踐”,進而創造自己的“最佳實踐”。從“程序員”成長為“軟件工程師”程序員軟件工程師軟件工程課程(課堂)+課程設計(實踐)+課后孜孜不倦的練習、實踐、總結、歸納(…越多越好)實踐作業1)分析和設計下列問題之一,并寫出文檔.3)自定題目,如:教學管理軟件教學網站網上售書,網上購物超市管理食堂管理工寓管理

題目要有創新性。

2)課程階段性報告

學生體會

從他的歷史發展中我明白了很多道理,從他的前景中我感到了振奮和鼓舞,感謝軟件工程又給了我很多問題去思考,很多方法去實踐,更多的命題要在生活和實踐中慢慢領悟。

任何事物都有它美的一面,軟件的美是博大精深的,有待我們去細細體味,而這種美又是由我們賦予的.

希望認真溝通實踐創新14第1章

軟件工程的思想SoftwareEngineering軟件工程研究室15內容:

1.1軟件

1.2軟件工程的概念

1.3軟件工程的作用

1.4軟件工程的發展

1.5軟件工程三要素

1.6軟件開發的基本策略1.7軟件工程的目標

161.1軟件

20世紀五十年代

軟件=程序面向過程的程序=算法+數據結構

20世紀六十年代

軟件=程序+文檔

20世紀七十年代

軟件=程序+文檔+數據

面向對象的程序=對象+消息面向構件的程序=構件+構架

1.1.1軟件的定義軟件比程序更復雜軟件必須能夠模擬現實世界,才能解決現實世界的問題。現實世界是復雜的,軟件是復雜的。17軟件是是被開發或設計的,而不是被制造的人的作用不同,構建方法不同,質量問題不同,成本構成不同。故障率時間初期故障率磨損實際理想故障率時間修改軟件故障曲線硬件故障曲線圖1-1硬件、軟件故障圖1.1.2軟件的特征軟件是產品交付使用的載體。軟件不會磨損,軟件需求變化快,維護軟件困難。18*系統軟件:和硬件交互多,數據結構復雜*應用軟件*商業軟件*工程和科學計算軟件*嵌入式軟件*個人計算機軟件*人工智能軟件*基于web軟件*工具包軟件*開源軟件

*遺留軟件1.1.3軟件的分類191.2軟件工程P.Wegner和B.Boehm認為:

科學知識在設計和構造計算機程序,以及開發、運作和維護這些程序所需求的有關文檔編制中的實際應用。F.L.Bauer認為:

為了經濟地獲得軟件,這個軟件是可靠的并且能在實際的計算機上工作,所需要的健全的工作原理(方法)的確立和使用。IEEE(電氣和電子工程師協會83)指出:軟件工程是開發、運行、維護和修復軟件的系統化方法。IEEE(93)指出:

軟件工程是將系統化的、規范的、可度量的方法應用于軟件的開發、運行和維護的過程,即將工程化的方法應用于軟件開發中。201.3軟件工程的作用軟件開發失敗的例子1962年6月,美國飛向金星的第1個空間探測器(水手1號)飛行中偏移了航線,失敗了。

原因:飛艙中的導航程序中的一個語句的語義錯。世界上精心設計的并花費巨額投資的美國阿波羅8號太空飛船登月飛行計劃的軟件的錯誤,使存儲器一部分信息丟失;阿波羅14號的飛行10天中,出現18個軟件錯誤。原因:軟件的可靠性問題。1963~1966年IBM開發OS/360操作系統,投資幾千萬美元,工作量5000多人年,拖延幾年才交付使用,而且每年要發現近100個錯誤。原因:計劃上的問題,無法控制進度。21美國肯尼迪發射的一枚“阿脫拉斯火箭,當飛地面幾十英里高空時,翻轉.地面控制中心被迫下令炸毀,結果損失1850萬美元。原因:飛行計劃程序漏掉一個“連”接字符。由此可看出:軟件需求量不斷增大,復雜度越來越高,軟件可靠性無保障軟件維護費用不斷上升軟件進度無法預測成本增長無法控制程序人員無限度地增加程序功能。22上述原因導致了60年代末的“軟件危機1968年北大西洋公約組織(NATO)的計算機科學家在聯邦德國的幕尼黑召開的一次計算機軟件國際會議上,對軟件開發的方法、技術進行了廣泛的討論,首次提出了“軟件工程”的概念。軟件工程的作用:解決60年代出現的軟件危機。解決軟件當前面臨的問題。

軟件開發周期長,成本高,找錯誤難,度量困難,軟件可靠性、重用性、維護性存在問題。告訴人們怎樣去開發軟件、管理軟件。現代軟件開發對人才的要求。

提高軟件產品的質量,降低軟件開發的成本。

231.4軟件工程的發展傳統的軟件工程時代過程軟件工程時代對象軟件工程時代構件軟件工程時代(構件技術,中間件技術,集成技術)自動化的流水線裝配軟件工程的發展方向

分布式、大規模的軟件開發

遍在計算移動計算網絡資源開源軟件

軟件的網絡化,服務化,全球化的發展。24為屏蔽計算機硬件的異構性,發展了操作系統.NET/COMWebServicesJ2EE/EJBUNIXWindowsLinuxC/C++語言Java語言為屏蔽操作系統和編程語言的異構性,發展了支撐軟件和中間件為了屏蔽中間件之間的異構性,出現了Web技術。Fortran語言為了禰補應用軟件與現實計算環境之間的距離

網絡層

綜觀軟件技術的發展圖1-2應用系統操作系統支撐軟件

中間件251.5軟件工程三個要素

工具

Softwareengineeringlayers圖1-3軟件工程三個要素方法(步驟、原則)

過程(任務(活動))質量焦點工具26

提供完成系統開發每一步的詳細指導,包括具體的模型、工具和技術(的使用說明)。

1.5.1系統的開發方法(SystemDevelopmentMethodology)結構化方法:

使用結構化分析,結構化設計,結構化編程技術的系統開發方法。

面向對象方法:使用面向對象的分析,面向對象的設計,面向對象的編程技術的系統開發方法。27系統開發中使用的一些工具

項目管理應用程序制圖/圖形應用程序字處理器應用程序集成開發環境(IDE)數據庫管理應用程序反向工程工具代碼生成工具

1.5.2工具(Tool)

為軟件開發方法或開發過程提供自動或半自動支持。

CASE(Computer-AidedSoftwareEngineering)工具28

(1)

MicrosoftVisio(2)VisibleAnalyst()(3)OracleDesigner()(4)RationalRose()(5)Togethersoft()29DFDonCASEToolVisualAnalyst

Figure1-4顯示DFD的可視化工具30RationalRoseShowingOODiagramsFigure1-5顯示交互圖的ROSE工具31TogetherJShowingClassDiagramandSynchronizedJavaCodeFigure1-6顯示類圖和JAVA源代碼的往返工程工具32過程:定義了活動的時間、人員、工作內容

和達到預期目標的途徑.

如一個通用過程框架(建模活動

(分析任務(獲取、分析建立DFD圖…文檔),設計任務(結構、數據、接口…設計文檔)))

1.5.3軟件過程331.6軟件開發的基本策略“軟件復用”、“分而治之”、“優化—折中”。

1.6.1軟件復用(Reuse)

構造新的軟件系統,使用已有的軟構件,即組裝(或加以合理修改)成新的系統。

據統計,世上已有1000億多行程序,無數功能被重寫了成千上萬次,真是浪費!

在一個新系統中,大部分的內容是成熟的,只有部分內容是創新的。復用已有的功能模塊,既可以提高開發效率,也可以改善新開發過程中帶來的質量問題。將復雜問題分解為若干可獨立的簡單子問題,并分別獨立求解,以降低復雜性;將各子問題的解綜合起來,形成最初復雜問題的解。1.6.2分而治之(DivideandConquer)Figure1-7顯示模塊的分解與組裝分治的好處:開發工作可并行進行獨立部分小,易于理解一個部分出了問題,易替換,影響范圍小。局限:只了解自己工作部分,不能深入了解全部內容。35

優化就是精簡,去掉繁鎖。

例如:

#在算法設計時要考慮空間和時間的折中;

#低成本和高可靠性的折中;

#安全性和速度的折中。1.6.3優化——折中

軟件中的折中(Trade-off):不同的需求之間往往存在矛盾與沖突,需要通過折中來作出的合理的取舍,找到使雙方均滿意的點。折中策略:

是通過協調各個質量因素,實現整體質量的最優。

36軟件折中的重要原則:

不能使某一方損失關鍵的職能,更不可以象“舍魚而取熊掌”那樣拋棄一方。用“優化——折中”的策略解決“魚和熊掌不可兼得”的難題。

問題提出:假設魚每千克10元,熊掌每千克一萬元。有個人只有20元錢,非得要吃上一公斤美妙的“熊掌燒魚”,怎么辦?

解決方案:

用9元9角9分錢買999克魚肉,用10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。例舉你在學習和生活中使用折中思想的例子

37

軟件工程的目標是提高軟件的質量與生產率,降低軟件開發和維護成本,最終實現軟件的工業化生產。

質量是軟件需求方最關心的問題,用戶即使不圖物美價廉,也要求個貨真價實.

1.7軟件工程的目標38本章小結

軟件工程的概念軟件工程三要素(方法、工具、過程)軟件開發的基本策略軟件工程的目標軟件工程的思想是:

提高軟件產品的質量,降低軟件開發和維護的成本;

系統化的、規范化的進行軟件開發和科學化的管理軟件。在軟件開發中遵循模型化、模塊化、抽象的思維、復用的思想、優化—折中的思想。

39觀念之一:實踐者并不能依賴于書籍,這是因為:現實的工作中,由于條件千差萬別,即使是相當成熟的軟件工程規范,常常也無法套用。正確認識軟件工程的觀念軟件技術日新月異,沒有哪一種軟件標準能長盛不衰。祖傳秘方在某些領域很吃香,而在軟件領域則意味著落后。觀念之二:我們擁有最好的開發工具、最好的計算機,一定能做出優秀的軟件。

客觀情況:良好的開發環境只是產出成果的必要條件,而不是充分條件。如果擁有好環境的是一群庸人,難保他們不干出南轅北轍的事情。40觀念之三:

如果我們落后于計劃,可以增加更多的程序員來解決。觀念之四:需求分析很困難,軟件修改越早代價越少,修改越晚代價越大,就跟治病一樣道理。客觀情況:軟件開發不同于傳統的農業生產,人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。41

爭議之一:如果軟件運行較慢,是換一臺更快的計算機,還是設計一種更快的算法?一些有爭議的觀念

如果開發軟件的目的是為了學習或是研究,那么應該設計一種更快的算法。

如果該軟件已經用于商業,則需謹慎考慮:若換一臺更快的計算機能解決問題,則是最快的解決方案。42類似的爭議還有:是買現成的程序,還是徹底自己開發?技術人員和商業人士常常會有不同的選擇。

改進算法雖然可以從根本上提高軟件的運行速度,但可能引入錯誤以及延誤進程。技術狂毫無疑問會選后擇者,因為他們覺得放棄任何可以優化的機會就等于犯罪。爭議之二:

有最好的軟件工程方法,最好的編程語言嗎?觀點:開發人員應該根據客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質量與生產率。

程序設計是自由與快樂的事情,不要自尋煩惱。43

觀點:就軟件開發而言,技巧的優點在于能另辟蹊徑地解決一問題,缺點是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優點對整個系統而言是微不足道的,而一個錯誤則可能是致命的。編程時是否應該多使用技巧?爭議之三:建議用自然的方式編程,少用技巧。

《狼三則》的故事告訴我們“失敗的技

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論