在線客服

軟件工程實用13篇

引論:我們為您整理了13篇軟件工程范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。

篇1

【文章編號】1007-4309(2013)02-0113-2

一、軟件工程定義

軟件工程一直以來都缺乏一個統一的定義,很多學者、組織機構都分別給出了自己的定義:

BarryBoehm:運用現代科學技術知識來設計并構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料。

IEEE在軟件工程術語匯編中的定義:軟件工程是:1.將系統化的、嚴格約束的、可量化的方法應用于軟件的開發、運行和維護,即將工程化應用于軟件;2.在1中所述方法的研究。FritzBauer在NATO會議上給出的定義:建立并使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法。目前比較認可的一種定義認為:軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。

《計算機科學技術百科全書》中的定義:軟件工程是應用計算機科學、數學及管理科學等原理,開發軟件的工程。軟件工程借鑒傳統工程的原則、方法,以提高質量、降低成本。其中,計算機科學、數學用于構建模型與算法,工程科學用于制定規范、設計范型(paradigm)、評估成本及確定權衡,管理科學用于計劃、資源、質量、成本等管理。

比較認可的一種定義認為:軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。我認為,軟件工程是一門綜合了計算機,數學等多學科的課程,它涵蓋了數據庫,程序設計語言,軟件開發等多方面,它的發展直接帶動了經濟和社會的發展。

二、軟件工程的原則

軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發過程中必須遵循的原則。軟件工程的原則有以下四項軟件工程師基本原則:

1.選取適宜開發范型

該原則與系統設計有關。在系統設計中,軟件需求、硬件需求以及其他因素之間是相互制約、相互影響的,經常需要權衡。因此,必須認識需求定義的易變性,采用適宜的開發范型予以控制,以保證軟件產品滿足用戶的要求。

2.采用合適的設計方法

在軟件設計中,通常要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應性等特征。合適的設計方法有助于這些特征的實現,以達到軟件工程的目標。

3.提供高質量的工程支持

“工欲善其事,必先利其器”。在軟件工程中,軟件工具與環境對軟件過程的支持頗為重要。軟件工程項目的質量與開銷直接取決于對軟件工程所提供的支撐質量和效用。

4.重視開發過程的管理

軟件工程的管理,直接影響可用資源的有效利用,生產滿足目標的軟件產品,提高軟件組織的生產能力等問題。因此,僅當軟件過程得以有效管理時,才能實現有效的軟件工程。這一軟件工程框架告訴我們,軟件工程的目標是可用性、正確性和合算性;實施一個軟件工程要選取適宜的開發范型,要采用合適的設計方法,要提供高質量的工程支撐,要實行開發過程的有效管理;軟件工程活動主要包括需求、設計、實現、確認和支持等活動,每一活動可根據特定的軟件工程,采用合適的開發范型、設計方法、支持過程以及過程管理。根據軟件工程這一框架,軟件工程學科的研究內容主要包括:軟件開發范型、軟件開發方法、軟件過程、軟件工具、軟件開發環境、計算機輔助軟件工程(CASE)及軟件經濟學等。

三、軟件工程的目標

軟件工程的目標是:在給定成本、進度的前提下,開發出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用軟件工程性、可適應性、可移植性、可追蹤性和可互操作性并且滿足用戶需求的軟件產品。追求這些目標有助于提高軟件產品的質量和開發效率,減少維護的困難。下面分別介紹這些概念:

1.可修改性(modifiablity)

容許對系統進行修改而不增加原系統的復雜性。它支持軟件的調試與維護,是一個難以達到的目標。

2.有效性(efficiency)

軟件系統能最有效地利用計算機的時間資源和空間資源。各種計算機軟件無不將系統的時/空開銷作為衡量軟件質量的一項重要技術指標。很多場合,在追求時間有效性和空間有效性方面會發生矛盾,這時不得不犧牲時間效率換取空間有效性或犧牲空間效率換取時間有效性。時/空折衷是經常出現的。有經驗的軟件設計人員會巧妙地利用折衷概念,在具體的物理環境中實現用戶的需求和自己的設計。

3.可靠性(reliability)

能防止因概念、設計和結構等方面的不完善造成的軟件系統失效,具有挽回因操作不當造成軟件系統失效的能力。對于實時嵌入式計算機系統,可靠性是一個非常重要的目標。因為軟件要實時地控制一個物理過程,如宇宙飛船的導航、核電站的運行,等等。如果可靠性得不到保證,一旦出現問題可能是災難性的,后果將不堪設想。因此在軟件開發、編碼和測試過程中,必須將可靠性放在重要地位。

4.可理解性(understandability)

系統具有清晰的結構,能直接反映問題的需求??衫斫庑杂兄诳刂栖浖到y的復雜性,并支持軟件的維護、移植或重用。

5.可維護性(maintainability)

軟件產品交付用戶使用后,能夠對它進行修改,以便改正潛伏的錯誤,改進性能和其他屬性,使軟件產品適應環境的變化,等等。由于軟件是邏輯產品,只要用戶需要,它可以無限期的使用下去,因此軟件維護是不可避免的。軟件維護費用在軟件開發費用中占有很大的比重。可維護性是軟件工程中一項十分重要的目標。軟件的可理解性和可修改性有利于軟件的可維護性。

6.可重用性(reusebility)

概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件。軟部件可以在多種場合應用的程度稱為部件的可重用性。可重用的軟部件有的可以不加修改直接使用,有的需要修改后再用??芍赜密洸考哂星逦慕Y構和注解,應具有正確的編碼和較低的時/空開銷。各種可重用軟部件還可以按照某種規則存放在軟部件庫中,供軟件工程師選用??芍赜眯杂兄谔岣哕浖a品的質量和開發效率、有助于降低軟件的開發和維護費用。從更廣泛的意義上理解,軟件工程的可重用性還應該包括:應用項目的重用,規格說明(也稱為規約)的重用,設計的重用,概念和方法的重用,等等。一般來說,重用的層次越高,帶來的效益也就越大。

7.可適應性(adaptability)

軟件在不同的系統約束條件下,使用戶需求得到滿足的難易程度。適應性強的軟件應采用廣為流行的程序設計語言編碼,在廣為流行的操作系統環境中運行,采用標準的術語和格式書寫文檔。適應性強的軟件較容易推廣使用。

8.可移植性(portability)

軟件從一個計算機系統或環境搬到另一個計算機系統或環境的難易程度。為了獲得比較高的可移植性,在軟件設計過程中通常采用通用的程序設計語言和運行環境支撐。對依賴于計算機系統的低級(物理)特征部分,如編譯系統的目標代碼生成,應相對獨立、集中。這樣,與處理機無關的部分就可以移植到其他系統上使用??梢浦残灾С周浖恼n重用性和課適應性。

9.可追蹤性(tracebility)

根據軟件需求對軟件設計、程序進行正向追蹤,或根據程序、軟件設計對軟件需求進行逆向追蹤的能力。軟件可追蹤性依賴于軟件開發各個階段文檔和程序的完整性、一致性和可理解性。降低系統的復雜性會提高軟件的可追蹤性。軟件在測試或維護過程中或程序在執行期間出現問題時,應記錄程序事件或有關模塊中的全部或部分指令現場,以便分析、追蹤產生問題的因果關系。

四、學習軟件工程的必要性

軟件工程是信息社會不可或缺的學科,對于軟件及系統的開發更是不可不知,它告訴我們如何進行系統開發,一個系統的開發,最關鍵的是這個系統是用來做什么,也就是要進行需求分析,對于不同的用戶,同一個系統可能有不同的需求,所以,一定要做好需求分析,而軟件工程恰好告訴了我們如何進行需求分析。而開發一個系統,最主要的是系統和程序的設計,這些設計直接關系到這個系統的可靠性和有效性,這就要依靠軟件工程了,它告訴我們怎樣進行系統和程序的設計。學習軟件工程使我們掌握了軟件開發的方法,大大提高開發出來的軟件的可靠性和有效性。

【參考文獻】

篇2

篇3

軟件工程管理引起業界的廣泛注意源于20世紀70年代中期人們對“軟件危機”的認識。當時美國國防部曾立題專門研究軟件項目成敗的原因,發現70%的項目是因為管理不善而引起,而并不是因為技術實力不夠,進而得出一個結論,即管理是影響軟件研發項目全局的因素,而技術只影響局部。盡管如此,到了20世紀90年代中期,軟件工程管理不善的問題仍然存在。根據世界著名IT系統項目論證與決策權威機構Gartner的報告顯示,全球80%-90%的信息化項目沒有達到預定目標,80%的項目超出預算,40%的項目失敗或最終放棄。而中國的數字比這個還要大的多,只有小于25%的項目達到了需求和技術目標,10%滿足了即定的工作目標。這些現象和數字表現出來的軟件產品質量不高、生產率過低、資金大量浪費、進度無法保證的局面就是“軟件危機”。而軟件工程管理的失控就將造成軟件危機。對于我國正如火如荼地進行著的信息化建設,“軟件危機”就意味著大量國有資產的流失。由此可見,軟件工程管理的意義至關重要。

