4. 4
Обычный процесс разработки
"На заказ"
• Что делаем
▫ Анализ требований заказчика
Опрос экспертов
Чтение документов
Наблюдение за выполнением
операций
Анкетирование
Использование собственных
знаний
Составление описания системы
и обсуждение его с экспертом
▫ Выделение бизнес целей
▫ Реализация требований заказчика
5. Обычный процесс
"продуктовой разработки"
• Что делаем
▫ Анализ тенденций на рынке
▫ Анализ требований ключевых заказчиков
▫ Анализ конкурентной среды
▫ Анализ изменений в технологиях
▫ Формирование продуктовой стратегии (RoadMap)
• Хороший продукт вначале разрабатывается «на
заказ» потом преобразуется в «коробочное
решение»
6. Что не так в бизнес анализе?
• Как понять какое требование более важное?
• Удовлетворенность заказчика равна «то что он
получил» деленное на «то что он ожидал». Т.е. если
от Вас много ждут, то даже отличный продукт не
приносит удовлетворения!
7. 7
Какие есть решения?
Методология!
• Agile Manifest 2001
▫ Люди и взаимодействие важнее процессов
и инструментов
▫ Работающий продукт важнее
исчерпывающей документации
▫ Сотрудничество с заказчиком важнее
согласования условий контракта
▫ Готовность к изменениям важнее
следования первоначальному плану
• Учит основным принципам
▫ Общение
▫ Простота
▫ Обратная связь
▫ Смелость
▫ Уважение
8. Что тут не так?
• Похоже на религию?
• Ни кто не читает инструкцию по
вождению, когда ведет автомобиль!
• Ну а кто научит заказчиков быть
«Agile»?
10. 10
Development
опять вопросы!
▫ Организация данных
Схема данных
Доступ к данным
▫ Организация управления
Что запускает задачу на выполнение?
Что останавливает выполнение задачи?
Как определяется последовательность действий в
задаче?
Как будут определяться приоритеты между
задачами?
Как управлять доступом к общим для разных задач
данным?
▫ Организация программных структур
Как организовывать программный код?
Как осуществить размещение кода на компьютере?
▫ Организация работы со временем
Будет использоваться абсолютное время?
Будет использоваться относительное время?
11. 11
Development
Как делаем программы?
• Иерархические программы
▫ Характерно
Однопоточное (single thread) управление
Данные могут быть локальными, глобальными
или на где-то вовне
Статически прописывается вызов процедур
Работает как набор независимых программ
Данные синхронизуются по запуску программы
▫ Когда применять?
Хорошо для небольших
высокопроизводительных программ.
12. Структурное программирование
• Структурное программирование
предполагает точно обозначенные
управляющие
структуры, программные
блоки, отсутствие инструкций
безусловного
перехода, автономные
подпрограммы, поддержка
рекурсии и локальных переменных
• Алгол(1958)
• Паскаль(1970)
• Си(1972).
13. 13
Что если программа стала слишком
большой?
• Объектно-ориентированные программы
▫ Характерно
Однопоточное (single thread) управление;
Данные инкапсулированны или внешнии;
Иерархические вызовы динамически
связываемых процедур;
Наследование;
14. Объектно-ориентированное
программирование
В итоге в конце 1970-х и
начале 1980-х были
разработаны
принципы объектно-
ориентированного
программирования. ООП
сочетает лучшие принципы
структурного
программирования с новыми
мощными
концепциями, базовые из
которых
называются инкапсуляцией,
полиморфизмом и
наследованием.
16. Java используется в более
чем 4,5 миллиардов
устройств.
Почему популярен язык Java
Среди них:
более 800 млн.
персональных
компьютеров;
2,1 миллиарда
мобильных телефонов
и других портативных
устройств (источник;
3,5 миллиарда смарт-
карт;
телеприставки, принтеры,
веб-
камеры, игры, автомобиль
ные системы
навигации, игровые
автоматы, медицинское
оборудование, парковочн
ые автоматы и т. д.
17. Рост Windows Phone (и .NET)
по данным gartner
OS 2010 2011 2012 2015
Android 67,225 179,873 310,088 539,318
Market Share (%) 22.7 38.5 49.2 48.8
iOS 46,598 90,560 118,848 189,924
Market Share (%) 15.7 19.4 18.9 17.2
Microsoft 12,378 26,346 68,156 215,998
Market Share (%) 4.2 5.6 10.8 19.5
Total Market 296,647 467,701 630,476 1,104,898
18. Что дальше?
• Языки и платформы, решающие задачи в
специальной предметной области.
21. А как же архитектура?
• Качество программ
▫ Производительность
▫ Надежность
▫ Модифицируемость
▫ Наблюдаемость/Тестируемость
▫ Безопасность
▫ Удобство использования
• Сложно определить приоритеты и быть
лучшим во всем!
22. Платформы и модели разработки
• Инфраструктурные платформы
▫ Сервера с поддержкой
Java 2 Enterprise Edition
▫ Microsoft BizTalk
• Созданы для решения проблем
производительности, надежности, безопаснос
ти и модифицируемости.
24. Windows Azure AppFabric
windows server 2008
• Решена проблема кеширования данных
• Простая коммуникация приложений на
основе WCF
• Управление сервисами с помощью Windows
Workflow Foundation
25. Что дальше?
Программирование для бизнес-аналитиков
• Простота - MDA
▫ xUML
▫ Попытка сделать UML выполняемым.
▫ Программа соответствует спецификации!
• Но есть проблемы
▫ Отсутствие единых стандартов.
▫ Зависимость от текстовых языков (Object
Action Languages, Action Specification
Languages)
26. Что дальше?
Доказательство правильности программ
• 21 июня 2008 г премия Тьюринга была
вручена трем создателям
• техники MODEL CHECKING, внесшим
наиболее существенный вклад
▫ Edmund M. Clarke (CMU),
▫ E. Allen Emerson (U Texas, Austin),
▫ Joseph Sifakis (Verimag, France)
• Автоматическая проверка на то что система
удовлетворяет спецификации.