汪驥宇,白 喆,李 杰,陳 武
(中核武漢核電運(yùn)行技術(shù)股份有限公司,湖北 武漢 430223)
建立企業(yè)全流程生產(chǎn)管理系統(tǒng)是數(shù)字化轉(zhuǎn)型的基礎(chǔ),這類系統(tǒng)涉及企業(yè)安全生產(chǎn)的方方面面,打通全業(yè)務(wù)流程,具有規(guī)模大、業(yè)務(wù)復(fù)雜、需求不確定、技術(shù)復(fù)雜、構(gòu)建周期長、投資大等特點(diǎn)。這類大系統(tǒng)的研發(fā)實(shí)施成功與否,直接關(guān)系到企業(yè)數(shù)字化轉(zhuǎn)型的推進(jìn)速度。在企業(yè)中或多或少存在一些信息系統(tǒng),企業(yè)的某些領(lǐng)域有一定的信息化基礎(chǔ),企業(yè)對(duì)未來管控平臺(tái)有一定的想法,如何成功的構(gòu)建企業(yè)全流程生產(chǎn)管理系統(tǒng)成為這些企業(yè)遇到的主要問題。
在大系統(tǒng)研發(fā)過程中,經(jīng)典的軟件開發(fā)模型:瀑布模型、快速原型模型、增量模型、螺旋模型等模型具有一定的指導(dǎo)意義。在新技術(shù)快速演進(jìn)、市場環(huán)境快速變化的當(dāng)下,構(gòu)建有生命力,能夠應(yīng)對(duì)這些技術(shù)迭代、環(huán)境變化的系統(tǒng),需要全新軟件系統(tǒng)開發(fā)模型。
系統(tǒng)工程運(yùn)用系統(tǒng)思想解決大系統(tǒng)問題,解決了系統(tǒng)研發(fā)中各部分的相互關(guān)聯(lián)、制約、作用的難題,構(gòu)建了有機(jī)統(tǒng)一的系統(tǒng)[1-2]。系統(tǒng)工程方法對(duì)構(gòu)建統(tǒng)一的大型軟件系統(tǒng)具有很好作用。另外,敏捷開發(fā)模式[3-4]以其快速高效、適應(yīng)變化、注重交付等特點(diǎn),在應(yīng)對(duì)變化方面具有廣泛應(yīng)用。但是在大型軟件系統(tǒng)研發(fā)工程中,敏捷模型如何運(yùn)用還是一個(gè)具有挑戰(zhàn)性的課題。本文提出了一種敏捷系統(tǒng)工程實(shí)施模型,結(jié)合系統(tǒng)工程方法、敏捷模型而構(gòu)建的大型軟件實(shí)施模型,能夠指導(dǎo)大型軟件研發(fā)實(shí)施。
在敏捷系統(tǒng)工程實(shí)施模型中,定義了“兩流程一中心”核心,即項(xiàng)目管控流程和項(xiàng)目執(zhí)行流程兩個(gè)一級(jí)流程,以及一個(gè)配置中心,其中有以下3 點(diǎn)需注意。
(1)項(xiàng)目管控流程,包含了工程項(xiàng)目管理相關(guān)流程,涉及項(xiàng)目范圍、時(shí)間、成本、質(zhì)量、人力、溝通、風(fēng)險(xiǎn)、采購、綜合管理的內(nèi)容。
(2)項(xiàng)目執(zhí)行流程,包含了敏捷系統(tǒng)工程實(shí)施模型的執(zhí)行流程,包括系統(tǒng)工程流程和系統(tǒng)開發(fā)流程兩大二級(jí)流程。
(3)配置中心,包括開發(fā)運(yùn)維一體化平臺(tái)和內(nèi)容平臺(tái),提供研發(fā)項(xiàng)目的需求管理、項(xiàng)目管理、研發(fā)、測試、運(yùn)維等服務(wù)能力,同時(shí)對(duì)項(xiàng)目項(xiàng)實(shí)施過程中的資料、規(guī)范、知識(shí)、協(xié)調(diào)文件等內(nèi)容進(jìn)行管理。
在大型軟件系統(tǒng)研發(fā)項(xiàng)目中,項(xiàng)目管理是其重要部分,直接關(guān)系到項(xiàng)目的成功。在模型中重點(diǎn)關(guān)注項(xiàng)目控制、風(fēng)險(xiǎn)管理、變更管理3 項(xiàng)流程的內(nèi)容,涉及的相關(guān)交付物有項(xiàng)目章程、項(xiàng)目進(jìn)度計(jì)劃、項(xiàng)目組織機(jī)構(gòu)、項(xiàng)目人員通信錄、項(xiàng)目設(shè)計(jì)開發(fā)規(guī)范、項(xiàng)目控制記錄、風(fēng)險(xiǎn)記錄、例會(huì)記錄、變更請(qǐng)求記錄,具體如下。
(1)項(xiàng)目控制流程:主要是對(duì)項(xiàng)目的人員、進(jìn)度、質(zhì)量、成本的管理。
(2)項(xiàng)目風(fēng)險(xiǎn)流程:主要是對(duì)風(fēng)險(xiǎn)的管理,從風(fēng)險(xiǎn)規(guī)劃、風(fēng)險(xiǎn)識(shí)別、風(fēng)險(xiǎn)跟蹤、風(fēng)險(xiǎn)應(yīng)對(duì)等方面進(jìn)行管理。
(3)變更管理流程:主要是軟件研發(fā)過程中范圍進(jìn)行管理,包括需求、設(shè)計(jì)、開發(fā)、測試等方面變更管理。
系統(tǒng)工程流程包含項(xiàng)目啟動(dòng)和系統(tǒng)工程周期流程。其中在項(xiàng)目啟動(dòng)活動(dòng)中,包括一系列的并行活動(dòng),召開啟動(dòng)會(huì)表示該活動(dòng)完成。通過多個(gè)系統(tǒng)工程周期完成整個(gè)系統(tǒng)的總體設(shè)計(jì),總體設(shè)計(jì)也是在迭代過程中不斷的優(yōu)化完善,最終達(dá)到系統(tǒng)的要求。基本原則時(shí)按照項(xiàng)目啟動(dòng)環(huán)節(jié)確定的領(lǐng)域優(yōu)先級(jí)進(jìn)行迭代系統(tǒng)設(shè)計(jì)。
3.1.1 項(xiàng)目啟動(dòng)
項(xiàng)目啟動(dòng)環(huán)節(jié)主要活動(dòng)包括組建團(tuán)隊(duì)、識(shí)別角色/角色用例/定義用例優(yōu)先級(jí)、制定總體時(shí)間進(jìn)度計(jì)劃、制定風(fēng)險(xiǎn)控制規(guī)劃、制定軟件工程規(guī)劃,該環(huán)節(jié)主要的成果包括總體進(jìn)度計(jì)劃、風(fēng)險(xiǎn)降低規(guī)劃、系統(tǒng)工程規(guī)劃、角色清單、角色用例清單。該環(huán)節(jié)啟動(dòng)會(huì)召開為完成標(biāo)記。
對(duì)于軟件工程,首先對(duì)系統(tǒng)的功能進(jìn)行劃分,跟進(jìn)業(yè)務(wù)領(lǐng)域進(jìn)行初步劃分,通過和業(yè)務(wù)專家一起,識(shí)別主要的業(yè)務(wù)角色和用例,這里的用例粒度較粗,以一二級(jí)業(yè)務(wù)場景為標(biāo)準(zhǔn)進(jìn)行,主要目的是識(shí)別關(guān)鍵業(yè)務(wù)。對(duì)識(shí)別用例進(jìn)行分類,設(shè)置優(yōu)先級(jí)。本步驟的主要目標(biāo)是識(shí)別核心業(yè)務(wù)流程,核心業(yè)務(wù)領(lǐng)域。完成業(yè)務(wù)領(lǐng)域識(shí)別和分級(jí)后,在根據(jù)項(xiàng)目計(jì)劃,制定迭代分析設(shè)計(jì)計(jì)劃。
3.1.2 系統(tǒng)工程周期
在系統(tǒng)工程周期中包括迭代啟動(dòng)、角色需求分析及定義、系統(tǒng)需求分析及定義、架構(gòu)分析、架構(gòu)設(shè)計(jì)、設(shè)計(jì)評(píng)審、迭代回顧6 個(gè)環(huán)節(jié),如圖1 所示。
圖1 系統(tǒng)工程周期
(1)迭代啟動(dòng),確定本迭代計(jì)劃、人員職責(zé)、成果、以及風(fēng)險(xiǎn),召開啟動(dòng)會(huì)。
(2)業(yè)務(wù)領(lǐng)域需求分析[5],開展領(lǐng)域需求分析,本步驟需要識(shí)別領(lǐng)域角色、業(yè)務(wù)用例、其他需求。首先進(jìn)行業(yè)務(wù)角色建模,根據(jù)具體業(yè)務(wù)需求,識(shí)別業(yè)務(wù)角色,這里原子粒度以用例步驟粒度為準(zhǔn)。再進(jìn)行用例的細(xì)化以及用例編寫,同時(shí)識(shí)別出非功能需求。在用例分析過程中,需要結(jié)合業(yè)務(wù)活動(dòng)圖、狀態(tài)圖等工具,對(duì)用例的細(xì)節(jié)進(jìn)行梳理,確保在用例分析過程中做到,關(guān)鍵業(yè)務(wù)不缺項(xiàng)。需要設(shè)計(jì)出實(shí)現(xiàn)各個(gè)用例的功能,必要時(shí)結(jié)合原型分析,完成所有業(yè)務(wù)的寫操作功能,同時(shí)識(shí)別必要的讀操作,實(shí)現(xiàn)用例的完整性。
(3)系統(tǒng)需求分析及定義,在該階段需要完成服務(wù)設(shè)計(jì)形成服務(wù)清單、領(lǐng)域模型、服務(wù)關(guān)系模型[6-8]。首先定義接口服務(wù),再對(duì)這些服務(wù)接口進(jìn)行分類,接下來進(jìn)行模型建模,最后進(jìn)行模型審查。
(4)架構(gòu)分析及設(shè)計(jì),完成子系統(tǒng)/組件的設(shè)計(jì)。
(5)設(shè)計(jì)評(píng)審,對(duì)架構(gòu)設(shè)計(jì)模型進(jìn)行審查,通過模型的合理性評(píng)審。
(6)迭代回顧,需要分析哪些需求需要納入后續(xù)迭代中。
系統(tǒng)工程過程完成子系統(tǒng)/組件設(shè)計(jì)后,在系統(tǒng)開發(fā)過程中,根據(jù)項(xiàng)目資源、子系統(tǒng)/組件關(guān)系,開啟子系統(tǒng)/組件的開發(fā)。
3.2.1 迭代計(jì)劃設(shè)計(jì)
每個(gè)子系統(tǒng)/組件開發(fā),需要制定相關(guān)的版本迭代計(jì)劃,規(guī)劃系統(tǒng)實(shí)現(xiàn)的迭代次數(shù)、迭代方式。PO、業(yè)務(wù)人員就系統(tǒng)的功能進(jìn)行迭代計(jì)劃設(shè)計(jì),在系統(tǒng)總體計(jì)劃的前提下(子系統(tǒng)開發(fā)時(shí)間已設(shè)置),根據(jù)功能優(yōu)先級(jí)設(shè)計(jì)子系統(tǒng)功能迭代開發(fā)計(jì)劃。本活動(dòng)輸出物包括用戶故事(粗粒度)、迭代計(jì)劃。
3.2.2 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)的每個(gè)迭代包括設(shè)計(jì)流程和開發(fā)流程,具體如下。
(1)設(shè)計(jì)流程。
系統(tǒng)設(shè)計(jì)過程完成本次迭代相關(guān)功能的設(shè)計(jì),設(shè)計(jì)分為多個(gè)迭代設(shè)計(jì)過程,每個(gè)迭代設(shè)計(jì)過程包括6個(gè)環(huán)節(jié),設(shè)計(jì)流程如圖2 所示。
圖2 設(shè)計(jì)流程
各流程釋義如下:①用戶故事編寫[5],PO 和業(yè)務(wù)人員協(xié)作,PO 完成用戶故事編寫,輸出系統(tǒng)功能需求,主要包括用戶故事、業(yè)務(wù)流程、以及非功能需求。②功能原型設(shè)計(jì),PO 和業(yè)務(wù)人員協(xié)作,完成系統(tǒng)功能及功能原型設(shè)計(jì),輸出系統(tǒng)原型。③數(shù)據(jù)模型設(shè)計(jì),子系統(tǒng)設(shè)計(jì)人員根據(jù)系統(tǒng)功能需求,完成數(shù)據(jù)模型設(shè)計(jì),包括概念模型和物理模型。輸出概念模型和物理模型,以及相關(guān)配置設(shè)計(jì)(包括值列表、首選項(xiàng)、工作流、報(bào)表等成果)。④服務(wù)設(shè)計(jì),子系統(tǒng)設(shè)計(jì)人員根據(jù)系統(tǒng)功能需求,完成系統(tǒng)服務(wù)設(shè)計(jì),輸出服務(wù)清單、服務(wù)模型、領(lǐng)域模型。⑤設(shè)計(jì)審查,系統(tǒng)設(shè)計(jì)完成后,組織系統(tǒng)架構(gòu)師、中臺(tái)設(shè)計(jì)架構(gòu)師、數(shù)據(jù)架構(gòu)師、應(yīng)用架構(gòu)師、業(yè)務(wù)人員等人審查本活動(dòng)的輸出物,設(shè)計(jì)人員根據(jù)審查意見完成相關(guān)設(shè)計(jì)文件的修改。輸出審查紀(jì)要。⑥進(jìn)行迭代回顧,設(shè)計(jì)迭代活動(dòng)完成后,進(jìn)行迭代回顧,主要是對(duì)本次迭代的工作情況、以及下一個(gè)迭代的工作范圍,更新迭代計(jì)劃。
(2)系統(tǒng)開發(fā)。敏捷開發(fā)小組進(jìn)行敏捷開發(fā),主要活動(dòng)包括計(jì)劃會(huì)、功能開發(fā)、功能測試、開發(fā)例會(huì)。該活動(dòng)的主要產(chǎn)出物包括代碼、軟件、測試用例、測試報(bào)告、用戶手冊(cè)、配置手冊(cè)。
(3)系統(tǒng)實(shí)現(xiàn)流程演變。在本模型中,采用敏捷方式進(jìn)行系統(tǒng)開發(fā),每個(gè)迭代的時(shí)間不應(yīng)過長。系統(tǒng)實(shí)現(xiàn)是項(xiàng)目落地實(shí)施具體環(huán)節(jié),在實(shí)際的項(xiàng)目執(zhí)行過程中,可能會(huì)存在一些特殊情況:①子系統(tǒng)功能邏輯復(fù)雜,需要化更多的時(shí)間進(jìn)行設(shè)計(jì),為了每個(gè)迭代能夠有交付物,可以在開始的迭代中包括多個(gè)純?cè)O(shè)計(jì)迭代,待設(shè)計(jì)完成后,再進(jìn)入系統(tǒng)開發(fā)。②在集成系統(tǒng)開發(fā)中,主要的工作是測試工作,那么可以縮短設(shè)計(jì)的時(shí)間,增加系統(tǒng)開發(fā)的迭代。
在大型軟件研發(fā)項(xiàng)目中,存在幾十個(gè)上百個(gè)敏捷迭代小組同時(shí)進(jìn)行開發(fā),各個(gè)小組的開發(fā)進(jìn)度不同,需要開發(fā)運(yùn)維一體化平臺(tái)進(jìn)行管理,提供研發(fā)項(xiàng)目的需求管理、項(xiàng)目管理、研發(fā)、測試、運(yùn)維等服務(wù)能力,同時(shí)對(duì)項(xiàng)目項(xiàng)實(shí)施過程中的資料、規(guī)范、知識(shí)、協(xié)調(diào)文件等內(nèi)容進(jìn)行管理。
配置中心從傳統(tǒng)文件管理、代碼、測試管理等各自獨(dú)立的,采用不同的工具進(jìn)行管理,轉(zhuǎn)化為統(tǒng)一的開發(fā)運(yùn)維一體化平臺(tái)進(jìn)行管理。支撐項(xiàng)目管控和系統(tǒng)實(shí)施,實(shí)現(xiàn)自動(dòng)化的軟件交付,形成軟件的構(gòu)建、測試、發(fā)布自動(dòng)化體系。
開發(fā)運(yùn)維一體化平臺(tái)[9]是模型中項(xiàng)目實(shí)施的基礎(chǔ)設(shè)施,提供了項(xiàng)目管理能力、配置管理能力、持續(xù)集成能力,是實(shí)現(xiàn)項(xiàng)目管控與系統(tǒng)實(shí)施一體化平臺(tái)。
(1)項(xiàng)目管理能力,包括項(xiàng)目的進(jìn)度管理、風(fēng)險(xiǎn)管理、變更管理等方面內(nèi)容。
(2)配置管理能力,包括需求管理、設(shè)計(jì)管理、代碼管理、測試管理等方面的內(nèi)容。
(3)持續(xù)集成能力,包括資源管理、容器管理、持續(xù)集成、持續(xù)交付、鏡像倉庫等能力
內(nèi)容平臺(tái)是項(xiàng)目成果的倉庫,對(duì)模型各個(gè)流程的輸入、輸出物進(jìn)行中心統(tǒng)一管理。主要包括項(xiàng)目管理、業(yè)務(wù)需求、系統(tǒng)需求、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)交付、資料、個(gè)人空間8 個(gè)方面的內(nèi)容
本文介紹的敏捷系統(tǒng)工程實(shí)施模型在大型軟件系統(tǒng)研發(fā)中使用,能夠很好地支持敏捷的系統(tǒng)工程設(shè)計(jì)與開發(fā)過程。通過開發(fā)運(yùn)維一體化平臺(tái),實(shí)現(xiàn)項(xiàng)目管控、系統(tǒng)實(shí)施的一體化管理。本模型的實(shí)施過程關(guān)鍵點(diǎn)主要是以下3 個(gè)方面。
(1)系統(tǒng)工程思想:從開始就需要有系統(tǒng)思維,協(xié)調(diào)好各個(gè)系統(tǒng)設(shè)計(jì)的迭代內(nèi)容,不能遺漏集成設(shè)計(jì)迭代環(huán)節(jié)。
(2)系統(tǒng)設(shè)計(jì)與系統(tǒng)開發(fā)分開:系統(tǒng)設(shè)計(jì)流程重點(diǎn)運(yùn)用系統(tǒng)工程方法,系統(tǒng)開發(fā)過程重點(diǎn)運(yùn)用敏捷開發(fā),同時(shí)兩個(gè)流程要保持信息通暢。
(3)一體化管理平臺(tái):需要通過一體化管理平臺(tái)管理全流程的各種模型、數(shù)據(jù)的流轉(zhuǎn),避免研發(fā)過程中數(shù)據(jù)傳遞丟失信息,提高管理、研發(fā)效率,保障項(xiàng)目成功。