kirilllebedev @ codecamp2011
TRANSCRIPT
![Page 2: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/2.jpg)
О себе
• Разработчик ПО• Стаж 15 лет• 30 завершённых проектов • > 20 выпущенных продуктов• E-mail: [email protected]• Blog: http://askofen.blogspot.com
![Page 3: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/3.jpg)
Разработка продукта
- сквозной процесс, который затрагивает:
Маркетинг Дизайн Инженерию
![Page 4: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/4.jpg)
Часть 1. Маркетинг и дизайн
![Page 5: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/5.jpg)
Рынок
Для какого рынка разрабатывается продукт?
1. Россия2. СНГ3. Восточная Европа4. Западная Европа5. США и Канада6. Азия7. Южная Америка
![Page 6: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/6.jpg)
Целевые группы
Не возраст Общие проблемы Общие интересы Одинаковый
контекст
![Page 7: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/7.jpg)
Примеры целевых групп
Антипример:
Мужчины от 16 до 45 лет
Примеры:
1. Любители футбола2. Едут в общественном транспорте3. Постоянно теряют стилус от коммуникатора
![Page 8: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/8.jpg)
Источники
http://www.triz-chance.ru/
http://www.triz-ri.ru/
![Page 9: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/9.jpg)
Расширение функциональности
Сочетание функций Удобство
использования Объём работы Размер команды
![Page 10: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/10.jpg)
Типовые проблемы
С какими проблемами сталкивается Клиент при работе с продуктами-аналогами?
Как эти проблемы можно решить?
![Page 11: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/11.jpg)
Система голосовых указаний
для GPS-навигатора
"Через 200 метров поверните направо"
200 метров – это сколько?
"На 2-ом перекрёстке поверните направо"
Использование зрительных ориентиров
Проблема:
Решение:
Модель:
Обычное указание:
![Page 12: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/12.jpg)
Модели потребления
Согласование продукта с механизмом его использования
Желание Игровой режим
"Хочу поиграть сейчас"
Play Now
"Хочу засесть за игру надолго"
Карьера
"Хочу поиграть с другом"
Мультиплеер
![Page 13: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/13.jpg)
Визуальный ряд
1. Среда и локации
2. Персонаж
3. Одежда
4. Визуальные эффекты
5. Камера
![Page 14: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/14.jpg)
Музыка и звук
Музыка Звуковые эффекты Голоса
![Page 15: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/15.jpg)
Управление
Можно ли описать игру нажатиями на кнопки джойстика?
![Page 16: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/16.jpg)
Часть 2. Проектирование
![Page 17: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/17.jpg)
Технологическое проектирование
Как программа реализует запланированные возможности?
Как программа работает изнутри?
![Page 18: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/18.jpg)
Задачи
1. Устранение латентности
2. Равномерное распределение нагрузок
3. Устранение сложной логики
![Page 19: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/19.jpg)
Устранение латентности
Вынесение длительных операций во вспомогательный поток
![Page 20: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/20.jpg)
Пример - Игра
При загрузке и сохранении теряется интерактивность
Загрузка
Игра
Сохранение
![Page 21: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/21.jpg)
Пример - ИграВыносим загрузку и сохранение во вспомогательный поток
Вспомогательный поток
Экран загрузки
Игра
Экран сохранения
Загрузка
Сохранение
Главный поток
![Page 22: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/22.jpg)
Устранение сложной логикиГруппируем не операции под условия, а условия по операции
Условие 1 Условие 2 Условие 3
Действие 1 Да
Действие 2 Да Да
Действие 3 Нет Да
![Page 23: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/23.jpg)
Было
Если А
Если Б
Действие 1
Если В
Действие 2
Иначе
Если Г
Действие 3
![Page 24: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/24.jpg)
Стало
Если А и Б
Действие 1
Если А и В
Действие 2
Если не-А и Г
Действие 3
![Page 25: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/25.jpg)
В виде таблицы
Действие А Б В Г
Действие 1 Да Да
Действие 2 Да Да
Действие 3 Нет Да
![Page 26: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/26.jpg)
Компонентное проектирование
1. Выявление обязанностей
2. Делегирование их отдельным компонентам
![Page 27: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/27.jpg)
Экстремальное правило
1 компонент – 1 обязанность
![Page 28: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/28.jpg)
Принципы группировки
похожесть операций; противоположность операций; операции являются смежными; проще реализовать
![Page 29: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/29.jpg)
Функциональное моделирование1. Какие обязанности выполняет
компонент?
2. Какие функции нужны для выполнения этих обязанностей?
3. Как компонент используется другими компонентами?
![Page 30: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/30.jpg)
Пример функциональной модели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](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/31.jpg)
Проектирование структуры
1. Какие данные передаются между компонентами?
2. Можно ли их структурировать?
3. Какие структуры данных целесообразно использовать для реализации компонента?
![Page 32: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/32.jpg)
Резюме: Марктеинг и Дизайн
Целевая Группа
Проблемы
Модель Потребления
Дизайн
Виз
уал
ьны
й ря
д
Муз
ыка
и
Зву
к
Упр
авл
ение
![Page 33: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/33.jpg)
Резюме: Проектирование
Дизайн
Технологическая Модель
Компонентная Модель
Структурная Модель
Функциональная Модель
![Page 34: KirillLebedev @ CodeCamp2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558e2d8e1a28ab94468b45bc/html5/thumbnails/34.jpg)
Ссылки
http://askofen.blogspot.com/