UML软件工程组织

比較分析五種常見之國際軟體工程標準
東海大學資訊系教授 張文貴
處在這網際網路的時代,軟體開發的需求愈來愈殷切,如何在有限的時間內開發具特定品質水準之軟體產品,現在益顯得重要!
  本質上,軟體系統是無形的,欲有效開發軟體,最好的環境是先建立一套適用的軟體開發標準;換言之,我們應考量某類產品、檢驗、安全性及相容性等因素,以科學化方法制定概念上的人、事、物等之一般作業規範,而逐漸形成公司標準、工業標準、國家標準、區域標準、甚至是國際標準,以達到降低開發成本與系統複雜度,並增進系統維護度、提昇品質水準等目的。
  然而,据統計目前世界上至少有315個以上的軟體工程標準、指引、手冊、與技術報告正被46
個以上的專業、地區、國家、和國際標準組織所維護。舉例來說,美國電機及電子學工程師聯合會(IEEE)1981年時才只制定一種軟體工程標準,而到1997年底,標準總數已成長到40種之多。另外,若從標準手冊的篇幅大小分析,1994年版之標準是1300頁長,但1998年版則分為四冊總計超過2000頁!
  因此,我們應採用那一套國際標準才恰當?本文將以後列的第一項參考資料為主要素材,剖析比較軟體工程領域中下列五種較為常見之標準方法:

1.IEEE Software Engineering Standards
2.ISO/IEC/IEEE/EIA 12207
3.SEL Recommended Approach
4.SSDM Standards and Procedures
5.ISO 9001 (
包含ISO 9000-3)

  為提供系統化分析,以下我們不但將探討每種方法的使用對象、涵蓋範圍及這些標準的檢討更新頻率,更要比較這五種方法之間的相同及相異之處。

 

IEEE Software Engineering Standards 

一、歷史
  
IEEE對於軟體工程標準(Software Engineering Standards)的制定早在1976年即已開始,透過軟體工程技術委員會(Technical Committee on Software Engineering, TCSE)之下的軟體工程標準工作小組(簡稱軟標小組,Software Engineering Standards Subcommittee, SESS)積極研擬,歷經三年軟標小組即首度提出IEEE的軟體工程標準之試用版,到了1984年,總共已有如下之五種軟體工程的標準了:

1.IEEE Std 730-1981, IEEE Standard for Software Quality Assurance Plans
2.IEEE Std 729-1983, IEEE Standard Glossary of Software Engineering Terminology
3.IEEE Std 828-1983, IEEE Standard for Software Configuration Management Plans
4.IEEE Std 829-1983, IEEE Standard for Software Test Documentation
5.IEEE Std 830-1984, IEEE Recommended Practice for Software Requirements Specifications

  多年來,這五種原始標準不斷被檢討修正,有些標準甚至已被修正過若干次,而IEEE 729也被修正為IEEE Std 610.12-1990。而到了1991年,IEEE更發行一套軟體工程標準彙編(Software Engineering Standards Collection),涵蓋其時已被承認的16種軟體工程之標準;到1994年,所包羅標準的數目已提高到27個。
  而在
1998年最新出版的標準彙編裡,已經有40個標準了,分為四大冊;同時,它更歸納軟體整體架構之標準,並調整軟體流程與資料之相關標準,而與ISO/IEC 12207(如後述)結合成為軟體發展流程之國際標準。此外,American National Standards Institute (ANSI)後來也終於使用了IEEE的所有標準,雖然ANSI現在並未完全接受IEEE最新版本的部份標準內容。

二、涵蓋範圍
  在目前版本的
40種標準中,它涵蓋軟體工程訓練應具備且有效的所有慣例,主題範圍包括:專門術語、軟體獲得、軟體發展流程、專案管理、系統規劃、文件編纂、軟體再用、工具運用和品質量測等等。

