系統架構設計師論文分享-論軟件過程模型及應用

我的軟考歷程

摘要

2023年2月,我所在的公司通過了研發紗線MES系統的立項,該系統為國內紗線工廠提供SAAS服務,旨在提升紗線工廠的數字化和智能化水平。我在該項目中擔任架構設計師,負責該項目的架構設計工作。本文結合我在該項目中的實踐,詳細論述了常見的軟件開發模式如瀑布模型、原型模型、螺旋模式等,本項目采用了瀑布模型和原型模型結合的方式,把項目周期分成了需求分析、系統設計、程序設計、編碼實現和測試驗收等階段,并通過快速原型獲取了用戶的需求,整個過程進展順序,保證了系統的穩定開發。最終在2023年12月,該項目正式上線對外提供服務,至今穩定運行,各項功能和性能指標均達到了客戶的要求,受到了客戶工廠和公司領導的一致好評。

項目背景

隨著我國從制造業大國升級為制造業強國以及工廠數字化和智能化的持續推進,我所在的某地某科技公司基于自研的物聯網平臺相繼開發了染整一體化和織布一體化等系統,這些系統上線后,得到了工廠的追捧,也為公司帶來了豐厚的經濟回報。基于此,我司于2023年2月開始研發紗線MES系統,該系統總投資730萬,開發周期10個月,涵蓋紗線工廠從清花、梳棉、并條、精梳、粗紗、細紗到絡筒的全流程工序,將為紗線工廠提供全面的生產管理解決方案以及基于數據的智能決策分析能力。該項目采用物聯網層次架構,整體分為感知層、網絡層和應用層。其中網絡層為公司已有的物聯網平臺,這次重點建設內容為感知層和應用層,感知層使用Golang語言開發,作為聯網網關部署在工廠側,負責工廠數據的采集和云端指令的下發。應用層為紗線MES系統主體,采用Java語言開發,使用Spring Cloud微服務架構,數據庫使用Mysql,緩存使用Redis,前端框架使用vue.js,日志、監控和鏈路追蹤采用skywalking、prometheus、grafana和ELK,最終通過devops的方式部署在kubernetes集群中。系統上線后,將提供以下:基礎管理、數據接入、工單排產、數字孿生、工資計算、智控中心和數據分析等等功能,通過以上功能,可以全面提升紗線工廠的數字化和智能化水平,使其運營水平和生產效率得到質的提升。

論述內容

由于該項目涉及參與者眾多,業務流程長,數據處理量大,邏輯復雜,同時邊端部署環境不穩定,云端流量壓力大。所以,為了保障該項目的順利開發和運行的穩定性,我們團隊一致認為需要采用合理的軟件過程模式來保證項目的開發。目前常用的開發模型有:
1、瀑布模型,是一種線性的模型,它把項目開發過程分為了若干個階段,只有前一個階段完成后,后一個階段才能進行。這種做法可以控制各個階段的執行工作和內容,有利于管理項目。但是,該做法要求需求明確,如果前一個階段出現了問題,這個問題會影響后面的所有的階段,造成項目的失敗和延期。
2、原型模型,是一個迭代開發模型,它通過快速的構件一個簡單的原型來驗證需求和涉及方案。它的特點是迭代開發、快速反饋和不斷的優化。通過原型模型,可以讓用戶的需求明確起來,用戶在這個過程中也會參與原型的體驗,可以及時得到用戶的反饋,進行需求確認,通過這種方式,可以有效的降低風險,減少后期返工。
3、螺旋模型,螺旋模型是瀑布模型和原型模型的結合,它把開發過程分為了多個迭代周期,每個周期都有需求分析、設計、編碼、測試等階段,同時螺旋模型強調了風險的重要性,它在每個循環階段中都加入了風險分析。基于此,螺旋模型很適合大型的復雜的項目,通過它,可以有效地降低開發的風險。
經過團隊的討論并結合該項目的特點,大家一致決定使用瀑布模型和原型模型結合的方式,這種方式既能有效地對項目的開發進行管理,同時也能保證需求的準確性,降低項目的風險,減少返工的概率。我們把項目分為需求分析、系統設計、程序設計、編碼實現和測試驗收等階段,并通過快速原型去獲取用戶需求。具體開發過程如下。

