Список тем для подготовки к экзамену по курсу «Организационные аспекты совместной разработки»
Вводная часть
- Зачем нужна инфраструктура проекту совместной разработки ПО?
- Зачем нужен администратор инфраструктуре проекта совместной разработки ПО?
VCS
- Назначение VCS
- Основные понятия VCS: commit, diff, branch, merge.
- DVCS. Основные отличия и вытекающие из этого следствия.
- Annotate — что такое, зачем нужно.
- Bisect — что такое, зачем нужно.
- Hooks. Что такое, зачем нужны. Почему важны именно для администратора.
- Зачем VCS системному администратору, каковы актуальные для администратора VCS use cases.
- Git. Структура репозитория.
- Возможности Git: staging area, возможности по history rewriting (cherry-pick, rebase).
- Workflow при работе с DVCS на уровне локального репозитория (взаимодействие между remote repo, local repo, index, working dir).
- Workflow при работе с DVCS при взаимодействии репозиториев. Пример организации workflow на базе DVCS.
- Управление репозиториями: в чём суть, зачем нужно, особенности реализации. Примеры инструментов, позволяющих организовать управление репозиториями.
Extra: теория патчей. Основные положения, почему важно.
Сетевые сервисы
- Роль сетевых сервисов.
- Зачем нужны сетевые сервисы, если есть (D)VCS?
- Стек протоколов, связанный с организацией сетевого взаимодействия.
Extra: Представление сетевых сервисов как текстовых фильтров. Сетевой метасервер (x)inetd.
- Web-приложения. Зачем нужны, какой программный и протокольный стек с ними связан. Протоколы взаимодействия с web-приложениями.
- Обмен информацией: почта, IM. Списки рассылки: зачем нужны, workflow использования (git format-patch, git am).
Безопасность
- Вопросы, связанные с безопасностью, актуальные при организации инфраструктуры поддержки совместной разработки ПО.
Extra: Пример организации площадки инфраструктуры поддержки совместной разработки ПО с точки зрения безопасности.
Организация процесса работы над проектом
- Проблема (ticket, issue). Что такое, зачем понадобилось это понятие и эта сущность. Связь проблем и коммитов.
- Рубеж (milestone), версия. Что такое, похожесть и различие первого и второго.
- Свойства проблем: зависимости, привязка ко времени. Встречающиеся атрибуты проблем.
- Workflow при работе с проблемами, жизненный цикл проблем.
- Возможности автоматизации, связанные с проблемами. Интеграция с репозиторием, с системой оповещения.
- Варианты организации системы учёта проблем (ticket/issue tracking system).
Extra: особенности установки и конфигурирования trac, связанные с организацией заданного workflow.
Информационное пространство
- Понятие информационного пространства. Зачем оно нужно.
- Основные свойства и критерии, предъявляеммые к информационному пространству. Варианты организации информационного пространства.
- Вики в качестве основы для организации информационного пространства. Концепция, почему она подходит на данную роль.
- Недостатки, связанные с использованием вики в качестве информационного пространства..
- Точки и варианты автоматизации и интеграции вики с остальной инфраструктурой (VCS, ticket system).
Качество кода
- Что входит в понятие «качество кода». Почему качество кода важно.
- Формализуемые аспекты и критерии качества кода.
- Средства проверки и навязывания стиля кода (на уровне инструментов программистов, на уровне VCS).
- Возможности по автоматизации, связанные с поддержанием качества кода. Вопросы адекватности автоматизации.
- Документирование. Что, зачем, в каких объёмах.
- Варианты реализации поддержки и автоматизации системы документирования.
- Code review как средство проверки неформальных аспектов code quality.
- Виды code review.
- Способы организации code review. Инструменты для организации code review.
Оформление результата
- Тестирование. В чём суть, отличие от верификации. Задача системного администратора в рамках тестирования.
- Виды тестов. Возможная автоматизация.
- Инструменты для организации процесса тестирования.
- Сборка. Воспроизводимость, тестирование.
- Пакетирование. Зачем нужно, варианты workflow.
- Deployment. Автоматизация, возможные проблемы и способы их предотвращения.
- Вопросы безопасности относительно тестирования, сборки, пакетирования и развёртывания.
Более другие вопросы
- Организация рабочего места: подходу к решению.
- Виртуализация и изолированные окружения. Области применения.
- Удалённые сервисы vs локально развёрнутые.