




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1.1
軟件
1.2軟件工程
1.3軟件工程發展中的軟件開發方法與技術
1.4計算機輔助軟件工程
1.5軟件工程與其他相關學科的關系
1.6軟件工程職業道德規范
1.7軟件項目成敗情況統計
1.8全球軟件產業的現狀、趨勢與挑戰1.1軟件1.1.1軟件及軟件特性1.軟件軟件的定義是隨著計算機技術的發展而逐步完善的。在20世紀50年代,人們認為軟件就等于程序;60年代人們認識到軟件的開發文檔在軟件中的作用,提出軟件等于程序加文檔,但這里的文檔僅是指軟件開發過程中所涉及的分析、設計、實現、測試、維護等文檔,不包括軟件管理文檔;到了70年代人們又給軟件的定義中加入了數據。因此,軟件是計算機系統中與硬件相互依存的一部分,它包括:(1)在運行中能提供所希望的功能與性能的程序;(2)使程序能夠正確運行的數據及其結構;(3)描述軟件研制過程和方法所用的文檔。2.軟件的特性從廣義來說,軟件與硬件一樣也是產品,但兩者之間是有差別的,了解并理解這種差別對理解軟件工程是非常重要的。(1)軟件角色的雙重性。(2)軟件是被開發或設計的,而不是傳統意義上的被制造。(3)軟件不會“磨損”,但會退化。(4)絕大多數軟件都是定制的且是手工的。(5)軟件開發過程復雜且費用昂貴。1.1.2軟件的發展及分類1.軟件的發展自20世紀40年代出現了世界上第一臺計算機以后,經歷了幾十年的發展,計算機軟件經歷了程序設計、程序系統和軟件工程三個發展時期。表1.1列出了三個發展時期主要特征的對比,由此可以看出幾十年來軟件最根本的變化。2.軟件的分類軟件的應用非常廣泛,幾乎滲透到了各行各業。因此,要給出一個科學的、統一的、嚴格的計算機軟件分類標準是不現實也是不可能的,但可以從不同的角度對軟件進行適當的分類。常用的分類方法及意義如表1.2所示。1.1.3軟件危機及其產生的主要原因隨著社會對計算機應用需求的增長,軟件系統規模越來越龐大,生產難度和生產成本越來越高,軟件需求量劇增,質量沒有可靠的保證,軟件開發的生產率低等因素構成軟件生產的惡性循環。軟件生產的復雜性和高成本,使大型軟件的生產出現了很大的困難,因此出現了軟件危機。其具體表現如下:(1)開發人員和用戶之間存在矛盾。用戶在開發初期,由于各種原因往往不能準確地提出需求描述;開發人員在還沒有準確、完整地了解用戶的實際需求后就急于編程。(2)大型軟件項目需要組織一定的人力共同完成,多數管理人員缺少開發大型軟件系統的經驗;多數軟件開發人員缺乏協同方面的經驗;軟件項目開發人員不能有效地、獨立自主地處理大型軟件的全部關系和各個分支,因此容易產生疏漏和錯誤。(3)缺乏有力的方法學和工具方面的支持,過分依靠程序設計人員的技巧和創造性。重編程,輕需求分析;重開發,輕維護;重程序,輕文檔。這樣做的后果就是在軟件系統中“埋藏”了許多故障隱患,直接危害著系統的可靠性和穩定性。人們把在軟件開發與維護過程中遇到的一系列嚴重問題稱為軟件危機。1.1.4軟件危機的表現軟件危機的主要表現如下:(1)軟件開發進度難以預測;(2)軟件開發成本難以控制;(3)用戶對軟件產品的功能要求難以滿足;(4)軟件產品的質量無法保證,系統中的錯誤難以消除;(5)軟件產品難以維護;(6)軟件缺少適當的文檔資料;(7)軟件開發的生產速度難以滿足社會需求的增長。1.1.5解決軟件危機的途徑分析了造成軟件危機的原因后,人們開始探索用工程的方法進行軟件生產的可能性,即用軟件工程的概念、原理、技術和方法進行軟件的開發、管理、維護和更新。于是,計算機科學的一個領域——“軟件工程”誕生了。1.2軟件工程1.2.1軟件工程的概念軟件工程是指導計算機開發和維護的工程學科。借用傳統工程設計的基本思想,采用工程化的概念、原理、技術和方法來開發與維護軟件,突出軟件生產的科學方法,把經過時間考驗而證明正確的管理技術與當前能夠得到的最好的技術和方法結合進來,降低開發成本,縮短研制周期,提高軟件的可靠性和生產效率。軟件的工程化生產已成為軟件產業。軟件已成為產品,它涉及產值、市場、版權、法律保護等方面的問題。軟件工程是一門交叉學科,需要用管理學的原理和方法來進行軟件生產管理;用工程學的觀點來進行費用估算、制訂進度和實施方案;用數學方法來建立軟件可靠性模型以及分析各種算法。1.2.2軟件工程的三要素軟件工程以關注軟件質量為目標,由方法、工具和過程三個要素構成,如圖1.3所示。軟件工程方法為軟件開發提供了“如何做”的技術,涉及軟件工程的多個方面,如項目計劃與估算、軟件系統需求分析、數據結構、系統總體結構的設計、算法過程的設計、編碼、測試、維護等。軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環境。目前,已經推出了許多軟件工具,這些軟件工具集成起來,建立起稱之為計算機輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)的軟件開發支撐系統。CASE將各種軟件工具、開發機器和一個存放開發過程信息的工程數據庫組合起來形成一個軟件工程環境。軟件工程的過程將軟件工程的方法和工具綜合起來,以達到合理、及時地進行計算機軟件開發的目的。過程定義了方法使用的順序、要求交付的文檔資料、為保證質量和協調變化所需要的管理及軟件開發各個階段完成的里程碑。1.2.3軟件工程的目標軟件工程研究的對象是大型軟件系統的開發過程,它研究的內容是生產流程,各生產步驟的目的、任務、方法、技術、工具、文檔和產品規格。軟件工程的基本目標是生產具有正確性、可用性及開銷合宜(合算性)的產品。正確性意指軟件產品達到預期功能的程度;可用性意指軟件基本結構、實現及文檔達到用戶可用的程度;開銷合宜意指軟件開發、運行的整個開銷滿足用戶的需求。在給定成本和進度的前提下,開發出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的產品。追求這些目標有助于提高軟件產品的質量和開發效率,降低維護的困難。(1)適用性:軟件在不同的系統約束條件下,使用戶需求得到滿足的難易程度。(2)有效性:軟件系統能最有效地利用計算機的時間和空間資源。各種軟件無不把系統的時/空開銷作為衡量軟件質量的一項重要技術指標。很多場合,在追求時間有效性和空間有效性時會發生矛盾,這時不得不犧牲時間有效性來換取空間有效性,或犧牲空間有效性以換取時間有效性。時/空折中是經常采用的技巧。(3)可修改性:允許對系統進行修改而不增加原系統的復雜性。支持軟件的調試和維護,是一個難以達到的目標。(4)可靠性:能防止因概念、設計、結構等方面的不完善而造成軟件系統的失效,具有挽回因操作不當而造成軟件系統失效的能力。(5)可理解性:系統具有清晰的結構,能直接反映問題的所在。可理解性有助于控制軟件的復雜性,并支持軟件的維護、移植或重用。(6)可維護性:軟件交付使用后,能夠對它進行修改,以改正潛伏的錯誤,改進性能和其他屬性,使軟件產品能適應環境的變化等。軟件維護費用在軟件開發費用中占有很大的比重。可維護性是軟件工程中一項十分重要的目標。(7)可重用性:把概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件,可組裝在系統的任何位置,降低開發工作量。(8)可移植性:軟件從一個計算機系統或環境搬到另一個計算機系統或環境的難易程度。(9)可追蹤性:根據軟件需求對軟件設計、程序進行正向追蹤,或根據軟件設計、程序對軟件需求進行逆向追蹤的能力。(10)可互操作性:多個軟件元素相互通信并協同完成任務的能力。1.2.4軟件工程的開發原則軟件工程的目標為軟件開發提出了明確的要求。為了達到這些要求,在軟件開發過程中必須遵循下列軟件工程的原則:抽象、信息隱藏、模塊化、局部化、一致性、完整性和可驗證性。(1)抽象(Abstraction):抽取事物最基本的特性和行為,忽略其非基本的細節,以控制軟件開發過程的復雜性,有利于軟件的可理解性和開發過程的管理。(2)信息隱藏(InformationHiding):將模塊中的軟件設計內容和實現決策封裝起來,在系統的結構分析與設計中把模塊看成是一個“黑箱”,模塊內部的實現細節被隱藏,而外部只提供功能和接口的有關說明,使軟件開發人員能夠將注意力集中在更高層次的抽象上。(3)模塊化(Modularity):將大的、復雜的程序,分成一個個邏輯上相對獨立、功能相對簡單的小程序,只要定義好這些小程序的接口和設計關系,就可以將復雜的程序分解為若干簡單的程序來處理,有助于信息隱藏和抽象,也有助于降低軟件系統的復雜性。(4)局部化(Localization):在物理模塊內集中邏輯上相互關聯的計算資源,從物理和邏輯兩個方面保證系統中模塊內部的高內聚性和模塊之間的低耦合性,有助于模塊的獨立性。(5)一致性(Consistency):整個軟件系統(包括程序和文檔)使用一致的概念、符號和術語,一致的程序內部接口和硬、軟件接口,一致的系統規格說明與形式化公理系統,一致的系統界面、編碼風格和數據組織形式等。一致性原則支持系統的正確性和可靠性。(6)完整性(Completeness):軟件系統不丟失任何重要成分,系統具有服從需求的完整功能和實現功能所需的數據。(7)可驗證性(Verifiability):大型軟件在功能分解和實施中,遵循系統容易檢查、測試、評審的原則,以保證軟件系統的正確性和可用性。1.2.5軟件工程涉及的人員1.利益相關者參與軟件過程(及每一個軟件項目)的利益相關者可以分為以下5類。(1)高級管理者:負責定義業務問題,這些問題往往會對項目產生很大的影響。(2)項目(技術)管理者:必須計劃、激勵、組織和控制軟件開發人員。(3)開發人員:擁有開發產品或應用軟件所需的技能。(4)客戶:闡明待開發軟件的需求,包括關心項目成敗的其他利益相關者。(5)最終用戶:軟件發布成為產品后直接與軟件進行交互的人。2.團隊負責人一個具有實戰能力的項目經理應該具有以下4種關鍵品質。(1)解決問題:具有實戰能力的軟件項目經理能夠準確地診斷出最為密切相關的技術問題和組織問題;能夠系統地制訂解決方案,適當地激勵其他開發人員來實現該方案;能夠將在過去項目中學到的經驗應用到新環境中;如果最初的解決方案沒有結果,則能夠靈活地改變方向。(2)管理者的特性:優秀的項目經理必須能夠掌管整個項目。必要時要有信心進行項目控制,同時還要允許優秀的技術人員按照他們的本意行事。(3)成就:為了優化項目團隊的生產效率,一位稱職的項目經理必須獎勵那些工作積極主動并且做出成績的人。必須通過自己的行為表明出現可控風險并不會受到懲罰。(4)影響和隊伍建設:具有實戰能力的項目經理必須能夠“理解”人。他必須能理解語言和非語言的信號,并對發出這些信號的人的要求做出反應。項目經理必須能在高壓力的環境下保持良好的控制能力。3.軟件團隊作為一種復雜的工程活動,軟件工程不是由獨立的個人而是由團隊進行的。通常情況下,一個團隊可以有多個小組,較小的小組由3~4人組成,較大的小組由10余人組成。在軟件工程團隊中,常見的分工角色有:(1)需求工程師,又稱為需求分析師:承擔需求開發任務。軟件產品的需求開發工作通常由多個需求工程師來完成,他們共同組成一個需求工程師小組,在首席需求工程師領導下開展工作。他們跟客戶一起工作,并把客戶想要實現的目標分解為離散的需求。通常一個團隊只有一個需求工程師小組。(2)軟件體系結構師:承擔軟件體系結構的設計任務。通常也是由多人組成一個小組,并在首席軟件體系結構師的領導下開展工作。通常一個團隊只有一個軟件體系結構師小組。(3)軟件設計師:承擔詳細設計任務。在軟件體系結構設計完成之后,可以將其部件分配給不同的開發小組。開發小組中負責分配部件詳細設計工作的人員就是軟件設計師。一個團隊可能有一個或多個開發小組。一個小組可能有一個或多個軟件設計師。(4)程序員:承擔軟件構造及模塊的測試任務。程序員與軟件設計師通常是同一批人,也是根據其所分配到的任務開展工作。(5)人機交互設計師:承擔人機交互設計任務。人機交互設計師與軟件設計師可以是同一批人,也可以是不同人員。在有多個小組的軟件工程團隊中,可以有一個單獨的人機交互設計師小組,也可以將人機交互設計師分配到各個小組。(6)軟件測試人員:承擔軟件測試任務。軟件測試人員通常需要獨立于其他的開發人員角色。一個團隊可能有一個或多個測試小組。一個小組可能有一個或多個軟件測試人員。(7)項目管理人員:負責計劃、組織、協調和控制軟件開發的各項工作。相比于傳統意義上的管理者,他們不完全是監督者和控制者,更多的是協調者。通常一個團隊只有一個項目管理人員。(8)軟件配置管理人員:管理軟件開發中產生的各種制品,具體工作是對重要制品進行標識、變更控制、狀態報告等。通常一個團隊只有一個軟件配置管理人員。(9)質量保證人員:在生產過程中監督和控制軟件產品質量的人員。通常一個團隊有一個質量保證小組,其由一個或多個人員組成。(10)培訓和支持人員:負責軟件交付與維護任務。他們可以是其他開發人員的一部分,也可以是獨立的人員。(11)文檔編寫人員:專門負責寫作軟件開發過程中各種文檔的人員。他們的存在是為了充分利用部分寶貴的人力資源,讓這些人從繁雜的文檔化工作中解放出來。“最好的”團隊結構取決于組織的管理風格、團隊里的人員數目與技能水平,以及問題的總體難易程度。Mantei提出了規劃軟件工程團隊結構時應考慮的7個項目因素:(1)待解決問題的難度;(2)開發程序的規模,以代碼行或者功能點來度量;(3)團隊成員需要共同工作的時間(團隊生存期);(4)能夠對問題做模塊化劃分的程度;(5)待開發系統的質量要求和可靠性要求;(6)交付日期的嚴格程度;(7)項目所需要的友好交流的程度。軟件開發步驟與開發團隊中的角色的對應關系如圖1.4所示。1.3軟件工程發展中的軟件開發方法與技術從20世紀50年代開始至今,軟件的開發方法與技術都有了迅猛的發展,具體如下。1.?20世紀50年代20世紀50年代,人們的主要精力集中在硬件上,所以沒有出現專門針對軟件開發方法與技術的需求,也就沒有出現被普遍使用的軟件開發方法與技術。20世紀50年代的軟件工程的特點是:科學計算;以機器為中心進行編程;像生產硬件一樣生產軟件。2.?20世紀60年代由于缺乏正確科學知識的指導,也沒有多少經驗原則可以遵循,因此,20世紀60年代的軟件開發在總體上依靠程序員的個人能力,是“工藝式”的開發。20世紀60年代的軟件工程的特點是:業務應用;軟件不同于硬件;用軟件工藝的方式生產軟件。3.?20世紀70年代基于結構化程序設計理論,20世紀70年代早期開始廣泛使用結構化編程方法,它要求使用函數(過程)構建程序,使用塊結構和三種基本控制結構(消除goto語句)仔細組織函數(過程)的代碼,使用程序流程圖描述程序邏輯進行程序設計,使用逐步精化(StepwiseRefinement)、自頂向下的軟件開發方法進行軟件開發。到了20世紀70年代中后期,結構化方法從編程活動擴展到分析和設計活動,圍繞功能分解思想和層次模塊結構,使用數據流圖(DFD)、實體關系圖(ERD)和結構圖(StructureChart),建立了結構化設計、結構化分析、Jackson結構程序設計(JSP)等結構分析與設計方法。控制復雜系統的復雜性是20世紀70年代追求的目標,這需要超越函數(程序)的層次,因為它的粒度太小。因此,20世紀70年代人們開始在更高抽象的模塊層次上探索控制復雜性的方法,產生了“低耦合高內聚”的模塊化、信息隱藏、抽象數據類型等重要思想,它們逐漸被吸收進結構化方法并推動了20世紀80年代面向對象編程的出現。20世紀70年代的軟件工程的特點是:結構化方法;瀑布模型;強調規則和紀律。它們奠定了軟件工程的基礎,是后續軟件工程發展的支撐。4.?20世紀80年代在20世紀80年代重要的技術中,除了少數是延續70年代的工作之外,大多數都是為了滿足提高生產力的要求而產生的。1)結構化方法20世紀70年代中后期基于結構化編程建立了早期的結構化方法,包括結構化分析與結構化設計。但是這時的結構化方法因為剛剛脫離編程,所以更多地還在關注軟件程序的構建。也就是說,20世紀70年代中后期的結構化分析和設計更強調為了最后編程而進行分析與設計,而不是為了解決現實問題而進行分析與設計。到了20世紀80年代,隨著結構化分析與設計向結構化編程的過渡,人們逐步開始將結構化分析與設計的關注點轉向問題解決和系統構建,產生了現代結構化方法,代表性的有信息工程(InformationEngineering)、Jackson系統開發(JSD)、結構化系統分析與設計方法(SSADM)、結構化分析和設計技術(SADT)及現代結構化分析(MSA)。相對于早期的結構化方法,20世紀80年代的現代結構化方法更注重系統構建而不是程序構建,所以更重視問題分析、需求規格和系統總體結構組織而不是讓分析與設計結果符合結構化程序設計理論,更重視階段遞進的系統化開發過程,而不是一切圍繞最后的編程進行。2)面向對象編程最早的面向對象編程思想可追溯到20世紀60年代的Simular-67語言,它是為了仿真而設計的程序設計語言,使用了類、對象、協作、繼承、多態(子類型)等最基礎的面向對象概念。20世紀70年代的Smalltalk就是完全基于面向對象思想的程序設計語言,它強化了一切皆是對象和對象封裝的思想,發展了繼承和多態。到了20世紀80年代中后期,隨著C++?的出現和廣泛應用,面向對象編程成為程序設計的主流。C++?只是在C語言中加入面向對象的特征,并不是純粹的面向對象語言。C++?保留了C的各種特性,這種謹慎的設計使得程序員可以順利地接受它,另一方面是因為面向對象語言支持復用和更適于復雜軟件開發的特點符合了20世紀80年代的生產要求。需要特別指出的是,雖然面向對象的概念起源很早,并且很多思想與結構化思想是完全不同的,但是面向對象本身不像結構化一樣有基于數學的程序設計理論的支撐,所以它是在吸收了很多結構化方法中發展出來的方法與技術之后才得到了程序正確性、清晰性和高質量的保障。Booch認為模塊化、信息隱藏等設計思想和數據庫模型的進步都是促使面向對象概念演進的重要因素。與結構化方法相比,面向對象方法中的結構和關系能夠為領域應用提供更加自然的支持,使得軟件的可復用性和可修改性更加強大。可復用性滿足了20世紀80年代追求生產力的要求,尤其是提高了圖形用戶接口(GUI)編程的生產力,這也是推動面向對象編程發展的重要動力。可修改性提高了軟件維護時的生產力。面向對象方法也為模塊內高內聚和模塊間低耦合提供了更好的抽象數據類型的模塊化,更加適合于復雜軟件系統的開發。3)軟件復用提高生產力的一種方式是避免重復生產,所以在20世紀80年代人們為了追求生產力,開始重視軟件復用。實踐經驗表明,軟件復用是提高生產力最有效的方法,可以將生產力提高10%~35%。除了面向對象方法之外,第4代語言、購買商用組件、程序生產器等都是20世紀80年代提出的能夠促進軟件復用的技術。20世紀80年代的軟件工程的特點是:追求生產力最大化;現代結構化方法/面向對象編程廣泛應用;重視過程的作用。5.?20世紀90年代1)面向對象方法與結構化編程的成功促進了結構化分析與設計方法的產生一樣,面向對象編程的成功也促進了面向對象分析與設計方法在20世紀90年代的產生,并促使面向對象分析與設計方法迅速被廣泛使用。20世紀90年代的面向對象方法的具體進展有:(1)出現了對象建模技術(OMT)、Booch方法、面向對象的軟件工程(OOSE)、類-責任-合作者(CRC)卡等一系列面向對象的分析與設計方法。(2)統一的面向對象建模語言UML的建立和傳播。(3)設計模式、面向對象設計原則等有效的面向對象實踐經驗被廣泛傳播和應用。2)軟件體系結構20世紀70年代開發復雜軟件系統的初步嘗試使得人們明確和發展了獨立的軟件設計體系,提出了模塊化、信息隱藏等最為基礎的設計思想。到了20世紀80年代中期,這些思想逐漸成熟,并且成功融入了軟件開發過程。這時,一些新的探索就出現了,其中包括面向對象設計,也包括針對大規模軟件系統設計的一些總結與思考。在對大規模系統的設計經驗進行總結時,人們發現越來越需要有一種更高抽象層次的設計體系來進行思想的匯總與提升。于是,研究者們在20世紀90年代初期正式提出了“軟件體系結構”這一主題,并結合90年代之后出現的軟件系統規模日益擴大的趨勢,在其后的10年中對其進行了深入的探索與研究。人們在體系結構的基本內涵、風格、描述、設計、評價等方面開展了卓有成效的工作,在21世紀初建立了一個比較系統的軟件體系結構方法體系。軟件體系結構使用部件、連接件和配置三個高抽象層次的邏輯單位,關注如何將大批獨立模塊組織形成一個“系統”而不是各個模塊本身,也就是說更重視系統的總體組織。軟件體系結構成為大規模軟件系統開發中處理質量屬性和控制復雜性的主要手段,改變了大規模軟件系統的開發方式,提高了大規模軟件系統開發的成功率和產品質量。3)人機交互為了吸引更多的用戶,贏得市場競爭,人們在20世紀90年代開始重視人機交互,提出“以用戶為中心”(User-CenteredDesign)的設計方法。人機交互的基本目標是開發更加友好的軟件產品,最低標準是讓普通人在使用軟件產品時比較順暢,較高標準是讓用戶在使用產品時感到滿足和愉悅。從20世紀50年代開始人機交互技術就一直在發展,但是直到90年代人們才開始重視如何將人機交互技術融入軟件工程,并建立了一些人機交互的軟件工程方法,包括快速原型、參與式設計、各種人機交互指導原則等。4)需求工程自“瀑布模型”起,人們就已經認識到并強調了需求分析的作用。但是,到了20世紀90年代,隨著“以企業為中心”軟件系統規模的增長,人們認識到需求處理除了核心的需求分析活動之外,還有其他的活動也需要慎重對待,要進行“需求工程”,即利用工程化的手段進行需求處理,以保證需求處理的正確進行。相比于傳統的需求分析,需求工程將用戶價值分析視為基本要求,重視產品分析、問題與目標分析、業務分析、與用戶的交流和溝通等。需求工程本質上反映了應用軟件與現實之間的聯系日益增強的事實。5)基于軟件復用的大規模軟件系統開發技術在大規模軟件系統開發中,為了解決復雜度與開發周期的兩難局面,人們充分利用了軟件復用思想,建立了多種基于軟件復用的大規模軟件系統開發技術,其中最為流行的是框架(Framework)和構件(Component)。框架是領域特定的復用技術。它的基本思想是根據應用領域的共性和差異性特點,建立一個靈活的體系結構,并實現其中比較固定的部分,留下變化的部分等待開發者補充。簡單地說,框架開發者完成了框架的總體設計和部分開發工作,然后將未開發的部分留作空白,等待框架的使用者填充。20世紀90年代,很多應用領域都建立了自己的開發框架。構件是在代碼實現層次上進行復用的技術。它的基本思想是給所有的構件定義一個接口標準,就像機械工程定義螺絲和螺母的標準規格一樣,這樣就可以忽略每個構件內部的因素,實現不同構件之間的通信和交互。構件通常是黑盒的二進制代碼,帶有專門的說明書,可以像機器零件那樣被獨立生產、銷售和使用。組件對象模型(COM)和JavaBean就是20世紀90年代產生并流行起來的構件標準。6)?Web開發技術Web應用的開發技術不同于傳統軟件形式。在20世紀90年代早期,人們主要使用HTML開發靜態的Web站點。到了90年代中后期,動態網頁技術、JSP、超文本預處理器、JavaScript等動態Web開發技術開始流行。人們建立了Web程序的數據描述標準XML。20世紀90年代軟件工程的特點是:以企業為中心的大規模軟件系統開發;追求快速開發、可變更性和用戶價值;Web應用出現。6.?21世紀00年代1)延續20世紀90年代的技術進展20世紀90年代產生的一些重要技術,在21世紀00年代繼續得到發展和完善:(1)軟件體系結構:到了2000年,軟件體系結構設計方法基本成熟,2000年之后開始廣泛使用。軟件體系結構的研究和探索工作繼續深入,轉向軟件體系結構設計決策的描述和產生過程。(2)需求工程:2000年之后的軟件需求工程逐漸與系統工程相融合,典型表現是越來越重視系統需求而不是軟件需求的分析,包括目標分析、背景環境分析、系統屬性分析等。(3)人機交互:隨著Web應用和小型設備應用越來越突出,21世紀前10年人機交互將Web的人機交互和小型設備的人機交互作為工作重點。(4)基于復用的大型軟件系統開發技術:Struts、Spring等針對Web的開發框架成為軟件開發的主流工具;更適應Web的WebService構件類型被應用得越來越廣泛。2)?Web技術發展隨著Web的發展,21世紀前10年的很多技術進展都與Web有關:(1)?20世紀90年代產生的各種動態Web開發技術成為軟件開發必不可少的部分。(2)適用于Web開發的構件中間件平臺?.NET和J2EE成為軟件開發的主流平臺。(3)瀏覽器/服務器模式(B/S)、N-Tier、面向服務的架構(SOA)、消息總線等適合于Web應用的體系結構風格被廣泛傳播。(4)針對Web的開發框架成為主流的軟件開發工具。(5)博客、即時通信等Web2.0技術出現并得到廣泛應用。3)領域特定的軟件工程方法 該方法從20世紀90年代開始出現,在21世紀前10年,軟件工程方法分領域深入成為主流。在技術領域方面,下列技術領域都出現了明顯的進展:(1)以網絡為中心的系統;(2)信息系統;(3)金融和電子商務系統;(4)高可信系統;(5)嵌入式和實時系統;(6)多媒體、游戲和娛樂系統;(7)小型移動平臺系統。在應用領域方面,越來越多的領域開始根據自身特點定義參照體系結構、開發框架、可復用構件和領域特定的編程語言。面向應用領域進行軟件開發的產品線(ProductLine)方法得到了越來越多的關注和使用。21世紀前10年軟件工程的特點是:大規模Web應用;大量面向大眾的Web產品;追求快速開發、可變更性、用戶價值和創新。1.4計算機輔助軟件工程計算機輔助軟件工程(CASE)是一組工具和方法的集合,用于輔助軟件開發、維護、管理過程中的各項活動,促進軟件過程的工程化和自動化,實現高效率和高質量的軟件開發。如今,CASE工具已經由支持單一任務的單個工具向支持整個開發過程的集成化軟件工程環境的方向發展,同時重視用戶界面的設計,不斷采用新理論和新技術,成為軟件工程領域的一個重要分支。CASE環境的組成構件如圖1.5所示。CASE環境應用應具有以下功能:(1)提供一種機制,使環境中的所有工具可以共享軟件工程信息。(2)每一個信息項的改變,可以追蹤到其他相關信息項。(3)對所有軟件工程信息提供版本控制和配置管理。(4)對環境中的任何工具可進行直接的、非順序的訪問。(5)在標準的分解結構中提供工具和數據的自動支持。(6)使每個工具的用戶共享人機界面的所有功能。(7)收集能夠改善過程和產品的各項度量指標。(8)支持軟件工程師之間的通信。目前,市場上有許多商業化的CASE工具,它們在一定程度上促進了軟件過程的工程化。1.5軟件工程與其他相關學科的關系軟件工程是一門交叉性的工程學科,如圖1.6所示。軟件工程以計算機科學和數學為基礎,將這些學科的基本原理應用于構造軟件的模型與算法,力求提出更系統化和更形式化的軟件開發方法,并采用適當的方法驗證即將開發的軟件。正確的軟件開發實踐更重要的是將工程化的原則和方法應用于軟件的分析與評價、規格說明、設計、實現、演化等過程。軟件工程運用工程科學的基本原理,結合特定領域的基礎知識和相關的專業知識,通過評估成本與確定權衡提出合理的問題解決方案,在軟件開發實踐的基礎上總結制定標準與規范,重用設計和設計制品。事實證明,成功的軟件開發往往離不開規范化的開發管理。軟件工程將管理科學應用于軟件開發的計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 攝影工作室合同協議書
- 汽配店員工合同協議書
- 挖機裝木頭合同協議書
- 抖音合伙人合同協議書
- 廣告牌分包合同協議書
- 工資加提成合同協議書
- 平面設計師合同協議書
- 幼兒園老師合同協議書
- 工程類項目合同協議書
- 外墻清洗翻合同協議書
- 《更加注重價值創造能力 著力推進國企高質量發展》
- 關于我校中學生錯誤握筆姿勢調查及矯正的嘗試
- 積分制管理的實施方案及細則
- 正定古建筑-隆興寺
- 走進物理-基礎物理智慧樹知到答案2024年廣西師范大學
- 三菱電梯型號縮寫簡稱
- 2024年版-生產作業指導書SOP模板
- 歷年考研英語一真題及答案
- 寵物殯葬師理論知識考試題庫50題
- 飛花令“水”的詩句100首含“水”字的詩句大全
- 門診常見眼科病
評論
0/150
提交評論