一、需求分析階段

我們嚴格制定了需求收集和分析計劃,把系統分為了多個系統,每個子系統都有專門的同事去負責。同時,我們對系統進行了分解,通過領域建模的方式把系統分為了多個微服務如工資計算、基礎管理、絡筒、細紗、報表等領域,每個領域都負責自身的業務,都有自己的數據字典。最后,大家對所有的數據字典進行統一,保證所有項目參與者都對系統有著相同的理解和認識。具體而言,絡筒是紗線工廠的一個重要工序,絡筒機是絡筒工序的設備,絡筒可以把細紗通過絡筒設備轉化成絡筒。從絡筒這個工序上而言,它是一個比較獨立的模塊,可以獨立地進行建模,并采用一個微服務去實現它。再比如說,細紗也是紗線工廠的一個重要工序,它把粗紗通過細紗機的一步步地處理,最后生產了細紗,所以它也是一個獨立的工序,可以采用領域建模去分析它,并使用一個微服務去實現它。除了具體的功能需求外,我們的專家也提出了很多非功能性需求,比如1、邊端采集的設備數據,需要在一分鐘內上報到云端MES系統;2、物聯網平臺需要支持5萬家工廠;3、當工廠有了新需求后,云端MES系統需要在7日內完成調整上線;4、重要的數據需要采用加密處理;像這樣的需求有一百多條。當其他需求基本確定后,就剩下工資領域的需求存在問題,這部分的需求變化太大,不同的工廠有不同的工資計算方式,為了讓這部分的需求明確,我們使用了原型模型,讓前端開發了一個簡易原型,然后,讓工廠的人來使用,并反饋意見,通過多次的反饋和修改,最終確認了工資領域的需求。最后,我們編寫了需求規格說明書,為后續的開發奠定了基礎。

二、系統設計階段

我們根據需求規格說明書進行了架構設計、數據設計、用戶界面設計和過程設計。架構設計方面,由于我們對整個系統做了領域劃分,所以大家一致決定采用微服務架構的方式來開發我們的系統。具體而言,我們采用Spring Cloud微服務,使用Nacos作為服務注冊發現中心。數據設計方面,我們對各個領域做了實體分析,通過ERD識別了每個領域的實體,并對這些實體進行了數據庫層面的設計和表設計,在存儲方面,我們采用每個微服務一個數據庫的方式,保障微服務的數據獨立性。在用戶界面設計方面,我們前端團隊設計了全套的UI,包括色系、字體、布局、導航、圖片等等,保證了局面的統一,讓前端頁面具有簡單、一致性的特點。過程設計方面,我們根據需求規格說明書中的業務流程要求,進行了過程設計,保證了業務流程的正確性和高效性。最后,我們編寫了系統設計文檔。

三、程序設計和編碼階段

我們根據需求規格說明書和系統設計文檔,進行了詳細的程序設計和編碼工作。在程序設計中,需要考慮到程序的正確性、可讀性、可維護性和可擴展性。不僅如此,我們還要注意程序的性能和安全性的問題。比如,由于每個工廠的工資計算的方式都不一樣,我們在設計工資計算時,就要考慮到計算方的可擴展性,通過使用策略設計模式和腳本引擎相結合的方式,有效地提交了工資計算的可擴展性,只需要通過動態的編寫腳本就可以實現工資計算方式的擴展。在安全性方面,針對工資中的個人信息做了加密處理,確保信息的安全。在編碼階段,我們需要遵循變成規范和標準,確保代碼的正確性,并通過單元測試保證代碼質量。

總結

