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