三、目的
  基本上,每一種標準都是針對某種需求而編訂的,因此整個標準彙編絕無法滿足單純的某一種目的;接著將有一項後續的任務,就是如何把所有的標準做分類,以方便一個使用者精準的選取他所需要的標準。

四、組織架構
  在
IEEE發行的軟體工程標準彙編中,它將所有的標準依物件導向的觀念分成四大類,而且假設軟體工程的工作執行都是透過專案的方式完成,即:每一個專案都會與"顧客"互動,它也會耗用某些"資源"以執行某些"流程",而交付特定的"產品"
  根據這種理念,軟體工程標準彙編便環繞在顧客標準、資源標準、流程標準、及產品標準等四種物件上,而每一種標準之下又再細分為需求標準
(standards)、建議慣例(recommended practices)、及指引(guides)
  需求標準是必要性的,它包括一些必需遵守的需求條件,通常採用
"(shall)"之字眼;建議慣例則是提供IEEE可以接受但並不認為最佳的一些技術方法,通常採用"(should)"之字眼;指引是建議一些良好工作慣例的替代方案,但通常不做特定性的建議,傳統上多採用"(may)"之字眼。

五、使用者對象
  整個標準彙編並不是針對某一種單獨的使用對象,所有
40個的標準都各有不同的設定對象,包括:專案經理、系統工程師、軟體開發人員、測試人員、型態管理人員、品保人員、系統委辦人員等等,而將整個標準彙編區分為四大冊,主要是考慮某一類的使用對象其相關標準的整合而已。
 

六、應用領域
  如前所述,這些標準也沒有單一的應用領域。以下列舉在

   第一冊(顧客與專門術語之標準, Customer and Terminology Standards)中的若干應用領域:

1.軟體獲得(software acquisition)
2.
軟體安全(software safety)
3.
軟體需求(system requirements)
4.
軟體開發流程(software life cycle processes, IEEE/EIA 12207)

   第二冊(流程標準, Process Standards)的若干應用領域舉例如下:

1.軟體品質保證(software quality assurance)
2.
軟體型態管理(software configuration management)
3.
軟體單元測試(software unit testing)
4.
軟體驗證與確認(software verification and validation)
5.
軟體維護(software maintenance)
6.
軟體專案管理(software project management)
7.
軟體開發流程(software life cycle processes)

   第三冊(產品標準, Product Standards)的若干應用領域例如下:

1.可靠度軟體之量度(measures to produce reliable software)
2.
軟體品質因子(software quality metrics)
3.
軟體使用文件(software user documentation)

   第四冊(資源與技術標準, Resource and Technique Standards)的舉例如下:

1.軟體測試文件(software test documentation)
2.
軟體需求規格(software requirements specifications)
3.
軟體設計描述(software design descriptions)
4.
中界再用庫之操作概念(concept of operations for interoperating reuse libraries)
5.
輔助工具之評估與選擇(evaluation and selection of CASE Tools)

七、檢討頻率 
  
IEEE對整個標準彙編的推行不遺餘力,所以它要求每一種個別的標準至少每五年應再驗證其持續之適用性,並決定是否要再修訂甚至廢止。到目前為止,雖然IEEE還沒有真正做到這一點,但是也只有兩個標準是早於1993年制定而沿用至今。

ISO/IEC/IEEE/EIA 12207

一、歷史
  
International Organization for Standardization (ISO)International Electrotechnical Commission (IEC)共同合作制定一個國際標準,ISOIEC都是由技術性的國際個體組成,分別致力於不同工作領域的標準制定;而在資訊科技方面,ISOIEC共同組成一個聯合科技委員會稱為ISO/IEC Joint Technical Committee 1 (JTC1),此JTC1再擴充許多不同的次委員會專門負責不同種類的資訊技術制定相關標準,其中專門負責軟體工程標準的次委員會則被取名為Subcommittee 7 (ISO/IEC JTC1/SC7)
  在