由于采用了瀑布模型和原型模型相結合的方式,我們有效地保證了項目的進度,同時降低了項目的風險,避免了功能的返工。最終在2023年12月,該項目正式投產并對外提供服務,至今穩定運行,各項功能和性能指標均遠遠超過了客戶的預期,得到了客戶工廠和公司領導的一致贊揚。雖然項目取得了成功,但是也遇到過一些問題,在項目初期,由于產品經理對紗線業務的不熟悉,導致很多功能的調整和返工,這打擊了開發人員的士氣,基于此,我提出兩個解決方式:1、派產品進入工廠一線,與工人交流,熟悉操作流程,徹底摸清紗線業務,保證需求質量;2、開發人員也要學習紗線業務,遇到問題反饋給產品,同時在做設計時,采用靈活的設計模式,為需求的變動留下可操作的空間。我們通過這兩個方法解決了這個問題,保證了項目的進展。通過這次實踐,我不僅學習到了軟件過程模型相關的技術,也鍛煉了自己的架構和管理能力,我意識到只有不斷地學習和實踐才能讓知識融匯于自己的技術體系之中,才能在未來的工作中游刃有余、勇擔大任,為祖國的信息化建設貢獻自己的力量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87469.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云原生Kubernetes系列 | etcd3.5集群部署和使用

云原生Kubernetes系列 | etcd3.5集群部署和使用 1. etcd集群部署2. etcd集群操作3. 新增etcd集群節點1. etcd集群部署 etcd3.5官網站點: ?? https://etcd.io/docs/v3.5/op-guide/clustering/ ?? https://etcd.io/docs/v3.5/tutorials/how-to-setup-cluster/ [root@localh…

helm安裝配置jenkins

1、k8s1.28.2、helm3.12.0,集群搭建 查看節點運行情況 kubectl get node -o wide openebs部署情況 kubectl get sc -n openebs 2、添加Jenkins Helm倉庫 helm repo add jenkins https://charts.jenkins.iohelm repo update# 查看版本 helm search repo -l jen…

Wagtail - Django 內容管理系統

文章目錄 一、關于 Wagtail1、項目概覽2、相關鏈接資源3、功能特性 二、安裝配置三、使用入門1、快速開始2、兼容性 四、其它社區與支持1、社區資源2、商業支持 開發貢獻參考項目參考文獻 一、關于 Wagtail 1、項目概覽 Wagtail 是一個基于 Django 構建的開源內容管理系統&am…

Spring AI Alibaba 來啦!!!

博客標題:Spring AI Alibaba:深度解析其優勢與阿里云生態的無縫集成 引言 隨著人工智能技術的快速發展,越來越多的企業和開發者開始關注如何將 AI 技術融入到現有的應用開發框架中。Spring AI 作為 Spring 框架在 AI 領域的擴展,…

【論文閱讀39】PINN求邊坡內時空變化的地震動響應(位移、速度、加速度)場分布

