第一講軟件工程_第1頁
第一講軟件工程_第2頁
第一講軟件工程_第3頁
第一講軟件工程_第4頁
第一講軟件工程_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程

SoftwareEngineering

第一講教材及參考資料《軟件工程》張海藩人民郵電出版社《軟件工程》鄂大偉清華大學出版社其他有關軟件開發(fā)、設計、管理類的書籍.hk軟件工程論壇,如CSDN中的軟件工程論壇等……2課程考核方式平時考勤:20分遲到一次扣1分曠課一次扣2分上機作業(yè):15分課堂討論及課下作業(yè):15分期末考試(筆試,閉卷):50分缺課次數(shù)在1/3以上的不允許參加考試3先修課程計算機應用基礎類課程計算機編程語言:C、C++數(shù)據(jù)庫設計(非必須)4如何學好這門課從簡到繁、從繁到簡的學習過程多看、多想、多交流、多實踐理論聯(lián)系實際5本門課程的重要性……6這門課程的學分較高這門課程的內(nèi)容很多這門課程的難度不小這門課程的意義重大故此,要求大家每節(jié)課必到,每節(jié)課必聽。7讓我們進入軟件工程的廣袤天地,共同學習、交流、進步……8引論1、我們已經(jīng)學習過:計算機組成原理、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、程序設計等課程。2、是否具備完成一般軟件目標能力呢?例如:⑴編寫計算y=sin(x)的源碼;⑵手機芯片操作系統(tǒng)(COS)設計;⑶大學課表編制系統(tǒng),等等。3、要達到完成上述目標,我們僅有計算機的基礎技術是不行的。4、一般情況下,一個軟件的完成,除了要掌握計算機的基礎技術外,還要有數(shù)學、物理、電子技術等基礎科學與領域知識。95、有了上述技術還不夠。還要有軟件開發(fā)的專門技術。例如,我們要編寫一個手機操作系統(tǒng)時:①我們發(fā)現(xiàn)要知道他的設計是怎樣的;②當設計該問題時,我們發(fā)現(xiàn)對該問題要進行分析。③我們求解該問題的程序?qū)??④如果軟件開發(fā)周期比較長,如何應付開發(fā)對象變化?⑤參加的人員較多時的分工協(xié)作。⑥軟件質(zhì)量怎么管理?10(7)一個軟件的開發(fā)用什么工具。(8)開發(fā)中如何與用戶交流與合作,與同伴合作。(9)每一個軟件技術人員都希望有軟件項目開發(fā)。那么是不是有投資就可以開發(fā)呢?這就是所謂的可行性問題。(10)如何計算一個軟件工程的費用與開發(fā)周期。(11)工程中個人榮譽與利益。……只有學習《軟件工程》,才能回答上述問題。11第一章軟件工程主要內(nèi)容軟件危機軟件概念、特點軟件工程的定義、內(nèi)容、基本原理121.1軟件危機1.1.1計算機系統(tǒng)的發(fā)展歷程第一代(20世紀60年代中期以前)程序設計階段 專用軟件、規(guī)模小、沒有系統(tǒng)化方法和管理、最終只有程序保留第二代(從20世紀60年代中期到70年代中期)程序系統(tǒng)階段 多道程序、多用戶系統(tǒng)、在線存儲及數(shù)據(jù)庫,軟件作坊,——“軟件工程”學科誕生第三代(從20世紀70年代中期到80年代中期)軟件工程階段 分布式系統(tǒng)、微處理器,主要在工業(yè)界和學術界應用第四代(從20世紀80年代中期至今)軟件工程階段 C/S、B/S,軟件產(chǎn)業(yè)在世界經(jīng)濟中已經(jīng)占有舉足輕重的地位13*幾十年來根本的變化體現(xiàn)在(1)人們改變了對軟件的看法。50-60年代,程序設計曾被看成一種任人發(fā)揮創(chuàng)造才能的技術領域,程序只要能在得出正確的結(jié)果,其寫法可不受任何約束。隨著計算機的廣泛使用,人們要求這些程序容易看懂、使用、修改和擴充。于是,程序便從按個人意圖創(chuàng)造的“藝術品”轉(zhuǎn)變?yōu)槟鼙粡V大用戶接受的工程化產(chǎn)品。(2)軟件的需求是軟件發(fā)展的動力。早期只是為了滿足程序開發(fā)者的需要;進入軟件工程階段以后,軟件開發(fā)的成果要在市場中流通以滿足廣大用戶的需要。(3)軟件工作的范圍從只考慮程序的編寫擴展到涉及整個軟件生存周期。1420世紀60年代末70年代初,西方工業(yè)發(fā)達國家經(jīng)歷了一場“軟件危機”(1968年由北大西洋公約組織(NATO)在德國召開的國際學術會議上首次提出)。這場軟件危機表現(xiàn):一方面軟件十分復雜,價格昂貴,供需差日益增大;另一方面軟件開發(fā)時又常常受挫,質(zhì)量差,指定的進度表和完成日期很少能按時實現(xiàn),研制過程很難管理,即軟件的研制往往失去控制軟件危機是指軟件開發(fā)和維護過程中所遇到的這一系列嚴重問題。軟件危機包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。151.1.2軟件危機軟件危機的典型表現(xiàn)成本和進度估計不準確用戶不滿意質(zhì)量靠不住軟件不可維護沒有適當?shù)奈臋n(對于管理人員、開發(fā)人員、維護人員)軟件成本占計算機系統(tǒng)總成本比例逐年上升軟件開發(fā)速度跟不上硬件和應用普及,16軟件本身缺乏“可見性”,開發(fā)過程難于管理軟件維護意味著對軟件原來設計的修改大型軟件合作開發(fā)軟件開發(fā)和維護的方法不正確沒有真正把握用戶需求軟件生命周期:定義、開發(fā)、使用、維護,編程占10-20%工作量軟件由一個完整配置組成,程序只是軟件的一個部分做好軟件定義(不同階段修改付出的代價大不相同)輕視維護171.1.3產(chǎn)生軟件危機的原因18*《人月神話》和《沒有銀彈》由Brooks分別在1975年和1987年出版;F.P.Brooks是IBM公司在1963年—1966年開發(fā)的IBM360機操作系統(tǒng)的項目負責人;該項目花費5000人一年的工作量,近100萬行代碼,但結(jié)果非常糟糕,每個新版本都是從前一版本中找出1000個程序錯誤而修正的結(jié)果?!罢褚恢惶油龅囊矮F落到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂?shù)臑碾y”(摘自《人月神話》)。19*《人月神話》和《沒有銀彈》在《沒有銀彈》中,Brooks有一個著名論斷:軟件工作是人類所從事的最復雜的工作。在他看來,對于軟件的突破性技術(即所謂的銀彈)而言,不管是過去、現(xiàn)在還是將來,類似于“銀彈”的各種“屠龍之技”都不可能解決軟件復雜性的問題。這讓人們意識到了軟件工程的本質(zhì),放棄尋找“放之四海而皆準”的幻想。20軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及其相關文檔的完整集合。其中:程序是能夠完成預定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當?shù)奶幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護程序所需要的圖文資料。值得強調(diào)的是,程序≠軟件,程序只是軟件的組成部分21*軟件的概念軟件是一種邏輯實體,不是物理實體,具有不可見和抽象性軟件的開發(fā),是人的智力的高度發(fā)揮,而不是硬件制造軟件維護與硬件的維修有著本質(zhì)的差別軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式,使軟件的開發(fā)效率受到很大限制軟件的開發(fā)是一個復雜的過程,可能來自它所反映的實際問題的復雜性,也可能來自程序邏輯結(jié)構(gòu)的復雜性軟件的成本非常高昂相當多的軟件工作涉及到社會因素。許多軟件的開發(fā)和運行涉及機構(gòu)、體制及管理方式等問題,甚至涉及到人的觀念和人們的心理22*軟件的特點*基于軟件功能的劃分系統(tǒng)軟件

