1.概說

軟體類型,一般可以分為系統軟體與應用軟體。

資訊學習地圖

2.分類

依操作對象分

依使用模式分

自由軟體的主要許可證有GPL許可證和BSD許可證兩種。均透過GNU Project 模式運作。

GNU計劃,又稱「革奴計劃」,是由Richard Stallman在1983年9月27日公開發起的。它的目標是創建一套完全自由的作業系統。Richard Stallman最早是在 net.unix-wizards新聞群組上公佈該消息,並附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要「重現當年軟體界合作互助的團結精神」。

GNU GPL通用公共許可證(GNU General Public License)(英文通常以GNU GPL或是直接簡短的以GPL表示),是一個廣泛被使用的自由軟體許可證,最初由理察·斯托曼為GNU計劃而撰寫。此許可證最新版本為「版本3」,2007年6月29日發佈。GNU寬通用公共許可證(GNU Lesser General Public License,一般簡稱LGPL)是改自GPL的另一個版本,其目的是為了應用於一些軟體函式庫。

軟體特性比較 公共軟體 自由軟體 免費軟體 共享軟體

套裝(私有)軟體

版權 GNU/GPL
取得費用 試用期滿要註冊 付費
複製 不可 不可 不可
散播 不可 不可 不可
修改 不可 不可 不可

原始碼

不一定
範例 很少

Linux

Libre Office

FreeCAD

InfanView

WinRAR Microsoft Office

公共軟體若並未釋出原始碼,並不是自由軟體,可能只是免費軟體。(詳見:註解

相關參考網站:自由軟體基金會(Free Software Foundation),而這是在該網站內一份討論相關軟體分類的文章

3.介紹

4.軟體工程

軟體危機Software Crisis

  1. 軟體發展中由於溝通不良,使所開發的軟體的使用者滿意度低
  2. 軟體開發過程中未察覺錯誤,於使用者使用過程中發生錯誤,致使用者對於軟體品質信賴度降低
  3. 系統測試方法不正確,或文件不完整,日後對系統進行維護產生困難

軟體工程內容

模組化程式設計Modular 將複雜系統劃分為具有某種特殊功能的模組,每一模組應儘可能與其他模組無相依關係。使整個系統的後續作業趨於簡單

由上而下的程式設計

Top-Down Design

將整個系統作整體性的考量,下分為細部功能的考量。此一方法通常見於,企業決策單位先決定系統的功能與目標,而將此一決策意旨,逐層傳達與次級單位。此級單位再擬定與該決策相配合的功能,適用於長期策略的制定

結構化程式設計

Structure Programming

意指擅於利用結構化設計的三部:循序結構,選擇結構,重複結構等程式區塊結構,並且少用goto指令破壞結構化設計精神。藉此增加程式的可讀性,保持系統一進一出的基本架構
良好文件說明Documentation 好的系統發展過程,必須把系統程式的文件建立好完備的檔案,包含:系統說明,程式說明,程式註解,系統操作,以及使用擴充說明書等資料
全程複查Walk-Through 以資深系統設計師與程式設計師對所有程式碼,以及系統運作功能,完整參與設計與解析程式,藉以達到良好的程式設計品質管理

程式團隊小組

Programmer Team

以小組構成系統設計團體,由資深、主設計、助理設計,測試,教育,服務工程師等構成的team,藉以對系統提供完整的後勤支援

5.系統分析與發展

系統開發方式

Prototype 設計者界定使用者需求,先行完成一雛形系統Prototype System,交由使用者先行使用,該系統僅具有主要功能,但不完整。此後使用者對對此系統提出諸多細部設計構想,系統設計者參考使用者意見,進行系統設計與,達到使用者的滿意度為止修正
SDLC

Software Development Life Cycle,軟體發展生命週期

資訊系統的設計,乃分成數階段,依序進行。一般可分成六階段:可行性研究、系統分析、系統設計、系統發展、系統測試、系統實施與維護等

系統發展週期

可以分為以下各階段:

  1. 系統分析SA:需求分析與定義,利用DFD Data Flow Diagram資料流程圖進行分析
  2. 系統設計:結構化系統設計以耦合力Coupling(軟體系統內部各模組間相關的程度)與內聚力Cohesion(模組內部功能彼此的強度)衡量模組間的獨立性與模組內部的相依性
  3. 系統發展:程式設計,程式撰寫,單元測試,整合測試,系統測試,驗收測試
  4. 系統實施:系統上線,所開發的軟體系統實際運作
  5. 系統維護與評鑑:針對不同階段功能需求,對軟體系統進行調整,功能修正,或計劃新模組開發事宜

在正式介紹程式語言前,我們必須先了解軟體程式設計的意義,以及不同的程式設計方法。包含:結構化程式設計與物件導向程式設計,還有近年來程式設計的主流-視覺化程式設計

一般來說,程式設計的五個步驟:

  1. 分析並定義問題
  2. 畫出流程圖或撰寫演算法(虛擬碼)
  3. 編寫程式
  4. 對程式進行測試除錯
  5. 維護程式並整理文件檔案