论软件开发模型及运用

摘要
我所在的单位是国内某互联网科技公司,2021年,我司决定开发一站式数据研发平台,我荣幸的担任本次系统开发的系统架构师,主要负责整个系统架构设计工作。该系统既要满足于数据仓库建设和管理,又要满足于数据处理和数据分析、数据挖掘、数据可视化、实时数据流计算等工作。本文以一站式数据研发平台的建设为例,先介绍几种常见的软件开发模型的特点及其适用场景,然后介绍选择螺旋模型作为软件开发模型的原因,并且详细介绍螺旋模型在本项目中各阶段所做的工作。实践证明,这种软件开发模型的选择降低了复杂项目的开发成本和项目风险,显著提高看团队的开发效率。目前系统已经成功运行了一年多,为公司带来了巨大的业务价值。
2021年3月,我荣幸的担任我司一站式数据研发平台的系统架构师,主要负责该项目的需求分析和整个系统架构设计工作。该系统主要用于公司的大数据研发的工作,为公司的业务系统、决策支持系统以及算法模型提供高质量的数据支撑,其主要功能包括数据仓库建设和管理、数据处理和数据分析平台、数据挖掘、数据可视化、实时数据流计算等。本文以一站式数据研发平台为例,介绍项目的软件开发模型的选择及运用。在介绍之前,先介绍一下主流的软件开发模型。

当前主流的软件开发模型有,瀑布模型、演化模型、螺旋模型、V模型、敏捷开发模型等。瀑布模型是一种严格按照软件生命周期的固定顺序进行软件开发的模型,上一个阶段完成了才能进入下一个阶段,瀑布模型适用于需求明确且很少有变更的项目。演化模型是先开发一个较小的需求原型,然后逐步演化成最终的软件产品。演化模型适用于需求不是很明确的项目,且项目的完善周期较长。螺旋模型是软件工程中一种迭代式和循序渐进的开发模型,它结合了瀑布模型的线性流程和原型模型的灵活性,通过不断迭代的方式逐步完善软件系统,并且在软件生命周期中加入了风险分析,适用于项目规格庞大、复杂以及高风险的项目。V模型,V模型区别于其他模型是将测试过程提前了,便于在开发的过程中测试发现问题,使得开发过程更加可控和可预测,尽早发现问题并解决问题。V模型适用于需要高质量和高可靠性的项目。敏捷方法是一种以人为核心、迭代、循序渐进的开发方法,适用于小规模软件和小团队开发。由于本项目的功能需求众多且需求相对明确,项目比较复杂且项目的规模较大,并且存在系统风险、数据风险、权限风险等,故选择螺旋模型作为软件开发模型。

螺旋模型的基本原理是通过多个迭代的循环来开发软件系统,每个迭代周期包括四个主要阶段:1、目标设定:确定项目目标、约束条件和风险,制定开发计划。在这个阶段,定义关键需求、资源分配和开发时间表。2、风险分析:评估和分析项目中可能出现的风险和问题。在这个阶段,识别潜在的问题,进行风险管理和可行性分析。3、开发和有效性验证:在这个阶段,进行软件系统的设计、编码和测试。采用迭代的方式,每个迭代周期内集中于某个特定的功能或模块,并进行详细设计、编码和单元测试。4、评审:在每个迭代周期结束后,进行评估和回顾。包括对软件系统的功能、质量、进度和成本进行评估,并确定下一个迭代周期的计划。以下为螺旋模型的四个阶段在项目中的运用。

目标设定,在目标设定阶段,需要获取到公司对于数据研发的需求并确定目标,通过和数据研发同事及领导们的充分沟通,明确项目的目标及风险,将需求按照功能模块和优先级进行划分,制定完善的开发计划以及迭代周期。由于项目中的各个功能模块相对独立,在架构风格选择上选择独立构件的架构风格,将一站式数据研发平台分为以下几个子模块,每个模块对应一个构件,分别是数仓管理模块、ETL模块(数据抽取加载转换模块)、数据研发模块、大数据流计算模块、数据可视化模块。数仓管理模块主要是对各种不同形式的数据以及权限进行管理,包括结构化数据存储的Hive表、HBASE表等,以及文件服务器中的二进制文件进行管理等。ETL模块主要是将不同数据来源的数据同步到数据仓库中,支持MySQL、Oracle、mongoDB等主流的数据库的数据同步。数据研发模块主要是使用HiveSQL对数据表的相关操作,包括数据清洗、数据分析、数据挖掘等。大数据流计算模块是以Flink为流计算引擎开发的流计算模块。数据可视化模块是以开源的DataEase框架搭建的企业数据可视化平台。
风险分析,在风险分析阶段,主要是对系统可能存在的风险进行分析,其中包括系统风险分析、物理资源风险分析、数据安全分析、权限安全分析。系统风险分析是分析系统可能存在的安全漏洞,例如依赖了含有安全隐患的jar包、SQL注入攻击等。物理资源风险分析是对物理服务器进行评估分析,由于数据研发平台是需要海量的存储资源和计算资源的平台,公司现有服务器资源是否能够支撑起平台的建设和运行。数据安全分析是为了防止数据泄露、数据篡改、数据一致性、敏感数据数据脱敏等安全风险分析。权限安全分析是对数据进行访问控制,公司机密数据/用户敏感数据只针对有权限的人开放,数据使用方需要申请数据表权限并且会对其进行数据查看审计,避免出现数据泄露以及侵犯用户数据隐私的情况。

开发和有效性验证,在开发和有效性验证阶段进行系统的设计、编码和测试。由于系统的各个模块相对独立,因此在开发过程中采用多个小组每个小组3-5人并行开发的方式,以模块为维度建立螺旋模型开发,即单个模块为一整个螺旋模型开发模式,开发小组仅对当前负责的模块内的功能进行详细的设计和开发,提高开发效率的同时,也降低了协作开发带来的风险,这种开发模式在整个项目的推进过程中取得了非常不错的效果。同时,软件测试也是不可忽略的一环,我们在测试环节也做了充分的工作,在开发过程中需要写单元测试进行代码行覆盖和代码分支覆盖,在单元测试和集成测试通过率都为100%才交付给质量同学进行功能测试。除此之外功能上线后还会对功能进行压力测试和性能测试等。
评审,在评审阶段,每个模块的迭代周期结束后,项目经理、产品经理以及开发、质量会对整个迭代周期进行评估和回顾以及整个项目的功能、项目进度、项目成本进行评估。以及确定下一个迭代周期的计划等。

整个项目耗时1年完成,于2022年3月投入生产,稳定运行至今,实践证明,这种软件开发模型的选择降低了复杂项目的开发成本和项目风险,显著提高看团队的开发效率。该系统获得了数据研发、算法同事的一致好评,并且基于业务增长的数据可视化报表等数据和以数据支撑的决策支持系统为公司高管的企业决策起到了关键的作用。但同时系统也存在一定的不足。例如在数据研发阶段,有大量的定时数据任务产生数据报表等,这些数据任务比较耗费计算资源,偶尔会发生大的数据任务占用资源导致其他数据任务因获取不到资源延迟执行或者机器宕机的情况,因此需要对数据任务的资源占用进行约束,并且实现资源弹性扩缩容,减少此类情况的发生。

作者

Ryen Xiang

发布于

2026-01-31

更新于

2025-09-21

许可协议


网络回响

评论