能與計算機硬件緊密配合在一起,使計算機系統(tǒng)各個部件、相關的軟件和數(shù)據(jù)協(xié)調(diào)、高效地工作的軟件。例如,操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、設備驅(qū)動程序以及通信處理程序等。 支撐軟件是協(xié)助用戶開發(fā)軟件的工具性軟件,其中包括幫助程序人員開發(fā)軟件產(chǎn)品的工具,也包括幫助管理人員控制開發(fā)的進程的工具。應用軟件

是在特定領域內(nèi)開發(fā),為特定目的服務的一類軟件。23*軟件的分類*基于軟件工作方式的劃分實時處理軟件指在事件或數(shù)據(jù)產(chǎn)生時,立即予以處理,并及時反饋信號,控制、監(jiān)測過程的軟件。主要包括數(shù)據(jù)采集,分析,輸出三部分分時軟件

允許多個聯(lián)機用戶同時使用計算機交互式軟件能實現(xiàn)人機通信的軟件批處理軟件把一組輸入作業(yè)或一批數(shù)據(jù)以成批處理的方式一次運行,按順序逐個處理完的軟件24*基于軟件開發(fā)目標用戶的劃分:項目軟件也稱定制軟件,是受某個特定客戶(或少數(shù)客戶)的委托,由一個或多個軟件開發(fā)機構(gòu)在合同的約束下開發(fā)出來的軟件。例如軍用防空指揮系統(tǒng)、衛(wèi)星控制系統(tǒng)產(chǎn)品軟件是由軟件開發(fā)機構(gòu)開發(fā)出來直接提供給市場,或是為千百個用戶服務的軟件。例如,文字處理軟件、文本處理軟件、財務處理軟件、人事管理軟件等。25*基于軟件部署方式的劃分:桌面程序帶數(shù)據(jù)庫不帶數(shù)據(jù)庫網(wǎng)絡程序C/SB/S261.2軟件工程主要內(nèi)容:軟件工程的定義軟件工程的基本原理*軟件工程的框架*軟件工程的三個要素*軟件工程的知識體系*軟件開發(fā)方法271.2.1軟件工程定義軟件工程是指導計算機軟件開發(fā)和維護的工程學科。采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結(jié)合起來,經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。 1993年美國《IEEE軟件工程標準術語》對軟件工程下的定義為(1)把系統(tǒng)化的、規(guī)范的、可度量的途徑應用于軟件開發(fā)、運行和維護的過程,也就是把工程化應用于軟件中;(2)研究(1)中提到的途徑。28*軟件工程含義的理解1968年北大西洋公約組織(NATO)的計算機科學家在國際學術會議上,針對軟件開發(fā)長期以來存在的“開發(fā)周期長、成本高、質(zhì)量差、適應性差、難維護”這五大難題,提出了“軟件危機”的概念。并為解決這些難題,首次提出“軟件工程”的概念,提出把軟件開發(fā)從“藝術”和“個體行為”向“工程”和“群體協(xié)同工作”轉(zhuǎn)化?;舅枷胧菓糜嬎銠C科學理論和技術以及工程管理原則和方法,按照預算和進度,實現(xiàn)滿足用戶要求的軟件產(chǎn)品的定義、開發(fā)、發(fā)布和維護的工程。291.2.2軟件工程的7條基本原理它們是相互獨立的,是缺一不可的最小集合;同時,它們又是相當完備的。1)用分階段的生命周期計劃嚴格管理 把軟件生命周期劃分成若干個階段,并相應地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發(fā)與維護進行管理。

