第二十九章 集成

集成是指一种软件开发行为:将一些独立的软件组合为一个完整系统。

集成方式的重要性

从周到的继承中,你能预期获得某些下列的益处:

  • 更容易诊断缺陷;
  • 缺陷更少;
  • 脚手架更少;
  • 花费更少的时间获得第一个能工作的产品;
  • 更短的整体开发进度表;
  • 更好的顾客关系;
  • 增强士气;
  • 增加项目完成的机会;
  • 更可靠地估计进度表;
  • 更准确的现状报告;
  • 改善代码的质量;
  • 较少的文档。

集成频率——阶段式集成还是增量集成

阶段式集成

它遵循下列明确的步骤:

  1. 设计、编码、测试、调试各个类。这一步称为单元开发;
  2. 将这些类组合为一个庞大的系统;
  3. 测试并调试整个系统。这称为系统瓦解。

增量集成

增量集成遵循以下步骤:

  1. 开发一个小的系统功能部件;
  2. 设计、编码、测试、调试某个类;
  3. 将这个新的类集成到系统骨架上。测试并调试骨架和新类的结合体,在进一步添加任何新类前,确保该结合体能工作。如果做完了剩余的所有工作,就回到步骤2开始重复这一过程。

增量集成的益处

  • 易于定位错误;
  • 及早在项目里取得系统级的成果;
  • 改善对进度的监控;
  • 改善客户关系;
  • 更加充分地测试系统中各个单元;
  • 能在更短的开发进度计划内建造出整个系统。

增量继承的策略

  • 自顶向下集成;
  • 自底向上集成;
  • 三明治集成;
  • 风险导向的集成;
  • 功能导向的集成;
  • T型集成;

Daily Build与冒烟测试

  • 每日构建;
  • 检查失败的build;
  • 每天进行冒烟测试;
  • 让冒烟测试与时俱进;
  • 将daily build和冒烟测试自动化;
  • 成立build小组;
  • 仅当有意义时,才将修订加入build中,但是别等太久;
  • 要求开发人员在把他的代码添加到系统之前,进行冒烟测试;
  • 为即将添加到build的代码准备一块暂存区;
  • 惩罚破话build的人;
  • 在早上发布build;
  • 即使有压力,也要进行daily build和冒烟测试。

核对表:集成

集成策略

  • [ ] 该策略是否指明了集成子系统、类、子程序时应该采用的最优顺序?
  • [ ] 集成的顺序是否与构建顺序协调,以便在适当的时候准备好供集成的类?
  • [ ] 该策略是否易于诊断缺陷?
  • [ ] 该策略是否使脚手架最少?
  • [ ] 所选的策略是否好于其他方式?
  • [ ] 组件之间的接口是否有明确定义?

daily build与冒烟测试

  • [ ] 项目是否经常build——理想情况下,每天build一次——以支持增量集成?
  • [ ] 每次build之后是否都支持冒烟测试,让你直到这个build能否工作?
  • [ ] 你是否以使build和冒烟测试自动进行?
  • [ ] 开发人员是否频繁地check in他们的代码——两次check in之间最多间隔一两天?
  • [ ] 冒烟测试是否与代码同步更新,随代码发展而发展?
  • [ ] 破坏build是汉奸的事件吗?
  • [ ] 是否在有压力的情况下,也对软件进行build和冒烟测试?

要点

  • 构建的先后次序和集成的步骤会影响设计、编码、测试各类的顺序;
  • 一个经过充分思考的集成顺序能减少测试的工作量,并使调试变得容易;
  • 增量继承有若干变型,而且——除非项目微不足道的——任何一种形式的增量集成都比阶段式集成好;
  • 针对每个特定的项目,最佳的集成方式通常是自顶向下、自底向上、风险导向及其他集成方法的某种组合;
  • daily build能减少集成问题,提升开发人员的士气,并提供非常有用的项目管理信息。

原文地址:https://www.cnblogs.com/liam-ji/p/11602397.html

时间: 2024-11-13 06:45:23

第二十九章 集成的相关文章

Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件

其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前

【WPF学习】第二十九章 元素绑定——将元素绑定到一起

