Лист 1
Непрерывная интеграция
  Вводная
    Стройте ПО при каждом изменении
    Артефакты CI
      Разработчик
      Система контроля версий
      Сервер CI
      Сценарий построения
      Механизм обратной связи
    Средства интеграционного построения
      Компиляция исходного кода
      Интеграция БД
      Проверка
      Инспекция
      Развертывание
      Документирование
      Обратная связь
  База данных
    Автоматизируйте интеграцию базы данных
    Используйте локальное пространство базы данных
    Применяйте хранилище с контролем версий
    Сделайте DBA участником разработки
      Проверки
      Инспекции
      Развертывание
      Обратная связь и документация
    Обеспечьте возможность внесения изменений в базу данных
  Подготовка к внедрению CI
    Преимущества CI
      Снижение риска
        Быстрее выявляются дефекты
        Снижение числа предположений
        Контроль состояния проекта
      Уменьшение числа ручных пераций
        Процесс каждый раз выполняется одинакого
        Поддерживается упорядоченность
        Повторение по изменению состояния хранилища
      Построение ПО в любой момент
      Обеспечение лучшего качества
        Эффективные решения
        Отслеживание тенденций
        Сбор статистики
      Повышение доверия к програмному коду
    Что может помешать
      Увеличение дополнительных затрат на поддержку
      Слишком много изменений
      Слишком много неудачных построений
      Дополнительные издержки на аппаратные средства
      Все это будут делать разработчики
    Как добиться CI
      Идентификация
      Построение
      Совместное использование
      Непрерывность
    7 практик CI
      Передавайте код часто
        Делайте небольшие изменения
        Передавайте после решения каждой задачи
      Не передавайте сбойный код
      Ликвидируйте проблемы построения немедленно
      Пишите автоматизированные проверки
      Все проверки и инспекции должны быть пройдены
      Выполняйте закрытое построение
      Избегайте получение сбойного кода
  Снижение риска с использование CI
    Отсутствие развертываемого программного обеспечения
      На моей машине это работает
      синхронизация с базой данных
        База данных должна быть объектом разработки
      ошибочный щелчок
    позднее выявление дефектов
      регрессионная проверка
      покрытие проверками
    плохой контроль проекта
      вы получали сообщение?
      неспособность предоставить программное обеспечение
    низкокачественное программное обеспечение
      соблюдение стандартов программирования
      соответствие архитектуры
      сдвоенный код
  Построение при каждом изменении
    Автоматизируйте построения
    Выполняйте построение одной командой
    Отделяйте построение от IDE
    Централизуйте элементы программного обеспечения
    Создайте строгую структуру каталога
    Организуйте ранний сбор построения
    Осуществляйте построение для каждой среды
      Типы построения
        Закрытое построение
        Интеграционное построение
        Финальное построение
      Механизмы построения
        По требованию
        По расписанию
        Опрос изменений
        Управляемое событием
    Используйте выделенную машину для построения
      Чистая среда
      Рекомендуемые системные ресурсы
    Используйте сервер CI
    Выполняйте интеграционное построение вручную
    Выполняйте быстрое построение
      Сбор показателей построения
        Время компиляции
        Количество строк кода
        Количество и типы инспекций
        Среднее время создания проверок
        Время проверки
        Соотношение успешных и неуспешных построений
        Время развертывания
        Время построения БД
        Системные ресурсы и их использование
        Загрузка системы контроля версий
      Анализ
      Подготовка усовершенствований
        Выделенная машина для интеграционных построений
        Увеличение аппаратных мощностей
        Повышение производительности проверки
        Рационализация интеграционного построения
        Оптимизация инфрастркутуры
        Оптимизация процесса построения
        Раздельное построение компонентов
        Повышение производительности инспекции
        Распределенное интеграционное построение
      По второму кругу
    Выполняйте поэтапное построение
      Исследование инфраструктуры
      Оптимизация процесса построения
      Раздельное построение компонентов
      Повышение производительности инспекции
      Осуществление распределенного интеграционного построения
      Переоценка
  Непрерывная проверка
    Автоматизируй проверки модуля (unit)
      Изолированные проверки
      mock-объекты
    Автоматизируй проверки компонента (component)
      Проверка интеграции
      Связь с внешними объектами
    Автоматизируйте проверки системы (system)
    Автоматизируйте проверки функции (functional)
      Приемочные тесты
    Категоризируйте проверки разработчика
      по типам
        function
        system
        component
        unit
      схема именования
      стратегия каталога
    Выполняйте быстрые проверки сначала
      Модульные
      Компонентные
      Системные
    пишите проверки для дефектов
      Для снижения числа
      Разработка через устранение (defect-driven)
    Сделайте проверки компонента воспроизводимыми
      Моск
    Ограничьте проверку одним методом assert
      Одна проверка - один assert
  Непрерывная инспекция
    Снижайте сложность кода
      Цикломатическая сложность
      Глубина методов
    Осуществляйте обзоры кода непрерывно
      Центростремительная связь
      Центробежная связь
      Коэффициент разветвления по входу
      Коэффициент разветвления по выходу
      Неустойчивость
        Центростремительная связь
        Центробежная связь
    Поддерживайте организационные стандарты при проверке кода
    Снижайте количество двойного кода
      База данных
      Сценарии построения
      Сам код
      файлы данных
    Оценивайте покрытие кода
      операторное покрытие
      condition
      decision
    Регулярно оценивайте качество кода
  Непрерывное развертывание
    Выпускайте работоспособное ПО в любое время и в любом месте
    Маркируйте элементы в хранилище
      Теги
      Версии
    Поддерживайте чистоту среды
      ОС
      Настройки ОС
      Стороннее ПО и его настройки
      Настройки сервера
      Инструменты сторонних производителей
      СПО
    Маркируйте каждое построение
      Ветки
      Теги
    Запускайте все проверки
    Создавайте отчеты обратной связи построения
    Позаботьтесь о возможности отката выпуска
  Непрерывная обратная связь
    4 П
      Правильная информация
        Понять что не так?
        Понять где не так?
      Правильным людям
        Руководитель проекта
        Архитектор
        Разработчик
        Тестировщик
      Правильное время
      Правильный способ
        Е-почта
        SMS
        Звуки
        Панель винды
  Оценка инструментальных средств для CI
    Функциональные возхможности
      Инструменты построения
        Компиляция кода
        Упаковка компонентов
        Выполнение программы
        Манипулирование файлами
        Дополнительные возможности
          Выполнение проверок разработчика
          Интеграция инструментов контроля версий
          Создание документации
          Функциональные возможности развертывания
          Анализ качества кода
          Расширяемость
          Многоплатформенное построение
          Ускоренное построение
      Планирование построения
        Запуск построения
        Событийное управление
        Интеграция с системой контроля версий
        Интеграция инструмента построения
        Обратная связь
        Маркировка построения
        Дополнительные возможности
          Зависимости между проектами
          Пользовательский интерфейс
          Публикация артефактов
          Защита
    Совместимость со средой
    Надежность
    Долговечность
    Применимость
http://en.wikipedia.org/wiki/Fagan_inspection