1990年早期,SC7即已決定為軟體開發流程制定一套國際標準,而且也於1995年發表編號ISO/IEC 122071995的標準,真正的內容名稱為"資訊技術--軟體開發流程(Information technology- Software life cycle processes)"
  因為在參與
SC7的國際個體組織中,有很多單位期望這套國際標準也能涵蓋合約導向的環境,所以ISO/IEC 12207也很注重供應商與採購商(supplier/acquirer)之間的關係,它不但指出一般軟體開發單位所需要執行的工作之外,也列出其他準備採購軟體單位所需的工作項目。
  另外,在
1996IEEE又和Electronic Industries Association (EIA)合作出版一套12207的美國工業版本,取名為IEEE/EIA 12207,總共分為三冊:IEEE/EIA 12207.0實際上是ISO/IEC 12207內容的複製,只是採用IEEE/EIA的封面;IEEE/EIA 12207.1則是提供整體內容和格式的編製原則,與專供協助編纂專案文件之軍方資料項描述原則(Data Item Descriptions, DID)非常類似。而IEEE/EIA 12207.2則為執行12207.0特定流程之需求提供一些指導原則。
 

二、涵蓋範圍
  基本上,
ISO/IEC 12207可應用於採購諸如系統、軟體產品、及服務等項目,而針對供應商,它也適用於軟體產品之開發、運作、以及維護等作業;甚至它也可應用於韌體產品的部分。換言之,它對系統的定義實質上包括軟體產品及相關服務項目,但在軟體開發流程期間所使用的流程則與系統生命週期期間所使用的流程互相對應兼容。
  這個國際標準的設計主要是針對甲乙雙方的對等情況,它也可應用於來自同一組織中兩個平行單位的場合;而且從非正式的協定到通過正式合法簽定的合約,它都可適用。此外,它亦可以應用在單獨一個單位中,做自我要求的約束。
  然而,這個國際標準並未考量現貨供應的軟體產品
(off-the-shelf software products),除非它是被包裝到另一個產品裡。
 

三、目的
  基本上,
ISO/IEC 12207主要是在定義一個軟體開發流程的整體架構(framework)。它透過一個層次化的結構方式,來表示在軟體開發、供應、獲得、運作、和維護等各階段中所需的流程(processes)、活動(activities)、及工作(tasks)之關係;它分為軟體開發和獲得兩階段,更同時兼顧技術和管理方面的問題。
  雖然
ISO/IEC 12207原來是用英語編寫,但是由於用字遣詞頗為用心,目前已經翻譯成許多其他語言了。
 

四、組織架構
  
ISO/IEC 12207共包括了三種型態的軟體開發流程:主要、輔助、組織,其分類層次如下:
 

1. 主要流程(primary life cycle processes)
(1)
獲得(acquisition)
(2)
供應(supply)
(3)
開發(development)
(4)
運作(operation)
(5)
維護(maintenance)
2. 輔助流程(supporting life cycle processes)
(1)
文件(documentation)
(2)
型態管理(configuration management)
(3)
品質保證(quality assurance)
(4)
驗證(verification)
(5)
確認(validation)
(6)
共同審查(joint review)
(7)
稽查(audit)
3. 組織流程(organizational life cycle processes)
(1)
管理(management)
(2)
基礎建設(infrastructure)
(3)
改善(improvement)
(4)
訓練(training)

五、使用者對象
  
ISO/IEC 12207的使用者對象包括如系統、軟體產品、及服務等項目之採購者;而在供應商方面,則包括開發、運作、維護等作業人員,專案經理,品保經理,以及軟體產品的一般用戶。

六、應用領域
  
ISO/IEC 12207的應用領域是以元件流程定義,因此可參考前面第四小節關於組織架構之敘述。

七、檢討頻率
  如同
IEEE努力維護其整個標準彙編持續之適用性,ISOIEC也都同樣在設法維持12207的更新度,他們一樣每5年就會重新審核與更新一次,因此下一個版本預計在2001年公佈。

