首页 > 其他分享 >软件项目过程诊断与改进建议案例

软件项目过程诊断与改进建议案例

时间:2024-08-14 12:38:28浏览次数:10  
标签:管理 运维 案例 项目 CMMI 诊断 敏捷 软件 PMI

软件项目过程诊断与改进建议案例

项目交付过程痛点

经过几个实际项目跟进与调研,发下如下项目交付过程痛点

image

运维的痛点

image


结合敏捷软件开发、PMI项目管理知识体系和CMMI 5体系,我们可以为交付过程与运维过程的痛点提供一个全面的解决方案。以下是整合了这三种方法论的解决方案:

交付过程痛点的解决方案:

1. 需求管理
  • 采用敏捷的用户故事用例,结合PMI的项目范围管理,确保需求明确且可管理。
  • 实施规划需求评审过程,跟踪与记录改进需求过程。
  • 利用《项目范围管理》的知识,建立需求基线,确保需求收集、分析、定义和验证过程形成闭环。
  • 使用《项目沟通管理》策略,保证干系人的持续参与和反馈。
  • 利用CMMI 5的“需求开发”和“需求管理”实践,确保需求的可追溯性和变更控制。
  • 可参考《项目管理思考小记之一》,《需求变更管理》,《需求分析-PIECES框架》,《原型设计产出物中需求规则描述
  • 引入需求管理工具,如TAPD,Trello,JIRA或Asana,实现需求从提出到实现的全生命周期管理,通过迭代回顾会议持续改进需求管理
  • 采用RACI矩阵(Responsible, Accountable, Consulted, Informed)明确需求相关各方的责任和角色。

    在软件需求评审过程中,人工智能(AI)的整合在各种研究中都显示出令人鼓舞的进展。自然语言处理和机器学习等人工智能技术通过自动识别需求文档中的不一致和歧义来提高需求分析的准确性和效率。例如,通过提供智能建议和验证,人工智能可以显著减少人为错误并提高需求的整体质量 。人工智能在促进协作审查方面的作用,允许实时反馈和调整,这可以使开发过程更加敏捷。但是,挑战仍然存在,例如对全面训练数据的需求以及过度依赖人工智能系统的可能性,这可能会忽略人类细微的见解。总体而言,尽管人工智能为软件需求审查带来了巨大好处,但仔细的实施和监督对于最大限度地提高其有效性至关重要。

   需求阶段质量重中之重,决定后续其他过程质量。

2.数据库完整性

  • 遵循PMI的《项目质量管理》和CMMI 5的“数据管理”实践,确保数据库模式的完整性和一致性。可参考《项目管理中质量管理新方法
  • 敏捷数据库迁移:采用数据库版本控制工具,如Liquibase或Flyway,支持数据库模式的演进。
  • 自动化测试:编写数据完整性测试,确保外键约束得到满足。
  • 定期进行数据库完整性检查,确保外键约束得到正确实施。
  • 执行数据库设计评审会议,邀请数据库管理员、开发人员和业务分析师,QA共同参与,评审是否需要FK外键,对于业务系统需要FK
  • 利用“风险管理”和“决策分析与解决”实践,评估缺少FK带来的风险,并制定缓解措施。
  • 应用“数据管理”和“数据库设计”实践,确保数据库模式的完整性和一致性。

3.服务端参数校验

  • 通过敏捷的持续集成(CI)流程,自动化接口测试,确保参数校验的准确性。
  • 实施 防御式编程,在API开发中增加参数校验逻辑,使用单元测试验证校验逻辑。
  • 单元测试:为关键功能编写单元测试,包括参数校验逻辑。
  • 制定服务端参数校验的标准和指南,确保开发团队遵循一致的校验策略。
  • 通过代码审查确保参数校验逻辑的正确性和完整性。
  • 根据PMI的《项目质量管理》和CMMI 5的“技术解决方案”实践,强化服务端参数校验的实现。可参考《关于前端验证还是后端验证
  • 代码质量检查工具如SonarQube或ESLint

4.接口自测

  • 鼓励开发团队采用敏捷的测试驱动开发(TDD)和行为驱动开发(BDD)。
  • 自动化测试:使用Postman或Swagger等工具自动化接口测试,Rest-Assured,以简化测试用例的编写和执行
  • 结合PMI的《项目质量管理》和CMMI 5的“验证”实践,确保接口测试的全面性。
  • 将接口测试作为代码审查的一部分,确保测试用例的覆盖率和质量。

