我的软考历程

摘要

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在图表展示页不起作用的…