Разделение ответственности в заказной разработке

37
Разделение ответственности в заказной разработке Максим Цепков Главный архитектор дирекции развития решений 18 апреля 2015 года

Upload: sqalab

Post on 15-Jul-2015

544 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Разделение ответственности в заказной разработке

Разделение ответственности

в заказной разработке

Максим Цепков

Главный архитектор

дирекции развития решений

18 апреля 2015 года

Page 2: Разделение ответственности в заказной разработке

Разделение ответственности в проекте –

популярная тема холиваров

Многие уверены, что знают «правильный способ»

Часто выдают претензии смежникам, что те не делают

положенное или, наоборот, лезут на чужую поляну

Однако единственной схемы не существует,

это пережиток эпохи «правильного процесса»

Разделение ответственности нужно

конструировать в проекте, с учетом его

особенностей и интересов участников

О чем будет доклад

2/37

Page 3: Разделение ответственности в заказной разработке

1. Схема для разделения ответственности

2. Простой кейс: разработка по спецификациям

3. Заказчик и компания-разработчик: разделение

ответственности и взаимодействие

4. Ответственность в компании-разработчике

Содержание доклада

3/37

Page 4: Разделение ответственности в заказной разработке

Схема для разделения

ответственности

4/37

Page 5: Разделение ответственности в заказной разработке

Возьмем схему процесса – и разметим

Используем стандартную схему – V-модель

Визуальное представление

V-Model (Wikipedia)

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

Project

Definition

Project Test

and Integration

Time

Verification

and

Validation

5/37

Page 6: Разделение ответственности в заказной разработке

Водопадная модель на схеме

ВнедрениеБизнес-

аналитики

Системные

аналитикиТестировщики

Разработчики

Заказчик

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

6/37

Page 7: Разделение ответственности в заказной разработке

Простой кейс:

разработка по спецификациям

7/37

Page 8: Разделение ответственности в заказной разработке

Компания

Заказчик

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

Уместен при высокой стандартизации продукта,

позволяет создать задание и определить результат

Аутсорсинг кодирования

ТЗ ПО

8/37

Page 9: Разделение ответственности в заказной разработке

Разработчики

Заказчик

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

В компании – только разработчики

Компания

Менеджер

Работает, если проекты небольшие или имеют типовую

декомпозицию, а также в случаях, когда применяются только

типовые решения. Организация – одна команда или мини-группы

Менеджер или Teamlead

управляет процессом работ

9/37

Page 10: Разделение ответственности в заказной разработке

По разным технологиям

Java и СУБД

Дизайнер и разработчик в web

Выделение «дешевых» специализаций,

например тестировщиков

Работа может быть организована

последовательно или параллельно

При последовательной работе возможно

выделение отделов

Например, дизайн – разработка – тестирование

Специализация в команде

10/37

Page 11: Разделение ответственности в заказной разработке

Разрыв между заказчиком и компанией

Компания

Заказчик

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

ТЗ ПО

Спецификация недостаточно

определяет продукт

ПО не может выполнять

ожидаемые функции

Просто отказ

Новый цикл?

11/37

Page 12: Разделение ответственности в заказной разработке

Почему плохо работает?Мешает природа

ИТ-разработки

Jack W. Reeves «What is software design» (1992; перевод)

Конструирование

системы

Обычный НИОКР

ПроизводствоПроект

ИТ-разработка

Архитектура

и дизайнТЗ Кодирование

Вещь

ПО

Архитектура

и дизайнКодКодиро-

вание ПОКомпиляция

(build)

12/37

Page 13: Разделение ответственности в заказной разработке

ПО ПОТЗ

ТЗ

Решение – коммуникация

Поставки ПО

и участие во

внедрении

Это фишка Agile

Компания

Заказчик

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

ТЗПО

Так работает

Коммуникации

Заказчик ставит задачу в терминах бизнеса, компания осуществляет

разработку и внедрение вплоть до перестройки бизнес-процессов.

Большая зона совместной ответственности обеспечивает успех проекта

13/37

Page 14: Разделение ответственности в заказной разработке

Заказчик и компания-разработчик:

разделение ответственности и

взаимодействие

14/37

Page 15: Разделение ответственности в заказной разработке

У заказчика есть свой ИТ…

ИТ Заказчика

Заказчик

Компания

Бизнес-подразделения

ЗаказчикаConcept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

ИТ заказчика часто стремится изолировать компанию

от бизнес-подразделений заказчика, однако для успеха проекта

взаимодействие необходимо

15/37

Page 16: Разделение ответственности в заказной разработке

Операционная работа и развитие

Заказчик

Компания

Технологи и руководители,

проектный офис

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

ИТ-отдел(ы)

новых разработок

и проектов

Операционные

сотрудники

Эксплуатация ИТ

(админы)

Постановку задачи на разработку и эксплуатацию созданного

приложения осуществляют разные группы стейкхолдеров заказчика

Но это

еще не все

16/37

Page 17: Разделение ответственности в заказной разработке

ИТ-проект – часть бизнес-проекта

Concept Maintenance

ИТ-проект

Бизнес-проект

Concept

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

Implementation

Ответственность стейкхолдеров заказчика – относительно

бизнес-проекта, а не ИТ-проекта

17/37

Page 18: Разделение ответственности в заказной разработке

Заказчик

Компания

Concept

Requirements

and Architecture

Detailed

Design

Implementation

Integration

and Test

System

Verification

Maintenance

Где ответственность за целое?

ТЗ

Процессный ответ – обеспечим

через согласование артефакта

Артефакт –

не работает

18/37

Page 19: Разделение ответственности в заказной разработке

А пусть будет Product Owner

Заказчик

Компания

Product Owner ?

Concept

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation

Только у заказчика

он не всегда есть

19/37

