




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程
SoftwareEngineering
第一講教材及參考資料《軟件工程》張海藩人民郵電出版社《軟件工程》鄂大偉清華大學出版社其他有關軟件開發、設計、管理類的書籍.hk軟件工程論壇,如CSDN中的軟件工程論壇等……2課程考核方式平時考勤:20分遲到一次扣1分曠課一次扣2分上機作業:15分課堂討論及課下作業:15分期末考試(筆試,閉卷):50分缺課次數在1/3以上的不允許參加考試3先修課程計算機應用基礎類課程計算機編程語言:C、C++數據庫設計(非必須)4如何學好這門課從簡到繁、從繁到簡的學習過程多看、多想、多交流、多實踐理論聯系實際5本門課程的重要性……6這門課程的學分較高這門課程的內容很多這門課程的難度不小這門課程的意義重大故此,要求大家每節課必到,每節課必聽。7讓我們進入軟件工程的廣袤天地,共同學習、交流、進步……8引論1、我們已經學習過:計算機組成原理、數據結構、操作系統、程序設計等課程。2、是否具備完成一般軟件目標能力呢?例如:⑴編寫計算y=sin(x)的源碼;⑵手機芯片操作系統(COS)設計;⑶大學課表編制系統,等等。3、要達到完成上述目標,我們僅有計算機的基礎技術是不行的。4、一般情況下,一個軟件的完成,除了要掌握計算機的基礎技術外,還要有數學、物理、電子技術等基礎科學與領域知識。95、有了上述技術還不夠。還要有軟件開發的專門技術。例如,我們要編寫一個手機操作系統時:①我們發現要知道他的設計是怎樣的;②當設計該問題時,我們發現對該問題要進行分析。③我們求解該問題的程序對嗎?④如果軟件開發周期比較長,如何應付開發對象變化?⑤參加的人員較多時的分工協作。⑥軟件質量怎么管理?10(7)一個軟件的開發用什么工具。(8)開發中如何與用戶交流與合作,與同伴合作。(9)每一個軟件技術人員都希望有軟件項目開發。那么是不是有投資就可以開發呢?這就是所謂的可行性問題。(10)如何計算一個軟件工程的費用與開發周期。(11)工程中個人榮譽與利益?!挥袑W習《軟件工程》,才能回答上述問題。11第一章軟件工程主要內容軟件危機軟件概念、特點軟件工程的定義、內容、基本原理121.1軟件危機1.1.1計算機系統的發展歷程第一代(20世紀60年代中期以前)程序設計階段 專用軟件、規模小、沒有系統化方法和管理、最終只有程序保留第二代(從20世紀60年代中期到70年代中期)程序系統階段 多道程序、多用戶系統、在線存儲及數據庫,軟件作坊,——“軟件工程”學科誕生第三代(從20世紀70年代中期到80年代中期)軟件工程階段 分布式系統、微處理器,主要在工業界和學術界應用第四代(從20世紀80年代中期至今)軟件工程階段 C/S、B/S,軟件產業在世界經濟中已經占有舉足輕重的地位13*幾十年來根本的變化體現在(1)人們改變了對軟件的看法。50-60年代,程序設計曾被看成一種任人發揮創造才能的技術領域,程序只要能在得出正確的結果,其寫法可不受任何約束。隨著計算機的廣泛使用,人們要求這些程序容易看懂、使用、修改和擴充。于是,程序便從按個人意圖創造的“藝術品”轉變為能被廣大用戶接受的工程化產品。(2)軟件的需求是軟件發展的動力。早期只是為了滿足程序開發者的需要;進入軟件工程階段以后,軟件開發的成果要在市場中流通以滿足廣大用戶的需要。(3)軟件工作的范圍從只考慮程序的編寫擴展到涉及整個軟件生存周期。1420世紀60年代末70年代初,西方工業發達國家經歷了一場“軟件危機”(1968年由北大西洋公約組織(NATO)在德國召開的國際學術會議上首次提出)。這場軟件危機表現:一方面軟件十分復雜,價格昂貴,供需差日益增大;另一方面軟件開發時又常常受挫,質量差,指定的進度表和完成日期很少能按時實現,研制過程很難管理,即軟件的研制往往失去控制軟件危機是指軟件開發和維護過程中所遇到的這一系列嚴重問題。軟件危機包含下述兩方面的問題:如何開發軟件,以滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。151.1.2軟件危機軟件危機的典型表現成本和進度估計不準確用戶不滿意質量靠不住軟件不可維護沒有適當的文檔(對于管理人員、開發人員、維護人員)軟件成本占計算機系統總成本比例逐年上升軟件開發速度跟不上硬件和應用普及,16軟件本身缺乏“可見性”,開發過程難于管理軟件維護意味著對軟件原來設計的修改大型軟件合作開發軟件開發和維護的方法不正確沒有真正把握用戶需求軟件生命周期:定義、開發、使用、維護,編程占10-20%工作量軟件由一個完整配置組成,程序只是軟件的一個部分做好軟件定義(不同階段修改付出的代價大不相同)輕視維護171.1.3產生軟件危機的原因18*《人月神話》和《沒有銀彈》由Brooks分別在1975年和1987年出版;F.P.Brooks是IBM公司在1963年—1966年開發的IBM360機操作系統的項目負責人;該項目花費5000人一年的工作量,近100萬行代碼,但結果非常糟糕,每個新版本都是從前一版本中找出1000個程序錯誤而修正的結果?!罢褚恢惶油龅囊矮F落到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂的災難”(摘自《人月神話》)。19*《人月神話》和《沒有銀彈》在《沒有銀彈》中,Brooks有一個著名論斷:軟件工作是人類所從事的最復雜的工作。在他看來,對于軟件的突破性技術(即所謂的銀彈)而言,不管是過去、現在還是將來,類似于“銀彈”的各種“屠龍之技”都不可能解決軟件復雜性的問題。這讓人們意識到了軟件工程的本質,放棄尋找“放之四海而皆準”的幻想。20軟件是計算機系統中與硬件相互依存的另一部分,它是包括程序、數據及其相關文檔的完整集合。其中:程序是能夠完成預定功能和性能的可執行的指令序列;數據是使程序能夠適當的處理信息的數據結構;文檔是開發、使用和維護程序所需要的圖文資料。值得強調的是,程序≠軟件,程序只是軟件的組成部分21*軟件的概念軟件是一種邏輯實體,不是物理實體,具有不可見和抽象性軟件的開發,是人的智力的高度發揮,而不是硬件制造軟件維護與硬件的維修有著本質的差別軟件的開發和運行常常受到計算機系統的限制,對計算機系統有著不同程度的依賴性軟件的開發至今尚未完全擺脫手工藝的開發方式,使軟件的開發效率受到很大限制軟件的開發是一個復雜的過程,可能來自它所反映的實際問題的復雜性,也可能來自程序邏輯結構的復雜性軟件的成本非常高昂相當多的軟件工作涉及到社會因素。許多軟件的開發和運行涉及機構、體制及管理方式等問題,甚至涉及到人的觀念和人們的心理22*軟件的特點*基于軟件功能的劃分系統軟件
能與計算機硬件緊密配合在一起,使計算機系統各個部件、相關的軟件和數據協調、高效地工作的軟件。例如,操作系統、數據庫管理系統、設備驅動程序以及通信處理程序等。 支撐軟件是協助用戶開發軟件的工具性軟件,其中包括幫助程序人員開發軟件產品的工具,也包括幫助管理人員控制開發的進程的工具。應用軟件
是在特定領域內開發,為特定目的服務的一類軟件。23*軟件的分類*基于軟件工作方式的劃分實時處理軟件指在事件或數據產生時,立即予以處理,并及時反饋信號,控制、監測過程的軟件。主要包括數據采集,分析,輸出三部分分時軟件
允許多個聯機用戶同時使用計算機交互式軟件能實現人機通信的軟件批處理軟件把一組輸入作業或一批數據以成批處理的方式一次運行,按順序逐個處理完的軟件24*基于軟件開發目標用戶的劃分:項目軟件也稱定制軟件,是受某個特定客戶(或少數客戶)的委托,由一個或多個軟件開發機構在合同的約束下開發出來的軟件。例如軍用防空指揮系統、衛星控制系統產品軟件是由軟件開發機構開發出來直接提供給市場,或是為千百個用戶服務的軟件。例如,文字處理軟件、文本處理軟件、財務處理軟件、人事管理軟件等。25*基于軟件部署方式的劃分:桌面程序帶數據庫不帶數據庫網絡程序C/SB/S261.2軟件工程主要內容:軟件工程的定義軟件工程的基本原理*軟件工程的框架*軟件工程的三個要素*軟件工程的知識體系*軟件開發方法271.2.1軟件工程定義軟件工程是指導計算機軟件開發和維護的工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,經濟地開發出高質量的軟件并有效地維護它。 1993年美國《IEEE軟件工程標準術語》對軟件工程下的定義為(1)把系統化的、規范的、可度量的途徑應用于軟件開發、運行和維護的過程,也就是把工程化應用于軟件中;(2)研究(1)中提到的途徑。28*軟件工程含義的理解1968年北大西洋公約組織(NATO)的計算機科學家在國際學術會議上,針對軟件開發長期以來存在的“開發周期長、成本高、質量差、適應性差、難維護”這五大難題,提出了“軟件危機”的概念。并為解決這些難題,首次提出“軟件工程”的概念,提出把軟件開發從“藝術”和“個體行為”向“工程”和“群體協同工作”轉化。基本思想是應用計算機科學理論和技術以及工程管理原則和方法,按照預算和進度,實現滿足用戶要求的軟件產品的定義、開發、發布和維護的工程。291.2.2軟件工程的7條基本原理它們是相互獨立的,是缺一不可的最小集合;同時,它們又是相當完備的。1)用分階段的生命周期計劃嚴格管理 把軟件生命周期劃分成若干個階段,并相應地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發與維護進行管理。
項目概要計劃、里程碑計劃、項目控制計劃、產品控制計劃、驗證計劃、運行維護計劃2)堅持進行階段評審 設計錯誤63%,編碼錯誤37%,發現越晚成本越高303)實行嚴格的產品控制 需求變更不可避免,需經過變更評審。實行基準(基線)配置管理。4)采用現代程序設計技術
結構化、面向對象、面向服務、面向模式程序設計5)結果應能清楚的審查
根據開發總目標和期限規定開發組織的責任和產品標準6)開發小組的人員應該少而精7)承認不斷改進軟件工程實踐的必要性
積極主動地采納新的軟件技術,注意不斷總結經驗31*軟件工程的框架軟件工程描述一個團隊為達到某個既定目標,在一定環境中的工作步驟,以及在這些工作步驟中如何對團隊的成員進行角色分工,如何為各種角色確定具體的工作流程,并指明在工作流程中應從事哪些活動,使用什么樣的方法、工具,產生哪些階段性成果。此外軟件工程還指明上述內容應如何進行有效管理以確保成功,以及工程進行過程中和結束后怎樣對工程進行評價,以期不斷改進。32軟件過程軟件管理角色環境流程活動方法工具成果評價目標(軟件產品)軟件工程框架*軟件工程的3個要素總體而言,軟件工程包含技術和管理兩方面的內容,是管理和技術的緊密結合。軟件工程研究的內容包含方法、工具、過程這三個要素。整體體系以質量為中心,關注質量是軟件工程的根本出發點和最終目標33關注質量過程方法工具方法:包括管理方法(如項目管理)和技術方法(如系統分析、設計、測試技術等)。工具;為方法提供支持,為方法的運用提供自動或半自動的支撐環境和軟件工具。過程:是將方法與工具相結合,為開發高質量軟件規定各項任務的工作步驟。*軟件工程的知識體系2001年5月,ISO和IEC共同發布了一份標準化文件——《軟件工程知識體系指南》,目前仍在更新之中。以2004年發布的版本,軟件工程知識體系(SWEBOK,SoftwareEngineeringBodyofKnowledge)的主要內容包括10個知識域(KnowledgeArea):34*軟件工程的知識體系軟件需求(SoftwareRequirements)軟件設計(SoftwareDesign)軟件構造(SoftwareConstruction)軟件測試(SoftwareTesting)軟件維護(SoftwareMaintenance)軟件配置管理(SoftwareConfigurationManagement)軟件工程管理(SoftwareEngineeringManagement)軟件工程過程(SoftwareEngineeringProcess)軟件工程工具與方法(SoftwareEngineeringToolsandMethods)軟件質量(SoftwareProcessandProductQuality)35*軟件開發方法1、軟件開發方法是一種認知觀軟件主要涉及“現實世界”、“概念世界”、“計算機世界”三個空間。其實質是人以計算機語言為橋梁,將現實世界映射于計算機世界中,已解決人們在客觀感知世界中的問題。在很多工程領域中,從事工程設計開發的都是熟悉本領域的工程師或專家;但是在軟件工程領域,一般由計算機專業背景的人在另一個不熟悉的領域中從事軟件開發。這就要求一個學習、調研、表述、論證的過程,做到對應用領域的真正認知,而后進行軟件實現。軟件開發方法正是為了解決上述問題而產生的。36*軟件開發方法面向過程的結構化開發方法面向對象的開發方法兩種開發方法是本門課程的主要內容。37Theend.后面部分的內容作為參考資料。39*工程對比一、蓋房子確定和分析需求;提出并文檔化房子的總體設計;提出房子的詳細規格說明;識別并設計房子的組成部分;構建房子的每一個組成部分;測試房子的每一個組成部分;把房子的各個組成部分集成在一起,在住戶搬進來之前做最后的修改;由房子的住戶持續進行維護。注意事項:1、房子是在社會、經濟以及它所處的政府體系的背景下建造的。即房子的建造要遵守建設法規、建設標準、生活和風俗習慣、質量保證規定和常識等40*工程對比注意事項:2、不可能確切的規定建造房子的活動,必須根據經驗為決策留有余地,已處理未預料到的或非常標準的情形。這正是藝術和專業技術發揮作用的地方。。。。因此,蓋房子是一項復雜的任務,在建造的過程中,過程、產品或資源很多時候會發生變化,但都可以通過藝術和專業知識進行適當的調劑。雖然蓋房子的過程可以標準化,但是,專家的判斷力和創造性總是需要的。41*工程對比二、構建一個系統:42蓋房子軟件項目確定Smith夫婦、Smith父母、工程隊確定客戶、用戶、開發團隊確定需求:邊界、實體、活動確定需求:邊界、實體、活動設計建筑平面圖、透視圖向客戶展示圖片、報表、文字描述、原型客戶評審;設計細化;開始施工客戶評審;設計細化;設計編寫代碼變更(增加一個天窗;追加預算用另外一種材料;增加設施)需求變更單個房間測試;供電、供水整體測試單元測試;集成測試交付使用驗收測試及交付住戶維護;工程隊維修用戶使用;開發商維護*軟件工程的概念、特點及類比概念:軟件工程是創造和生產軟件的活動和過程,包括相關的需求分析、結構設計、編程、測試和部署等各個環節。軟件工程不是科學,因為其目的在于創造而不是發現軟件工程甚至不是傳統意義上的工程,因為一般工程都有成熟的系統化方法,比如土木設計有很嚴格的標準和設計手冊供參考,但軟件工程至今沒有一個公認的系統化方法,還停留在后手工作坊階段。43*軟件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論