5.数据质量管理

  • 利用敏捷的持续监控和快速反馈机制,及时发现数据问题。
  • 持续集成(CI):通过CI流程自动化运行业务数据逻辑测试,及早发现数据不一致性。
  • 应用PMI的《项目风险管理》和CMMI 5的“数据管理”实践,建立数据质量保障措施。

6.运维脏数据处理

  • 采用敏捷的跨功能团队和快速响应流程,提高处理脏数据的效率。
  • 结合PMI的《项目风险管理》和CMMI 5的“过程和产品质量保证”实践,确保数据问题的及时识别和解决。

运维过程总体解决方案:

  1. 部署文档化

  2. 日志管理

    • 采用敏捷的实时监控和日志收集工具,确保所有运维活动都有日志记录。
    • 日志管理:集成ELK Stack或Graylog等日志管理系统,收集和分析运维日志。
    • 合PMI的《项目监控和控制》和CMMI 5的“测量和分析”实践,实施日志管理策略。
  3. 知识管理

    • 建立敏捷的知识共享文化,利用PMI的《项目资源管理》和CMMI 5的“知识管理”实践,促进知识的积累和传播。
    • 知识共享:建立Confluence或Wiki等知识库,鼓励团队成员记录和分享运维经验和解决方案。
    • 定期回顾:举行定期的运维回顾会议,讨论问题和改进措施。
  4. 运维操作标准化

  5. 结果记录和分析

    • 利用敏捷的回顾会议和PMI的《项目监控和控制》来记录和分析运维结果。
    • 应用CMMI 5的“性能数据管理”实践,收集和分析运维性能数据。
  6. 自动化备份

    • 实施敏捷的自动化备份策略,并定期进行备份恢复测试。
    • 自动化备份:设置定期自动备份任务,使用数据库管理工具如pg_dump或mysqldump。
    • 结合PMI的《项目风险管理》和CMMI 5的“风险管理”实践,确保备份的有效性和可靠性。
通用实践:
  • 持续改进:整合敏捷的回顾会议、PMI的过程改进和CMMI 5的优化目标设定,持续提升交付和运维过程。
  • 跨功能团队:构建包含开发、测试、运维和业务代表的跨功能团队,提高协作效率,确保团队成员具备完成需求所需的各种技能
  • 透明度:确保所有干系人都能访问到项目信息和文档,提高透明度。
  • 风险管理:综合PMI和CMMI 5的风险管理实践,全面识别、评估和缓解项目风险。
  • 质量保证:整合敏捷的测试实践、PMI的质量管理体系和CMMI 5的过程和产品质量保证,确保交付和运维质量。可参考《敏捷软件质量保证的方法与实践
  • 迭代开发:将项目分解为短周期的迭代,每个迭代结束时都有可交付的产品增量。
  • 持续交付:通过自动化构建和部署流程,实现代码的快速交付。可参考《互联网公司的持续交付
  • 反馈循环:建立快速反馈机制,从用户和利益相关者那里收集反馈,并快速整合到产品中。
  • 技术债务管理:定期识别和偿还技术债务,保持代码的可维护性。
  • 敏捷度量:使用敏捷度量,如故事点完成率、缺陷密度等,监控团队进度和效率。
通用PMI项目管理实践:
  • 项目启动:确保项目目标清晰,干系人期望已知,并达成共识。
  • 项目规划:制定详细的项目管理计划,包括范围、时间、成本、质量、资源、沟通、风险、采购和干系人管理计划。
  • 项目执行:按照项目管理计划执行项目活动,确保资源的有效分配和团队成员的协作。
  • 项目监控和控制:定期监控项目进度和绩效,及时识别偏差并采取纠正措施。
  • 项目收尾:完成所有项目活动后,正式关闭项目,包括交付产品、释放资源和记录经验教训。

软件工程实践:

持续集成/持续部署(CI/CD):
     引入CI/CD流水线工具,如Jenkins、GitLab CI或CircleCI,自动化构建、测试和部署过程。

可参考《Jenkins流水线发布实现CICD到Kubernetes》,《持续集成CI与自动化测试》,《Docker与CI持续集成/CD》,《软件研发CI/CD流水线图解
代码质量和安全:
      使用SonarQube等静态代码分析工具,持续监控代码质量和安全问题。辅助阿里P3P与SonaLint插件。

可参考《IT持续集成之质量管理》,《源代码质量对程序竞争力的重要性
文档化:
       强化文档化文化,确保所有设计决策、需求变更和关键过程都有详细记录。