新背景下的再探索

隨著中國信息化事業的深入發展,政府主管部門和更多的國內企業已經開始關注如何保證軟件建設的質量與可靠性問題,并已初步達成一個統一的認識,那就是走“軟件工程化”道路,遵循系統工程的思想,對軟件開發全過程通過可定義、可量化的工程實踐方法進行控制管理。然而由于軟件工程管理和其它工程管理相比有其特殊性,故而在軟件工程管理的實施上仍然存在很多困難。例如,軟件是知識產品,建設進度和質量都難以度量,生產效率也難以保證;同時,軟件系統的復雜程度也是超乎想象的。例如,宇宙飛船的軟件系統源程序代碼多達2000萬行,如果按過去的生產效率一個人一年只能寫1萬行代碼的話,那么需要2000人年的工作量,這是非常驚人的。正因為軟件如此復雜和難以度量,軟件工程管理的發展還很不成熟。

針對這種狀況,國內一些先鋒軟件企業已經開始深度探索解決軟件工程管理問題的途徑。其中,北京萬維易化系統軟件開發有限公司作為國內屈指可數的幾家專門從事“軟件工程管理”的企業之一,通過多年來在相關領域的深入研究,對軟件工程管理的概念進行了全新的闡釋并提出了完善的解決方案,為軟件工程管理開辟了一條新的途經。

在萬維易化認看來,傳統的軟件工程管理內容過于單一,主要只是聚焦于軟件開發過程中的管理。但隨著信息化建設事業的深入發展,軟件承建方單方面的開發管理已經不能滿足信息化建設的全部需要。因此萬維易化提出了全新的“軟件工程管理(SEM)”概念,將軟件工程管理細分為軟件開發管理、軟件工程監理、軟件集成應用等三大組成部分。對于信息化建設項目中通常包括的建設方、監理方和承建方而言,分別需要對軟件集成應用、軟件工程監理和軟件開發過程實現有效的管理,只有這樣才能切實保證信息化建設的最終成功。

萬維易化認為,實現有效的軟件工程管理的關鍵因素在于客觀、有效的管理工具。軟件工程屬于知識高度密集,開發過程復雜多變,顯現度很低。以軟件工程監理為例,傳統的軟件工程監理很大程度上是參考了建筑行業的監理模式,在建筑項目中,監理方在施工現場隨時可以對工程的進行、質量進行現場監理,而軟件工程建設項目根本就沒有什么施工現場可以考察,工程進度、資金使用情況、軟件質量、合同執行情況也難以掌控。這就造成軟件工程管理在實際操作過程中“可操作性”差、“能見度”低。因此,無論是軟件工程監理、還是軟件開發、集成應用管理,一個好的管理工具最迫切需要解決的問題就是為軟件工程建設過程營造一個“建設現場”,將軟件工程建設的過程實現“可視化”。為此,萬維易化提出了平臺化的解決方案,主張通過搭建一個軟件工程管理平臺,將軟件開發的代碼、費用、人員、文檔、項目實施進度、資金控制等情況都納入一個統一的平臺,實現建設各方的實時溝通,對軟件建設的過程進行可視化、可控制的協調管理。

成功的實踐

篇4

20世紀中期,計算機的應用領域才從軍用轉為民用,當時編寫程序的工作不但沒有被重視,反而受到歧視。那時候,計算機硬件價格是很高的,這就要求編程人員在處理器能力和存儲器空間都很有限的情況下,編寫的程序不僅要體積小,而且要保證更快的執行速度。程序中要用到許許多多種類的技巧。此時進行軟件的開發,起決定性因素的是開發人員的智慧和能力。

進入20世紀60年代,計算機在更廣的領域得到了應用,這就要求我們不斷地提高軟件的復雜程度,要開發能夠滿足更多需求的系統,傳統的開發方法不能滿足用戶在質量、效率等方面對軟件的需求。這就是所謂的“軟件危機”。

面對這一危機,1968年NATO會議上首次提出“軟件工程”的概念,提出把軟件開發從“藝術”和“個體行為”向“工程”和“群體協同工作”轉化。具體來講就是在計算機科學理論和技術的指導下,運用工程管理的相關理論,按照預算和進度,開發符合用戶要求的軟件。這樣,一個新的學科(軟件工程)就產生了。

2 軟件工程的框架

軟件工程的框架可用目標、過程和原則三個詞語來總結。

2.1 軟件工程目標:生產具有正確性、可用性以及開銷合宜的產品。其中,正確性是指最終開發出的軟件要符合預期的功能??捎眯允侵杠浖窘Y構、實現及文檔為用戶可用的程度。開銷合宜是指軟件開發、運行的整個開銷都能達到用戶要求的程度。要很好地實現這一目標,不管是在理論上還是實際的開發過程中,都面臨著不少需要解決的問題。

2.2 軟件工程過程:主要是指生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程的內容包含了開發過程、運作過程、維護過程。這其中包括需求、設計、實現、確認以及維護等活動。在這幾方面中,需求活動主要是進行問題分析和需求分析。從問題分析中我們可以得到需求定義,也可以把它叫做軟件需求規約。需求分析生成功能規約。設計活動通常情況下是進行概要設計和詳細設計。實現活動要完成的是把設計結果轉換成可執行的程序代碼。而確認活動在整個軟件開發的過程中都有所涉及,進行了確認之后,要保證軟件最后能夠符合用戶要求。維護活動主要是指使用軟件的過程中,可以對其進行擴充和完善等。除了以上這些具體解釋的主要過程之外,還包括管理過程、支持過程等。

2.3 軟件工程的原則:在開發軟件時,工程設計、工程支持以及工程管理方面一定要遵守的一些相關原則。

3 軟件工程管理

管理學理論在軟件工程中的運用同樣也在軟件工程要研究的范圍內。在軟件項目管理方法上,我們不再使用原來的個人作坊式開發方式,充分運用管理科學的相關理論,再通過對軟件開發的實際情況進行分析,更好地運用工程化系統開發方法。在進行軟件的開發前,我們要提前制定好軟件項目的成本、進度、質量,然后我們在開發軟件的過程中,要嚴格遵守這些相關的計劃,這就要求我們通過軟件管理方法來更好的管理和控制軟件開發項目的成本、進度、質量等。對軟件項目的有效管理,能夠更好的把開發人員的個人開發能力轉化成企業的開發能力,當企業表現出不斷提高的軟件開發能力時,說明它的軟件生產水平就越高,同時表明它的開發風險相對不大。軟件項目管理是關系著軟件開發企業能否在激烈的競爭中處于優勢地位的決定性因素之一。

從軟件與其他產品的不同中,我們可以看出軟件項目管理同樣也有一些與其他項目管理要遵守的一些不一樣的原則,例如:大規模的項目要拆分成幾個小項目,以此達到降低項目的管理風險的目的,而且還要制定詳細而明確的目標;根據各個項目的特征,制訂相應的、切實可行的項目管理方法等。

4 軟件工程中軟件構件的作用

軟件構件的概念共生于軟件復用。軟件復用的概念在1968年的北大西洋公約組織會議上提出,McIlroy還提出了軟件構件、構件工廠等概念,以后相繼制定了一整套軟件復用的指導性標準,其中包含了利用標準構件實現軟件復用的基本思路。在軟件開發過程中使用標準軟件零部件的構想,從一開始就受到眾人的青睞,然而在以后的發展過程中,對這一構想的認識一直在發生著變化。

在二十世紀的七八十年代,軟件構件主要指可復用的程序代碼片段,通常我們叫他代碼件。這段時間內在軟件開發中我們主要要解決的問題就是怎樣最大限度的利用已有的源程序代碼、子程序庫和類庫,改善軟件生產的效率。這一時期的代碼件包括子程序、程序包、類、模板等形態。到二十世紀九十年代,相關的技術人員都認為軟件構件應當包括分析件、設計件、代碼件、測試件等多種類型。因為軟件復用具有多樣性,我們還可以把它分為產品復用和過程復用。這樣就會相應地產生更多的新概念,如設計模式、框架以及軟件體系結構等。實際上,我們在研究軟件構件基本屬性時,主要考慮的還是代碼件的相關內容,如果沒有明確的標注,研究的都是軟件構件的代碼件。

在軟件技術中,構件技術占有重要的地位,更好的研究構建技術,對于軟件技術的發展具有不可估量的意義。但是研究構建技術也不是很簡單的,存在著各種各樣的困難。從構建技術的研究情況來看,即使我們對它的基本概念上,有著越來越多的共同認識,但是還并不是完全一致,依舊有歧義。這樣就不容易在各個具體的領域中運用構建技術。領域業務對計算機信息技術的運用越來越多,越來越廣泛,所以,計算機技術在很大程度上促進了領域軟件復用需求的增加。由于現在的構件技術還存在著很多的不足之處,同時沒能很好的重視對它的研究,所以它還不能滿足某些需求。實際上,這就在構件技術的研究上給我們提出了更高的要求,依據現在構件技術的研究成果,結合領域應用的需求,加大對領域構件技術的研究。

