軟件工程

軟件工程(軟件工程,英語:軟件工程),該計算機的軟件的開發一直是討論如何往往受到信息工程,也被視為一個分支。
目錄  [ 顯示 ] 
概述[ 編輯]
軟件工程軟件是一個區域考慮了系統的,定量的開發,運營和維護的應用[1]。
軟件工程,存在要分為兩種設計方法和製造方法的領域。軟件的設計方法是一個區域,以把軟件結構,通常被稱為軟件體系結構。軟件的製作方法是一個地區考慮軟件開發過程中,被稱為一般的軟件過程。這兩個方面是相互關聯的優勢和局限條件。
軟件開發過程中,包括技術和程序調用,用於改進軟件的可靠性和可維護性的目的[2]。具體地,複雜和安全的計算機軟件,以便設計在短時間內進行這種研究。高難度的代碼行數往往把重點放在大型軟件的開發,數百萬以上[3]。
軟件工程術語布賴恩·蘭德爾的設計,在1968年北約軟件工程大會是用它的流行源於FL鮑爾[4]。軟件工程,需求分析,軟件設計,程序設計,軟件測試,軟件維護包括知識,工具和工作相關的方法,如[5]。由於涉及到軟件工程學術領域,計算機科學,計算機工程,管理理論,數學,工程管理(軟件項目管理),質量管理,人體工程學,系統工程有一個[6] 。
在軟件工程中,通常從待開發的想出的軟件開發的時候,該軟件實際完成移動,並且直到使用時,考慮分為幾個步驟和(軟件開發過程中)。有對每個步驟的典型問題,它試圖闡明如何面對挑戰。由於這個原因,軟件工程的在寬範圍內的主題。
此外,或者有其他領域和交叉,或者什麼軟件工程中的一個字段是獨立地或形成另一場(例如:數據庫設計),技術和軟件工程的概念已被培養在不同的場可能感興趣的(例如面向對象的技術)。
歧義和軟件工程的爭議[ 編輯]
軟件工程的典型定義,如下所述。
“ 軟件領域應用系統和學術和定量的方法來開發,運行和維護“ [7]
“工程領域涉及軟件開發的各個方面。” [8]
“實際建立可靠的工程原理的可靠的軟件,以獲得經濟運行的機器上,並使用” [9]
討論軟件工程是無論是工程[ 編輯]
軟件工程的英文叫,它並不一定是指工程的一個分支,一些使用如下。
原來,編程和系統分析一般,等被稱為活動的軟件工程名為[10]。
需要編程的理論方面的計算機科學被調用時,所有方面否則軟件工程稱為[11]。
“編程”,而不僅僅是技術和技能的工程是索賠被視為使用這些準則與記錄的一個術語[12]。
軟件工程是,某種學術訓練,這是必要的,以職業教育,有些人並且還包括那些不必在軟件開發中使用。如說是比喻,構建所有參與人的建築,以及不是一個人,源代碼並不一定人寫始終是一個軟件工程師。此外,組織加拿大專業工程師安大略省,軟件工程而非指定的本身。換句話說,在未成熟的軟件開發調用與工程,而且人們誰從事它不能稱為專業工程師[13]。
要如何定義“軟件工程”作為工程的一個分支,並改變從人到人,爭論已經進行了。大衛帕爾納斯,軟件工程是成為實際技術的形式[14] [15]。史蒂夫·麥康奈爾是不是工程,有人認為,應該演變成工程[16]。高德納,編程是一門科學是一招[17]。埃德加Dijkstra算法是,軟件工程和軟件工程師期限尤其美國有人指出,已經在濫用[18]。
軟件或討論工程是一門計算機科學[ 編輯]
如果軟件工程必須是工程,軟件工程計算機科學是否的一個分支,甚至主張已經長期爭論的話題。
軟件工程也有一些誰相信這是計算機科學的一個分支。計算機科學的數理邏輯和計算複雜性理論,而一門科學與計算一般包括,軟件工程處理的目的是設計出在僅實際目的的計算機處理,它被認為是不同的領域有些人。
軟件工程是不是計算機科學,也就是,不管是不是以前的科學,軟件工程是甚至認為它不具備的,甚至任何性質的工程擺在首位的意見。
大衛·帕納斯是“我不是軟件工程作為計算機科學,土木工程,機械工程,化學工程,當作元素,組合的一個分支,例如,如電氣工程”已經和[19]。
軟件開發方法[ 編輯]
結果軟件工程,軟件開發方法可以被概括英寸
人類如何把握的對象,來設計,從如何實現為程序的角度來看,該軟件開發方法分類如下。
結構化技術(結構化編程)
面向對象的開發方法(面向對象編程)
軟件結構的設計圖案(軟件)和反模式
當重點是關於如何操作一個開發項目,特別是被稱為“開發過程模型”,可以分為以下兩種類型。然而,也可以組合使用以下兩種類型。
瀑布模型
螺旋模型(迭代開發,敏捷軟件開發,包括:a)
該開源項目中,如,從入門準則開發商的角度看,據說是分為以下兩種類型(雷蒙德 “ 大教堂和市集“”) [20] 。
伽藍方法
集市方法
軟件開發過程[ 編輯]
有關詳細信息,請參閱“ 軟件開發過程請參見“
開發過程中,往往是發展的年底開始劃分如下。但是範圍和詳細的定義是每個開發方法不同。
需求分析
審查應軟件具有什麼功能的想法,如果有必要記錄一個。
設計
功能被檢查應被實現為一個軟件如何,根據需要通過的規格的。
編碼
根據規範的程序,我想創建一個。
測試
我表明編寫的程序是否滿足功能要求。
操作,維護
您可以使用該軟件添加或修改函數以響應新的要求。
在過程模型,它是如何定義和放置在開發過程是定義每一個模型的一個重要因素。例如瀑布模型中測試的要求分析-假設該指令操作進行一次。螺旋模型分成更短的開發時間,以時間來重複它在短期內完成的發展歷程。
敏捷軟件開發的幾個開發技術(極限編程中,等),例如,編碼(或同時)寫的代碼進行測試,編碼之前(將在目標執行是通過測試測試驅動開發,測試優先)等,我已顯著改變的順序和每個步驟的含義。
技術分類的軟件開發[ 編輯]
技術的軟件開發可分為產品過程項目管理。
產品
模型表示,相關技術的軟件體系結構。(ISO / IEC 9126,UML)等。
過程
開發技術,制定管理流程和程序。(CMM / CMMI,ISO9001,退耕還林工程,IEEE軟件標準等)。
項目管理(流程管理)
交付和質量,如成本管理技術和教育。(功能點方法,知識體系,ISBOK),和類似物。
主要研究領域[ 編輯]
軟件分析
程序的語義
軟件驗證理論
軟件開發環境
歷史[ 編輯]
軟件工程計算機已經發展加上。因此應用也寫工具已經發展一段時間。
20世紀40年代,人類直接在早期的計算機機器語言已經植入。早在EDSAC 1949年,裝載機配備了基本的彙編程序的功能[21]。然後彙編語言是天生的,在20世紀50年代中期AUTOCODE,FORTRAN,LISP早,如高級語言誕生了。第二代20世紀60年代的編譯器,如出現了,我都有助於生產率和質量的提高。在60年代末,現在大型項目進行(未來系統項目等),軟件危機使被提倡的。1968年,軟件工程北約會議召開。在20世紀70年代,UNIX,代碼庫,使合作的軟件工具,如出現。20世紀80年代,個人電腦出現,並迅速蔓延,商業軟件變得如此也被大量出售。的Smalltalk-80出版,面向對象的是一種新的範例,正在逐漸關注如。在20世紀90年代,面向對象編程,敏捷軟件開發,極限編程已經逐漸成為主流。當涉及到2000年代,爪哇,紅寶石,Python的,PHP,如解釋型語言和.NET框架的託管代碼現在,如經常使用。
軟件工程的近期走勢[ 編輯]
軟件工程仍然是年輕的領域,我現在也繼續發展。最近的軟件工程的重要趨勢如下圖所示我。
面向方面編程
源代碼是,它提供了一個工具來添加和刪除程序代碼中的不同位置,以有利於提高質量。方面,任何對象或函數我描述如何表現在某些情況下。例如,當使用該方面,對一個特定類型的所有對象的調試功能,記錄功能,鎖定我可以添加這樣的特徵。目前,進展如何設計使用方面的通用代碼研究。作為相關的概念,自動編程和模板存在。
敏捷軟件開發
快速應對瞬息萬變的市場的軟件開發技術。這種方法的信徒,技術密集型的傳統的文檔,我相信逐漸消失。作為相關的概念,極限編程和精益軟件開發存在。
實證軟件工程
在軟件的實驗場,強調這樣做。實際的,或收集,並從那裡Michibikidaso法律和理論分析,從實驗的軟件開發工作,其發展的歷史,並將數據。這種方法的擁護者是獲得一個實際知識認為,有必要採用一種技術來評估的結果為存在於現實的軟件及其開發工作。
模型驅動工程
我用文字和圖形在設計階段建立一個模型。模型轉換使用的工具和代碼生成,並提取了一段代碼從模型,以幫助進一步發展。
軟件產品線
技術建立了一系列的軟件產品群系統。代碼重用任其發展,試圖實現工業化的軟件開發過程。
腳註[ 編輯]
^ “軟件工程術語中,IEEE標準詞彙” IEEE STD 610.12-1990,1990,報價為第1章的開頭:介紹指南“ 手冊,以知識的軟件工程“( 2月6日年2004 )。2008年2月21日查看。
^ Pecht,邁克爾(1995年),產品可靠性,維修性和保障手冊,CRC出版社,ISBN 0-8493-9457-0。
^ ·皮爾遜,羅納德J.(1996年至1901年)。 “軟件開發波音777” 。串擾:國防軟件工程雜誌 , “2.5萬條新開發的軟件進行了大約六次超過以往任何波音商用飛機發展計劃。包括商業,現成的現貨(COTS)和可選軟件,總規模超過400萬行代碼。“
^ Dijkstra算法,EdsgerW¯¯ ;由Mario貝蘭德轉錄。(12月3日年199