軟體工程是應用電腦科學理論和技術以及工程管理原則和方法,按預算和進度滿足使用者要求的軟體產品的工程,或以此為研究物件的學科。
軟體工程的發展大體可以分為兩個時期:
① 20世紀60年代末到80年代初
這一時期主要圍繞軟體專案,開展了有關開發模型、開發方法和支援工具的研究。主要成果體現為:提出了瀑布模型,試圖為開發人員提供有關活動組織方面的指導;開發了諸多過程式語言(如c語言等)和開發方法(如結構化方法、jackson方法等),試圖為開發人員提供好的需求分析和設計手段,並開發了一些支援工具(如測試工具等);開始出現各種管理方法(如費用估算、文件審核等),開發了一些相應的支援工具(如計畫工具、配置管理工具等)。
這一時期的主要特徵是:前期主要研究系統實現技術,後期則開始關注軟體質量和軟體工程管理。
② 20世紀80年代以來
這一時期的主要成果是提出了《軟體生存週期過程》等一系列軟體工程標準;大力開展了計算機輔助軟體工程的研究和實踐,各類case產品相繼問世;在工程技術方面,出現了最引人注目的物件導向語言(如c++),提出了物件導向軟體開發方法;在工程管理方面,開展了一系列過程改進專案。
這一時期的主要特徵是:在軟體產業的實踐中,建立一種量化的評估程式,判定軟體組織和過程的成熟度,提高組織的過程能力。
計算機軟體一般是指計算機系統中的程式及其文件。其中,程式是計算機任務的處理物件和處理規則的描述;文件是為了理解程式所需要的闡述性資料。所以,軟體是對乙個特定問題域的抽象,是被開發出的一種邏輯實體,而不是一種有形的物理部件。
軟體開發的目標是將問題域中的概念對映為執行平台層面上的概念,把問題域中的處理邏輯對映為執行平台層面上的處理邏輯,通過這種對映來彌補問題域與執行平台之間的距離。其中,執行平台是指可直接支援軟體執行的系統軟體、支撐軟體以及硬體。
如果按照自頂向下的途徑進行軟體開發的話,首先就是通過需求建模,把問題域的概念和處理邏輯向需求層對映,再把需求層的概念和處理邏輯向設計層對映,依次進行,直到對映到執行平台這一抽象層為止。
綜上所述,軟體開發的本質可以概括為:不同抽象層術語之間的對映,以及不同抽象層處理邏輯之間的對映。
① 如何實現這樣的對映
它涉及兩個方面的內容:一是過程方向,即求解軟體的開發邏輯;二是過程途徑,即求解軟體的開發手段。
一般來說,軟體開發領域的問題大部分是非結構化的問題,只有少量是人們已經認識的結構化問題,為了求解其中的非結構化和半結構化問題,其基本手段是問題建模。
所謂問題建模是指運用所掌握的知識,通過抽象,給出該問題的乙個結構。在軟體開發領域,實際工程中採用的建模手段主要包括結構化方法、物件導向方法以及諸多面向資料結構方法等。
建模之後所形成的結果,往往稱為該問題的模型。所謂模型,是待建系統的任意抽象,其中包括所有的基本能力、特性或其他一些方面,而沒有任何冗餘的細節。
在軟體開發中,軟體系統模型大體上可以分為兩類:概念模型和軟體模型。在需求層上建立的系統概念模型是對客觀事件系統的抽象,即標識要解決的問題,或稱問題定義;軟體模型所依據的抽象層,可進一步分為設計模型、實現模型和部署模型等,給出需求層上概念模型的軟體解決方案。
② 如何管理這樣的對映
關於如何管理這樣的對映,是管理層面上的問題,其主要功能包括軟體專案的規劃、組織、人員安排、控制和領導等。
軟體工程 1 緒論
最近谷咕咕在看一本介紹軟體工程的書,說實話內容真的很多,語句也很枯燥無味,但還是硬著頭皮看下去,下面幾篇部落格谷咕咕想記錄,軟體工程這本書每個章節的重點。第一張緒論 軟體工程解決的幾個重要問題 讓軟體開發過程有序可控 讓分工寫作變成可能 質量有保障 軟體 對特定問題域的抽象,是被開發出來的邏輯實體。...
軟體工程 軟體工程概述
一.軟體 定義 計算機系統中的程式及其文件 程式 計算任務的處理物件和處理規則的描述 文件 為了便於了解程式所需的闡明性資料 特點 軟體的種類 按功能劃分 系統軟體 支援軟體 應用軟體 二.軟體工程的起源和概念 早期電腦程式 現在人們認為 在資訊產業中,微電子是基礎,計算機和網路是載體,軟體是核心 ...
軟體工程 軟體工程的概述
軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考 驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科,它涉及到程式語言 資料庫 軟體 開發工具 系統平台 標準 設計模式等方面。先從軟體工程的第一章開始說起 軟體工程的概述,這一章是...