5 軟件信息工程監理

關于軟件工程,其最主要任務就是通過科學、有效的管理方法不斷改善軟件開發質量。其主要要求是改變之前的軟件開發模式,將其不斷細分和分解,因為不同的階段會表現出不同的特點,這就需要我們具體問題具體分析,根據這些不同的特點來選擇相應的方法和工具,從而使復雜度較高的軟件生產進行可度量、可控的設置。從另一方面來講,認真、嚴格的控制各個生產階段,能夠有效地預防某些問題和風險,避免在之后的開發過程中出現更多的麻煩,這樣就能夠在一定程度上減小開發的風險,同時還能提高軟件開發的質量。綜合以上的分析我們認為,進行信息工程監理,我們要達到的終極目標就是通過合同管理、質量控制、進度控制、成本控制、信息管理等方法來提高工程項目的質量,保障工程項目的順利開展。

6 結束語

綜上所述,軟件工程就在計算機科學理論和技術的指導下,運用工程管理的相關理論,按照預算和進度,開發符合用戶要求的軟件。進行軟件工程最主要任務就是通過科學、有效的管理方法不斷改善軟件開發質量。在軟件開發中使用的信息工程監理的模型,以軟件工程理論為基礎,以信息工程項目過程控制為主線,全面的控制并監督企業信息工程的項目分析、項目設計、項目實施以及項目維護等各個階段。

參考文獻:

[1]黃真.并聯機器人機構學理論與控制[M].北京:機械工業出版社,1997.

[2]馮玉林.軟件工程方法工具和實踐[M].合肥:中國科學技術大學出版社,1992.

[3]張立等,基于Client/Server模式的數據庫應用軟件的設計與實現,計算機應用研究,1999

篇5

性別:男

民族:漢

政治面目:團員

學歷(學位):學士

專業:工業電器自動化

聯系電話:12345678

手機:139000234

聯系地址:北京市東城區XX大街10號

郵編:100007

Email Address:

呼機:66881122-1234

教育背景

畢業院校:北京工業大學 1993.9--1997.7 工業電器自動化專業

主修課程:自控原理,電力拖動,電子技術,自動測試系統,計算機組織與結構,計算機硬件及接口電路設計,匯編語言程序設計,C.C++程序設計,軟件工程計算機網絡原理等課程

另:其他培訓情況

*微軟認證系統工程師培訓,培訓科目:Windows NT Technology,Windows NT Enterprise,Networking with TCP/IP on Windows NT,ⅡS4.0 WindowsNT

*英語通過國家四級考試,閱讀和翻譯能力較強,曾多次為機械工業出版社翻譯計算機書籍,并獲出版。

工作經歷

*1998年5月---至今 XX公司

網絡系統工程師

Cisco、IBM網絡產品的技術支持

網絡系統方案(局域網和廣域網)的設計和規劃,解答用戶的疑問,根 據用戶需求提出最佳解決方案;Cisco、IBM網絡產品的現場調試和系統維護

客戶技術培訓,及公司內部的技術交流與培訓

網絡基本原理及技術:LAN,WAN,TCP/IP,ATM等,以及Cisco、IBM 網絡設備調試過程;講解IBM AIX基本系統管理及高級系統管理、Netview、

NFS、HACMP等

曾經參與的項目

設計,安裝,調試“吉林97工程”--吉林省電信綜合管理系統ATM網絡及主機系統,長沙卷煙廠,錦州合作銀行,人民教育出版社信息系統;設計云南省郵電辦公信息集成系統,濟南廣電ATM寬帶綜合業務網、陜西有線電視寬帶網。

*1996年9月---1998年3月 XX公司

系統管理員/工程師

CHINAGBN Internet網絡信息中心的系統管理

熟練掌握UNIX(SUN Solaris)操作系統、網絡管理并參與組建了CHINAGBN Internet網絡中心(包括網絡設計,安裝系統,聯調,維護,網絡編程)

CHINAGBN 金橋網六城市網絡站點的建設

參與各站點Internet網絡中心的總體規劃和建設及其與衛星主干網的連接,對主干衛星網、X.25分組交換、Frame Relay、ISDN和DDN及其相關設備有所了解

CHINAGBN Internet網絡中心Web系統管理員

個人簡介

篇6

(3)軟件產品的質量往往靠不住。軟件可靠性和質量保證的確切的定量概念剛剛出現不久,軟件質量保證技術(審查、復審和測試)還沒有堅持不懈地應用到軟件開發的全過程中,這些都導致軟件產品發生質量新問題。

(4)軟件經常是不可維護的。很多程序中的錯誤是非常難改正垢,實際上不可能使這些程序適應新的硬件環境,也不能根據用戶的需要在原有程序中增加一些新的功能?!翱芍赜玫能浖边€是一個沒有完全做到的、正在努力追求的目標,人們仍然在重復開發類似的或基本類似的軟件。

(5)軟件通常沒有適當的文檔資料。計算機軟件不僅僅是程序,還應該有一整套文檔資料。這些文檔資料應該是在軟件開發過程中產生出來的,而且應該是“最新式的”(即和程序代碼完全一致的)。軟件開發組織的管理人員可以使用這些文檔資料作為“里程碑”,來管理和評價軟件開發工程的進展狀況;軟件開發人員可以利用它們作為通信工具,在軟件開發過程中準確地交流信息;對于軟件維護人員而言,這些文檔資料更是至關重要必不可少的。缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開發和維護帶來許多嚴重的困難和新問題。

(6)軟件成本在計算機系統總成本中所占的比例逐年上升。由于微電子學技術的進步和生產自動化程度不斷提高,硬件成本逐年下降,然而軟件開發需要大量人力,軟件成本隨著通貨膨脹以及軟件規模和數量的不斷擴大而持續上升。美國在1985年軟件成本大約已占計算機系統總成本的90。

(7)軟件開發生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨向。軟件產品“供不應求”的現象使人類不能充分利用現代計算機硬件提供的巨大潛力。

軟件工程的七條基本原理:1、用分階段的生命周期計劃嚴格管理有人經統計發現,在不成功的軟件項目中有一半左右是由于計劃不周造成的,可見把建立完善的計劃作為第一條基本原理是吸取了前人的教訓而提出來的。在軟件開發和維護的漫長的生命周期中,需要完成許多性質各異的工作。這條基本原理意味著,應該把軟件生命周期劃分成若干個階段,并相應地制定出切實可行的計劃,然后嚴格按照計劃對軟件的開發和維護工作進行管理。Boehm認為,在軟件的整個生命周期中應該制定并嚴格執行六類計劃,它們是項目概要計劃,里程碑計劃,項目控制計劃,產品控制計劃,驗證計劃,運行維護計劃。不同層次的管理人員都必須嚴格按照計劃各盡其職地管理軟件開發和維護工作,絕不能受客戶或上級人員的影響而擅自背離預定計劃。2、堅持進行階段評審當時已經熟悉到,軟件的質量保證工作不能等到編碼階段結束之后再進行。這樣說至少有兩個理由:第一,大部分錯誤是在編碼之前造成的,例如,根據Boehm等人的統計,設計錯誤占軟件錯誤的63,編碼僅占37;第二,錯誤發現和改正得越晚,所需付出的代價也越高。

因此,在每個階段都進行嚴格的評審,以便盡早發現在軟件開發過程中所犯的錯誤,是一條必須遵循的重要原則。3、實行嚴格的產品控制在軟件開發過程中不應隨意改變需求,因為改變一項需求往往需要付出較高的代價,但是,在軟件開發過程中改變需求又是難免的,由于外部環境的變化,相應地改變用戶需求是一種客觀需要,顯然不能硬性禁止客戶提出改變需求的要求,而只能依靠科學的產品控制技術來順應這種要求。也就是說,當改變需求時,為了保持軟件各個配置成分的一致性,必須實行嚴格的產品控制,其中主要是實行基準配置管理。所謂基準配置又稱基線配置,它們是經過階段評審后的軟件配置成分(各個階段產生的文檔或程序代碼)。

基準配置管理也稱為變動控制:一切有關修改軟件的建議,非凡是涉及到對基準配置的修改建議,都必須按照嚴格的規程進行評審,獲得批準以后才能實施修改。絕對不能誰想修改軟件(包括尚在開發過程中的軟件),就隨意進行修改。4、采用現代程序設計技術從提出軟件工程的概念開始,人們一直把主要精力用于探究各種新的程序設計技術。60年代末提出的結構程序設計技術,已經成為絕大多數人公認的先進的程序設計技術。以后又進一步發展出各種結構分析(SA)和結構設計(SD)技術。實踐表明,采用先進的技術既可提高軟件開發的效率,又可提高軟件維護的效率。5、結果應能清楚地審查軟件產品不同于一般的物理產品,它是看不崢摸不著的邏輯產品。