項目概要計劃、里程碑計劃、項目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護計劃2)堅持進行階段評審 設計錯誤63%,編碼錯誤37%,發(fā)現(xiàn)越晚成本越高303)實行嚴格的產(chǎn)品控制 需求變更不可避免,需經(jīng)過變更評審。實行基準(基線)配置管理。4)采用現(xiàn)代程序設計技術

結(jié)構(gòu)化、面向?qū)ο?、面向服務、面向模式程序設計5)結(jié)果應能清楚的審查

根據(jù)開發(fā)總目標和期限規(guī)定開發(fā)組織的責任和產(chǎn)品標準6)開發(fā)小組的人員應該少而精7)承認不斷改進軟件工程實踐的必要性

積極主動地采納新的軟件技術,注意不斷總結(jié)經(jīng)驗31*軟件工程的框架軟件工程描述一個團隊為達到某個既定目標,在一定環(huán)境中的工作步驟,以及在這些工作步驟中如何對團隊的成員進行角色分工,如何為各種角色確定具體的工作流程,并指明在工作流程中應從事哪些活動,使用什么樣的方法、工具,產(chǎn)生哪些階段性成果。此外軟件工程還指明上述內(nèi)容應如何進行有效管理以確保成功,以及工程進行過程中和結(jié)束后怎樣對工程進行評價,以期不斷改進。32軟件過程軟件管理角色環(huán)境流程活動方法工具成果評價目標(軟件產(chǎn)品)軟件工程框架*軟件工程的3個要素總體而言,軟件工程包含技術和管理兩方面的內(nèi)容,是管理和技術的緊密結(jié)合。軟件工程研究的內(nèi)容包含方法、工具、過程這三個要素。整體體系以質(zhì)量為中心,關注質(zhì)量是軟件工程的根本出發(fā)點和最終目標33關注質(zhì)量過程方法工具方法:包括管理方法(如項目管理)和技術方法(如系統(tǒng)分析、設計、測試技術等)。工具;為方法提供支持,為方法的運用提供自動或半自動的支撐環(huán)境和軟件工具。過程:是將方法與工具相結(jié)合,為開發(fā)高質(zhì)量軟件規(guī)定各項任務的工作步驟。*軟件工程的知識體系2001年5月,ISO和IEC共同發(fā)布了一份標準化文件——《軟件工程知識體系指南》,目前仍在更新之中。以2004年發(fā)布的版本,軟件工程知識體系(SWEBOK,SoftwareEngineeringBodyofKnowledge)的主要內(nèi)容包括10個知識域(KnowledgeArea):34*軟件工程的知識體系軟件需求(SoftwareRequirements)軟件設計(SoftwareDesign)軟件構(gòu)造(SoftwareConstruction)軟件測試(SoftwareTesting)軟件維護(SoftwareMaintenance)軟件配置管理(SoftwareConfigurationManagement)軟件工程管理(SoftwareEngineeringManagement)軟件工程過程(SoftwareEngineeringProcess)軟件工程工具與方法(SoftwareEngineeringToolsandMethods)軟件質(zhì)量(SoftwareProcessandProductQuality)35*軟件開發(fā)方法1、軟件開發(fā)方法是一種認知觀軟件主要涉及“現(xiàn)實世界”、“概念世界”、“計算機世界”三個空間。其實質(zhì)是人以計算機語言為橋梁,將現(xiàn)實世界映射于計算機世界中,已解決人們在客觀感知世界中的問題。在很多工程領域中,從事工程設計開發(fā)的都是熟悉本領域的工程師或?qū)<?;但是在軟件工程領域,一般由計算機專業(yè)背景的人在另一個不熟悉的領域中從事軟件開發(fā)。這就要求一個學習、調(diào)研、表述、論證的過程,做到對應用領域的真正認知,而后進行軟件實現(xiàn)。軟件開發(fā)方法正是為了解決上述問題而產(chǎn)生的。36*軟件開發(fā)方法面向過程的結(jié)構(gòu)化開發(fā)方法面向?qū)ο蟮拈_發(fā)方法兩種開發(fā)方法是本門課程的主要內(nèi)容。37Theend.后面部分的內(nèi)容作為參考資料。39*工程對比一、蓋房子確定和分析需求;提出并文檔化房子的總體設計;提出房子的詳細規(guī)格說明;識別并設計房子的組成部分;構(gòu)建房子的每一個組成部分;測試房子的每一個組成部分;把房子的各個組成部分集成在一起,在住戶搬進來之前做最后的修改;由房子的住戶持續(xù)進行維護。注意事項:1、房子是在社會、經(jīng)濟以及它所處的政府體系的背景下建造的。即房子的建造要遵守建設法規(guī)、建設標準、生活和風俗習慣、質(zhì)量保證規(guī)定和常識等40*工程對比注意事項:2、不可能確切的規(guī)定建造房子的活動,必須根據(jù)經(jīng)驗為決策留有余地,已處理未預料到的或非常標準的情形。這正是藝術和專業(yè)技術發(fā)揮作用的地方。。。。因此,蓋房子是一項復雜的任務,在建造的過程中,過程、產(chǎn)品或資源很多時候會發(fā)生變化,但都可以通過藝術和專業(yè)知識進行適當?shù)恼{(diào)劑。雖然蓋房子的過程可以標準化,但是,專家的判斷力和創(chuàng)造性總是需要的。41*工程對比二、構(gòu)建一個系統(tǒng):42蓋房子軟件項目確定Smith夫婦、Smith父母、工程隊確定客戶、用戶、開發(fā)團隊確定需求:邊界、實體、活動確定需求:邊界、實體、活動設計建筑平面圖、透視圖向客戶展示圖片、報表、文字描述、原型客戶評審;設計細化;開始施工客戶評審;設計細化;設計編寫代碼變更(增加一個天窗;追加預算用另外一種材料;增加設施)需求變更單個房間測試;供電、供水整體測試單元測試;集成測試交付使用驗收測試及交付住戶維護;工程隊維修用戶使用;開發(fā)商維護*軟件工程的概念、特點及類比概念:軟件工程是創(chuàng)造和生產(chǎn)軟件的活動和過程,包括相關的需求分析、結(jié)構(gòu)設計、編程、測試和部署等各個環(huán)節(jié)。軟件工程不是科學,因為其目的在于創(chuàng)造而不是發(fā)現(xiàn)軟件工程甚至不是傳統(tǒng)意義上的工程,因為一般工程都有成熟的系統(tǒng)化方法,比如土木設計有很嚴格的標準和設計手冊供參考,但軟件工程至今沒有一個公認的系統(tǒng)化方法,還停留在后手工作坊階段。43*軟件

溫馨提示

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

評論

0/150

提交評論