




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程1軟件工程
第一章軟件工程概念軟件工程2軟件工程
第一章軟件工程概念一、軟件的概念二、軟件危機三、軟件工程定義四、軟件工程框架五、軟件工程過程與軟件生存周期六、軟件開發范型(Paradigm)七、軟件工程原則軟件工程3提示:設計與建模要點結構化分析建模:數據流圖、實體關系圖、狀態遷移圖、數據字典結構化設計建模:數據流圖轉換為系統結構圖結構化程序設計:程序流程圖、N-S圖、PAD程序環路復雜性計算測試用例設計:邏輯覆蓋、循環測試、基本路徑覆蓋、因果圖可靠性分析:估算測試前程序中潛在錯誤OMT建模:對象模型、動態模型(狀態圖、事件追蹤圖)UML建模:用例圖、類圖、順序圖、活動圖軟件工程4一、軟件的概念軟件的定義軟件由計算機程序、數據及文檔組成。軟件與硬件、數據庫、人、過程等共同構成計算機系統。軟件按功能分類:應用軟件、系統軟件、支撐軟件。軟件的發展經歷了三個階段:程序設計階段、程序系統階段、軟件工程階段。軟件工程51、軟件的發展
程序設計階段(又稱個體生產時期—50至60年代)程序系統階段(又稱軟件作坊時期。軟件=程序+說明—60至70年代 )軟件工程時期(—70年代以后)軟件工程方法時期(70初至80年代中)集成的計算機輔助軟件工程時期(ICASEIntegratedCASE-80年代后)軟件工程6軟件發展的三個時期及其特點特點時期程序設計程序系統軟件工程軟件所指程序程序及規格說明書程序、文檔、數據主要程序設計語言匯編及機器語言高級語言軟件語言軟件工作范圍編寫程序包括設計和測試軟件生存期需求者程序設計者本人少數用戶市場用戶軟件工程7續表一特點時期程序設計程序系統軟件工程開發軟件的組織者個人開發小組開發小組及大中型開發機構軟件規模小型中、小型大、中、小型決定質量的因素個人程序設計技術開發小組技術水平管理水平開發技術和手段子程序程序庫結構化程序設計數據庫、開發工具、開發環境、工程化開發方法、標準和規范、網絡和分布式開發、對象技術軟件工程8續表二特點時期程序設計程序系統軟件工程維護責任者程序設計者開發小組專職維護人員硬件特征價格高、存儲容量小降價、速度、容量及工作可靠性明顯提高向超高速、大容量、微型化及網絡化方向發展軟件特征完全不受重視軟件技術的發展不能滿足需要,出現軟件危機開發技術有進步,但未獲突破性進展,價格高,未完全擺脫軟件危機軟件工程92、什么是軟件軟件是計算機系統中與硬件相互依存的另一部分,它是包括程序,數據及其相關文檔的完整集合程序是按事先設計的功能和性能要求執行的指令序列數據是使程序能正常操縱信息的數據結構文檔是與程序開發,維護和使用有關的圖文材料軟件工程103、軟件的特點
軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性軟件的生產與硬件不同,在它的開發過程中沒有明顯的制造過程在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題軟件工程11失效率曲線:
軟件工程12軟件的開發和運行常受到計算機系統的限制,對計算機系統有著不同程度的依賴性。這導致了軟件移植問題。軟件本身是復雜的實際問題的復雜性程序邏輯結構的復雜性軟件大多是定制的。而不是裝配的。軟件成本相當昂貴相當多的軟件工作涉及到社會因素軟件工程13軟件技術的發展落后于需求軟件復雜性差距時間軟件技術軟件需求軟件工程14
計算機系統硬、軟件成本比例的變化軟件工程154、軟件的分類按軟件的功能進行劃分系統軟件支撐軟件應用軟件軟件工程軟件危機是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。軟件危機的主要特征軟件開發進度難以預測軟件開發成本難以控制用戶對軟件功能難以滿足軟件產品質量無法保證軟件產品難以維護軟件缺少文檔資料軟件的成本不斷提高。軟件開發生產率的提高趕不上人們需求的增長二、軟件危機軟件工程17軟件危機產生的原因
產生軟件危機有兩個方面的原因:
內部因素與軟件本身的特點有關。內在因素是客觀的存在,只能因勢利導加以解決。外部因素與軟件開發和維護的技術方法有關。外部因素是可以完善、提高的。軟件工程18軟件特點的因素
軟件是邏輯產品,是代碼化了的人的思維活動。在總體構思時,別人無法管理和干預。在寫出程序、并在機器上運行之前,進展情況難以掌握,開發質量也無法評估。這些都給管理和控制帶來不便。
軟件是特定問題在計算機上的運行描述。實際問題的復雜性決定了一個實用軟件系統規模往往十分龐大。程序規模越大,控制、管理難度也就越大。軟件工程19軟件開發維護技術方法的因素開發人員和用戶之間的矛盾許多軟件系統開發失敗的主要原因是開發人員在沒有準確、完整地了解了用戶的需求后就急于編程;用戶對需求也往往不能準確、完整地提出。
軟件產品有其生命周期在周期的各個階段有其具體的任務,如何完成任務,各個階段有不同的技術方法和操作步驟。只有科學的按生命周期各階段的任務去組織實施,才能保證質量,降低成本;急于求成,不按科學規律、方法實施,只能“事倍功半”,事與愿違。軟件工程20
軟件產品的使用壽命很長在這期間因功能的增加、硬件的更新換代,都要對軟件進行必要的修改。據統計數據表明,軟件維護的費用占總費用的55%~70%。軟件工程的一個重要目標就是提高軟件的可維護性,減少軟件維護的代價。討論中國軟件存在的問題軟件工程21解決軟件危機的途徑樹立對計算機軟件的正確認識。軟件開發應該是組織良好、管理嚴密、各類人員團結協作共同完成的工程項目。必須充分吸取和借鑒人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術和方法,并研究能更有效地開發軟件的技術和方法。積極開發和使用計算機輔助軟件工程(CASE)工具。總之,為了解決軟件危機就要從技術措施(方法和工具)和組織管理兩個方面去研究。
軟件工程22軟件工程概念的出現源自軟件危機。1968年德國人Bauer在北大西洋公約組織會議上的定義:"建立并使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法"。1983年IEEE的軟件工程定義:"軟件工程是開發,運行,維護和修復軟件的系統方法"。1993年IEEE的一個更加綜合的定義:"將系統化的,規范的,可度量的方法應用于軟件的開發,運行和維護的過程,即將工程化應用于軟件中"。三、軟件工程定義軟件工程23我國2006年的國家標準《GB/T11457—2006軟件工程術語》軟件工程定義:應用計算機科學理論和技術以及工程管理原則和方法,按預算進度,實現滿足用戶要求的軟件產品的定義、開發、發布和維護的工程或進行研究的學科。三、軟件工程定義軟件工程24軟件工程學主要研究內容軟件工程學軟件開發技術軟件管理技術軟件開發方法學軟件工具軟件工程開發環境軟件管理學軟件工程經濟學軟件工程25軟件開發方法學:是研究如何高效地開發出高質量的軟件的方法。它應提供以下兩個模型: 軟件開發模型 軟件產品描述模型軟件工具:研究軟件工具開發的理論和技術,軟件工具是指“支持計算機軟件的開發、維護、模擬、移植或管理而研制的程序系統。軟件工程26軟件工程環境:軟件工程環境是“相關的一組軟件工具的集合,它支持一定的軟件開發方法或按照一定的軟件開發模型組織而成。軟件工程管理:研究如何有效地對軟件開發項目進行管理。它包括成本估算、進度計劃、人員組織、質量保證等多方面內容。軟件工程經濟學:軟件工程27軟件工程技術的兩個明顯特點:一是強調規范化,另一是強調文檔化。軟件工程包含四要素:方法(methodologies)語言(languages)工具(tools)過程(procedures).軟件工程28方法:提供如何構造軟件的技術。語言:用以支持軟件的分析、設計和實現。工具:為方法和語言提供自動化或半自動化的支持。過程:是將方法、語言和工具綜合起來以達到合理、及時地進行計算機軟件開發的目的。過程定義了方法的使用順序、要求交付的文檔資料、為保證質量和協調變化所需要的管理、及軟件開發各階段完成的里程碑。軟件工程29可用性性性確正合算選取適宜的開發模型采用合適的設計方法提供高質量的工程支持重視軟件工程的管理基本過程支持過程組織過程目標過程原則四、軟件工程框架軟件工程30軟件工程框架給出了軟件工程三個主要方面。軟件工程目標—包括可用性、正確性和合算性,規定了軟件工程實踐的結果(即軟件)應具有的基本性質;軟件工程過程—包含的基本活動有需求、分析與設計、實現、確認與測試、維護與支持;軟件工程的四條原則--采用適宜的開發模型,使用恰當的開發方法,提供高質量的工程支持,實施有效的工程管理,從四個方面指導每一項工程的活動,以實現軟件工程目標。軟件工程31ISO9000定義:軟件工程過程是把輸入轉化為輸出的一組彼此相關的資源和活動。從軟件開發的觀點看,它就是使用適當的資源(包括人員、硬軟件工具、時間等),為開發軟件進行的一組開發活動,在過程結束時將輸入(用戶要求)轉化為輸出(軟件產品)。五、軟件工程過程與軟件生存周期軟件工程32軟件工程過程定義了:方法使用的順序、要求交付的文檔資料、為保證質量和適應變化所需要的管理、軟件開發各個階段完成的里程碑。軟件工程過程包含四種基本的過程活動:
plan:軟件規格說明
do:軟件開發
check:軟件確認
action:軟件演進軟件工程過程軟件工程33軟件工程過程的特性易理解性可見性可支持性可接受性可靠性健壯性可維護性速度軟件工程34軟件生存周期軟件的生存期:軟件有一個孕育、誕生、成長、成熟、衰亡的生存過程。通常,把軟件從開始研制(形成概念)到最終軟件被廢棄不用這整個階段稱為軟件的生存期。軟件生存周期:為了能對軟件進行有條不紊、有步驟的開發和管理,將軟件生存期劃分為若干階段,稱為軟件生存周期軟件工程35軟件定義、軟件開發及軟件運行維護。軟件定義時期的任務是:確定軟件開發工程必須完成的總目標;確定工程的可行性;導出實現工程目標應該采用的策略及系統必須完成的功能;估計完成該項工程需要的資源和成本,并制定工程進度表。該時期通常進一步劃分為三個階段,即問題定義、可行性研究和需求分析。軟件生存周期包含三個時期軟件工程36軟件開發時期具體設計和實現在前一個時期定義的軟件,它通常由四個階段組成:總體設計、詳細設計、編碼和測試(包括單元測試、綜合測試)。軟件運行維護時期主要任務是使軟件持久地滿足用戶需要。軟件工程37軟件生存周期每個階段的基本任務問題定義:必須回答的關鍵問題是“要解決的問題是什么?”。可行性研究:必須回答的關鍵問題是“對于上一個階段確定的問題有行得通的解決辦法嗎?”。需求分析:必須回答的關鍵問題是“為了解決這個問題,目標系統必須做什么?”,主要是確定目標系統必須具備哪些功能。
軟件工程38總體設計:必須回答的關鍵問題是“概括地說,應該怎樣實現目標系統?”。確定程序由哪些模塊組成以及模塊間的關系詳細設計:必須回答的關鍵問題是“應該怎樣具體實現目標系統?”。詳細的設計每個模塊,確定實現模塊功能所需要的算法和數據結構軟件工程39編碼和單元測試:關鍵任務是寫出正確的容易理解、容易維護的程序模塊,并仔細測試每個編寫出的模塊。綜合測試:關鍵任務是通過各種類型的測試(及相應的調試)使軟件達到預定的要求。維護時期:主要任務是通過各種必要的維護活動,使系統持久地滿足用戶需要。
軟件工程40關干軟件生命周期階段的幾個問題問題一:開發一個軟件大概需要多少資金、時間,將獲得什么效益一般是在哪個階段確定?相對而言,在哪個階段與用戶交流最多?問題二:系統分析員主要工作在哪個時期?程序員主要工作在哪個時期?問題三:軟件定義時期的三個階段,各自回答什么關鍵問題?問題四:軟件開發時期有幾個階段?各自回答什么關鍵問題?軟件工程41關干軟件生命周期階段的幾個問題(續)問題五:軟件體系結構最早是在哪個階段決定的?問題六:詳細設計與程序編寫階段有什么樣的密切聯系?問題七:“軟件測試是為了驗證系統的正確性”這句話對嗎?問題八:軟件維護有那幾種?各有什么功能?軟件工程42軟件生存周期模型是軟件工程思想的具體化,是跨越軟件生存周期的系統開發、運行、維護所實施的全部活動和任務的過程框架。常用的軟件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,噴泉模型,快速應用開發(RAD)模型。軟件生存周期模型軟件工程43瀑布模型各項活動按自上而下,相互銜接的固定次序,如同瀑布逐級下落,每項活動均處于一個質量環(輸入-處理-輸出-評審)中。階段間具有順序性和依賴性。推遲實現的觀點。每個階段必須完成規定的文檔;每個階段結束前完成文檔審查。它的致命缺點在于只有做出精確的需求分析,才能取得預期的結果。軟件工程44需求定義系統與軟件設計集成與系統測試實現與單元測試運行與維護軟件工程45演化模型演化模型是迭代的,軟件必須經過不斷演化才能完善。演化模型先開發一個“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲得滿意的軟件產品。業務和產品需求在變化中,采用線性開發方式是不實際的。快速實現和提交一個有限的版本,可以應付市場競爭的壓力。軟件工程46需求的采集與細化客戶評價原型快速設計建造原型加工原型產生樣品停止開始軟件工程47螺旋模型螺旋模型將瀑布模型與演化模型結合起來,并且加入兩種模型均忽略了的風險分析。螺旋模型沿著螺線旋轉,自內向外每旋轉一圈便開發出更完善的一個新版本。制定計劃風險分析實施工程客戶評估軟件工程48決定目標、方案和限制評價方案識別風險弱化風險
開發、驗證、下一級產品
計劃下一階段集成測試軟件工程49增量模型增量模型是迭代和演進的過程。增量模型把軟件產品分解成一系列的增量構件,在增量開發迭代中逐步加入。每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。早先完成的增量可以為后期的增量提供服務。增量開發方法的新演進版本叫做"極限程序設計(eXtremeProgramming)"。軟件工程50定義基本需求將需求對應到各增量設計系統架構開發其中一個增量檢驗和確認該增量將增量集成到系統中確認集成后的系統軟件工程51日歷時間分析增量1
增量1交付設計編碼測試分析增量2
增量2交付設計編碼測試分析增量3
增量3交付設計編碼測試分析增量4
增量4交付設計編碼測試系統和信息工程軟件工程52噴泉模型體現了迭代和無間隙的特性。系統某個部分常常重復工作多次,相關對象在每次迭代中隨之加入演進的軟件成分。無間隙是指在各項開發活動,即分析、設計和編碼之間不存在明顯的邊界。噴泉模型是對象驅動的過程。軟件工程53需求階段分析階段設計階段編程階段集成與測試階段維護與演進階段軟件工程54快速應用開發(RAD)模型快速應用開發模型是一種增量開發模型,該模型開發軟件大量使用了可復用的構件。每一個增量的開發經歷五個階段:業務建模對業務功能的信息流建模。數據建模對業務的數據對象和關系建模。過程建模描述完成業務功能的數據變換。應用生成應用構件和自動化工具建造。測試與反復對新構件和接口進行測試。軟件工程55業務建模數據建模過程建模應用生成測試及反復小組1#業務建模數據建模過程建模應用生成測試及反復小組2#業務建模數據建模過程建模應用生成測試及反復小組3#60~90天軟件工程56變換模型變換模型是一種基于形式化規格說明語言及程序變換的軟件開發模型。它采用形式化的軟件開發方法,對形式化的軟件規格說明進行一系列自動的或半自動的程序變換,最終映射成為計算機系統能夠接受的程序系統。多步程序變換過程的重要性質是:每一步程序變換的正確性僅與該步變換所依據的規范Mi以及對變換后的假設Mi+1有關。軟件工程57軟件需求形式化說明(M0)軟件設計形式化說明(M1)(M2)(Mn)……模型檢查程序變換程序變換程序變換在此意義上,變換步驟獨立于其他變換步驟。這稱為變換的獨立性。該模型只適合于軟件的形式化開發方法;需要嚴格的數學理論和形式化技術支持;需要一整套開發環境(如程序變換工具、定理證明工具等)的支持。軟件工程58基于第四代技術的模型第四代語言(4GL)是在大型數據庫管理系統的基礎上發展起來的,是一種面向結果的非過程性語言。它獨立于具體的處理機,有豐富的軟件工具支持,能統一利用和管理各種數據資源并能適應不同水平用戶的需要。以4GL為核心的軟件開發技術成為第四代技術(4GT),采用4GT的軟件開發模型如圖。軟件開發人員在定義軟件需求,給出需求規格說明之后,4GT工具可將該需求規格說明自動軟件工程59
轉換為程序代碼。這大大減少了分析、設計、編碼和測試的時間。以4GL為核心的軟件開發技術成為第四代技術(4GT),采用4GT的軟件開發模型如圖。收集需求“設計”策略用“4GL”實現測試軟件工程60六、軟件開發范型(Paradigm)范型又稱為風范。通常認為范型就是開發模型(Model)或開發模式(Pattern),實際上它與方法(Methodology)一樣,都被視為一種開發技術。范型支配了設計方法、編碼語言、測試和檢驗技術的選擇。過程性范型把軟件視為處理流,定義成由一系列步驟構成的算法。每一步驟都是帶有輸入和輸出的一個過程,把這些步驟串聯在一起可產生貫通于整個程序的控制流。軟件工程61面向對象范型把標識和模型化問題領域中的實體做為系統開發的起點,面向對象系統中的對象是數據抽象與過程抽象的綜合。邏輯性范型是基于規則的,它把有關問題的知識分解成一組具體規則(如prolog語言)。面向進程范型把一個問題分解成獨立執行的模塊。讓不只一個程序同時運行。這些進程互相配合,解決問題。面向存取范型是一種在構造用戶界面方面很有用的技術。軟件工程62函數型范型是基于規則的,它把有關問題的知識分解成一組具體規則,用語言的“if_then”等結構來表示這些規則。
說明性范型。每種開發范型都有它的支持者和用戶:每種開發范型都特別適合于某種類型的問題或子問題;每種開發范型都用不同的方式考慮問題;每種開發范型都使用不同的方法來分解問題軟件工程63每種開發范型都導致不同種類的塊、過程、產生規則。系統開發時通常把大型問題分解成一組子問題。對于每個子問題采用適當的軟件開發范型。軟件工程64軟件工程原則有:抽象與自頂向下、逐層細化采用分層抽象的方法,有效控制軟件開發的復雜性。模塊化把問題分解為若干較小的較易解決的模塊,有助于信息隱蔽和抽象。信息隱蔽和數據封裝將模塊中的軟件設計決策封裝在模塊內部,使得模塊實現與使用分離,有助于控制修改局部化。七、軟件工程原則軟件工程65局部化在一個物理模塊內集中邏輯上相互關聯的計算機資源,促使聚合具有特定目的的事物。一致性整個軟件系統的模塊使用一致的設計策略、編程風格,保持程序內部接口的一致性、軟件與硬件接口的一致性、系統規格說明與系統行為的一致性。完備性軟件系統中不丟失任何成分。可驗證性系統分解應當遵循易檢查、易測試和易評審的原則,以保證系統的正確性。軟件工程66軟件工程的基本原理有:用分階段的生命周期計劃嚴格管理:按軟件生存期分階段制定計劃并認真實施,把整個軟件開發過程視為一項工程,把工程劃分為若干階段,分別制定每個階段的計劃,逐個實施。堅持進行階段評審前一階段的結果將成為下一階段的依據。堅持階段的評審才能保證錯誤不傳播到下一階段。軟件工程67實行嚴格的產品控制將影響軟件質量的因素在整個過程中置于嚴格控制之下。使用現代程序設計技術先進的程序設計技術帶來的是生產率和質量的提高。使用合適的開發模式和工具可以有效地建立功能強大的系統。明確責任,使得工作結果能夠得到清楚的審查開發組織嚴格劃分責任并制定產品的標準,使得每個成員的工作有據可依,確保產品的質量。軟件工程68用人少而精開發組織不在人多,在于每個人的技能適合要求。同時用人少而精,可減少溝通路徑,提高生產率。承認不斷改進軟件工程實踐的必要性不斷改進開發過程,在開發的過程中不斷總結經驗,改進開發的組織和過程,有效地通過過程質量的改進提高軟件產品的質量。軟件工程69軟件工程項目的基本目標有:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農家書屋可持續發展影響因素分析與對策研究
- 公司定崗定級管理制度
- 2025企業新進員工試用期合同
- 福建省連城縣2024~2025學年 高二下冊3月月考數學試卷附解析
- 安徽省合肥市2024-2025學年高三下冊2月檢測數學試卷附解析
- 2024年杭州建德市醫療衛生事業單位招聘真題
- 孩子畢業家長發言材料
- 2024年貴州省糧食儲備集團有限公司招聘考試真題
- 社區社區服務體系建設管理基礎知識點歸納
- 社區鄰里關系管理基礎知識點歸納
- 西師版四年級下冊100道口算題大全(全冊齊全)
- 皮膚型紅斑狼瘡診療指南(2023年版)
- 高中化學競賽預賽試卷
- 檔煙垂壁驗收規范
- 《視覺傳達設計研究5000字(論文)》
- YY/T 0676-2008眼科儀器視野計
- 通信工程建設強制性標準條文培訓材料(第1-3章)
- SB/T 10654-2012茶館經營服務規范
- “三重一大”事項決策情況記錄表
- 2022年山西蘭花太行中藥有限公司招聘筆試試題及答案解析
- 審計法知識講座課件
評論
0/150
提交評論