軟件開發人員(或開發小組)的工作進展情況可見性差,難以準確度量,從而使得軟件產品的開發過程比一般產品的開發過程更難于評價和管理。為了提高軟件開發過程的可見性,更好地進行管理,應該根據軟件開發項目的總目標及完成期限,規定開發組織的責任和產品標準,從而使得所得到的結果能夠清楚地審查。6、開發小組的人員應該少而精這條基本原理的含義是,軟件開發小組的組成人員的素質應該好,而人數則不宜過多。

篇7

在流程的設計過程中,最重要的問題在于是目當前項目的特點是什么,產品經常出什么樣的哪些問題,需要做什么怎樣的調整,現有測試團隊能不能做這樣的能否做作出調整,研發團隊是不是會不會能接收接受?

首先談談項目特點,按照項目特點,大致可以一般來說分成兩類,:

一種是長期進行的項目,這種項目有基本的框架,有核心的技術,應用比較穩定,這種項目要注重測試用例的積累與復用,同時也適合做單元測試,自動化測試的積累;

另一種是變更頻度更高,靈活,規模不大的項目,如果做自動化測試則會出現二次開發的時間大于手工測試的時間,而且項目結束后測試用例在長期中也沒有任何復用,在自動化測試人員普遍成本比較高的情況下,所以反而更適做功能測試。

雖然這兩者可能在長遠的目標上并不一致,但是引入測試管理平臺,從測試需求,、測試設計,、缺陷管理等方面入手則是測試團隊必備的技能。一個好的測試流程必需要有好的系統平臺的支撐,如果你把測試流程設計的得很完美,跟如同小學語文教科書一樣,但執行這樣的流程在起來現有的資源的情況下是未免不現實,倒并非說詳細的流程是洪水猛獸,只是對于一家軟件公司來說,資源的限制仍然是瓶頸所在的。,那流程也就沒有意義,一般來說一個執行的得好的測試流程必然會有好的平臺,就像我以前所在國內的幾家很有聲名的軟件公司,其測試平臺要不是么是采購的,就要么是自己開發的,但最主要是要適合自己一套適合自身特點的流程平臺起了非常積極的作用。在這里也給大家建議一些好的測試平臺,比如MercuryInteractive的TestDirector,、IBM的TestManager,、Silk的一些缺陷管理平臺,這些平臺大多都能充分滿足測試團隊的要求其實都能滿足大家的要求。,當然,還有一些免費的開源工具也是可用的。但從長遠的角度看,我還是更建議大家讀者使用那些不僅僅只是滿足缺陷管理的工具,而是要應該選擇能集成測試需求,、測試設計,、測試用例,、缺陷管理的工具,最好也能滿足自動化的集成的,什么樣的產品能滿足就不多說了,免得有打廣告之嫌J,而商業軟件,如MI或IBM的產品在這些方面都有較好的表現。

項目特點決定流程的長期目標,但對于不同產品類型的公司,可能出現的問題往往會不一樣同。,比如說在金蝶的EAS-BossBOSS,、或是在金山做的游戲軟件,、亦或還是在阿里巴巴做電子商務,作為測試管理者,就要具體的問題都應該區別對待。

對于EAS-Boss這樣大型的軟件產品,團隊的規模比較大,核心技術比較穩定。但對于這樣的這樣的產品有以下一些特點:

由于產品比較大,手工測試時重復的工作量特別大;

引擎與產品框架比較穩定;

編譯與的流程比較固化;

由于團隊的規模比較大,接口特別多,集成測試風險特別高;。

這樣種產品的測試,主要是把大量的重復頻度比較高的功能測試轉化為自動化測試角本腳本,在開發過程中要注意,核心引擎與穩定的產品部分,盡可能使用測試框架形成單元測試集,;同時由于編譯與固化,適合做每日編譯,,自動化的執行單元測試集與自動化的測試角本。在做這種測試流程時,同時還要注意引入強大的分析統計工具,比如代碼覆蓋與評審工具,內存檢查與性能函數分析工具,出錯表統計模塊,達到,、測試執行與評估自動化、一體化。由于進行每日集成,接口的問題可以盡早的暴露出來,避免了后期集成的風險,。

這一點每日集成對于大型項目非常重要。同時,由于測試的自動化,大部分的自動化測試角本在空閑的時間運行,測試組可以在進入手工測試時得到比較穩定的版本,及大極大的提升了團隊開發與測試的執行效率,。但然而在這樣的情況下,缺陷點是整個團隊對研發,、測試體系的技術要求特別高,其本上不亞于有時甚至難過做一個大型的項目。這樣的測試流程在,在中小團隊比較難以實現比較困難,而關鍵就在于無法降低的成本比較高。下圖就是一個穩定項目的測試流程圖。

游戲軟件產品的測試流程又有不同。當你去帶領這個測試團隊一個游戲團隊時,可能游戲核心引擎應該是比較相對穩定的,而游戲內部的故事情節可能會不斷的變化,。這時你可把一些更加穩定的程序做成比較穩定的自動化回歸測試,同時加強對不斷變化的游戲情節的功能測試,同時注意這些功能是不是否會影響到其它相關的模塊。同時在因此,游戲測試的過程中還有一些比較有其特殊性,主要表現以下幾點:

服務器的穩定性,網絡流量,與安全是游戲最至關重要的,(往往有很多游戲不是不好玩,而是太不穩定);

游戲由于有及時的即時更新,會經常在同時修改缺陷的時候,還在同一模塊下增加新功能;

好的網絡游戲開發,其的功能必然會是迎合玩家的需求(游戲性分析)。;

對于游戲軟件產品來說,這些需要特別注意重點控制的點關鍵,要求測試團隊必需要加強以下幾個方面,性能測試,代碼的融合、相關性影響面的判斷、版本的變更與控制,還有游戲性的分析與測試。性能測試主要加強以下幾點,則需要注意在并發下服務器的穩定性監控,、網絡流量與游戲客戶端在大場面下的表現。;而版本控制在游戲軟件的過程中,其意義更多——則會避免已經改了的問題重復出現,或是改了更新上去問題還是存在,如何高效的合并代碼,、合成游戲資源、圖片與角本腳本還是一個比較難度很高的事情,尤其涉及到多個部門。;而游戲性測試主要是避免那種些與游戲風格相背的情況,或是開發團隊累死累活拼命完成得功能性任務做出的功能沒有可延續性。

性能測試與版本控制,在大多數軟件的測試流程中都會涉及,但是在不同的軟件產品/項目中都有其特點。一般屬于通用軟件測試流程的部分,但而游戲性測試則需要對游戲感覺很好有比較深刻的了解,并由真正懂懂得的玩家的人來擔任,。某些時候,他甚至可以不是一個很好的軟件測試人員,但他一定是一個真正懂游戲的人,這里有一些扯遠,但這里,本文稍后一節,將我會在后面會強調人的因素也決定了流程的實施。

下圖是游戲迭代開發模型圖

如果你去做電子商務,或是做門戶,這些項目的適時性,高性能,復雜的功能會給你更高的技術要求,更高強的時間性效率挑戰,對測試的設計,、執行,、與性能測試提出更高的要求。其實在大多數互聯網公司經常會出現這樣的情況:剛出去的功能又撤下來修改,或是性能達不到要求仍需要又要調優。許多一些人都會犯這樣一個錯,認為測試的時間不夠,就只要測試執行,而忽略了其他幾個環節就可以了,不做細致的分析與設計,為后續工作帶來很大壓力。其實,一個充分測試過的有質量保證的產品,可以減輕客服,、市場,、等各方面很多的壓力。產品在用戶和研發之間,反復,幾次不如晚一些上提供給用戶。從另外一方面看,這還需要測試主管能頂住某些壓力。時間緊迫當然這不是理由,如何在流程上保證測試的需求分析,、用例的設計與研發在開發時同步進行是最重要的,這時你要加強早期的測試介入,明確卡住需求確認這一部分,。這樣,在研發進入開發階段時,測試團隊也能進入測試設計,。當研發開發完成時,你測試團隊事實上已經其本基本上完成了大部分的測試設計,并準備進入測試執行,。不要在開發提交后再去想如何測測試,抱怨之聲也就不絕于耳了。這樣才可能測試好一個時間比較緊的項目不管在用于測試的時間上,還是測試的質量上都無法滿足要求。

,同時測試設計的很好,不僅可以節約測試執行的時間,也可以在反復提交的過程中,由于用例執行的一致性,保證了測試在多次的執行中的質量,;。同時也有的標準,一是缺陷的情況,二是用例的執行與覆蓋。同時由于研發給的測試時間比較緊,所以有兩件事情就必需作做好,:一是明確產品提交測試時間,并在研發延遲時給自己爭取時間;二是在質量達不到要求的情況下,時間及時的做出反應,不要到最后在研發不了解項目質量的情況下建議研發延遲項目。為了達到上面的要求你必需要一個很好的測試平臺,把設計,測試用例管理,執行與用例的聯動,缺陷管理與報表統計打通,盡可能的利用平臺解決事務性工作,降低流程執行的成本,。也就是說,既讓測試人員可以集中精力去測試,同時又能夠讓研發管理人員隨時獲取正在進行測試的進度與質量,。當這些工作做到透明化時以后,就算讓研發延遲,研發部門也會接收接受,。下圖是這一階段的大致流程

