Различия между версиями 3 и 4
Версия 3 от 2011-02-27 01:18:23
Размер: 6590
Редактор: eSyr
Комментарий:
Версия 4 от 2011-02-27 02:30:28
Размер: 7661
Редактор: eSyr
Комментарий: ё
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
   . Курс предназначен для администраторов, перед которыми встала задача организации процесса совместной разработки. В идеале, рассматриваемая в курсе совокупность инструментов должна позволять решать поставленную задачу данного рода — «сделать так, чтобы программисты программировали с минимумом затрат на непроизводительную деятельность».
Строка 6: Строка 7:
   . Вообще, рассматриваемые аспекты завязаны друг с другом в практически полносвязный направленный граф. Тем не менее, авторы попытались выделить некоторую последовательность изложения, при которой будет сделано минимум ссылок вперёд.

План курса «Организационные аспекты совместной разработки»

  • Введение.
    • Зачем этот курс
      • Курс предназначен для администраторов, перед которыми встала задача организации процесса совместной разработки. В идеале, рассматриваемая в курсе совокупность инструментов должна позволять решать поставленную задачу данного рода — «сделать так, чтобы программисты программировали с минимумом затрат на непроизводительную деятельность».
    • Структура курса, почему так
      • Вообще, рассматриваемые аспекты завязаны друг с другом в практически полносвязный направленный граф. Тем не менее, авторы попытались выделить некоторую последовательность изложения, при которой будет сделано минимум ссылок вперёд.
  • VCS
    • Зачем VCS
    • Workflow/use cases и вытекающие из этого свойства
    • DVCS
    • Git как пример (D)VCS
    • Управление репозиториями
    • Практика: развёртывание gitolite

  • Аутентификация
    • Зачем аутентификация
    • Где нужна аутентификация
    • Способы аутентификации
    • LDAP
    • Практика: ?

      • Если рассмтаривать HTTP-only сервисы, можно показать на примере htpasswd/htdigest
      • Если не только их (git?) — таки да, нужен LDAP
  • Сервисы, лежащие в основе взаиодействия: HTTP, SMTP, SSH
    • Роль web-сервисов в процессе взаимодействия
    • Связка httpd2+mod_wsgi+python как пример платформы для развёртывания веб-сервисов
      • Аутентификация
      • VCS, поддерживающие работу череp HTTP (svn, что ещё?)
    • Почта как основа системы оповещения и информационного обмена в рамках совместной разработки
      • Культура использования почтовых рассылок для информационного взаимодействия
      • Использование почты в рамках VCS (git-send-email/git-am)
      • Альтернативные способы оповещения — XMPP, связь с почтой (?)
    • mailman как пример системы для организации списка рассылок
    • Удалённый доступ как инструмент совместной разработки — предоставление окружения
    • Организация выдачи окружений на примере openvz
    • Практика: развёртывание и настройка httpd2 (mod_wsgi, аутентификация)

    • Практика: развёртывание и настройка mailman

    • Практика: развёртывание и настройка выдачи доступа к openvz-окружениям

  • Организация работы с фичами и багами, ticket system, request tracking
    • Баги и фичи как важный аспект процесса разработки
    • Организация работы с багами и фичами как основополагающий аспект совместной разработки
      • Понятие тикета
      • Понятие milestone и версии
    • Trac как пример lightweight ticket system
      • Зависимости тикетов
      • Планирование выполнения
      • Оповещение
      • Связь с VCS (связанные коммиты, закрытие тикетов коммитами)
    • Практика: развёртывание Trac

    • Redmine как пример полновесной ticket system
  • Организация информационного пространства, Wiki
    • Информационное пространство как место сохранения тайного знания
    • Wiki как способ организации информационноо пространства
      • Связь с ticket system — кросслинкинг, in-place queries
    • Moin как пример wiki
    • (?) Moin2 как пример wiki, интегрирующейся с VCS
    • Практика: развёртывание moin/moin2

  • Качество кода: style guides, review, documentation
    • Качественный код как важный аспект совместной эффективной разработки
      • Единство и хорошесть стиля
      • Документированность
      • Надсинтаксические аспекты
    • Style guidelines как способ решения проблемы стиля кода
    • style checkers/formatters как способ форсирования style guidelines (indent, что ещё)
    • Doxygen как пример средства самодокументирования. Специализированные средства: sphynx (python)
    • Review кода как способ решения проблемы надсинтаксических аспектов качества кода
      • Review кода и DVCS workflow
        • git format-patch
    • Reviewboard как пример
    • Практика: настройка pre-commit хуков, проверяющих style guidelines

    • Практика: настройка post-commit хуков, применяющих style guidelines

    • Практика: настройка post-commit хуков, перегенерирующих документацию к коду

    • Практика: установка и настройка review board

  • Оформление результата: сборка, тестирование, packaging, deployment
    • Автоматизированная сборка как важный аспект совместной разработки
      • Воспроизводимость
      • Различные окружения и приспособление к ним
    • Упоминание make, autotools, cmake, scons как инструментов автоматизированной сборки
    • Тестирование — выявление регрессий, контроль качества, часть ревью, источник тикетов
      • Интеграция с DVCS workflow
      • Интеграция с ревью
    • Packaging, tar.gz-rpm-deb как примеры
    • Deploy, пример схем деплоя (см. rider vs gosuslgi)
    • Практика: развёртывание buildbot (?)

    • Практика: развёртывание сборочницы и репозитария, интеграция с buildbot, интеграция с DVCS.

LecturesCMC/ProgAdm2011/CoursePlan (последним исправлял пользователь eSyr 2011-03-21 20:36:07)