系统架构设计师论文分享-论软件过程模型及应用

我的软考历程

摘要

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、开发人员也要学习纱线业务,遇到问题反馈给产品,同时在做设计时,采用灵活的设计模式,为需求的变动留下可操作的空间。我们通过这两个方法解决了这个问题,保证了项目的进展。通过这次实践,我不仅学习到了软件过程模型相关的技术,也锻炼了自己的架构和管理能力,我意识到只有不断地学习和实践才能让知识融汇于自己的技术体系之中,才能在未来的工作中游刃有余、勇担大任,为祖国的信息化建设贡献自己的力量。

相关推荐
麦兜*7 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
学习菌子2 天前
第9章:【系统架构设计师】软件工程(5.系统运行与评价)
系统架构·软件工程·软考高级·系统架构师·系统维护·系统转换·系统评价
一只码代码的章鱼12 天前
操作系统 第九章 部分
系统架构
还债大湿兄12 天前
《王者荣耀》系统架构深度技术解析
系统架构
池佳齐13 天前
【软考高级系统架构论文】论湖仓一体架构及其应用
架构·系统架构
池佳齐13 天前
【软考高级系统架构论文】论软件设计方法及其应用
系统架构
大数据张老师13 天前
自动化性能回退机制——蓝绿部署与灰度发布
运维·系统架构·自动化·ai架构
孟猛202314 天前
股票账户的管理和交易
系统架构
hwj运维之路14 天前
大数据系统架构实践(一):Zookeeper集群部署
大数据·zookeeper·系统架构