篇8

軟件工程學科的出現直接原因是軟件危機。所謂軟件危機指的是在計算機軟件的開發和維護

過程中所遇到的一系列嚴重問題。概括來說,軟件危機包含兩方面問題:

第一,如何開發軟件以滿足不斷增長、日趨復雜的需求;

第二,如何維護數量不斷膨脹的軟件產品。

實際上,軟件產生不久,落后的軟件生產方式無法滿足迅速增長的計算機軟件需求這個矛盾就開始暴露出來,并導致軟件開發與維護過程中出現一系列嚴重問題的現象。最為突出的例子是美國IBM公司于1963年~1966年開發的IBM360系列機的操作系統。該項目的負責人Fred Brooks(F•D•希羅克斯)在總結時無比沉痛地說: “……正像一只逃亡的野獸落到泥潭中做垂死掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂的災難……程序設計工作正像這樣一個泥潭……一批批程序員被迫在泥潭中拼命掙扎……誰也沒有料到問題竟會陷入這樣的困境……” IBM360操作系統的歷史教訓已成為軟件開發項目中的典型事例被記入歷史史冊。

由于軟件危機的產生,迫使人們不得不研究、改變軟件開發的技術手段和管理方法,從此軟件生產進入軟件工程時代。

1968年北大西洋公約組織的計算機科學家在聯邦德國召開的國際學術會議上第一次提出了“軟件危機”(Software Crisis)這個詞,同時討論了如何擺脫“軟件危機”。在那次會議上第一次提出了軟件工程(Software Engineering)這個概念,從此一門新興的工程學科――軟件工程學應運而生。作為一門旨在開發滿足用戶需求、及時交付、不超過預算和無故障的軟件的學科,軟件工程的主要對象是大型軟件。它的最終目的是擺脫手工生產軟件的狀況,逐步實現軟件開發和維護的自動化。

自從軟件工程概念提出以來,歷經了幾十年的研究與實踐,雖然“軟件危機”沒得到徹底解決,但在軟件開發方法和技術方面已經有了很大的進步。尤其應該指出的是,自上個世紀80年代中期,人們已經開始認識到,在軟件開發中最關鍵的問題是軟件開發組織不能很好地定義和管理其軟件過程,從而使一些好的開發方法和技術起不到所期望的作用,也就是說,在沒有很好定義和管理軟件過程的軟件開發中,開發組織不可能在好的軟件方法和工具中獲益。

軟件工程的內容三段論

這里的三段論是指從內容這個角度看軟件工程的三段理論。軟件工程是為克服軟件危機而提出的一個概念,并在實踐中不斷地探索它的原理、技術和方法。在此過程中,人們研究和借鑒了工程學的某些原理和方法,并形成了軟件工程學。軟件工程的目標是提高軟件的質量與生產率,最終實現軟件的工業化生產。既然軟件工程是“工程”,那么我們從工程的角度看一下軟件項目的實施過程(如圖1所示)。

客戶的需求啟動了一個軟件項目,為此我們需要先規劃這個項目,即完成項目計劃,然后根據這個項目計劃實施項目。項目實施的依據是需求,這個需求類似工程項目的圖紙,開發人員按照這個圖紙生產軟件,即設計和編碼,在開發生產線上將開發過程的半成品通過配置管理存儲和管理,然后進行必要的集成和測試,直到最后提交給客戶。在整個開發過程中需要進行項目跟蹤管理。軟件工程活動是“生產一個最終滿足需求且達到工程目標的軟件產品所需要的步驟”。這些活動主要包括開發類活動、管理類活動和過程類活動,這里將它定義為“軟件工程的三段論”或者“軟件工程的三線索”,即軟件項目管理、軟件項目開發、軟件過程改進。它們之間的關系可以用一個三角形表示(如圖2)。它們類似于相互支撐的三角形的三個邊,相互依賴,必不可少。

其中: 開發過程是軟件人員生產軟件的過程,例如需求分析、設計、編碼、測試等,相當于生產線上的生產過程;

管理過程是項目管理者規劃軟件開發、控制軟件開發的過程,相當于生產線上的管理過程,管理過程是伴隨開發過程進行的過程;

過程改進相當于對軟件開發過程和軟件管理過程的“工藝流程”進行管理和改進。如果沒有好的工藝生產不出好的產品,它包括對開發過程和管理過程的定義和改進。

為了保證軟件管理、軟件開發過程的有效性,應該保證這些過程的高質量和過程的持續改進。而軟件開發過程中腦力活動的“不可見性”大大增加了過程管理上的困難。因此軟件工程管理中的一個指導思想就是千方百計地使這些過程變為“可見的”以及事后可以檢查的記錄。只有從一開始就在開發過程中嚴格貫徹質量管理,軟件產品的質量才有保證。否則,開發工作一旦進行到后期,無論怎樣通過測試和修補漏洞,都會無濟于事。

韓萬江

北京郵電大學軟件學院副教授,主要研究方向為軟件工程、軟件項目管理及軟件測試等。著有《軟件工程案例教程》、《軟件項目管理案例教程》。

軟件工程的未來發展

軟件工程的研究熱點是隨著軟件技術的發展而不斷變化的。即便在軟件工程的領域內,研究熱點也在不斷轉移。

以往軟件工程一直不能像其他產品一樣做到標準化,隨著技術條件的不斷成熟、相應標準的出臺,軟件人員已經開始重視這方面的工作: 實際上可以將許多軟件工作分成許多部件去構造,很有可能今后的軟件隊伍會分為兩個部分,一部分專門從事評估,另一部分專門從事集成,集成的對象就是軟構件。

軟構件的開發與運用已悄悄開始。在一些公共領域,例如軟件的用戶界面,通用軟構件的使用已經屢見不鮮。然而,對于各種專業領域來說,領域構件的開發和使用還基本處于空白狀態。這一工作的進行意味著各行各業對本專業領域內的知識形態加以歸納整理,然后以最新的軟件形式表達出來。如果全面鋪開,將是一件規模浩大的社會工程,需要各領域專家和軟件專家通力合作才能完成。一旦軟件生產的“構件-集成”格局成為現實,各種應用領域里的構件的設計與生產將開辟出一個十分廣闊的新天地,產生出巨大的市場需求,而且軟構件的使用可以滲透到符合軟構件標準規范的所有系統中,

在軟件開發過程中人們開始研制和使用軟件工具,用以輔助進行軟件項目管理與技術生產,人們還將軟件生命周期各階段使用的軟件工具有機地集合成為一個整體,形成能夠連續支持軟件開發與維護全過程的集成化軟件開發環境,以期從管理和技術兩方面解決軟件危機問題。

此外,人工智能與軟件工程的結合從上個世紀80年代末期便成為活躍的研究領域?;诔绦蜃儞Q、自動生成和可重用軟件等軟件新技術研究也已取得一定的進展,把程序設計自動化的進程向前推進了一步。在軟件工程理論的指導下,發達國家已經建立起較為完備的軟件工業化生產體系,形成了強大的軟件生產能力。軟件標準化與可重用性也得到了工業界的高度重視,在避免重復勞動、緩解軟件危機方面起到了重要作用。

今天,軟件已經普遍應用于各個行業,這些應用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量。隨著現代信息技術的飛速發展,軟件產品的規模也越來越龐大,導致開發隊伍的逐漸增大,從而使得軟件工程的作用也越來越明顯。但是,我們不能盲目崇拜軟件工程。實際上,不管有沒有軟件工程,不管是否存在一個萬能的框架系統,我們的應用系統仍然要做,各種各樣的軟件還是要開發。說到底,軟件系統是因為有需求才存在的。有了應用領域軟件存在才有了意義。很多時候,我們可以看到國外有各種各樣的軟件和創新,而我們還面臨很多的問題,但我們不能說,只要解決軟件工程問題就能推進軟件產業。

(作者原文中有大量實例,限于篇幅,本文進行了刪減。讀者可以登錄.cn查看原文,或參考作者所撰寫的《軟件工程案例教程》、《軟件項目管理案例教程》。)

鏈接一:軟件開發的三個階段

第一個階段是20世紀50年代~60年代,為程序設計階段,基本是個體手工勞動的生產方式。這個時期,一個程序是為一個特定的目的編制的,軟件的通用性很有限,其開發往往帶有強烈的個人色彩。因為軟件設計是在某個人的頭腦中完成的一個隱藏的過程,而且,除了源代碼往往沒有軟件說明書等文檔,因此這個時期尚無軟件的概念,基本上只有程序、程序設計概念,不重視程序設計方法。軟件主要是用于科學計算,規模很小、采用簡單的工具(基本上采用低級語言),硬件的存儲容量小、運行可靠性差。

