对于我们编写的代码,我们需要了解:
-我们解决的问题正确吗?
-我们的解决方案像我们想象的那样有效吗?
-我们的工作质量如何?
-我们的工作效率高吗?
把可测试性作为工具。通过设计提高代码的可测试性,可以让我们设计出高质量的代码。
可测试性包含设计有很多测量点的系统,以在不影响系统完整性的前提下检查系统的行为。
可部署是准备好将变更部署到生产环境,意味着软件是可以安全地发布到生产环境中,即使有些功能还没有准备好使用,以某种方式隐藏了。可发布是向用户发布功能,意味着某个功能的完整性和对用户的可用性。
可部署意味着软件单元必须可部署,并且必须满足在该系统的上下文中有意义的所有可发布特性:足够快、足够安全、足够有弹性、工作正常等。
可部署性在系统和架构层面是一个非常有用的工具。
可部署意味着没有更多额外的工作要做了。为了实现可部署,我们必须认真对待可部署的软件单元级别上的模块化、内聚力、关注点分离、耦合和信息隐藏。
现代软件工程的工具小抄:
-我们的软件是可部署的吗?我们可以将系统的部署自动化,以便我们能够可靠的、可重复地部署吗?
-它是可测试的吗?我们能确认它正在做我们需要它做的事情吗?
-它允许我们控制变量吗?我们能对部署和任何配置进行版本控制吗?
-在持续交付环境中工作足够快吗?我们能在合理的时间内部署它,足够快地启动运行,以便能够每天多次使用它和评估它吗?
- 如果它是一个我们需要编写代码与之建立接口的软件组织,它能让我们为代码设计维护模块化方法吗?还是它会迫使我们采用它自己的编程模型,以某种方式损害我们的设计呢?