刚接触开发时,尽管就已经明白,瀑布模型并不是一个很实际的模型,但心中还是有一种向往:根据需求建立软件模型,搭出一个框架出来,然后让开发人员添砖加瓦,最终形成一幢漂漂亮亮的房子出来。
  但实际的接触中,才发现,软件开发实际是一场恶梦,根据80/20原则,我们有80%的精力都花在客户实际上重要而又并不是很重要的20%的需求上,比如一些提供便利性的操作,让人非常头痛,也没有一个很好的模式能够解决,无论是对象复用还是代码生成都做过十分深入的研究,但最终发现,我们仍然要不断地调整调整再调整。
  对于我们的团队来说,软件开发中,有两个浪费时间的修改:一是UI界面,二是数据访问,两者大量的人力物力。业务层次因为有专门的业务分析专家与良好的建模人员,实际上,基本业务上的改变,对我们来说,并不会有太大的影响。但可恶的是,业务上的改变,往往会追加一些新的字段,引起数据访问与UI界面的变化,造成自上而下修改。
  实质上,罪恶之源还是业务变化。
  我们曾经追寻O/R Mapping来减轻数据访问的开发负担,但效果并不理想,因为.NET下并没有一个十分成熟的O/R Mapping组件,然后又再次追寻使用代码生成器,甚至专门成立了一个小组研究代码生成器,但效果十分不理想,因为现实变化因素实在是太多了,代码生成器很难做到周全,不过,在做了多少算多少的基础上,仍然提高了不少的效率。
  我一直很厌恶:做完需求就作数据库的分析,然后围绕数据库进行UI开发。也许,这是一种有效的形式,但可惜的是,那么多年来,总有一种诱惑让我不要这样去做,事实也告诉我们,这样做的结果有时很严重的。
  软件一开始的需求建立,最原始的驱动力来自于业务分析人员给出的需求,在需求的描述中,领域的走查是非常重要的。项目一开始,与用户的需求否到位有很大的关系,当然,这不是全部,毕竟不能把球都踢给做需求的,很多业务分析人员,对软件开发并不能哆很好地适应,也不能给出能够使用的模型。
  团队中,最可怕的事情就在于团队的整体素质出现水桶效应,很多团队让技术并不是很好的人去做测试代码,我觉得这是一种旋涡,因为一个良好的开发人员本身应该会对所从事的开发项目较为熟悉,对于模型的验证与代码复审都有良好的经验,他们把握测试关,肯定会做得历非常好。但是,总不能把好一点的人员都分配到测试组里吧?

转载于:https://www.cnblogs.com/William_Fire/articles/102213.html

