热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

软件过程中的反模式

最近看了<软件调试修改之道>,看到最后一章<反模式>,觉得虽然有些地方太理想化了,但还是很有借鉴作用的,因此决定记录下来,期间根据自己的体验做了一些修改.1混乱的缺

最近看了<软件调试修改之道>,看到最后一章<反模式>,觉得虽然有些地方太理想化了,但还是很有借鉴作用的,因此决定记录下来,期间根据自己的体验做了一些修改.

1 混乱的缺陷优先级

既然我们优先解决最高优先级的,那么就有可能出现测试人员为了优先解决自己的缺陷而故意夸大优先级的情况

1.1 解决方案

  • 定期对缺陷进行审查,确保缺陷的优先级确实能够反映出它们真正的优先级,并以此作为对测试人员的信用评价

  • 写的越详细的描述,优先完成.(问题描述作为测试人员的成本,我们认为,越舍得花费成本的,其需求越高)

2 人员更替

经常由于预算或其他项目需求等原因而发生项目团队人员的更替. 然而人员更替往往存在交接双方旋接不上的问题.

而且若被交接人被迫要去修复交接人产生的缺陷时,也容易对士气产生影响

2.1 解决方案

  • 任何人在仔细地完成当前工作之前,不允许任何人进入下一个任务.

  • 采取自负自责的原则,谁造成了缺陷就由谁来修复它,即使他可能已经被分配到新的项目中了.

  • 做好文档的工作.

3 将软件过程分成开发和维护两个阶段,由不同的团队维护

这容易造成以下缺陷:

  • 由代码原始设计者/开发者修复缺陷实际上更加高效,而维护团队需要重新学习,降低效率

  • 若开发者不负责维护,则他就无法知道他在开发时犯了什么错误,也就无法做出改进

  • 维护团队往往得不到完整的知识来修复缺陷,因为软件很多知识都是隐性的

  • 维护团队被沦为二级团队,容易打击士气

  • 开发团队由于没有维护的压力,没有动力将软件做的尽善尽美

3.1 解决方案

从最初的构思到最终布局的整个过程乃至之后的维护都要让一个团队来完成,这样能够保持连续性,确保团队成员的工作重点与组织的工作重点紧密关联,并允许他们在软件的生产过程中学习如何维护软件.

4 救火模式

救火模式时一种行为模式,在这种模式中,面对很多关键问题,我们应接不暇地解决一个个严重问题

长期或反复地陷入救火模式会破坏代码质量和团队士气.

4.1 解决方案

如果发现自己陷入了救火模式,不妨退一步,先找出问题产生的根本原因,再去解决问题.

不要因为时间紧迫而只治标不治本,确保找出缺陷产生的真正原因并修复之. 不要将不理解的事情掩盖过去,而将之当作缺陷.

这意味着,你要承担一些短期的痛苦,以为长远打好坚实的基础.

5 重写

当面对一个麻烦的功能时,人们中有一种冲动丢弃现有的代码重新写新的代码.

从心理学的观点来看,开发新的代码比修改旧代码让人更舒服. 我们天生的乐观感是我们低估了复制旧功能所要付出的精力和时间.

然而,即使代码事实上没有很好的构建,没有很好的测试或者没有很好的记入文档,但它的大部分时间是在工作的. 这意味着,它含有与问题相关的大量知识,而这些知识不能从其他任何地方获得,除了这份源代码.

5.1 解决方案

  • 对任何重写的建议都要报怀疑d态度. 进行以此非常细致的成本/收益分析. 有时旧的代码确实太烂,但应该花些时间来确认这一点.

  • 若决定重写,为了尽可能减少风险. 试图寻找一个方法来增量地重写代码,而不是彻头彻尾地推到重来

  • 对现有的代码进行测试,并验证得到了相同的结果. 要特别小心找出现有代码能正确处理和你需要重做的边界

6 代码权限不明晰

极限编程中的一个做法就是集体代码所有权,每个团队对所有代码都负有责任. 任何人都可以在任何地方修复任何缺陷而不必与原作者沟通.

然而极限编程中集体代码有效,是因为它由很多其他的极限编程方法的支持,比如结对编程,测试优先开发以及统一的编码标准.

如果没有极限编程的那些方法支持,采取集体代码所有权就很危险,容易沦为一种情况:由于任何人都可以在任何时间修改他们想要修改的任何东西,造成责任不明确,代码来回被重构造成代码质量恶劣.

6.1 解决方案

谨慎对来集体代码所有权制,也许考虑采用一个传统的模式,让团队成员中每个人拥有一个子模块更好点.



推荐阅读
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
author-avatar
大爱与你_邂逅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有