1.6 对于嵌入式开发的益处
嵌入式软件开发面临所有“通常意义上”的软件开发的挑战。例如很难把进度计划做得好且可靠。但嵌入式软件开发也有其自身特有的更多挑战。这并不意味着嵌入式开发不能采用TDD。
嵌入式开发者最常引用的借口是嵌入式代码依赖于硬件。依赖关系对于非嵌入式代码也是个大问题。幸运的是,我们有办法来解决这些依赖问题。原则上讲,对硬件设备的依赖和对数据库的依赖没什么区别。
嵌入式开发者面临很多挑战,我们将展开讨论如何从TDD借力。嵌入式开发者不仅能收到前面讲过的那些非嵌入式开发者能享受到的好处,同时还将得到一些嵌入式特别的好处:
在硬件可用之前或者硬件很贵或者很稀少时,通过独立于硬件的方式校验产品代码,从而降低风险。
在开发环境中执行并移除bug,从而减少长时间的编译、链接和上传这样的循环的次数。
对于在目标硬件中既难发现又难修改的问题,可以减少调试的时间。
通过在测试中模型化硬件交互,使硬件/软件的交互彼此独立。
通过解开模块之间以及模块与硬件之间的耦合来改进软件设计。可测试的代码首先必须是模块化的。
本书的第一部分将重点帮助你开始进行TDD。在接下来两章的一个TDD编程示例之后,我们将在第5章中更多地讨论为嵌入式软件做TDD的技术。