敏捷、TDD(测试驱动开发)、OO--前奏相关推荐

  1. TDD 测试驱动开发与精益

    1「引子」 2000年的时候,开始学软件工程,听到极限编程 (eXtreme Programming) 里面强调要测试驱动开发TDD (Test Driven Development). 后面在做培训 ...

  2. Java重构与TDD测试驱动开发实际案例一-陈勇-专题视频课程

    Java重构与TDD测试驱动开发实际案例一-2117人已学习 课程介绍         本课程将高深的重构与TDD理论埋藏在一个实际案例中,深入浅出地演示了重构与TDD的完整步骤. 在这个真实的案例中 ...

  3. 谈谈个人对 TDD (测试驱动开发) 的理解

    文章目录 介绍 我心中的 TDD 如何做 Tasking 举个例子 - Tasking 纵向拆分 Story 背景 Story -- 粗略版 Story -- 清晰版 Story -- 扩充 Task ...

  4. tdd测试驱动开发课程介绍_测试驱动开发的实用介绍

    tdd测试驱动开发课程介绍 by Luca Piccinelli 通过卢卡·皮奇内利 测试驱动开发很难! 这是不为人知的事实. (Test Driven Development is hard! Th ...

  5. TDD 测试驱动开发工具、框架、快捷键和测试覆盖率

    文章目录 TDD 测试驱动开发工具.框架.快捷键和测试覆盖率 TDD 测试驱动开发工具与框架 资源链接 IntellijIdea 快捷键 Intellij 中查看测试覆盖率 Intellij 的 Li ...

  6. TDD测试驱动开发学习心得

    TDD测试驱动开发学习心得 1:一些名词 TDD:Test-Driven Development 测试驱动开发 BDD:Behavior Driven Development 行为驱动开发 黑盒测试: ...

  7. TDD测试驱动开发的基础

    ★ 如果您需要软件并且需要快速,那么测试驱动开发(TDD)可能是解决方案.TDD致力于快速将软件从计算机推向市场,是当今顶级软件开发和软件测试公司正在使用的最有效方法之一. " 什么是测试驱 ...

  8. TDD测试驱动开发的基础是什么?

    目录 1.什么是测试驱动开发? 2.TDD是如何发明的? 3.TDD与传统测试之间的差异 4.测试驱动开发的好处 5.测试驱动开发的缺点 6.您应该在软件开发中使用测试驱动的方法吗? 1.什么是测试驱 ...

  9. 【架构 Flutter实践 Clean架构 TDD测试驱动开发---1.0】

    ----------- 2022-11-12 补充 ----------- 最近在开发中尝试用了clean架构,感觉就是 麻烦...太多模板代码,很容易过度开发. 我认为了解这些理念是很重要的,但应该 ...

  10. TDD测试驱动开发入门实践

    最近和团队同学们分享了测试驱动开发实践,把分享的内容同步在博客上,主要分为三个方面,简单介绍软件测试的发展历程,为什么需要使用TDD,TDD的在编码中的实践. 一,软件测试的发展历程 调试为主:  怎 ...

最新文章

  1. 六个最佳的软件工程实践(持续的质量验证、变更管理)
  2. python做电脑软件-PC端数据下载软件开发(Python)
  3. java arraylist 函数_使用Java-8中的函数ArrayList
  4. JavaScript中getBoundingClientRect()方法详解
  5. 用设计模式去掉没必要的状态变量 —— 状态模式
  6. SAP CRM One Order header数据库表几个和时间戳相关的字段
  7. stata中心化处理_带有stata第2部分自定义配色方案的covid 19可视化
  8. 三层架构与设计模式思想部署企业级数据库业务系统开发
  9. go excel换行符替换_微软Excel与WPS Excel哪个好玩?
  10. chrome使用脚本修改组策略_允许Chrome安装第三方网站的脚本以及扩展的方法
  11. u盘安装centos7.0
  12. 12满秩分解与奇异值分解(1)
  13. 手持式频谱仪帮助解决链路故障
  14. 微信表白神秘代码!快发给ta!(学习资料)
  15. 蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制
  16. 蒋鑫鸿:9.7国际黄金、纸白银行情走势分析、原油操作建议
  17. Android 读取短信内容(模拟器)
  18. Python 条件语句
  19. 请将文件MP_verify_N8no8dpNO9n7wuBZ.txt上传至XXX指向的web服务器(或虚拟主机)的目录
  20. Nginx proxy反向代理 缓存处理流程

热门文章

  1. Linux工作笔记026---Centos7.3 yum提示Another app is currently holding the yum lock; waiting for it to exit.
  2. SpringCloud学习笔记024---SpringBoot中使用大部分公用的配置记录
  3. 二叉树前序中序,后序中序,公共最近祖先的实现
  4. 模态对话框与非模态对话框的区别
  5. 《算法导论》之 Problem 5.1-3(随机函数发生器的设计)
  6. MSG_NOSIGNAL
  7. ucc编译器(语义分析)
  8. 10天智能锁项目实战第1天(了解单片机STM32F401RET6和C语言基础)
  9. eve星战前夜登录提示服务器维护中,EVE星战前夜进不去怎么办 游戏进不去问题解决方法...
  10. android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法