第二階段是60年代~70年代,為軟件設計階段,小組合作生產方式。在這一時期軟件開始作為一種產品被廣泛使用,出現了“軟件作坊”。這個階段大多采用高級語言開發工具,開始提出結構化方法。硬件的速度、容量、工作可靠性有明顯提高,而且硬件的價格降低。人們開始使用產品軟件(可購買),從而建立了軟件的概念。程序員數量猛增,但是開發技術沒有新的突破,軟件開發的方法基本上仍然沿用早期的個體化軟件開發方式,軟件需求日趨復雜,維護的難度越來越大,開發成本令人吃驚得高,開發人員的開發技術不適應規模大、結構復雜的軟件開發,失敗的項目越來越多。

第三個階段是從70年代至今,為軟件工程時代,是工程化的生產方式。這個階段的硬件向超高速、大容量、微型化以及網絡化方向發展,第三、四代程序設計語言出現。數據庫、開發工具、開發環境、網絡、分布式、面向對象技術等工具方法都得到應用。軟件開發技術有很大進步,但仍未能獲得突破性進展,軟件開發技術的進步一直未能滿足發展的要求。軟件的數量急劇膨脹,同時,軟件開發人員發現軟件開發的難度越來越大,在軟件開發中遇到的問題找不到解決的辦法,最終導致了軟件危機。

篇9

通過對傳統軟件工程的借鑒,可以把現代軟件工程的方法分為主要的五部分,其分別是:分析、設計、編碼、測試以及維護。實際上,人們通過傳統軟件工程中比較有價值的方法和原則進行學習和采納,進而加入到對現代軟件工程方法的構建中,所以不論是現代軟件工程還是傳統軟件工程,很多時候在方法的使用方面仍然有著較為相似的地方。對于現代軟件工程來說,其最重要的優點徹底地打破傳統軟件工程的在部分方面的約束,使得多數軟件的發展擺脫了傳統軟件工程的限制,促進了各個領域范圍內軟件的發展(鞏敏,某部系列軟件工程項目的質量成本控制研究:中國科學院大學(中國科學院工程管理與信息技術學院),2017)。并且,現代軟件工程能夠把傳統軟件工程的方法以及原理等作為大規模開發的基礎,利用先進的科學技術優勢不斷地優化系統,使得現代軟件工程更加全面和系統。在現代軟件工程方法的五部分中,其中在分析階段,現代軟件工程面對的對象是現實生活中真實存在的那些事物,而不是虛擬的,所以通過對真實存在的事物的特征等方面進行分析,進而能夠反映出事物的作用等。此外,在現代軟件工程方法的設計階段中,現代軟件工程需要注重那些能夠反映出具體的事物。對于現代軟件工程較為突出的特點,便是現代軟件工程能夠進行修改,這不僅使得現代軟件工程更加的規范系統,還使得現代軟件工程更加安全可靠。

三、現代軟件工程技術的發展趨勢

隨著經濟全球化的發展,軟件開發行業為了能夠在全球化的發展中不被淘汰,因此進行了較大的改變。通過使用傳統的軟件工程已經無法滿足全球化發展對軟件開發行業的要求,必須要對軟件進行創新,利用新型軟件技術對軟件開發行業帶來的影響力,來促進軟件行業的發展。其次,由于國內的軟件開發技術相比國外的很多國家來說能力較差,所以很多軟件工程項目的進展需要轉移到國外進行。比如,將根據功能等方面將軟件工程分為幾大部分,然后將各個部分分配給較多國家的軟件外包公司來完成,這樣的方式,有效的表明了我國軟件工程信息全球化發展的趨勢。

四、現代軟件工程存在的問題

(一)制定不合理的軟件項目目標

在進行制定軟件項目目標時,管理者沒有更多的切合當前的實際情況,缺乏大局意識,在計算機項目管理中使用了錯誤的方式,進而未能提前制定好適合軟件發展情況的項目目標,導致軟件在進行開發的過程中開發成本、工作進程等方面產生了嚴重的偏差。

(二)設計的軟件的質量不能夠達到國際先進水平

實際上,現代軟件工程所用到的技術已經到達了國際較為先進的水平,因而產生的軟件在質量方面達到國際先進水平正常情況下是沒有問題的。但是,由于在對軟件進行開發的時候,主要項目的管理人員沒有較強的管理意識,在制定管理制度存在漏洞,不僅導致了軟件項目的開發成本逐漸增加,還使得軟件的質量一定程度的降低。

(三)設計的軟件功能實現和操作方式不夠人性化

很多軟件是依據用戶的需求來設計的,在進行現代軟件工程的時候,如果沒有按照用戶的要求以及實效切合實際的來對軟件進行測試,就會使得軟件工程的生產結果供大于求,對軟件開發行業的經濟效益帶來嚴重的損失(鄧學飛,現代軟件工程在電力系統中的應用:電子技術與軟件工程,2015)。

五、現代軟件工程應用于軟件開發中策略

(一)以切合實際情況為主,在現代軟件開發中使用最合適的現代軟件工程方法

軟件體系結構是現代軟件開發過程中的必經之路,因此軟件體系結構對于現代軟件工程來說是十分重要的。但是,軟件體系結構的側重點仍然在然間的分層法結構上,所以在軟件開發的時候所得到的數據大多數仍然是從數據庫中尋找到的。雖然我國現代軟件工程作為新興的軟件工程,已經逐步取代了傳統軟件工程,但是我國的數據庫管理系統仍然較為傳統,沒有得到明顯的改善或者創新。較為傳統的數據庫在更新數據方面較慢,并且傳統數據庫管理系統的作用并未得到充分地發揮,僅僅只是在處理數據以及保證數據安全等方面發揮了重要作用。因此,在現代軟件開發過程中,通過良好的現代科技壞境,將傳統的軟件工程方法與現代軟件開發技術更好的結合起來,使得現代軟件工程的儲存數據的能力有了較大的提升,并且對軟件開發的操作進行了規范化以及系統化的調整,有利于現代軟件開發中對軟件開發的應用。

(二)創新軟件工程理念,把新型的軟件工程理念加入到現代軟件工程中

篇10

二、教學現狀

在當前的軟件工程課堂教學當中,部分院校采用純理論課堂講授的授課形式,另一部分院校則采用理論講授與實踐實訓課程相結合的授課形式。然而,從教學內容來看,當前軟件工程的教學內容,主要集中在傳統方法學,即傳統的軟件工程學。對于面向對象方法學來說,很多新的知識方法還涉及不足,特別是軟件模型化,構建技術,UML統一建模語言等等一些當下社會流行的軟件工具和方法。同時,實踐環節較少,實踐效果不夠理想也是軟件工程教學中普遍存在的問題。目前可供該課程選用的合適的實驗項目甚少,所以學生通過實驗課程所達到的效果與教學要求存在較大的差距。另一方面,學生對理論知識的理解不足。軟件工程是一門計算機領域的綜合性、工程性學科。涉及軟件生命從萌芽、成型、成熟、生命結束的各個周期階段的工作和任務。學習者似乎能聽懂,可聽完后大部分學生還處在似懂非懂的階段,真正需要動手時,不知道該從何下手。在近年來的教學實踐過程中發現,一些理論知識,過于抽象晦澀。與實際的應用需要相脫節,學生對很多知識理論,只停留在概念階段,難以消化,更無法理解理論知識在實際的軟件設計、開發、測試、維護中究竟何時何地可以運用,具體又該如何操作。理論與實際的結合仍存在很多不足。這一方面與課程理論研究性較強有關,另一面也與教師本身長期在院校從事較單一的教學工作,缺少工程項目經驗,脫離實際的生產及軟件開發場景,難以將理論與現實情境很好的結合傳授給學生。在計算機專業畢業生的畢業設計中,也集中體現出了學生不能把理論知識有效地運用到實踐活動中的問題。學生并沒有真正掌握基礎理論及運用理論的技能和方法,所以在進行畢業論文設計時,不能將軟件工程的理論充分運用到他們的設計實踐中去,從而導致設計開發的軟件和撰寫的文檔在結構、內容等方面錯誤百出。

三、改革思路

(1)研究并解決軟件工程教學中存在的新興軟件方法不足等問題。結合現有的專業培養方案,教學大綱,制定教學計劃,改善軟件工程教學現狀,研究傳統軟件工程技術在教學改革中占的課時比例及應當講授的內容,增加研究面向對象軟件工程技術在教學改革中的地位及講授的方式、內容和課時量。(2)研究并解決軟件工程課程實踐性不足,學生學習停留于理論階段的問題。結合理論課程的內容,增強軟件工程的實踐性,與一些軟件開發的實訓課程相結合,增加學生的實踐機會,將軟件工程理論應用于實踐當中,提高學生對課程的理解和現實認識。(3)研究并解決學生對理論知識理解不足,課程停留于課堂教學,脫離實際運用,學生難以滿足應用型人才培養目標等問題。根據教學計劃,教師請教并邀請相關企業的軟件資深從業人員,與學生開展專業知識交流活動。以企業中實際可行的軟件項目為案例,為學生講解軟件知識,讓學生理解軟件工程的理論知識如何有效的融入實踐當中。并加深學生對課程、對當今計算機領域流行的專業知識及未來從業方向,對計算機專業從業現狀的認識,真正做到應用型人才的培養??梢园才艑W生到企業進行調研,參與實際的企業項目。(4)研究并解決學生在畢業設計及畢業論文的完成過程中,缺少理論支撐,不能合理規范化完成設計的問題。將軟件工程專業知識與計算機專業畢業設計相結合,在畢業論文指導的過程中,重視軟件工程理論的應用。以軟件工程方法學,軟件過程,項目管理等相關知識軟件工程相關理論指導學生的畢業設計,力求整個畢業設計過程達到模塊化、規范化,正規化。

