ݺߣ

ݺߣShare a Scribd company logo
Эволюция разработки
программного обеспечения
Дзюба Дмитрий Владимирович
• Говорим об эволюции средств и способов
  разработки. Какие перспективы есть сейчас и
  что актуально в данный момент.
Цикл разработки программного
обеспечения
4




Обычный процесс разработки
"На заказ"
• Что делаем
  ▫ Анализ требований заказчика
     Опрос экспертов
     Чтение документов
     Наблюдение за выполнением
      операций
     Анкетирование
     Использование собственных
      знаний
     Составление описания системы
      и обсуждение его с экспертом
  ▫ Выделение бизнес целей
  ▫ Реализация требований заказчика
Обычный процесс
"продуктовой разработки"
• Что делаем
  ▫ Анализ тенденций на рынке
  ▫ Анализ требований ключевых заказчиков
  ▫ Анализ конкурентной среды
  ▫ Анализ изменений в технологиях
  ▫ Формирование продуктовой стратегии (RoadMap)
• Хороший продукт вначале разрабатывается «на
  заказ» потом преобразуется в «коробочное
  решение»
Что не так в бизнес анализе?
• Как понять какое требование более важное?
• Удовлетворенность заказчика равна «то что он
  получил» деленное на «то что он ожидал». Т.е. если
  от Вас много ждут, то даже отличный продукт не
  приносит удовлетворения!
7




Какие есть решения?
Методология!
• Agile Manifest 2001
  ▫ Люди и взаимодействие важнее процессов
    и инструментов
  ▫ Работающий продукт важнее
    исчерпывающей документации
  ▫ Сотрудничество с заказчиком важнее
    согласования условий контракта
  ▫ Готовность к изменениям важнее
    следования первоначальному плану
• Учит основным принципам
  ▫   Общение
  ▫   Простота
  ▫   Обратная связь
  ▫   Смелость
  ▫   Уважение
Что тут не так?
• Похоже на религию?
• Ни кто не читает инструкцию по
  вождению, когда ведет автомобиль!
• Ну а кто научит заказчиков быть
  «Agile»?
ALM
team foundation server
10




Development
опять вопросы!
 ▫ Организация данных
    Схема данных
    Доступ к данным
 ▫ Организация управления
    Что запускает задачу на выполнение?
    Что останавливает выполнение задачи?
    Как определяется последовательность действий в
     задаче?
    Как будут определяться приоритеты между
     задачами?
    Как управлять доступом к общим для разных задач
     данным?
 ▫ Организация программных структур
    Как организовывать программный код?
    Как осуществить размещение кода на компьютере?
 ▫ Организация работы со временем
    Будет использоваться абсолютное время?
    Будет использоваться относительное время?
11




Development
Как делаем программы?
• Иерархические программы
 ▫ Характерно
    Однопоточное (single thread) управление
    Данные могут быть локальными, глобальными
     или на где-то вовне
    Статически прописывается вызов процедур
    Работает как набор независимых программ
    Данные синхронизуются по запуску программы
 ▫ Когда применять?
    Хорошо для небольших
     высокопроизводительных программ.
Структурное программирование
• Структурное программирование
  предполагает точно обозначенные
  управляющие
  структуры, программные
  блоки, отсутствие инструкций
  безусловного
  перехода, автономные
  подпрограммы, поддержка
  рекурсии и локальных переменных
• Алгол(1958)
• Паскаль(1970)
• Си(1972).
13




Что если программа стала слишком
большой?
• Объектно-ориентированные программы
 ▫ Характерно
    Однопоточное (single thread) управление;
    Данные инкапсулированны или внешнии;
    Иерархические вызовы динамически
     связываемых процедур;
    Наследование;
Объектно-ориентированное
программирование
В итоге в конце 1970-х и
начале 1980-х были
разработаны
принципы объектно-
ориентированного
программирования. ООП
сочетает лучшие принципы
структурного
программирования с новыми
мощными
концепциями, базовые из
которых
называются инкапсуляцией,
полиморфизмом и
наследованием.
Разработчики на объектно-
ориентированных языках всегда
востребованы на рынке




                       По данным исследования IT-Доминанта
Java используется в более
                             чем 4,5 миллиардов
                             устройств.




Почему популярен язык Java
                             Среди них:
                             более 800 млн.
                             персональных
                             компьютеров;
                             2,1 миллиарда
                             мобильных телефонов
                             и других портативных
                             устройств (источник;
                             3,5 миллиарда смарт-
                             карт;
                             телеприставки, принтеры,
                             веб-
                             камеры, игры, автомобиль
                             ные системы
                             навигации, игровые
                             автоматы, медицинское
                             оборудование, парковочн
                             ые автоматы и т. д.
Рост 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
Что дальше?
• Языки и платформы, решающие задачи в
  специальной предметной области.
Microsoft LightSwitch
Начни с данных!
Adobe Muse
Нарисуй Web-сайт
А как же архитектура?
• Качество программ
 ▫   Производительность
 ▫   Надежность
 ▫   Модифицируемость
 ▫   Наблюдаемость/Тестируемость
 ▫   Безопасность
 ▫   Удобство использования

• Сложно определить приоритеты и быть
  лучшим во всем!
Платформы и модели разработки
• Инфраструктурные платформы
  ▫ Сервера с поддержкой
    Java 2 Enterprise Edition
  ▫ Microsoft BizTalk

• Созданы для решения проблем
  производительности, надежности, безопаснос
  ти и модифицируемости.
Oracle Fusion Middleware
Windows Azure AppFabric
windows server 2008
• Решена проблема кеширования данных
• Простая коммуникация приложений на
  основе WCF
• Управление сервисами с помощью Windows
  Workflow Foundation
Что дальше?
Программирование для бизнес-аналитиков
• Простота - MDA
  ▫ xUML
  ▫ Попытка сделать UML выполняемым.
  ▫ Программа соответствует спецификации!
• Но есть проблемы
  ▫ Отсутствие единых стандартов.
  ▫ Зависимость от текстовых языков (Object
    Action Languages, Action Specification
    Languages)
Что дальше?
Доказательство правильности программ
• 21 июня 2008 г премия Тьюринга была
  вручена трем создателям
• техники MODEL CHECKING, внесшим
  наиболее существенный вклад
  ▫ Edmund M. Clarke (CMU),
  ▫ E. Allen Emerson (U Texas, Austin),
  ▫ Joseph Sifakis (Verimag, France)
• Автоматическая проверка на то что система
  удовлетворяет спецификации.
Спасибо

More Related Content

Эволюция разработки программного обеспечения

  • 2. • Говорим об эволюции средств и способов разработки. Какие перспективы есть сейчас и что актуально в данный момент.
  • 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-х были разработаны принципы объектно- ориентированного программирования. ООП сочетает лучшие принципы структурного программирования с новыми мощными концепциями, базовые из которых называются инкапсуляцией, полиморфизмом и наследованием.
  • 15. Разработчики на объектно- ориентированных языках всегда востребованы на рынке По данным исследования IT-Доминанта
  • 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) • Автоматическая проверка на то что система удовлетворяет спецификации.