謝一丹,裴煥斗
(1.中北大學儀器與電子學院,山西 太原 030051;2.百信信息技術有限公司,山西太原 030006)
當今世界,一套高效率的項目管理系統對企業的發展與壯大有著至關重要的作用[1]。但IT 企業的項目獨特性強、知識創新性大,且對于項目最終目標需要檢查的內容量化標準不統一,項目進度難以把控。隨著IT 技術突飛猛進的發展和需要,越來越多的項目管理平臺出現在人們的視野,例如當前國內外比較流行的禪道、Welcome OpenPlan、Microsoft Project 等[2]。這些項目管理工具集成了代碼和文檔管理等功能,但并不支持項目進度管理、項目任務管理等業務。并且長期以來,我國一直采用國外制定的安全協議和加密算法,這給我國關鍵系統的安全、自主、可控造成很大的隱患,而密碼算法在保障數據傳輸和存儲過程中的安全、可信起到了關鍵作用[3]。基于以上背景,設計了一種集成國密SM3 算法的項目全生命周期管理系統。
整套系統設計采用全生命周期項目管理方法,從宏觀的視角充分整合項目上下游所涉及的所有信息[4]。系統設計中,首先統計需要參與產品項目的部門,并對這些部門配置其特有的工作流和審批流。其次在規劃好體系流程后開展項目任務,如文檔任務、開發任務、測試任務,同時將測試階段出現的問題反饋給開發人員解決。并且將人員信息及項目階段產出的文檔信息進行安全加密處理,形成完整的業務流程?;诖嗽O計思路,將系統劃分為安全管理、系統管理、產品管理、質量管理、資源管理和團隊管理等多個模塊,建立起一套標準化項目流程體系。
系統架構模式為前后端分離。前端使用Vue.js框架,通過Visual Studio Code 軟件進行編碼。系統使用Vuex 狀態管理模式,采用axios 進行網絡請求和響應數據以及使用Bootstrap 框架構建響應式頁面與CSS 模塊化。其次為了使界面更加美觀,提升用戶體驗,系統引入了兩個開源的組件庫:Echarts 和Element。Echarts 可以幫助開發出美觀的報表界面,通過使用Element 組件庫來提高系統的開發效率。
系統后端使用Pycharm 軟件進行開發,Web 的后端使用Python 中的Django 框架[5]。Django 自帶了大量常用工具及框架,還集成了ORM、緩存、session、模型引擎及綁定等功能模塊[6-7],便于后端開發。系統使用MySQL 數據庫作為主要數據庫用來存儲數據,把Redis 緩存技術作為項目的緩存設置[8]。其次,Celery 可與Redis 數據庫配合使用,對項目中上傳文檔等耗時操作任務進行處理,同時應用分布式隊列將軟件中各個模塊解耦,保證了系統的伸縮性[9]。中間連接部分通過Nginx[10]實現負載均衡,轉發到uWSGI 服務器,然后調用Django 業務代碼。系統采用了uWSGI+Django 組合使用的方式來支持更多的并發量[11],從而發揮服務器的性能優勢。圖1 為系統的整體框架圖。
系統功能模塊的具體工作流程根據某企業項目管理機制構建。各功能模塊通過安全管理模塊校驗后可直接對非加密處理對象進行增、刪、改、查詢等操作。系統的主要模塊包括:
1)安全管理
安全管理模塊是將驗證信息經過SM3 算法加密后獲得的雜湊值,與數據庫中預先存儲的雜湊值進行比對,比對成功后允許進入系統或進行相關操作。安全管理模塊與各個功能模塊相連,為系統項目數據的安全提供保障。
2)系統管理
系統管理分為用戶管理、菜單管理、角色管理和崗位管理。其中崗位管理與角色管理為多對一的關系。系統通過為角色分配權限從而固定崗位權限。并且系統通過維護菜單管理模塊就可以實現分配操作權限。對于管理多種崗位且具有相同權限的用戶,采用這種設計模式更加便捷高效。系統管理框圖如圖2 所示。
3)產品管理
產品管理模塊包括體系管理、項目管理、任務管理及變更管理。該模塊主要負責產品項目的建立、項目計劃的制定、項目里程碑的設置和項目任務的變更處理。同時系統可以統計任務完成情況,最終自動生成甘特圖,實時了解項目進度。
對于產品管理中體系管理的劃分,通過與WBS(Work Breakdown Structure)分解結構理論相結合,將項目可交付物分解成工作包,使項目體系的流程更加清晰。產品管理功能體系如圖3 所示。
4)質量管理
質量是企業的根本,質量管理模塊對項目質量進行把關監控,與產品管理模塊相輔相成。一方面對工作流程中產出的各種文檔進行校驗,另一方面通過測試管理功能對各模塊進行測試,對存在的問題及時反饋。同時在產品交付后收集反饋信息,根據意見優化產品項目,形成閉環。
5)資源管理
資源管理模塊是整個項目階段信息的集合。為了規范整個項目文檔輸出的流程,在資源管理模塊提供不同文檔的模板。資源管理模塊通過使用工具包Python-docx 實現自動簽署來提高文檔傳輸效率,通過導入PyPDF2 中的Python-PdfFileReader、Python-PdfFileWriter 兩個包可以實現pdf 添加水印功能,防止數據被非法竊取及篡改,保證了數據安全。主要代碼為:
6)團隊管理
團隊是構建整個項目的核心,團隊管理模塊與產品管理模塊相關聯。在產品管理模塊中,需要進行團隊選擇。利用團隊管理可以實現組建團隊、查詢團隊、刪除團隊的功能,方便在項目建立后為項目的開發配備最優的團隊。
安全管理模塊選擇使用的SM3 算法是我國自主設計的密碼算法,其本質上是一種哈希算法[12]。SM3的壓縮函數與SHA-256 的壓縮函數結構相似,但SM3 算法比Django 自帶的SHA-256 算法設計更加復雜,在安全性和效率上也更高[13]。且SM3 算法計算的哈希值中各個位之間的關聯性更強[14]。SM3 算法與傳統的SHA-256 加密算法的對比如表1 所示。