參考文獻

[1]張海藩.軟件工程導論(第5版)[M].北京:清華大學出版社,2018.2

篇11

1 軟件工程開發應用特點

1.1 目標明確性。滿足人們各種各樣的具體需求,這使軟件工程設計一開始具有明解的目標。軟件工程的任務就是在產品或者工程在生產或者實施之前,提供出相應的產品以及工程的全面的需求的標準。在軟件工程中這一特點則表現為“需求分析”的過程。在這一階段,通過開發人員與用戶之間的廣泛交流,不斷澄清一些模糊的概念,最終形成一個完整的、清晰的、一致的需求說明。因此,開發的軟件的成敗將由需求分析的好壞來決定。

1.2 完整性。在客戶/服務器系統應用中,數據及數據處理完整性是保證信息準確無誤的重要環節。所以在軟件開發中對這一點的邏輯要求是最嚴密的。例如,在一個事務處理過程中,可能對多個表進行修改。如果在中間發生錯誤時,應該放棄整個處理而不是其中的一個過程,返回到開始的狀態以保證操作的完整性,從而使得數據及數據處理的完整性得到保證。

1.3 應用軟件的開發應該是規范的,使得應用軟件開發工作能夠很容易地被別人接手和修改。由于開發出的軟件是依照一定規則的對象組合,所以相當于符合標準,而只要是群體開發軟件,標準又是非常重要的,標準其實在應用軟件開發的程序員之間起到了相互溝通的橋梁作用。

1.4 易維護性。因為使用了對象的繼承性,對祖先對象的修改直接影響到其繼承對象,使得軟件程序的維護性得到一定程序的提高,但相同的語法和邏輯規定又使得多人合作開發的軟件和維護性得到保證,不會因為各自特有的思想和作風而受到限制,也為相互的提高彌補提供了可能性。

1.5 創新性。創新是技術進步的靈魂。隨科技和工程技術實踐不斷創新。開發出的產品在不斷滿足人類日益進步的需求中,在系統分析階段,系統分析員就應該對用戶的需求進行全面的了解,提出一個可行的方案和客戶交流,在得到用戶的反饋后,再改進方案,如此反復直到比較全面地了解了客戶的需求為止,這樣才能得到用戶的信賴和支持。

2 軟件工程發展趨勢

軟件工程作為計算機科學中的一個新興的研究領域,在整個計算機行業發展的過程中,軟件工程的發展并不是孤立的存在的,首先需要分析計算模型和軟件開發本身的變化和趨勢,由此才能推斷出軟件工程的發展趨勢。 計算能力變化趨勢:CPU的運算能力按摩爾定律兩年出三代的速度快速提升;但提升單顆CPU晶片的計算能力已經越來越困難(受到物理性質的限制);網絡數據傳輸能力的提升,傳輸技術,編碼技術,差分傳輸。以及分布式并行計算技術的成熟使得云計算成為可能,通過互聯網相連的服務器集群在服務器端,提供了更強大的計算能力;基于上述計算能力的變化,從軟件開發模式而言,我們注意到以下六個相關的趨勢:大量中間件技術被采用;開源軟件成為發展趨勢;為了使分布在互聯網上系統能夠互相協作,異構的分布的軟件系統將需要用統一的、標準的協議互相通信,形成邏輯上更大的系統。那么基于XML數據交換語言的SOA成為一個熱點;B/S結構的軟件系統主要在服務器端,系統非常容易升級,這使得軟件交付和升級的速度大大加快了(從以年月為單位,到以周天為單位);B/S結構的軟件系統主要在服務器端,系統非常容易升級,這使得軟件交付和升級的速度大大加快了(從以年月為單位,到以周天為單位);需求工程,漸成熱點;迭代/敏捷,漸成標準;持續集成,蓄勢待發。

3 結束語

綜上所述,軟件工程的開發應用是一項系統工程,需要各類人員的積極參與合作。用戶、系統分析員、程序員、開發管理人員在整個軟件開發過程中都起到舉足輕重的作用。讓更多人切身體會到計算機軟件應用技術給社會各個領域所帶來的變革、騰飛。

參考文獻:

[1]張海藩.軟件工程[M].北京:人民郵電出版社,2005,7.

[2]鄭人杰.using software engineering[M].No.2.Beijing:QING-

HUA UNIVERSITY,1996.

[3][美]Roger S.Pressman.軟件工程實踐者的研究方法[M].北京:機械工業出版社,2007,1.

[4]溫雅麗.面向對象技術在多媒體數據庫的應用[J].科技情報開發與經濟,2002(4).

[5]潘春光,陳英武,汪浩.軟件項目風險管理理論與方法研究綜述[J].控制與決策,2007(05).

[6]尹鋒.軟件工程系統論研究初探[J].航空計算技術,2006(03).

篇12

1軟件工程

軟件工程涉及程序涉及語言、數據庫、開發工具、以及設計模式等等,是研究并維護軟件的一門學科。在目前的社會中,軟件在各個方面都被廣泛的應用,如辦公套件、操作系統以及游戲。其中計算機軟件的應用在銀行、工農業、政府、企業中的應用更為廣泛,有了這種軟件工程的加入,讓人們的生活和工作的質量更高,同時也加強了工作效率,推動社會經濟的發展。開發軟件的職業是軟件工程師,也能夠根據所負責的工作不同進行劃分為系統分析員、軟件設計師、系統架構師和程序員等。軟件工程在學界中并沒有專一的概念,比較被大部分人認可的定義為:軟件工程是針對軟件出現的各種問題而出現的一門學科,同時也是對軟件進行一系列研究的方法。軟件工程的目標在于研發質量較高的軟件產品,使軟件在功能、可靠、使用、效率、維護、移植等方面都具有良好的標準。軟件工程的表現為以下幾點:首先,軟件并不是指實際產品,它是指邏輯上存在的產品,費用的使用也主要是在研制過程中,軟件的問題并不存在像實物中一些用壞或者損壞情況,而是存在過時問題;其次,軟件的功能體現是靠用戶的使用和軟硬件的運行狀態,而且其功能的復雜性也高于一般產品;最后,軟件設計在功能和實現上有很大的多樣性,提升軟件的質量和開發效率就是推動軟件工程發展的關鍵。

2軟件需求分析具體過程

軟件需求分析的過程主要有四個階段,分別為確定軟件需求目標、進行分析并整合、規格的相關說明規定、以及最終評審。確定軟件需求目標在涵義上是指系統分析師和程序開發工程師在進行工作中,找出目標軟件工程所需的要求,從而講述出能夠達到要求所需要的條件。一般來說,這些要求主要體現在功能、性能、環境、可靠性、安全性以及用戶界面、資源使用、軟件成本消耗與開發進度等。(1)功能是指將軟件的功能開發;(2)性能則在于軟件技術性能標準;(3)環境是指如硬件和軟件方面在軟件系統運行時的要求,另外還包括對使用此軟件的工作人員的技術要求;(4)可靠性是通過軟件在開發過程中對實際環境的要求,并滿足在進行需求分析時顯露出所有存在的問題,估計運行后會產生的后果,提出更高的可靠性;(5)安全性是指安全保密,在進行開發時特別針對安全性能嚴格要求,保證在日后的使用過程中能夠擁有強大的安全性能;(6)用戶界面要根據客戶的要求進行需求分析;(7)資源使用是要保證用戶能夠接受在軟件的使用中的資源需求;(8)大致提出軟件開發所需要的時間和各個階段的費用,合理控制成本消耗和進度。另外,分析系統的功能,檢測在開發之后的性能,有利于及時對系統做出改正。在這些問題得出相應的分析結果之后,要將結果與軟件開發工程師進行核對,并且得到認可。

3面向對象的軟件工程中軟件需求分析的方法

