- •Основы программной инженерии
- •Вопрос 2.Классическая (водопадная) модель
- •Вопрос 3.Прототипирование
- •Вопрос 4.◦Инкрементные стратегии
- •Вопрос 5.Спиральная модель
- •Вопрос 6.Быстрая разработка приложений
- •Вопрос 7.Rational Unified Process (rup)
- •Вопрос 8.Экстремальное программирование
- •Вопрос 9.Scrum
- •Вопрос 10.Управление требованиями
- •Вопрос 11.Разработка требований
- •Вопрос 12 и 13.Документирование и организация требований
- •Вопрос 14.Управление изменениями
- •Вопрос 15.Политика управления изменениями
- •Вопрос 16
- •Вопрос 17.Роли
- •Вопрос 17.Роли в процессе разработки программных проектов
- •Вопрос 18.Программные проекты
- •Вопрос 19 и 20. Изменение проекта
- •Управление рисками в программных проектах
- •Вопрос 24.Идентификация риска
- •Вопрос 25.Планирование управления риском
- •Система управления дефектами
- •Вопрос 21.Дефект – обнаруженная в процессе разработки, тестирования или эксплуатации ошибка в разрабатываемом приложении
- •Вопрос 22.Жизненный цикл дефекта
- •Вопрос 23.Нотификация в системе управления дефектами
- •Контроль версий в программных проектах
- •Вопрос 27.Общий доступ к файлам
- •Вопрос 28.Системы контроля
- •Сборка и выпуск программных проектов
- •Вопрос 29.Сборка (building) программного проекта– набор правил и процедур, направленный на получение исполняемой программы
- •Вопрос 30.Окружение для сборки
- •Вопрос 31.Непрерывная интеграция
- •Вопрос 32.Качество программного обеспечения
- •Вопрос 33.
- •Вопрос 34.Метрики программного обеспечения
- •Вопрос 35.Аудит программного кода
- •Обеспечение качества программных систем
- •Вопрос 36.Методы, направленные на проектирование качественного по
- •Вопрос 37.Метод проверки моделей
- •Вопрос 38.Статистический анализ
Вопрос 8.Экстремальное программирование
Основные действия: ◦Кодирование ◦Тестирование ◦Выслушивание заказчика ◦Проектирование
Динамика определяется: ◦Непрерывностью связи с заказчиком ◦Простотой – выбирается простейшее решение ◦Быстрой обратной связью ◦Профилактика проблем
Методы
1.Planning game (Игра в планирование)
Заказчик:◦Объем работ ◦Приоритет ◦Композиция версий ◦Сроки выпуска версий
Разработчик: ◦Временные оценки ◦Последствия ◦Процесс ◦Подробный график работ
2.Small releases (Небольшие версии)
Быстрый запуск простой системы
Версия маленькая, насколько это возможно
Версия должна быть завершенной
Обычно выпуск версии 1 раз в 2 недели
3.Metaphor (Метафора)
Глобальное «видение» проекта, понятное всем
«Замена» большой архитектуры
В данном контексте – основная идея проекта, сведения об архитектуре
4.Simple design (Простой дизайн)
Правильный дизайн:
Выполняются все тесты
Нет дублирующей логики
Выражаются все важные идеи
Минимальное число классов и методов
Добавляется в дизайн то, что нужно, только тогда, когда нужно
5.Testing (Тестирование)
Для любой возможности существуют автоматические тесты
Модульные тесты – разработчики
Функциональные тесты – заказчики
Репозиторий тестов постоянно увеличивается
Код разрабатывается вместе с тестами (или после тестов)
6.Refactoring (Рефакторинг)
Изменение программы для упрощения добавления новой возможности
Изменение программы после добавления новой функциональности
Программы до и после рефакторинга функционально эквивалентны
7.Pair programming (Парное программирование)
Разработчики работают парами
Партнер с клавиатурой и мышью думает о реализации
Партнер без клавиатуры и мыши думает стратегически:
◦Сработает ли данный подход?
◦Какие еще тесты нужно разработать?
Состав пар меняется динамически
Эффективность ПП очень высокая
8.Collective ownership (Коллективное владение)
Код – общая собственность
При необходимости код модифицируется немедленно, независимо от авторства кода
9.Continuous integration (Непрерывная интеграция)
Код интегрируется раз в несколько часов. Не реже 1-го раза в день
Интеграция нового кода заканчивается после прохождения системой всех тестов
Ответственны за интеграцию пара, которая внесла изменения
10.40-hour week (40-часовая неделя)
Сверхурочные – крайне нежелательны
Если постоянно требуется переработка – неправильно организован проект
Отпуск – обязателен
11.On-site customer (Локальный заказчик)
В составе команды – представитель заказчика
Представитель – пользователь системы
Представитель отвечает на вопросы разработчиков и расставляет мелкие приоритеты
12.Coding standards (Стандарты кодирования)
Единый стандарт кодирования
Стандарт должен способствовать коммуникациям
Стандарт должен быть добровольно воспринят командой
Вопрос 9.Scrum
Артефакты
Backlog ◦Список работ, которые необходимы выполнить
Backlog sprint ◦набор требований, которые могут быть реализованы за один этап (спринт)
Планирование
Спринт (Sprint) ◦30-тидневный (обычно) промежуток за который выполняется реализация заданной функциональности
Планирование спринта ◦Происходит в начале спринта
Scrum ◦Ежедневная встреча разработчиков
Демонстрация ◦Происходит в конце спринта
Роли
Основные ◦Владелец продукта ◦Руководитель (ScrumMaster) ◦Команда (!)
Остальные ◦Пользователи ◦Клиенты ◦Эксперты-консультанты
Заказчик определяет и периодически меняет функциональные требования
Руководитель проекта расставляет приоритеты
Формируются небольшие группы (1-6, реже до 9) человек для реализации небольших частей проекта
Формируется backlog проекта
Формируется sprint backlog для каждой группы
Выполнение sprint происходит группой автономно. Руководитель не вправе влиять на sprint
Каждая группа ежедневно выполняет схватки (scrum) (10-30 мин):
◦Что сделано каждым в предыдущий день?
◦Что будет сделано каждым в следующий день?
◦Что мешает работать или повышать производительность?
Участвовать могут все, говорить только основные участники
Задача руководителя группы – решать проблемы
По окончании спринта – встреча с руководителями и заказчиками
|
9 Классическая |
Прототирование |
Спиральная |
Инкрементная |
RAD |
RUP |
XP |
SCRUM |
Стратегия |
О |
Э |
Э |
И |
И |
И+Э |
Э |
Э |
Вид |
Пр |
Пр |
Пр |
Пр |
Пр |
Пр |
Ад |
Ад |
Команда |
1..∞ |
≤ 10 |
1..∞ |
1..∞ |
1..∞ |
1..∞ |
≤ 10 |
≤ 6(9) |
Продолжительность |
Выс |
Низк |
Выс |
Низк |
Низк |
Сред,Выс |
Низк |
Низк |
Промеж. версии |
- |
- |
+/- |
+ |
+/- |
+ |
+ |
+ |
ИС |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