SEL Recommended Approach

一、歷史
  到目前為止,美國
NASA哥達德太空飛行中心(Goddard Space Flight Center, GSFC)下之軟體工程實驗室(SEL)已出版了SEL的推薦方法(Recommended Approach)三個版本如下:

SEL-81-105 19825
SEL-81-205 19834
SEL-81-305 19926

  19825月的版本主要是針對軟體開發技術方法上提供建議,並且特別強調管理層次的問題;而於19834月第一次修訂的版本則除大幅修訂管理方面的內容外,其餘大都保留原來文件的全部架構。
  至於在
19926月修訂時,一個共同之GSFC/CSC工作小組再次重組整個文件的組織並重寫整個文件的內容,其中變動最大的是1983年的修訂版中第四小節關於管理指引之敘述,全部被移除並歸併至單獨的管理人員手冊(Manager's Handbook)中。

二、內容
  此份文件標準主要是專門針對飛行動力學領域的軟體專案而設計的,因此文件中第
3頁特別有這樣的警告:由於本標準僅適用於飛行動力學的專業應用,若某些環境的性質有顯著差異時,讀者需注意本文件所介紹的原則可能不適用。
  基本上,
SEL Recommended Approach涵蓋:需求定義、需求分析、初步設計、細部設計、系統實作、系統測試和接收測試等七個軟體生命週期階段;然而,維護和系統運作並不在1992年修訂的文件標準版本之內,不過在文件的第10頁它也列出SEL在軟體維護方面的一些論文參考資料。

三、目的
  根據
1992年修訂版的引言,這份文件主要在提供一套軟體開發方面的經驗準則,它是專為軟體專案經理,以及如軟體工程師、分析師、和程式員等技術人員而設計的;然而,它並不是一種技術手冊,也不是一本諮詢指南。
  簡單地說,它推薦提供每一個生命週期階段所需的軟體方法和使用工具,目的在開發一套易管理、高可靠度、合乎成本效益的軟體產品。

四、組織架構
  本文件從傳統的瀑布式軟體生命週期模型開始,整個文件依照需求定義、需求分析、初步設計、細部設計、系統實作、系統測試和接收測試等七個階段而編排,文件的最後部分還包含一些由
SEL成功經驗歸納而得的一些可行與不可行之建議。
 

五、使用者對象
  如前所述,本文件主要是提供飛行動力學領域的軟體專案經理,及軟體工程師、分析師、和程式設計師等技術人員之用。

六、應用範圍
  本文件是針對
GSFC的飛行動力學領域的軟體專案,其他領域的專案環境則應特別留意,它可能不適用。

七、檢討頻率
  很明顯地,
SEL推薦方法的更新速率不夠快,雖然它的確準確地反映飛行動力學的傳統軟體發展習慣;因此,即使1992年的修訂版仍採用八十年代中期傳統瀑布型之軟體發展方法,以及結構分析與設計等技術。

SSDM Standards and Procedures

一、歷史
  
GSFC Mission Operations and Data System Directorate (MO&DSD)198711月到19979月期間,選擇CSC作為系統、工程、和分析支援(Systems, Engineering, and Analysis Support, SEAS)專案的主要承包單位,專門開發軟體系統。在1989 7月,CSC首先出版SEAS系統發展方法(System Development Methodology, SSDM),作為系統發展方法的標準。SSDM是以七十年代後期的CSC專屬軟體發展方法為基礎,並配合MO&DSD之目的和文化而修正,此外,它也深受SEL推薦方法和CSC對於傳統軟體發展方法的影響。
  以
SSDM為基礎的方法和技術發展而成SSDM之標準和作業程序(SSDM Standards and Procedures, SSDM S&Ps)是在19906月首次出版,某些標準提供特定文件格式和內容的樣板,與軍方之資料項描述(DIDs)非常類似,而某些標準則提供表格的樣板格式,甚至描述如何執行像系統需求複查之類的事件;換言之,它明確定義一個流程之進行步驟,例如應如何檢查和驗證某一個單元之設計。

二、內容
  在
SSDM的序言中已載明:SSDM主要是在提供系統發展方面的全方位指引,無論是硬體或軟體的系統,從系統的概念形成、發展、安裝,到驗收等各個階段都涵蓋。簡單地說,SSDM包羅了專案管理、系統工程、和系統生命週期發展等領域知織。
  值得一提的,因為
SSDM是從當初只針對軟體開發的DSDM遞變而來,因此,它仍保留深度的軟體開發細節;不過它也另闢有關於硬體發展的一個章節,而SSDM S&Ps則包含有硬體製造方面的三項標準。

三、目的
  基本上,通常採用如
SSDM之類的標準化方法之原因是為了降低在系統發展過程中可能遭遇的風險,而這些風險更可能進一步會影響到專案的時程、預算、功能性、以及整體之性能表現。這些問題在SEAS專案中便經常地發生;但是,現在它們不僅不常出現並且即使發生,其結果也不像過去那樣嚴重,這是因為SSDM和它相關的標準與作業程序已在實際發展系統時證明非常有效而成功。

四、組織架構
  
SSDM S&Ps總共分為七大類如下,括號中的數字表示每一個章節所包含標準和程序的數目:
 

1.專案管理 (33)
2.
系統工程 (3)
3.
硬體發展 (3)
4.
軟體發展 (24)
5.
系統測試與評估 (3)
6.
文件 (32)
7.
標準和程序之建立 (3)
 

五、使用者對象
  因為整個標準文件包羅廣泛,其讀者絕不是單獨的某一種使用者對象。基本上,
SSDM S&Ps的使用對象包括:專案經理、系統工程師、軟體開發人員、硬體開發人員、測試人員、型態管理人員、品質保證人員、作業員、和技術出版物人員。

六、應用範圍
  就原始目的而言,
SSDM S&Ps是專為GSFCMission Operations and Data Systems Directorate (MO&DSD)SEAS專案的太空資料蒐集系統之開發而發展出來。

七、檢討頻率
  像
SEL推薦方法一樣,SSDM很明顯地無法隨著技術的進步而更新;而且原始的SSDM S&Ps雖以紙本方式維護,但現在整套文件已利用線上管理。然而,即使是199811月公佈的目前線上最新版之內容,仍與19948月出版的紙本版有若干出入。
  綜合而言,整套線上
SSDM S&Ps目前仍然沿用八十年代中期之軟體系統發展方法,包括:結構化分析與設計、瀑布式生命週期模型、手動型態管理方法等等。
  另外,我們應該注意:為配合新進的技術,
SEAS(現在改稱為SETS)之內的各個CSC單位已逐漸設計完成它們自己專屬的S&Ps;因此,要探討文件的適用性,我們若先從這些專屬的S&Ps著手評估,將比考慮整套官方線上的SSDM S&Ps要來得有效。

ISO 9000 Suite

一、歷史
  在
1987年,主要任務在提昇品質之ISO176號技術委員會,出版了品質標準方面的第一個版本ISO 9000套組(ISO 90009004),之後修訂版是在1994年出版,而第二個修訂版也已完成並在20001215日正式頒布。
  幾乎在
ISO 9000標準文件首次出版之同一時期,ISO軟體委員會即開始與相關品質委員會討論,尋求發展一套將ISO 9001應用於軟體環境之指導方針。接著ISO便在1990年公佈ISO 9000-3的第一個草案,針對軟體的開發、供應及維護等作業,提供應用ISO 9001的指引。然而遺憾地,因這個草案未與ISO 9001一致,使得要在ISO 9001的說明中,找到對應軟體專屬的指導原則卻相當困難;因此,ISO1997年再出版一套與ISO 90011994一致的9000-3更新版,而另一個修訂版也巳在2000年底完成。

二、內容
  最初
ISO 9001提出20種品質需求,包括管理責任、品質系統、設計控制、教育訓練、統計技術等方面,其中ISO 9000-3則是專為軟體開發環境而設的;後來修訂版的範圍更大為擴充,其組織內容詳如後列。

三、目的
  整體來說,
ISO 9001是一個標準套組,專用來建構、運作一套品質管理系統,並輔助編輯其文件說明。更確切地說,ISO 9001是一套適用於產品各生命週期如設計、開發、生產、安裝、服務等階段的品質標準,而ISO 9000-3則是將ISO 9001應用到軟體系統的一種指南。

四、組織架構
  結構上,
ISO 9001:1994分為下面20種需求,而ISO 9000-3:1997也具有相同的組織架構:

1.管理責任(management responsibility)
2.
品質系統(quality system)
3.
合約審查(contract review)
4.
設計管制(design control)
5.
文件及資料之管制(document and data control)
6.
採購(purchasing)
7.
客戶供應品之管制(control of customer-supplied product)
8.
產品鑑別與追溯性(product identification and traceability)
9.
製程管制(process control)
10.
檢驗與測試(inspection and testing)
11.
檢驗、量測與測試設備之管制(control of inspection, measuring and test equipment)
12.
檢驗與測試狀況(inspection and test status)
13.
不合格品之管制(control of nonconforming product)
14.
矯正及預防措施(corrective and preventive action)
15.
搬運、儲存、包裝、保存與交貨(handling, storage, packaging, preservation and delivery)
16.
品質紀錄之管制(control of quality records)
17.
內部品質稽核(internal quality audits)
18.
教育訓練(training)
19.
服務(Servicing)
20.
統計技術(Statistical techniques)


另一方面,新修正版(ISO 9001:2000)的結構則經過重組,其架構與後來之性能改善指引(ISO 9004:2000)的架構一樣,同樣具有兩個階層如下:

  • management responsibility
  • general guidance
  • interested party needs and expectations
  • legal requirements
  • policy
  • planning
  • quality management system
  • management review
  • resource management
  • general guidance
  • people
  • information
  • infrastructure
  • work environment
  • suppliers and partnerships
  • natural resources
  • finance
  • product and/or service realization
  • general guidance
  • interested party related processes
  • design and development
  • purchasing
  • production and service operations
  • control of measuring and monitoring devices
  • measurement, analysis and improvement
  • general guidance
  • measurement and monitoring
  • control of nonconformity
  • analysis of data for improvement
  • improvement

五、使用者對象
  雖然,包括ISO 9001在內的ISO 9000標準套組,當初是由ISO品質委員會專為製造業的環境而量身訂做的,它的使用對象也僅屬於ISO組織的國家級機構,但目前已被應用在許多不同領域、各種技術層面上。
此外,ISO 9000-3:1997則廣為國際性的軟體工程業界團體採用,因為這些專業團體一直都在尋求能將ISO 9001:1994直接應用到軟體環境的領域。

六、應用範圍
  據觀察,ISO 9000標準套組普遍受歡迎並廣為採用的原因之一,是它不為任何專門應用領域而設計的;而且這些標準目前更在各式各樣的應用領域如:製造、醫學、財政、通訊、和軟體等等,被用來驗證一個專案產品或單位機構的品質水準。

七、檢討頻率
  就實務面分析,ISO 9000:1994標準套組及ISO 9001:2000已非常合乎時宜。雖然我們要再三強調這些標準不是針對軟體而規劃的,而是可適用於任何的應用領域;若單就專為軟體環境的應用指南ISO 9000-3:1997來說,它也有很高的實用價值,因為它能廣泛適用於各種不同的軟體發展環境,而不侷限於某一種軟體發展策略方法(development paradigm)。此外,ISO更努力使ISO 9001:2000成為應用到軟體環境的一項新指南。

比較分析

一、相似性
  大體而言,以上這五種標準方法都表示了合理的軟體發展邏輯架構。除了ISO 9000外,其餘方法均涵蓋軟體工程的整個生命週期範圍,從概念形成到正常運作甚至系統維護,無所不包;而ISO 9000則不探討概念形成或需求定義階段,它是直接從系統設計階段開始。
  此外,SEL推薦方法與SSDM S&Ps非常類似,這兩種標準均是CSC機構為GSFC的軟體環境發展的,它們同時也反映八十年代軟體開發的方法技術;相反的,IEEE推薦方法、ISO/IEC/IEEE/EIA 12207、及ISO 9001(包括ISO 9000-3的指引)都是為服務更廣大、更普遍的技術團體而規劃的,而且顯然這些方法都會比任何一種特殊軟體發展的方式更好,因此也能被視為一種發展策略,用來開發一套品質更好、時程更短、成本更低的軟體產品。
 

二、差異性
1.IEEE Software Engineering Standards
  相對而言,在這五種方法中,IEEE Software Engineering Standards (SWE)標準應算是實施軟體工程流程的最好一個方式,其理由如下:

IEEE SWE標準是由精通各自領域的專家會商編纂,再透過IEEE一套嚴謹的投票過程而定案的
IEEE SWE標準幾乎涵蓋軟體工程全部流程,包括需求定義、設計、編碼、測試、軟體再利用、文件編纂、維謢等階段
為繼續維持其適用性,IEEE SWE的每一個標準每五年檢討一次
幾乎所有IEEE SWE都是1993以後才出版

2.ISO/IEC/IEEE/EIA 12207
  在這五種方法中,ISO/IEC/IEEE/EIA 12207目前擁有最廣泛的用戶團體群;同時它也和IEEE SWE標準一樣,由軟體生命週期流程領域的知識專家執筆,並也經過投票手續制定。另外,它還有一項極大的優點那就是它不需要一套強勢的行銷機制,而是透過廣大的用戶群中,尤其是軟體開發者和採購者,利用此標準作為工具,分別控制其軟體發展和獲得過程的進度與品質,因此使得ISO/IEC/IEEE/EIA 12207廣為流行。

3.ISO 9001
  目前ISO 9001標準大為盛行,主要是由於它在各種應用領域中,用來作為驗證專案或組織品質的基礎;雖然技術上是針對品質管理,但是它採用極為廣泛的品質定義,而且實際上它涵蓋系統(或軟體)發展週期中的大部份流程。可是,值得特別一提的,ISO 9001的應用是只從系統設計階段開始,概念形成和需求定義兩階段是在它的範圍之外。
  此外,應注意的是,不管ISO 9001、甚或ISO 9000-3原本都不是用來作為開發系統的手冊;相反的,它是僅作為品質管理之證明用途,因此對於軟體發展領域,ISO 9001的施力點,顯然與前述其他四種方法迥然不同。
 

4.SSDM S&Ps
  SSDM S&Ps最大的優點是它涵蓋軟體工程領域中的絕大區域,針對系統和軟體的發展流程,它幾乎提供了全方位的指導原則;此外,它也擷取SEL推薦方法的一些優點,畢竟後者已累積了超過25年以上在飛行動力學環境中研究的經驗。雖然,SSDM S&Ps仍存有若干瑕疵,例如到目前為止,仍有20項S&Ps清單已規劃好但卻尚未完成;不過相對於其中個別標準的適用性和完整性,以及整套標準的安全性和一致性,這項缺點已是微不足道了。
  大體而言,SSDM S&Ps當初規劃的目的是要在系統和軟體發展方面提供全面性的方法指引,而現在來看,實際上它是非常稱職的;到目前為止,惟一有爭議的是,S&Ps 中的許多技術並沒有隨著資訊科技的進步而做調整。

5.SEL Recommended Approach
  如前所述,SEL推薦方法(Recommended Approach)與SSDM非常類似,但在內容方面它不若SSDM S&Ps那樣齊全;換句話說,它雖也提供軟體發展上之一些有效方法,卻沒有像S&Ps提供的指引那樣詳盡。同樣的,和SSDM S&Ps狀況相同,它也有即時更新的問題。
  此外,它的應用範圍太過狹窄,因為它原始的目的主要是針對一套傳統、且已不再存在的GSFC代碼為550之飛行動力學控制系統,而且該系統的許多功能已經被代碼為583的新系統取而代之了;甚至SEL推薦方法是否能繼續適用於583新系統的文化,卻是一再被提出討論的問題!

三、適用範圍之重疊
  以上各種方法之適用範圍或有重疊,詳如表一。


 

表一 各種軟體發展方法標準之適用範圍(資料來源:Schultz論文)

結語

  實際上,軟體品質出現問題的主要原因之一是,軟體需求規格不像硬體那樣明確,尤其是軟體的採購單位經常不易精準地向系統開發者描述其品質需求;而另一方面,開發者也不易證明其所開發的軟體系統確已符合採購單位的品質要求。

  更何況,軟體產業和其他硬體產業的特性截然不同:軟體產品不可能成批量產,基本上一套軟體系統的複製品其所有品質屬性均完全一樣;但在硬體領域,若生產一件產品後,我們雖可重複相同的製程標準製造同類之批量產品,但每一件產品之品質屬性卻可能互有差異。

  因此,相對而言,要驗證產品的品質水準,在軟體領域要比硬體產業加倍困難。在評估軟體品質時通常都分為兩個層次來考慮,即流程與產品,軟體流程的角度在觀察開發軟體時所採用的技術、工具、人員和組織等屬性,而軟體產品本身則在檢視其文件的品質、設計需求的可進溯性、測試涵蓋率、系統的功能性、可靠度等等。

  為求作業一致性,我們需參考遵循相關規範標準,但目前各種軟體開發標準多如恆河沙,本文即在比較分析五種較為常見之軟體標準。一般軟體開發標準大體上可分成三個層次,最高階的是國際標準,可作為一個機構的政策指引,如ISO/IEC 12207、ISO 9000等;第二階的標準是針對軟體工程流程而設定的,涵蓋軟體開發的不同階段,如 IEEE Software Engineering Standards。第三階的標準是針對特殊應用領域,如美國 GSFC 的 SEL Recommended Approach適合應用在飛行動力學的領域。在這些標準中,ISO 9000是最常被用來建立一個機構的整體架構,而I SO/IEC 12207的標準則是最常被用做單位的作業基準。

  然而,ISO 9000的實施需要許多環境的配合,包括:具豐富經驗的稽核人員、大量文件的製作和維護,尤其要遵守既定的嚴謹但有點繁瑣之作業程序,有時難免會阻礙開發人員的創新力,因此取捨之間值得省思。特別是那些規模不夠大的軟體業者,其內部組織通常無法完成ISO 9000所規定的內部控管要求;甚至當認證通過後,這些軟體業者也因履行對客戶品質義務的付出,無法獲得足夠的利潤而能倖存。
  總而言之,如何選擇一套合適的軟體開發標準,端看所開發的軟體產品是那一類領域、機構公司的規模大小、文化屬性以及擬投入的品質成本等等。最後,針對國內一般中、小型軟體業者,筆者建議一個大原則:透過ISO 9000的標準修正建立合適的整體架構,再檢視ISO/IEC/IEEE/EIA 12207,逐步選擇建立軟體工程中不同階段的作業標準。

參考資料
Schultz, D.J., A Comparison of Five Approaches to Software Development, January, 2000.
Ince, D., ISO 9001 and Software Quality Assurance, McGraw-Hill, 1994.
Sommerville, I., Software Engineering, 6 ed., Addison-Wesley, 2001.
呂執中、田墨中, 國際品質管理--ISO9001:2000品質系統之建立與稽核, 新陸書局2001.

 

版权所有:UML软件工程组织