表1 SHA-256與SM3算法對比圖
SM3 算法采用Python 語言編寫,SM3 算法主要包括數據填充、數據擴展和迭代壓縮三個過程。分別對應于代碼中的SM3_fill 函數、SM3_data_extend函數和SM3_compress 函數。其中rotation_left 函數為自行編寫的左移函數。
1)填充過程
首先在長度為A 的消息末尾添加1 個“1”和B 個“0”[15],A 和B 需要滿足等式A+1+B=448mod512,其中B 為最小非負整數。SM3_fill函數主要代碼為:
2)迭代壓縮
將第一步填充后的消息按照512 bit 進行分組。CF 是壓縮函數,V(0)為固定的初始值[16]。
將填充后的消息進行迭代:
fori=0 ton-1
V(i+1)=CF(V(i),B(i))
endfor
3)消息擴展
該過程是將16 個字的消息分組B(i)擴展生成132個字。B2個字分別為W0-W67及。具體擴展步驟如下:
W0-W15:將B(i)平均劃分為16個字W0-W15。
W16-W67:←Wj
針對以上步驟,擴展函數的主要代碼為:
4)壓縮函數
A-H 通過中間變量或直接相互關聯,最終的256 bit雜湊值為:
根據A-H 具體的計算過程編寫的壓縮函數SM3_compress 的主要代碼為:
采用SM3 國密算法對用戶的賬戶密碼、人員關鍵信息以及項目文檔中的關鍵字段進行加密處理,保證了系統的安全可信。系統需加密的信息如表2所示。

表2 加密信息列表
系統對密碼等數據庫中的敏感數據采用SM3 算法加密處理,且該過程不可逆。圖4 是以數據abc 為例經過SM3 算法數據完整性校驗示意圖。
數據abc 加密過程中的132 位擴展字為w1、w2,分別為:
進入系統后在首頁通過看板展示各產品、項目及任務狀態,頁面布局合理,操作流程簡單。登錄首頁頁面如圖5 所示。
系統采用列表形式的WBS,類似于書籍類的分級目錄,具有直觀的縮進格式。通過對項目體系中模板的配置,可以建立靈活多樣的流程體系,為項目階段任務的管理、項目流程的開展提供便利。項目體系配置管理頁面如圖6 所示。
系統為B/S 架構,故選取常用場景下的操作系統與瀏覽器進行兼容性測試,測試結果如表3 所示。響應時間均在5 s 之內,符合企業預設需求。

表3 兼容性測試結果
利用當前國密算法,設計了一種安全可信的項目全生命周期管理系統,詳細介紹了系統框架組成、各功能模塊、SM3 算法設計及主要代碼。經測試,該設計可以保障系統及項目執行過程中信息的安全,同時可以對IT 企業項目的全生命周期的各個環節實現標準化、流程化管理,把控項目進度。整體上提高了傳統項目管理的效率,為企業內部各項工作的完成提出了一種安全、高效、低成本的解決方案。
未來將繼續深入優化項目管理的各子功能模塊、建立功能更加健全的項目全生命周期管理系統。