軟件工程概述
讓我們先了解一下軟件工程的代表。該術語是由兩個詞語,軟件與工程.
軟件i不僅僅是一個程序代碼. 程序是一個可執行的代碼,它提供了一些計算的目的. 軟件被認爲是集合可執行的程序代碼,相關庫和文檔的. 軟件,當一個特定的要求,取得了被稱爲 軟件產品.
工程 另一方面,工程是所有有關開發的產品,使用良好定義的,科學的原理和方法.
軟件工程 軟件工程是一門工程分支使用定義良好的科學原理,方法和程序開發軟件產品.軟件工程的結果是一個高效,可靠的軟件產品.
定義
IEEE定義了軟件工程:
(1) 一個系統的紀律,量化的開發,運行和維護軟件的應用;這是工程軟件的應用.
(2) 對方法的研究是在上述聲明.
Fritz Bauer,德國計算機科學家,定義了軟件工程的:
軟件工程是合理的工程原理建立和使用,以獲得經濟上的軟件,是可靠的和真實的機器有效地工作.
軟件演化
運用軟件工程的原理和方法開發軟件產品的過程被稱爲 軟件演化. 此處包含的軟件的初始開發及維護和更新,直到所需的軟件產品的開發,其滿足預期需求.
進化開始從需求收集過程。經過開發人員創建的目的軟件的原型,並顯示給用戶,以獲得他們的反饋意見,在軟件產品開發的早期階段。用戶提出的變化,在這幾個連續的更新和維護不斷變化太大。這個過程改變了原來的軟件,直到所需的軟件來完成.
甚至在用戶已所需的軟件在手,推進技術和不斷變化的需求迫使軟件產品相應地改變。重新從頭開始創建軟件和走一對單用的要求是不可行的。唯一可行的和經濟的解決方案是,以更新現有的軟件,以便它匹配的最新要求.
軟件演化規律
Lehman 給了軟件演化規律。他把軟件分爲三個不同的類別:
S型(靜態型) - 這個軟件根據定義的 規範和解決方案原理工作. 我們可以理解編碼前兩溶液和方法。 S型軟件至少受到改變,因此這是最簡單的了。例如,用於數學計算的計算器程序.
P-型 (實用型) - 這個軟件有多個 程序. 它的定義是什麼程序可以做.在這個軟件中,規範可以被描述,但該溶液是不明顯瞬間。例如,遊戲軟件.
E-型(嵌入型) - 該軟件的工作原理密切按照真實世界 環境的要求. 這種軟件具有演化程度高,在現實世界中的情況很多變化都是存在的,例如法律,稅收等。例如,網上交易軟件
E型軟件演化
Lehman 給了八項法律爲E型軟件演化 -
不斷變化 - E型軟件系統必須繼續適應現實世界的改變,否則它逐漸變得不太有用
日益複雜 - 作爲E型軟件系統的演化,它的複雜性增大的傾向,除非工作完成後,以維持或降低
熟悉的養護 - 必須瞭解有關該軟件,它是如何開發的,所以它被以這種方式等。在任何成本開發,它必須被保留,以實現系統的變化
持續增長 - 爲了使E型系統,旨在解決一些業務問題,實現改變其大小根據業務的生活方式的改變增長
降低質量 - 在質量上E型軟件系統拒絕,除非嚴格管理和適應不斷變化的經營環境
反饋系統 - E型軟件系統構成的多環,多級反饋系統,並且必須被視爲這樣可以成功地修改或改進
自我調節 - E型系統的演化過程是自我調節與產品和工藝方法的分佈是正常的
組織穩定性 - 在不斷變化的E型系統的平均有效的全球活動率是不變的在產品的生命週期
軟件範式
軟件範例參考方法和步驟,在設計的軟件,該軟件被執行。有提出許多方法,並在今天的工作,但我們需要看到在軟件工程這些範式立場。這些可以組合成各種類別,雖然每個這些被包含在彼此:
編程模式是軟件設計模式的一個子集是進一步的軟件開發模式的一個子集。
軟件開發範式
這種模式被稱爲軟件工程範例,所有有關軟件開發工程的概念被應用。它包括各種研究和需求收集,這有助於軟件產品來構建。 –
- 需求收集
- 設計軟件
- 編程
軟件設計模式
這一模式是軟件開發的一部分,包括 –
- 設計
- 保養
- 編程
編程範式
這一模式是密切相關的軟件開發編程方面。這包括 –
- 編碼
- 測試
- 整合
軟件工程的需求
軟件工程的需要,因爲較高的利率變化的用戶需求及環境上的軟件工作.
大型軟件 - 這是比較容易建立一堵牆,而不是一所房子或建築,同樣,作爲軟件的規模變大的工程有步驟,給它一個科學的過程.
可擴展性 - 如果軟件過程中沒有建立在科學和工程的概念,它會更容易重新創建新的軟件,而不是擴大現有的.
成本 - 硬件行業已經顯示出其能力和龐大的製造具有低了下去,他的價格的計算機和電子硬件。但是,軟件的成本仍然很高,如果合適的工藝不適合.
動態性 - 高成長和適應軟件性質取決於在用戶工作環境。如果軟件的性質總是在變化,新的改進需要在現有的進行。這是軟件工程起到了很好的作用.
質量管理 - 更好的軟件開發過程提供更好質量的軟件產品.
優秀的軟件特性
一個軟件產品可以判斷通過其功能和多少用戶友好。 這個軟件必須滿足以下功能:
- 操作
- 過渡
- 保養
一個精心設計和製作的軟件預計將有以下幾個特點:
操作
這告訴我們如何以及軟件的操作工作。它可以在被測定:
- 財政預算案
- 可用性
- 效率
- 正確性
- 功能
- 可靠性
- 安全
- 安全性
過渡
這方面是重要的,當軟件從一個平臺轉移到另一個:
- 可移植性
- 互操作性
- 可重用性
- 適應性
保養
這講述一個軟件以及如何有能力維護自己的每一個變化的環境中:
- 模塊化
- 可維護性
- 靈活性
- 可擴展性
總之,軟件工程是計算機科學的一個分支,它使用須出示有效的,持久的,可擴展的,定義良好的工程概念在預算和時間的軟件產品.