Разработка веб-сервисов Беседа 10: Веб-сервис как изменяющийся продукт
Разработкавеб-сервисов
Беседа 10: Веб-сервис как изменяющийся продукт
План занятия
Длительное и оперативное планирование
Развитие основного продукта
Оперативная работа и поддержка
Внутренний заказ
Исправление ошибок и технический долг
Рефакторинг
2
Планирование
Цель планирования —
эффективное использование ресурсов
3
Планирование
Негативные индикаторы
Одни сотрудники работают, другие нет
Что делать, если делать нечего?
Непонимание, когда получить решение задачи
4
Планирование
Виды планирования
Длительное (стратегическое)
Оперативное (тактическое)
5
Планирование
Длительное планирование
Составные части — мини-проекты
Временной план
Годовой план
Квартальный план
План на месяц
6
Планирование
Оперативное планирование
Составные части — задачи
Итерации
Планирование
Контроль
Анализ
7
Планирование
Распределение объема задач
Распределение 60/20/20
Продуктовые задачи — 60%
Оперативная работа — 20%
Инфраструктурные задачи — 20%
8
Планирование
Цели распределения и классификации
Учет необходимых ресурсов
Переключение сотрудников
Подключение дополнительных ресурсов
9
Планирование
Распределение продуктовых задач
Простые случаи:
Фронтенд
Бэк-офис
Сложные случаи
Фронтенд
Агрегация
…
Бэк-офис
10
Планирование
Распределение инфраструктурных задач
Инструменты для оперативной работы
Мониторинг состояния проекта
Сопровождение кода
Документирование
Рефакторинг
11
Планирование
Распределение задач
12
Планирование
План задач. Виды бэклогов
Продуктовый — развитие продукта
Оперативный — решение задач поддержки и эксплуатации
Технический
13
Планирование
План задач. Приоритеты
Сортировка задач в строгом порядке
Группы приоритетов
Распределение приоритетов
14
Планирование
План задач. Приоритеты
15
Планирование
План задач. Принципы формирования
Как задача попадает в план?
Как задача меняет приоритет?
16
Планирование
План задач. Принципы формирования итерации
Забивать целиком
Забивать важными задачами + дать правила выбора
17
Планирование
План задач. Итерация
Порядок решения задач
Долги
Важные задачи (и продукт, и инфраструктура)
Учет времени
Анализ выполнения
18
Рефакторинг
Рефакторинг – процесс изменения системы, когда
Не меняется внешнее поведение кода
улучшается его внутренняя структура
Цель рефакторинга – упростить понимание и модификацию программного обеспечения
19
Рефакторинг
Откуда возникает потребность в рефакторинге?
Всё не предусмотришь
Неудачное проектирование или кодирование
Рост объема кода
Новые парадигмы, синтаксические принципы
Борьба со сложностью
20
Рефакторинг
Возможные точки старта
добавление новой функции
разбор кода
21
Рефакторинг
Плюсы рефакторинга
улучшает структуру ПО
облегчает понимание ПО
помогает найти ошибки
позволяет быстрее писать программы
22
Рефакторинг
Минусы рефакторинга
неочевидность пользы
нужна определенная квалификация
вероятность ошибки
- Работает? Не трогай!
23
Рефакторинг
Рефакторинг не нужен, если
проще переписать
неработоспособность перед рефакторингом, слишком много ошибок
близка дата завершения проекта
24
Рефакторинг
Признаки плохого кода
Дублирование кода
Длинный метод
Суперкласс
Длинный список параметров
Множественные зависимости при изменении
Неиспользуемый код
…
25
Рефакторинг
Направления рефакторинга
Перепроектирование компонентов или методов?
Выделение общего кода в нечто большее
Можно писать более полный код, проводя рефакторинг на заключительной стадии
26
Рефакторинг
Массовый рефакторинг. Подходы
Переписываем сразу всё
Выделяем общий код и постепенно исправляем
27
Рефакторинг
Массовый рефакторинг
Если исправляем сразу всё, то при вероятности упасть
будут сложности с отслеживанием и возвратом в
исходное состояние
28
Рефакторинг
Массовый рефакторинг
Поэтапный рефакторинг
Ставим цели
Вырабатываем правила
Новый код пишем исходя из правил
Старый постепенно переводим на новые принципы
29
Резюме
Продукт постоянно изменяется. Это нормально
Планирование – друг человека
Иногда код нужно менять
При смене кода без тестов никуда
Поэтапное изменение кода – надежнее, но дольше
30
Структура курса
31
Домашнее задание
План разработки и запуска веб-сервиса согласно техническому
заданию и спроектированной архитектуре
Постановка тасков
Оценка времени и последовательности выполнения
Оценка сроков запуска
Оценка необходимых ресурсов (как аппаратных, так и людских)
Описание интеграционного тестирования
План итераций