有關分析軟件需求的方法有很多,但是在一定程度上也存在很大的相似性,主要體現在支持數據域分析機制方面和功能表示方面。對于數據域分析機制方面來說,所有的方法中都包含數據流、數據特征以及數據結構,在一般情況下,數據流特征所描述的變換過程是將輸入轉化為輸出;數據內容的表示方法則為數據字典機制。對于功能表示方面來說,一般的表示方法是將數據進行加工或者變換。另外,接口定義和問題分解機制與抽象支持、邏輯視圖、物理視圖中也有相似機制的存在。對于快速原型方法的分析主要如下:傳統軟件工程方法與快速原型方法的區別在于,傳統方法中的開發為分階段開發,并且在開發每個階段之前都需要對項目進行研究,并從中獲取嚴謹的定義,然而,實際上,只是依靠簡單的分析和研究并不能建設一套完整的應用,在另一方面來說,提前對軟件系統進行定義,若是無法滿足用戶的需求則會在很大程度上降低軟件的使用效率和開發價值。因此,快速原型方法能夠很好的解決這一問題,并且在當前軟件開發過程中應用十分廣泛??焖僭头椒軌蛟诹私廛浖_發需求的前提下,以極快的速度制造出大概結構的過程,雖然不一定能夠符合實際使用過程中的需求,但是卻能夠將開發軟件的系統及時的展現出來,同時也能夠根據軟件的模型來進行更為準確的開發。使用快速原型方法,若是用戶對軟件開發過程中有不滿意的情況,也能夠及時的對原型進行改進,從而獲取新的目標系統,沒有重新進行開發的必要;快速原型建造工具也能夠在很大程度上縮短創建系統的時間,使得系統原型在很短時間內就能創建成功,增強了軟件的開發效率和質量,同時也促進了用戶對軟件的使用率,提升軟件存在的價值。由于建立原型目的有所差別,在快速原型法實現過程中存在探索型、實驗型和進化型等三種不同的類型。探索型的目的是研究探索,明確木白哦系統的需求和特征需求;實驗型是在實驗目的下建立原型,在開發軟件的前期建立原型來檢測方法的可靠性。一般建立的背景為針對問題的方案;進化型目的是演示,為了能夠更好的解決系統的適應性,從而生成演示型的系統開發模式。也就是說,在面向對象的軟件工程中進行軟件需求分析時,采用快速原型法能夠提升使用效率,而且還能夠避免一些不必要的階段,節省大量投資。

4結束語

綜上所述,軟件需求分析對軟件工程來說非常重要,不僅是作用于及時發現其中出現的問題,構建合理的原型來幫助分析工作的順利進行,同時也有利于軟件需求分析能夠提升效率,并且減少一些經濟支出,降低投資為下一個軟件的開發做好準備。

參考文獻

篇13

1系統軟件開發相關概述

計算機的系統軟件應用程序在使用過程中既有優點也有缺點,因此計算機軟件相關技術人員在對系統軟件應用程序進行研究時要及時發現其中的不足,進而做出相應的調整和修改。而在系統軟件開發工作開始之前,首先要對系統軟件的開發工作的相應模型進行良好的構建,根據軟件開發的實際內容,對模型再進行綜合的相關監測,并且要不斷地修正不足之處,使其能夠在最終形成了一個完整的模型,進而有效地確保系統軟件開發工作的順利進行[1]。但是,在對系統軟件進行開發時,生存期的模型會發不同形式的變化,并且這些生存期的模型都會存在一些不足。例如:演化類的模型,在對其進行應用時首先要對其進行良好的優化,并且要對系統軟件開發的流程進行充分調整,以此為系統軟件開發工作的管理帶來更高的科學化,減緩甚至避免軟件開發工作中失誤現象的出現,進而提高工作效率。另一方面,在對系統軟件進行開發時必須要以企業的實際情況為準,避免因系統軟件開發的程序與企業的實際情況不符而導致企業發展緩慢。在對系統的軟件應用程序進行開發時,其工作周期較長,并且系統軟件開發工作的工作程序極其煩瑣。因此,就會出現軟件應用程序的開發不能與企業當前的實際需求進行匹配。作為計算機構建的基礎,軟件要求其自身能夠有著獨自處理數據的能力以及能夠將頁面成為主要的方式呈現,進而滿足不同使用者的不同需求[2]。同時,軟件設計的相關工作人員要將其自身的工作專業技術充分展現,對系統軟件開發積極創新,有效提高系統軟件開發的實力和水平。

2軟件工程相關技術探討

2.1系統軟件開發模型

就軟件應用系統的開發來說,要求必須將其與傳統的軟件開發進行區別。主要包括項目管理模型、公共模型以及開發過程模型三個方面。在對軟件模型進行實際開發時,對于軟件的開發以及應用周期的相關分析是最根本的工作目標。另外,對于項目管理的模型來講,其最終的工作內容就是要對軟件的不同管理制度以及開發的工作流程進行相應的介紹。從其根本的性質來說,組織公共模型是將項目管理模型、開發過程模型進行相互融合,并且要將其一同貫穿計算機系統軟件的開發過程當中,更好地促進軟件開發能夠得到更好的應用。另一方面,在對軟件進行實際開發時,對于不同工作人員的管理以及工作材料的管理本身就存在著極大的不同需求[3]。因此,在將軟件工程技術在系統軟件開發過程中進行應用時,要以當前實際情況為基礎,并且對其進行相應的科學控制,以此有效地實現軟件開發的工作管理目標。

2.2現代軟件開發工程工作方式

與傳統的軟件工程開發的工作方式相比,現代的軟件工程開發的工作方式針對的對象與傳統的軟件工程開發相比更加具體,這在很大程度上彌補了傳統的軟件工程開發的不足,能夠更加具體的處理問題。另外,現代的軟件工程開發工作主要包括分析、設計、編碼、測試以及維護。并且在實際中,雖然現代的軟件開發工程工作方式與傳統的軟件開發工程工作方式存在一定的類似現象[4],但是,其也存在自身的長處,并且現代軟件開發的工作方式能夠摒棄傳統軟件開發方式中的遷移性、單一性以及無序性,其能夠對軟件存在的問題進行及時的修復和調整,進而不斷地滿足更多大眾的需求。

3軟件工程技術在系統軟件開發過程的應用

3.1局限性的適用分析

從軟件結構系統的本身實質來講,其自身就已經對于軟件開發的相關工作方式進行了相應的決定。并且,針對傳統的數據管理模式來說,軟件結構系統的數據儲存、共享以及相關保障等各個方面來說,能夠對其進行一個良好的維修。但是,由于在對軟件結構系統維修時會對軟件的查詢產生一定的影響,因此,在進行維修時要對軟件結構系統的結構性語言進行仔細的查找和搜索。另一方面,軟件結構系統與現代的管理系統相比有著極大的優勢。但是,現代化的管理系統本身有著極大的先進性,在對數據的操作以及儲存方面,現代化的管理系統有一定的優勢。而在對傳統的軟件工程進行相關問題處理時,容易出現不同的擴展性問題,最終會導致數據表述出現嚴重的模糊現象。

3.2科學的對軟件模型畸形構建

由于軟件工程技術工作其自身具有一定的特殊性質,因此,軟件工程技術相關工作人員在對計算機系統設計以及開發進行實際工作時,必須要相應地建立起一個科學化的開發模型,進而更好的保證系統在進行開發時能夠得到更加合理的應用。同時,針對計算機的模型構建來說,相關工作人員必須要對軟件程序的具體應用進行充分的解讀和掌握,尤其是針對軟件的研發工作的管理以及周期工作時間,必須要對其進行合理的科學設計,而后再針對軟件的模型開發進行實際具體工作[5]。在這一工作過程中,為了能夠更好地對軟件的模型開發進行工作,保障工作質量,在進行實際模型開發工作時,要有目的的進行相關管理,科學的對公共模型進行建立,以便于能夠更加深入地對工作中存在的問題進行了解,進而設計合理的解決方案,充分保證系統軟件開發工作能夠平穩運行。

3.3現代軟件工程開發的概念

根據當前我國對于計算機的系統軟件開發工作的實際情況來看,我國計算機對于軟件的應用已經逐步擺脫了原有局限性的不足,另外在不同的行業中已經有了更加廣泛的應用。另外,通過對現代先進軟件的應用,使用者能夠對相關信息以及資源進行有效的共享,進而充分促進各個行業內標準操作,高度實現軟件操作程度廣泛的普及。另一方面,若想要更加快速地對軟件進行相關開發和應用,就要立足于實際,樹立正確的合理的工程開發概念。其次,在當代的軟件工程開發工作中,對于相關工程資料以及信息的管理并不是計算機軟件所擁有的唯一工作功能,其還能夠實現對影像資料進行充分的共享以及儲存工作。

4結論

通過本文論述可知,我國在計算機軟件工程的開發方面已經取得了一定的進步,并且軟件工程技術在系統軟件開發過程中對于軟件的局限性已經進行了一定程度的彌補,對科學的對軟件模型畸形構建、現代軟件工程開發的概念也進行了廣泛的應用。而我國目前更要憑借這種局勢,更好地對計算機系統軟件進行研發,進而提高我國計算機行業的發展。

參考文獻:

[1]李融融.軟件工程技術在系統軟件開發過程的應用研究[J].數字技術與應用,2017,40(12):91-92.

[2]薄學.軟件工程技術在系統軟件開發中的應用[J].無線互聯科技,2017,18(19):49-50.

友情鏈接
91综合网人人