反馈循环:
     建立反馈机制,从用户和运维团队收集反馈,持续改进产品和流程。

可参考《12个敏捷过程的小提示Tips
培训和教育:
     定期对团队进行技术和软技能培训,提升团队的整体能力。

可参考《软件开发的专业化》,《救火队下伪敏捷开发过程
性能监控与优化:
     使用New Relic、Datadog等工具监控应用性能,确保系统稳定运行。

可参考《服务端性能的架构设计与调优》,《微信小程序性能优化之一》,《性能测试工具》,《大型电商互联网性能优化案例


总结

      通过这种整合方法,组织可以充分利用敏捷的灵活性、PMI的项目管理框架和CMMI 5的成熟度实践,实现高效、可靠且持续优化的交付和运维过程。具体需要根据项目上下文与组织结构制定适配的范围。



今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

标签:管理,运维,案例,项目,CMMI,诊断,敏捷,软件,PMI
From: https://www.cnblogs.com/wintersun/p/18358684

相关文章

  • KingbaseES V8R3集群运维案例---sys_md5修改密码错误
    案例说明:KingbaseESV8R3集群在通过sys_md5修改SYSTEM用户密码时出现异常“invalidpasswordlengthincluster_passwdfile”。适用版本:KingbaseESV8R3一、问题现象ksql访问集群9999端口,提示“md5authenticationfailed”:kingbasecluster服务端口9999的用户认证,是通过......
  • 最新版本原生three cesium案例聚集地
    开发实时预览:http://z2586300277.github.io/three-cesium-examples/index.html开源地址github:https://github.com/z2586300277/three-cesium-examples纯原生threecesium案例由于前端得发展,three.js和cesium.js越来越被越来越多得前端接触到,由于其学习路线比较复......
  • 结构开发笔记(三):solidworks软件(二):小试牛刀,绘制一个立方体
    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141122350长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…硬件相关开发......
  • WPBT (Windows Platform Binary Table) 是一种用于在Windows启动时传递信息的结构。它
    WPBT(WindowsPlatformBinaryTable)的起源可以追溯到Windows操作系统对ACPI(AdvancedConfigurationandPowerInterface)规范的扩展需求。ACPI是一个用于管理硬件配置和电源管理的标准,广泛用于操作系统与固件之间的通信。WPBT是这种规范的一部分,专门设计用于Windows环境。......
  • 科研单位所需要的文件自动同步备份软件具有哪些特征?
    科研单位进行文件同步备份是保障数据安全、提高工作效率、符合法规要求以及实现数据共享与再利用的重要措施。文件同步备份不仅能保护科研单位的研究成果,还能提升工作协同效率,具体优势体现在:预防数据丢失:科研单位在工作中会产生大量的重要数据,包括研究成果、实验数据、专利资料等......
  • 软件行业专用术语
    01系统开发1.1高内聚/低耦合高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传......
  • UEFI Shell 的基本操作和应用场景,适合初学者了解和入门 UEFI Shell 的使用。 UEFI She
    UEFIShell是一种提供命令行接口的环境,用于与UEFI固件进行交互。UEFI(统一可扩展固件接口)是计算机启动过程中的一种固件接口,替代了传统的BIOS。UEFIShell提供了一种方式,让用户在启动操作系统之前进行系统管理和配置。主要特点命令行界面:UEFIShell提供一个类似于操作......
  • photo-sphere-viewer全景图使用案例
    1.安装photo-sphere-viewer,两种方式都可以npminstall@photo-sphere-viewer/coreyarnadd@photo-sphere-viewer/core2.项目中去引入 import{Viewer}from'photo-sphere-viewer'import*asPhotoSphereViewerfrom"photo-sphere-viewer/dist/adapters/cubema......
  • 嵌入式软件--数据结构与算法 DAY 12
    数据结构和算法是程序的核心,虽然在嵌入式应用中很少会用到,但了解认知这种思维过程是非常有必要的。一个好的程序员应该把数据结构和算法看的比代码更重要。1.数据结构是什么?定义1(宏观):数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。定义2(微观):数据结构......
  • 嵌入式软件--数据结构与算法 DAY 13
    在嵌入式中,对算法的要求不高,但顺序查找和冒泡排序是经典算法,必须掌握。1.算法定义算法是一个用于解决特定问题的有限指令序列(计算机可以执行的操作)。通俗的理解就是可以解决特定问题的方法。2.时间复杂度时间复杂度不是执行完一段程序的总时间,而是描述为一个算法中基本操作......