論文提出了一種基于物理信息神經網絡(PINN)和極限分析上界定理相結合的巖體邊坡地震穩定性分析框架,重點考慮了邊坡中的預存裂縫對穩定性的影響。 PINN用來求解巖質邊坡內隨時間和空間變化的地震動響應(位移、速度、加速度&#…

驅動開發系列59- 再述如何處理硬件中斷

在本文中,我們將重點討論編寫設備驅動程序時一個非常關鍵的方面:什么是硬件中斷,更重要的是,作為驅動開發者,你該如何準確地處理它們。事實上,大量的外設(也就是你可能會為其編寫驅動的設備)在需要操作系統或驅動程序立即響應時,通常會通過觸發硬件中斷的方式發出請求…

【藍牙】Linux Qt4查看已經配對的藍牙信息

在Linux系統中使用Qt4查看已配對的藍牙設備信息,可以基于DBus與BlueZ(Linux下的藍牙協議棧)進行交互。以下是一個實現方案: 1. 引入必要的庫和頭文件 確保項目中包含DBus相關的頭文件,并鏈接QtDBus模塊: …

企業客戶數據防竊指南:從法律要件到維權實操

作者:邱戈龍、曾建萍 ——上海商業秘密律師 在數字經濟時代,客戶數據已成為企業最核心的資產之一。然而,數據顯示,近三年全國商業秘密侵權案件中,涉及客戶信息的案件占比高達42%,但最終進入刑事程序的不足…

WHAT - React Native 中 Light and Dark mode 深色模式(黑暗模式)機制

文章目錄 一、Light / Dark Mode 的原理1. 操作系統層2. React Native 如何獲取?3. 樣式怎么跟著變?二、關鍵代碼示例講解代碼講解:三、自定義主題四、運行時自動更新五、核心原理一張圖組件應用例子最小示例:動態樣式按鈕的動態樣式如何封裝一套自定義主題四、如何和 Them…

[25-cv-07396、25-cv-07470]Keith代理Anderson這9張版權圖,除此之外原告還有50多個版權!賣家要小心!

Anderson 版權圖 案件號:25-cv-07396、25-cv-07470 立案時間:2025年7月2日 原告:Anderson Design Group, Inc. 代理律所:Keith 原告介紹 原告是美國的創意設計公司,成立于1993年,簡稱ADG,一…

五、代碼生成器:gen項目開發

目錄 1.新建數據庫 2.nacos中配置文件 3.gen項目配置代碼 4.前端項目 我們再項目中需要代碼生成器,這邊自己開發一個gen代碼生成器服務。 1.新建數據庫 CREATE TABLE `gen_table` (`table_id` bigint NOT NULL AUTO_INCREMENT COMMENT 編號,`table_name` varchar(200) DEF…

UI前端大數據處理安全性保障:數據加密與隱私保護策略

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 一、引言:大數據時代前端安全的核心挑戰 在數據驅動業務發展的今天,U…

基于 alpine 構建 .net 的基礎鏡像

準備基礎鏡像 alpine:3.22 完整的 Dockerfile 如下: # 使用官方的 Alpine 3.22 鏡像作為基礎鏡像 FROM --platform$TARGETPLATFORM alpine:3.22 AS builder# 設置環境變量 ENV DEBIAN_FRONTENDnoninteractive# 創建目錄結構 WORKDIR /app# 備份原始源文件并更換為…

Blob分析及形態學分析

目錄 Blob分析的基本思想: Blob分析主要流程: Blob分析 分割: Binary Threshold 分割: Histogram 分割: 動態閾值 全局閾值與動態局部閾值的比較 形態學處理 連通區域 connetion 形態學算子 特征提取 提取特征 常用相關算子 區域特征&#…

中小河流雨水情監測預報系統解決方案

一、方案概述 中小河流在防洪減災體系中地位關鍵,但由于其數量眾多、分布廣泛,監測預報基礎相對薄弱,易引發洪水災害,威脅沿岸居民生命財產安全。本系統旨在構建完善的中小河流雨水情監測預報體系,提升防洪減災能力。實…

Abase和ByteKV存儲方案對比

Abase 和 ByteKV 是字節跳動內部自研的兩款分布式 KV 存儲系統,雖然都服務于大規模在線業務,但在設計目標、架構模型、適用場景等方面存在顯著差異。以下是核心區別的詳細分析: 🔧 ?1. 設計目標與一致性模型? ?Abase?&#x…

JSON的縮進格式方式和緊湊格式方式

將對象轉化為json格式字符串在以縮進的方式顯示 HxParamMsg hxCommMsg new HxParamMsg() {name "Tom",age 25 }; string json JsonConvert.SerializeObject(hxCommMsg); var parsed JToken.Parse(json); string data parsed.ToString(Formatting.Indented); // …

設計模式篇:靈活多變的策略模式

引言:從現實世界到代碼世界的面向對象在商業策略制定中,企業會根據市場環境選擇不同的競爭策略;在軍事行動中,指揮官會根據敵情選擇不同的戰術;在游戲對戰中,玩家會根據局勢調整作戰方式。這種根據情境選擇…

Bitvisse SSH Client 安裝配置文檔

一、軟件功能介紹? Bitvisse SSH Client 是一款功能強大的 SSH 客戶端軟件,具備以下顯著特點:? 豐富的代理隧道協議支持:支持 socks4、socks4a、socks5 和 http 等多種連接代理隧道協議,為網絡連接提供多樣選擇。?便捷的應用…

DataGear 5.4.1 發布,數據可視化分析平臺

DataGear 數據可視化分析平臺 5.4.1 發布,BUG修復,具體更新內容如下: 修復:修復SQL數據集使用預編譯語法后SQL關鍵字防注入功能不起作用的BUG;修復:修復內置圖表選項disableSetting在圖表展示頁不起作用的…