画布 1
缺陷控制
  概念
    常见问题
      什么是缺陷控制？
      缺陷控制就是Code Review吗？
      开发过程中的缺陷控制
        需求变更频繁
        团队各自为战
        无代码Review
          代码冗长无法理解
          项目合并后代码无法运行
        工期太紧
          加班改Bug
        用户的反馈差导致项目被终止
    定义
      缺陷控制在项目全生命周期旨在提高软件的质量的行为
  方法论(门派)
    基本方法
      需求分析阶段
        明确需求
        编写详细的需求文档
        对需求进行评审和验证
      自动化流程阶段
        使用版本控制系统（如Git）
        配置持续集成（CI）和持续部署（CD）工具，自动化构建、测试、部署流程；
        利用自动化测试框架编写测试用例，确保功能完整性和稳定性。
      开发阶段
        遵循编码规范和最佳实践，提高代码质量；
        采用模块化、组件化的开发方式，便于代码复用和拓展；
        使用代码审查工具和流程，确保代码质量和安全性；
        在开发过程中密切关注性能、安全和可维护性问题，及时进行优化。
      运维阶段
        监控系统运行状况，分析性能瓶颈和故障点；
        对系统进行定期维护和更新，修复已知缺陷；
        制定应急响应计划，确保在发生故障时快速恢复系统运行；
        收集用户反馈和异常日志，持续改进和优化系统。
    最佳实践
      案例分析
        小公司团队
          特点
            扁平管理
            项目外包
            业务多样简单
          问题
            无章办事
            代码优化
            代码质量
        传统团队
          特点
            二级公司
            流程冗长
            业务多样复杂
          问题
            督办意识
            工具看板
            轻重缓急
        中大型公司
          特点
            KPI驱动
            业务重复度高
            技术深入
          问题
            意识薄弱
              领导意识
              团队意识
            形同虚设
      考虑方面
        质量
          预防
            强化需求分析和设计阶段
          监测
        成本
          人工
          时间
          资源投入
        进度
      分析原因
        需求不明确？
        审查不具体？
        责任不清晰？
        测试验证不到位？
        反馈渠道不完善？
      具体方法
        需求分析和设计阶段
          与项目利益相关者充分沟通，确保需求明确、完整、可行；
          编写详细的需求文档和设计文档，包括功能需求、性能需求、安全需求等；
          对需求和设计进行评审和验证，及时发现潜在问题，减少后期缺陷的产生。
        遵循编码规范和最佳实践
          使用一致的编码风格和命名规范，提高代码可读性和可维护性；
          采用模块化、组件化的开发方式，便于代码复用和拓展；
          关注代码质量，避免使用可能导致缺陷的不安全或低效的编程技巧。
        加强测试与验证
          编写详细的测试计划和测试用例，确保对项目的全面覆盖；
          进行单元测试、集成测试、系统测试和验收测试，确保缺陷得到及时发现和修复；
          使用自动化测试工具和框架，提高测试效率和准确性；
          对修改和新增的代码进行回归测试，确保没有引入新的缺陷。
        实施代码审查和持续集成
          使用代码审查工具和流程，确保代码质量和安全性；
          配置持续集成（CI）工具，自动化构建、测试、部署流程；
          在CI过程中发现缺陷，及时修复并重新触发构建和测试。
        制定缺陷管理流程
          使用项目管理工具（如Jira、Trello等）追踪缺陷和任务，确保问题得到及时解决；
          对发现的缺陷进行分类、分级和优先级排序，合理分配资源进行修复；
          对修复的缺陷进行验证和回归测试，确保问题得到有效解决。
        收集用户反馈和持续改进
          在项目上线后，积极收集用户反馈和异常日志，发现潜在缺陷；
          对收集到的反馈进行分析和处理，根据优先级安排修复工作；
          不断优化和改进项目，提高软件质量和用户满意度
    工具(人剑合一)
      全流程控制
        teambition
        Trello
        worktile
        Jira
      编码阶段（重点）
        CICD工具
        代码Lint
        代码测试
  工作流(武林秘籍)
    质量管理
      需求阶段
        沟通并制定详细的质量管理计划，明确各个阶段的质量标准和验收标准
          形成文档
          客户确认
        识别潜在的质量风险，制定预防和应对措施；
      开发阶段
        监控和评估
          监控
            Code Review
          定期进行质量评估与验收
          记录质量问题，并调整优先级
        改进
          Lint工具
          形成文档
            后续质量提升
        规范
          运维规范
          开发规范
        测试
          编写测试用例
          自动化测试
      运维阶段
        监控
        日志
        更新迭代
          责任到人
          功能到点
          时间设限
      解决办法
        改进
        返工
        沟通
    进度管理
      需求阶段
        制定进度计划
          优先级
          分配合理的资源
        具体方法
          从下至上分析
          类比分析
          经验分析
      开发阶段
        在项目执行过程中，对各阶段的进度进行持续监控
        针对发现的进度问题，制定相应的调整措施和修复方案
        对调整和修复的结果进行跟踪和验证
      运维阶段
        进行项目总结和经验教训的提炼
          形成文档
        分析进度问题，找出根本原因
      解决办法
        赶工
        资源协调
        客户沟通
        压缩工期
    自检流程
      代码
        自检代码
        质量监控
        版本控制
        代码风格
        Snippets
      团队
        互相监督
        意识形态
        定期培训/自检
        分工明确
        协同待办
        代码Review
      项目
        制定计划
        项目经理Push
        版本控制
        协商沟通
        定期检验
        纠正措施
        备选方案
      公司
        缺陷管理软件
        公司流程
        奖惩有度
        抽样检查
        质量改进
        总结推演