Page 20: Разделение ответственности в заказной разработке

Заказчик

Product Owner

Concept

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation

Заказчик часто не готов

к такой области ответственности

РазработчикиКомпания

Ответственность компании надо расширять,

частью ее становится Product Owner, он же менеджер

Об этом будет

подробнее

20/37

Page 21: Разделение ответственности в заказной разработке

Ответственность

в компании-разработчике

21/37

Page 22: Разделение ответственности в заказной разработке

Заказчик

Product Owner

Concept

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation

Разработчики

Компания

Аналитики тоже устраняют разрыв

Аналитики

Вопрос: Насколько аналитики заняты в тестировании и сдаче системы?

Вариант 1: Сдают разработчики

Вариант 2: Аналитики тестируют и сдают (модель внутреннего заказчика)

22/37

Page 23: Разделение ответственности в заказной разработке

Заказчик

Concept

Product Owner

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation Разработчики

Компания

Аналитики

Менеджер, Product Owner, аналитик

Аналитик:

преобразование требований

в модель системы

Роли,

а не должности

Менеджер

Менеджер, или Teamlead, или Scrum Master:

организация процесса работ и управление им

Product Owner: управление

целостностью и порядком

разработки системы

23/37

Page 24: Разделение ответственности в заказной разработке

Тестировщик: младший аналитик

или отдельная позиция?

Заказчик

Product Owner

Concept Maintenance

Implementation

РазработчикиКомпания

Аналитики

Тестировщики

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Зависит от проекта:

каков характер

и объем тестирования

24/37

Page 25: Разделение ответственности в заказной разработке

А можно и без аналитиков

Заказчик

Product Owner

Concept

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation

РазработчикиКомпания

Тестировщики

Часто именно эта

картина складывается

исторически

25/37

Page 26: Разделение ответственности в заказной разработке

Артефакты на проекте

Заказчик

Concept

System

Verification

Maintenance

Implementation

Разработчики

Компания

ТестировщикиАналитики

Requirements

and Architecture

Detailed

Design

ПО

Требования

Модель системыТест-кейсы

Версия

на тестирование

Версия

заказчику

Product Owner

Backlog

Integration

and Test

26/37

Page 27: Разделение ответственности в заказной разработке

Архитектор, он же Techlead

Заказчик

Concept

Integration

and Test

System

Verification

Maintenance

Implementation

РазработчикиКомпания

Тестировщики

Аналитики

Архитектор

29/41

Requirements

and ArchitectureProduct

Owner

Detailed

Design

Кто главный:

аналитик

или архитектор?

1. Построение начальной архитектуры

2. Проектирование типовых решений

Это – разные задачи и позиции

27/37

Page 28: Разделение ответственности в заказной разработке

Еще есть внедрение и поддержка

Заказчик

Concept

Integration

and Test

System

Verification

Maintenance

Implementation

РазработчикиКомпания

Тестировщики

АналитикиRequirements

and Architecture

Detailed

Design

Product

Owner

Архитектор

Внедрение

и поддержка

Разделение работ с заказчиком может быть различным

и часто – неявным

28/37

Page 29: Разделение ответственности в заказной разработке

Простое управление:

за все отвечает менеджер

Менеджер

Concept

Integration

and Test

System

Verification

Maintenance

Implementation

Компания

Requirements

and Architecture

Detailed

Design

Менеджер перед компанией может отвечать за весь процесс работ

на проекте, включая область ответственности заказчика

29/37

Page 30: Разделение ответственности в заказной разработке

Разделение управления:

менеджер и Product Owner

Менеджер

Concept

Integration

and Test

System

Verification

Maintenance

Implementation

Компания

Requirements

and Architecture

Detailed

Design

Product

Owner

Product Owner: управление целостностью

и порядком разработки системы

Менеджер

или Teamlead:

управление

процессом работ

У Scrum Master’а

область та же,

отличается способ

управления

На V-модели

разделение

не видно –

меняем схему

30/37

Page 31: Разделение ответственности в заказной разработке

OMG Essence: объекты процесса

31/37

Page 32: Разделение ответственности в заказной разработке

Области управления

Менеджер

Product Owner

Разделение облегчило поиск

управленческого персонала и

обеспечило успех Agile

32/37

Page 33: Разделение ответственности в заказной разработке

Области технологизацииProduct Owner:

технологии

взаимодействия

с заказчиком

и работы

с требованиями

Архитектор:

технологии

разработки

Менеджер или Teamlead:

организация процесса

работ

33/37

Page 34: Разделение ответственности в заказной разработке

Размер команды – 7 ± 2

Concept

Requirements

and Architecture

Detailed

Design

Integration

and Test

System

Verification

Maintenance

Implementation

РазработчикиКомпания

Аналитики

Менеджер

Менеджер – один на несколько

команд или кто-то из команды

по совместительству

0.5

Product Owner

Product Owner – один

на несколько команд или аналитик

по совместительству

0.5

2

4

34/37

Page 35: Разделение ответственности в заказной разработке

А если проект большой?

7±2 мини-группы

одного ведущего и

1-2 подчиненных

Несколько команд,

общий Product Owner

и (или) менеджер

35/37

Page 36: Разделение ответственности в заказной разработке

Если проекты достаточно однородны,

можно передавать одной команде

без специализации

Можно делать мини-группы по каждому

проекту

Решение зависит от равномерности потока

работ по проектам

А если проекты маленькие?

36/37

Page 37: Разделение ответственности в заказной разработке

Разделение ответственности зависит

от взаимоотношений с заказчиком

От характера вашего проекта

И от традиций компании

Не существует общепринятого

или единственно правильного способа

Его надо проектировать!

Подводя итоги

Спасибо! Вопросы?

Максим Цепков mtsepkov.org

Спасибо, кэп!

37/37