原文:[WPF学习]第二十九章 元素绑定--将元素绑定到一起 数据banding的最简单情形是,源对象时WPF元素而且源属性是依赖性属性.前面章节解释过,依赖项属性具有内置的更改通知支持.因此,当在源对象中改变依赖项属性的值时,会立即更新目标对象中的绑定属性.这正是我们所需要的行为--而且不必为此构建任何额外的基础结构. 为理解如何将一个元素绑定到另一个元素,下面创建一个简单的示例.该示例窗口包含了两个控件:一个Slider控件和一个具有单行文本的TextBlock控件.如果向右拖动滑动条上的滑

第二十九章 springboot + zipkin + mysql

zipkin的数据存储可以存在4个地方: 内存(仅用于测试,数据不会持久化,zipkin-server关掉,数据就没有了) 这也是之前使用的 mysql 可能是最熟悉的方式 es Cassandra 一.代码(基于 第二十八章 springboot + zipkin(brave定制-AsyncHttpClient)) 1.pom.xml 1 <dependency> 2 <groupId>io.zipkin.brave</groupId> 3 <artifactI

奋斗吧,程序员——第二十九章 伤心桥下春波绿,疑是惊鸿照影来

手机对我们的开发板按下红外发送键,很快一张图片从屏幕上显示出来,大功告成! 虽然代码还不能发布,但是看到成果的那一刻,内心还是非常激动的. 证明现在的我已非吴下阿蒙. 可惜没人和我分享胜利的喜悦,现在已是深夜. 最近一段时间,陈曦出差跑业务去了. 我打了个哈欠,终于可以美美的睡一觉了. 记得刚开始写代码的时候,有一次我的代码把系统搞死了,嘉庆看了一眼,云淡风轻地在代码里加了个sleep(1)解决问题,我才明白原来睡眠是这么重要的事情. 不光线程要睡觉,人更要睡觉. 因为太晚了,我决定不回家,直接

我的学习之路_第二十九章_bootstrap

bootstrap 内置了html,css,js插件为一体的前端框架 响应式布局: 设计一套页面就可以使用于很多现实设备 bootstrap: 1.入门(响应式布局的容器) 1.先进入jQuery的js2.再引入bootstrap的js3.引入bootstrap的css文件4.设置视口(支持移动设备优先) <meta name="viewport" content="width=device-width,initial-scale=1"> 5.页面创建一

第二十九章:初识线程

什么是线程 线程是操作系统最小的运算调度单位,被包含在进程中,一个线程就是一个固定的 执行流程 线程的进程的关系  重点 线程不能单独存在 必须存在于进程中, 进程是一个资源单位,其包含了运行程序所需的所有资源 线程才是真正的执行单位 没有线程,进程中的资源无法被利用起来,所以一个进程至少包含一个线程,称之为主线程 当我们启动一个程序时,操作系统就会自己为这个程序创建一个主线程 线程可以由程序后期开启  ,自己开启线程称之为子线程 为什么需要线程   重点 目的只有一个就是提高效率 就像一个车间

第二十九章:数据库维护

@author: Tobin @date: 2019/11/7 18:03:17 数据库维护. ANALYZE TABLE orders; CHECK TABLE orders, orderitems; 诊断启动问题. 查看日志文件. 原文地址:https://www.cnblogs.com/zuotongbin/p/11814196.html

第二十二章 TCP/IP层的实现

                      第二十二章    TCP/IP层的实现        我比较喜欢先难后易,如果把GPU显示管理.和网络管理拿下后:我会从头整理.改写一遍APO操作系统.这样,就会形成APO操作系统的锥形.也获得了全局观.内核CPU线路.和用户CPU线路,你可以将它们看成是独立的2个32位CPU核:内核CPU主要任务是实时处理.硬件中断,256个实时线程包含了一些中断程序的后半部.用户CPU主要是动态优先级进程.线程调度,各种应用程序的运行:2个核之间是通过消息交互.句

第十九章 APO连接与网络v节点

                  第十九章   APO连接与网络v节点       在编写网络底层实现前,需要做许多的准备工作:除了修改前面的章节外,可能还需写3章:本章.文件号管理类的实现.本地内存管理类的实现.我很希望最终的网络编程能给我惊喜:IP/TCP/UDP/ICMP的实现.包括所有的网络服务器的实现(HTTP.DNS.FTP等等),能到达300行的代码量:多于300行代码量那就更好了.我会很高兴.网络编程第一层简为socket层,第二层简称为TCP层,第三层简称为IP层:以后,不再