1.條款要求
8.5.1條款是生產(chǎn)和服務提供的控制,該條款全部要求如下:組織應在受控條件下進行生產(chǎn)和服務提供。a)可獲得成文信息,以規(guī)定以下內(nèi)容:擬生產(chǎn)的產(chǎn)品、提供的服務或進行的活動的特性;b)可獲得和使用適宜的監(jiān)視和測量資源;c)在適當階段實施監(jiān)視和測量活動,以驗證是否符合過程或輸出的控制準則以及產(chǎn)品和服務的接收準則;d)為過程的運行使用適宜的基礎設施,并保持適宜的環(huán)境;f)若輸出結(jié)果不能由后續(xù)的監(jiān)視或測量加以驗證,應對生產(chǎn)和服務提供過程實現(xiàn)策劃結(jié)果的能力進行確認,并定期再確認;與2008版標準相比,2016版標準8.5.1條款合并了原標準7.5.1和7.5.2條款的內(nèi)容,同時還進行了適當擴展。關于此條款,對以下幾點內(nèi)容進行詳細分析:所謂受控條件,一般是一組在組織控制下的環(huán)境、人員、資源、設施等,通常包括“人、機、料、法、環(huán)、測”幾個部分;除此之外,標準還強調(diào)了對過程確認的要求(f)以及對放行的要求(h)。標準的所謂適用,不是自己認為可做可不做,而是產(chǎn)品生產(chǎn)過程客觀是否存在標準規(guī)定的這樣的要求。如果存在,必須滿足標準要求;如果不存在,無法提供證據(jù)滿足標準這個要求,于是標準這條要求就不適用。比如,某一生產(chǎn)過程全部采用機器自動化完成,不可能產(chǎn)生人為錯誤,那么標準條款中關于“采取措施防止人為錯誤”就不適用于這一生產(chǎn)過程。同樣關于f)條,過程確認,如果生產(chǎn)過程沒有需要確認的過程,那么f)條款就不適用。成文信息一般有兩類:文件和記錄。8.5.1條款規(guī)定的成文信息主要是指文件,包括兩類文件:其一,“擬生產(chǎn)的產(chǎn)品、提供的服務或進行的活動的特性”,主要是指產(chǎn)品特性指標、技術要求等,包括設計輸出的圖紙、設計文件、接口文件等,都屬于此類成文信息;其二,“擬獲得的結(jié)果”,主要是指產(chǎn)品的接受準則和過程的控制準則,實際上是生產(chǎn)產(chǎn)品的驗收依據(jù)和審查過程的控制要求,比如過程的CPI指標,這些屬于過程控制要求。適用時,也要形成成文信息,明確下來。c)條,“在適當階段實施監(jiān)視和測量活動,以驗證是否符合過程或輸出的控制準則以及產(chǎn)品和服務的接收準則”,這實際上說了兩件事:首先是對過程進行監(jiān)視和測量,確保過程或輸出符合控制準則;其次是對產(chǎn)品進行監(jiān)視和測量,符合產(chǎn)品的接收準則。其中控制要求和產(chǎn)品接收準則在a)條以成文信息的形式明確,而本條則是要求實施適當?shù)谋O(jiān)視和測量活動滿足a)條要求。這是新版8.5.1的新增條款,合并了2008版中7.5.2條款的要求。按照GJB1405定義,對形成的產(chǎn)品是否合格不易或不能經(jīng)濟地進行驗證的過程,通常稱之為特殊過程。實際上需要確認的過程不完全是特殊過程。比如汽車行業(yè),按照ISO/TS 16949標準,為了增加安全性、可靠性,對于一些后續(xù)可以驗證的過程也要求做過程確認,但這顯然超出了GB19001要求。對比以上三種情況,可以很明顯看出,GB 19001規(guī)定的需要確認的過程外延最小,其次是GJB 1405定義的特殊過程,外延最大的是ISO/TS 16949。組織可以根據(jù)需要選擇即使后續(xù)能驗證的過程進行確認,但這屬于加嚴要求,標準并不要求一點。注意該條款與8.5.5條“交付后的活動”以及8.6條“產(chǎn)品和服務的放行”的區(qū)別。8.5.1強調(diào)的是受控條件,意思是關于“實施放行、交付和交付后的活動”必須在受控條件下實施,這種受控條件包括但不限于“放行、交付測試、環(huán)境要求、人員要求、成文信息要求等”,而8.5.5說的是在8.5.1的受控條件下實施“交付后的活動”,8.6說的是在8.5.1的受控條件下實施“放行的活動”。8.5.1是給他們策劃條件,8.5.5和8.6分別說的是實施這些活動。
條款在軟件組織中的實施
1.軟件組織關于8.5.1條款的幾個相關概念
什么是軟件的生產(chǎn)過程?軟件編碼是否屬于軟件的生產(chǎn)過程?軟件生產(chǎn)階段始于哪一個環(huán)節(jié)?為了弄清這個問題,我們需要看看軟件的生存周期模型。一般認為,瀑布模型是最基本也是最常用的軟件生存周期模型,其他大部分模型可以認為是瀑布模型的延伸和變形。瀑布模型定義的軟件生存周期如下圖所示:
按照瀑布模型,與硬件生產(chǎn)過程進行對比,會發(fā)現(xiàn)軟件的生產(chǎn)階段始于編碼有一定道理,因為編碼階段就是在產(chǎn)生實際的軟件產(chǎn)品,編碼完成后實際上就形成了交付給用戶的產(chǎn)品,后面就是對該產(chǎn)品的檢驗測試階段。但是,如果按照生產(chǎn)的定義和要求,軟件的編碼階段納入生產(chǎn)環(huán)節(jié)是有待商榷的。生產(chǎn)強調(diào)的是可重復、一致性。將一份設計文件交給程序員去編碼,不同的程序員編出來的代碼會有很大區(qū)別,但都符合設計要求。那么將軟件的復制環(huán)節(jié)開始作為軟件的生產(chǎn)階段是否合適呢?顯然也不合適。因為在復制前,實際上軟件必然經(jīng)過各類測試,而軟件的測試是屬于典型的生產(chǎn)過程中的檢驗環(huán)節(jié)。實際上,問題出在瀑布模型,上述瀑布模型并沒有完整地將軟件研制流程展現(xiàn)出來,實際的軟件在編碼完成后,還有編譯、鏈接、發(fā)布、安裝等過程,我們將瀑布模型的編碼與測試階段進一步細分,如下圖所示。
由上圖可以看出,在瀑布模型的編碼和測試之間至少還應該有編譯、鏈接及發(fā)布等環(huán)節(jié)。通過這些環(huán)節(jié)將源代碼生產(chǎn)成目標代碼,而這些環(huán)節(jié)是可重復進行的,基于一定的規(guī)則,不同的人,對同一段代碼編譯連接出來的結(jié)果也應該是一致的,這個過程其實就是一個軟件生產(chǎn)過程。這樣看來,軟件的生產(chǎn)過程實際上是將源代碼經(jīng)過編譯鏈接發(fā)布等環(huán)節(jié)生產(chǎn)目標代碼的過程。將軟件的生產(chǎn)階段定義為從編譯環(huán)節(jié)開始,包括編譯、鏈接、發(fā)布、以及后續(xù)的安裝、復制等環(huán)節(jié),其中復制環(huán)節(jié)屬于批量生產(chǎn)。明確了軟件生產(chǎn)過程,我們再來對照f)條要求審查軟件生產(chǎn)過程是否有需要確認的過程,即是否有特殊過程。一般情況下,軟件的編譯、鏈接以及發(fā)布均是工具軟件自動完成,基于一定的編譯鏈接規(guī)則,對源代碼進行編譯鏈接形成目標碼,在此過程中,一般不需要人為干預。那么編譯后的軟件是否可以測試驗證呢?顯然是可以的。在瀑布模型中,后續(xù)的單元測試、集成測試以及配置項測試都是基于目標代碼進行測試,因此此過程的輸出結(jié)果是可以由后續(xù)的監(jiān)視或測量加以驗證,顯然不屬于特殊過程,不需要確認。同樣,關于軟件的復制過程,更是有多種手段進行驗證復制的準確性,也是可以驗證的,因此軟件的復制過程也無需確認。綜上,對于軟件的生產(chǎn)過程,過程的確認條款f)一般是不適用的。如前所述,對于編譯鏈接發(fā)布等環(huán)節(jié)一般自動完成,很少人工干預,這些環(huán)節(jié)此條基本不適用,但對于軟件的復制過程,很容易發(fā)生人為錯誤,例如版本錯誤、復制不完整等,對于該環(huán)節(jié)應該制定并采取措施防止人為錯誤。8.5.1其余條款,包括a)、b)、c)、d)、e)、h)條,對于軟件組織都是適用的。
2.軟件組織實施8.5.1條款建議
綜上分析,對于8.5.1,軟件組織適用的條款,包括8.5.1中的a)、b)、c)、d)、e)、g)、h)條。a)軟件的生產(chǎn)環(huán)節(jié)控制過程控制活動,例如程序的編譯(含鏈接)準則、編譯(含鏈接)環(huán)境、編譯(含鏈接)約束、編譯(含鏈接)工具等;發(fā)布活動,例如生成、發(fā)布準則、發(fā)布環(huán)境控制、發(fā)布約束等;交付后活動,例如操作、維護和客戶支持、技術升級等。建立軟件的生成、發(fā)布、修改和復制流程,以及生成和發(fā)布活動的配置管理:根據(jù)用戶使用的頻率和(或)影響,識別發(fā)布的類型(或類);制定決策標準,以確定在哪里可以合并本地化的 “補丁”,或在哪里發(fā)布完整更新的軟件產(chǎn)品副本的。規(guī)定所需的文件,如手冊、用戶指南、許可證和發(fā)布說明,包括標識和包裝;確保產(chǎn)品副本的正確性和完整性的規(guī)定,防止人為錯誤。交付的形式,例如是通過媒介的物理轉(zhuǎn)移還是通過電子傳輸來實現(xiàn)。交付活動,例如交付和安裝規(guī)則、安裝指南等 ;如果是客戶或第三方進行安裝,組織應給出客戶執(zhí)行安裝所需采取的步驟。如果安裝是由組織進行的,可適用以下規(guī)定:
軟件組織中的審核要點
綜上分析,對于軟件組織,在8.5.1條款審核時應重點關注以下要點:軟件的各級測試測試說明(單元/集成/配置項/系統(tǒng)測試等);是否實施了軟件各級測試測試(單元/集成/配置項/系統(tǒng)測試等);d)關于軟件生產(chǎn)過程的基礎設施,審核要點包括:是否識別了軟件編譯鏈接發(fā)布以及復制測試等過程的基礎設施,包括工具、平臺、環(huán)境要求等;基礎設施的維護是否合理(可結(jié)合7.1.3進行審核)。是否識別了軟件生產(chǎn)過程(含測試過程)的人員資格要求(可結(jié)合7.2進行審核);對于容易發(fā)生人為錯誤的軟件生產(chǎn)環(huán)節(jié)是否進行了識別;對于識別處內(nèi)的會出現(xiàn)人為錯誤的軟件生產(chǎn)環(huán)節(jié)是否制定并采取了措施。是否策劃了放行、交付和交付后的活動的受控條件,包括人員、資源等;放行、交付和交付后的活動是否在受控條件下執(zhí)行(結(jié)合8.5.5,8.6條款審核)。
濟南ISO9001認證,GB/T 19001-2016標準8.5.1條款在軟件研制過程中的實施和審核具有一定的難點,如何合理界定軟件的生產(chǎn)過程是重點。本文基于8.5.1條款要求,結(jié)合軟件研制過程的瀑布模型,剖析了軟件生產(chǎn)過程的主要環(huán)節(jié),在此基礎上,給出了軟件組織在8.5.1條款的實施建議并給出了審核要點,對于軟件組織有效實施該條款要求具有一定的指導作用。