34
Продуктовая компания Постановка процесса разработки Автор: Кирилл Лебедев E-mail: [email protected]

KirillLebedev @ CodeCamp2011

Tags:

Embed Size (px)

Citation preview

Page 1: KirillLebedev @ CodeCamp2011

Продуктовая компания

Постановка процесса разработки

Автор: Кирилл ЛебедевE-mail: [email protected]

Page 2: KirillLebedev @ CodeCamp2011

О себе

• Разработчик ПО• Стаж 15 лет• 30 завершённых проектов • > 20 выпущенных продуктов• E-mail: [email protected]• Blog: http://askofen.blogspot.com

Page 3: KirillLebedev @ CodeCamp2011

Разработка продукта

- сквозной процесс, который затрагивает:

Маркетинг Дизайн Инженерию

Page 4: KirillLebedev @ CodeCamp2011

Часть 1. Маркетинг и дизайн

Page 5: KirillLebedev @ CodeCamp2011

Рынок

Для какого рынка разрабатывается продукт?

1. Россия2. СНГ3. Восточная Европа4. Западная Европа5. США и Канада6. Азия7. Южная Америка

Page 6: KirillLebedev @ CodeCamp2011

Целевые группы

Не возраст Общие проблемы Общие интересы Одинаковый

контекст

Page 7: KirillLebedev @ CodeCamp2011

Примеры целевых групп

Антипример:

Мужчины от 16 до 45 лет

Примеры:

1. Любители футбола2. Едут в общественном транспорте3. Постоянно теряют стилус от коммуникатора

Page 8: KirillLebedev @ CodeCamp2011

Источники

http://www.triz-chance.ru/

http://www.triz-ri.ru/

Page 9: KirillLebedev @ CodeCamp2011

Расширение функциональности

Сочетание функций Удобство

использования Объём работы Размер команды

Page 10: KirillLebedev @ CodeCamp2011

Типовые проблемы

С какими проблемами сталкивается Клиент при работе с продуктами-аналогами?

Как эти проблемы можно решить?

Page 11: KirillLebedev @ CodeCamp2011

Система голосовых указаний

для GPS-навигатора

"Через 200 метров поверните направо"

200 метров – это сколько?

"На 2-ом перекрёстке поверните направо"

Использование зрительных ориентиров

Проблема:

Решение:

Модель:

Обычное указание:

Page 12: KirillLebedev @ CodeCamp2011

Модели потребления

Согласование продукта с механизмом его использования

Желание Игровой режим

"Хочу поиграть сейчас"

Play Now

"Хочу засесть за игру надолго"

Карьера

"Хочу поиграть с другом"

Мультиплеер

Page 13: KirillLebedev @ CodeCamp2011

Визуальный ряд

1. Среда и локации

2. Персонаж

3. Одежда

4. Визуальные эффекты

5. Камера

Page 14: KirillLebedev @ CodeCamp2011

Музыка и звук

Музыка Звуковые эффекты Голоса

Page 15: KirillLebedev @ CodeCamp2011

Управление

Можно ли описать игру нажатиями на кнопки джойстика?

Page 16: KirillLebedev @ CodeCamp2011

Часть 2. Проектирование

Page 17: KirillLebedev @ CodeCamp2011

Технологическое проектирование

Как программа реализует запланированные возможности?

Как программа работает изнутри?

Page 18: KirillLebedev @ CodeCamp2011

Задачи

1. Устранение латентности

2. Равномерное распределение нагрузок

3. Устранение сложной логики

Page 19: KirillLebedev @ CodeCamp2011

Устранение латентности

Вынесение длительных операций во вспомогательный поток

Page 20: KirillLebedev @ CodeCamp2011

Пример - Игра

При загрузке и сохранении теряется интерактивность

Загрузка

Игра

Сохранение

Page 21: KirillLebedev @ CodeCamp2011

Пример - ИграВыносим загрузку и сохранение во вспомогательный поток

Вспомогательный поток

Экран загрузки

Игра

Экран сохранения

Загрузка

Сохранение

Главный поток

Page 22: KirillLebedev @ CodeCamp2011

Устранение сложной логикиГруппируем не операции под условия, а условия по операции

  Условие 1 Условие 2 Условие 3

Действие 1 Да    

Действие 2  Да Да  

Действие 3 Нет    Да

Page 23: KirillLebedev @ CodeCamp2011

Было

Если А

Если Б

Действие 1

Если В

Действие 2

Иначе

Если Г

Действие 3

Page 24: KirillLebedev @ CodeCamp2011

Стало

Если А и Б

Действие 1

Если А и В

Действие 2

Если не-А и Г

Действие 3

Page 25: KirillLebedev @ CodeCamp2011

В виде таблицы

Действие А Б В Г

Действие 1 Да Да

Действие 2 Да Да

Действие 3 Нет Да

Page 26: KirillLebedev @ CodeCamp2011

Компонентное проектирование

1. Выявление обязанностей

2. Делегирование их отдельным компонентам

Page 27: KirillLebedev @ CodeCamp2011

Экстремальное правило

1 компонент – 1 обязанность

Page 28: KirillLebedev @ CodeCamp2011

Принципы группировки

похожесть операций; противоположность операций; операции являются смежными; проще реализовать

Page 29: KirillLebedev @ CodeCamp2011

Функциональное моделирование1. Какие обязанности выполняет

компонент?

2. Какие функции нужны для выполнения этих обязанностей?

3. Как компонент используется другими компонентами?

Page 30: KirillLebedev @ CodeCamp2011

Пример функциональной модели7. Форма F7.1. Создать зеркальное отражение фигуры относительно

вертикальной оси.

F7.2. Создать зеркальное отражение фигуры относительно горизонтальной оси.

F7.3. Изогнуть фигуру.

F7.4. Преобразовать эллипс/окружность в сектор.

F7.5. Изменить угол сектора.

F7.6. Преобразовать пятиугольник в звезду.

F7.7. Преобразовать прямоугольник в многоугольник.

F7.8. Преобразовать сегмент в кривую Безье.

F7.9. Изменить форму кривой (изогнуть кривую, сделать кривую выпуклой или вогнутой).

F7.10. Создать общий контур для нескольких фигур.

F7.11. Найти отсечение контура одной фигуры контуром другой фигуры.

F7.12. Разбить сегмент на две стороны.

F7.13. Разбить кривую на две кривых.

F7.14. Склеить соседние сегменты.

F7.15. Склеить соседние кривые.

F7.16. Склеить соседние сегмент и кривую.

Page 31: KirillLebedev @ CodeCamp2011

Проектирование структуры

1. Какие данные передаются между компонентами?

2. Можно ли их структурировать?

3. Какие структуры данных целесообразно использовать для реализации компонента?

Page 32: KirillLebedev @ CodeCamp2011

Резюме: Марктеинг и Дизайн

Целевая Группа

Проблемы

Модель Потребления

Дизайн

Виз

уал

ьны

й ря

д

Муз

ыка

и

Зву

к

Упр

авл

ение

Page 33: KirillLebedev @ CodeCamp2011

Резюме: Проектирование

Дизайн

Технологическая Модель

Компонентная Модель

Структурная Модель

Функциональная Модель

Page 34: KirillLebedev @ CodeCamp2011

Ссылки

http://askofen.blogspot.com/