Методология разработки ПО

Содержание

Слайд 2

Методологический подход Конкретная методология (методологический подход) представляет собой набор методов, объединённых

Методологический подход

Конкретная методология (методологический подход) представляет собой набор методов, объединённых некоторым

общим принципом и поддерживаемых соответствующим набором концепций.
В узком смысле методология представляет собой определённый методологический подход. Именно методология определяет, какие языки и системы программирования будут применяться для разработки ПО и какой технологический подход будет при этом использован.
Слайд 3

Методология разработки ПО Методология разработки ПО (методологический подход) – это объединённая

Методология разработки ПО

Методология разработки ПО (методологический подход) – это объединённая

единым философским подходом определённая совокупность методов, применяемых в процессе разработки ПО.
Слайд 4

С каждой методологией можно связать характерные для неё атрибуты: 1. Философский

С каждой методологией можно связать характерные для неё атрибуты:

1. Философский подход (основной

принцип), являющийся простым для формулирования и определяющий основной источник эффективности методологии.
2. Согласованное, связное множество методов, через которые реализуется данная методология.
3. Концепции (понятия, идеи), поддерживающие методы и позволяющие более точно их определить.
В рамках заданной методологии разработки разрабатываются методики, которые применяются в подходах разработки.
Слайд 5

Парадигма программирования Любая методология создаётся на основе уже накопленных в ПО

Парадигма программирования

Любая методология создаётся на основе уже накопленных в ПО эмпирических

фактов и практических результатов. Для методологий разработки ПО такими фактами и результатами являются уже существующие языки программирования.
Когда методология применяется во время кодирования, очень часто её называют парадигмой программирования – способом мышления и программирования, не связанным с конкретным языком программирования.
Слайд 6

Ядро методологии Один из подходов к классификации методологий заключается в том,

Ядро методологии

Один из подходов к классификации методологий заключается в том,

что существует некоторое ядро методологии со своими методами, которое уточняется некоторыми дополнительными особенностями – спецификами.
Этот подход напоминает принцип словообразования в русском языке – есть корень, к которому добавляются аффиксы (приставки, суффиксы и окончания), уточняющие смысл слова.
Слайд 7

Ядро методологий определяется способом описания алгоритмов Выделяют следующие основные ядра методологий:

Ядро методологий определяется способом описания алгоритмов

Выделяют следующие основные ядра методологий:

методология императивного программирования,
методология объектно-ориентированного программирования,
методология функционального программирования,
методология логического программирования,
методология ограничительного программирования.
Все перечисленные методологии находятся в диапазоне между двумя понятиями информатики – алгоритма и модели. В данном случае они перечислены в порядке уменьшения связи методологии с понятием алгоритм и увеличением связи с понятием модель.
Слайд 8

Топология Каждое из «корней»-ядер может получить «приставку», определяемую некоторой топологией –

Топология

Каждое из «корней»-ядер может получить «приставку», определяемую некоторой топологией – структуру

(информационных, управляющих или логических) узлов и связей программ, которая может быть хорошей или плохой.
Топологии определяются совокупностью многочисленных факторов, связанных с абстракциями данных, управления и модульности. Например, к хорошей топологии приводит отказ от использования глобальных данных и оператора безусловного перехода, правильная модульная организация.
Слайд 9

Пример Если в императивной методологии придерживаться методов структурного представления (дающих хорошую

Пример

Если в императивной методологии придерживаться методов структурного представления (дающих хорошую

топологию), то мы получим хорошо известную методологию: структурного императивного программирования, которая более известна под её кратким именем – методология структурного программирования.
Следует отметить, что успех методологии объектно-ориентированного программирования изначально определила её хорошая топология, базирующаяся на абстрактных типах данных.
Слайд 10

Реализация Каждое из «корней»-ядер может получить «суффикс», определяющий некоторую реализацию –

Реализация

Каждое из «корней»-ядер может получить «суффикс», определяющий некоторую реализацию – организацию

аппаратной поддержки – данной методологии.
На данный момент известными являются две реализации – централизованная и распределённая, на основе которых строятся соответственно последовательные и параллельная методологии.
К последовательным относят обычно фактически все ядра методологий, а к параллельным – соответствующие им модификации.
Слайд 11

Примеры Примеры параллельных методологий: методология императивного параллельного программирования, её краткое название

Примеры

Примеры параллельных методологий:
методология императивного параллельного программирования, её краткое название

– методология параллельного программирования,
методология логического параллельного программирования.
Для методологии объектно-ориентированного программирования параллельность неявно используется уже на уровне методов и концепций.
Смешанные методологии основываются на объединении ряда методов нескольких (обычно родственных) методологий.
Слайд 12

Наиболее часто объединяются методологии функционального и логического программирования, рассматриваемые как методология

Наиболее часто объединяются методологии функционального и логического программирования,

рассматриваемые как методология

декларативного программирования в противоположность методологии директивного программирования, под которым понимают методологию императивного программирования и его модификации, а также методологию объектно-ориентированного программирования.
Кроме того, в рамках декларативного программирования часто выделяют методологию сентенциального программирования как самостоятельный подход.
Проводятся исследования в области объединения других методологий, в частности объектно-ориентированного и логического программирования. Ряд исследований посвящён вопросам унификации методологий программирования.
В эту классификацию не вошли многие существующие методологии.
Слайд 13

К известным, но редко выделяемым явно, относят следующие методологии: – методология

К известным, но редко выделяемым явно, относят следующие методологии:

– методология событийного программирования

– подход, использующий взаимодействия через события при функционировании системы.
– методология автоматного программирования – подход, представляющий функционирование системы в виде конечного автомата.
К мало известным (в настоящее время) относят следующие методологии:
– методология программирования, управляемого потоком данных, – подход, заключающийся в том, что операции срабатывают не последовательно, а в зависимости от готовности данных;
– методология доступ-ориентированного программирования – подход, в котором функции связываются с переменными таким образом, что при доступе к переменной автоматически будет вызываться соответствующая функция;
– методология нейросетевого программирования – подход, заключающийся в том, что на основе знаний от экспертов создаётся программа на нейронном языке программирования, которая затем компилируется в эквивалентную нейронную сеть из аналоговых нейронов.
Слайд 14

Новые методологии Из приведённого далеко неполного списка методологий видно, что новые

Новые методологии

Из приведённого далеко неполного списка методологий видно, что новые

методологии основываются на применении к разработке ПО идей из самых разных областей научно-технической деятельности:
операционные системы (прерывания),
автоматическое управление (теория конечных автоматов),
вычислительные системы (системы, управляемые потоком данных),
программирование (доступ-ориентированное программирование),
оптимизация (нейронные сети) и т.д.
Слайд 15

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

Три точки зрения на происхождение методологий

В настоящее время выделяют три точки

зрения на происхождение методологий: практическая, алгоритмическая и структурно-языковая.
Первая точка зрения – независимое происхождение на основе практического опыта программистов. Очень многие методологии имеют автора-создателя или основателя научной школы, исследующей данную методологию.
В этом случае методологию можно рассматривать как концентрацию практического опыта программирования. Эта точка зрения позволяет оценить сложность создания достаточно подробной классификации методологий, которая охватывала бы большую часть существующих и развивающихся методологий, чрезвычайно разнородных по используемым в них методам и принципам.
Слайд 16

Алгоритмическое происхождение вытекает из следующего утверждения: Теория алгоритмов и логика –

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

Теория алгоритмов и логика – родители

программирования.
Выделяют следующие 4 главные модели алгоритма:
1. Абстрактные вычислительные машины Тьюринга и Поста. Они определяют методологии императивного, автоматного и событийного программирования.
2. Рекурсивные функции Гильберта и Аккермана. От них унаследовала свои идеи и конструкции методология структурного программирования.
3. Комбинаторная логика Шейнфинкеля и Карри и её современное представление – лямбда-исчисление Чёрча. Эти идеи активно развиваются в методологии функционального программирования.
4. Нормальные алгорифмы Маркова. Модель послужила основой методологий логического программирования и сентенциального программирования.
Слайд 17

Отображение структур языка Ещё одно объяснение берёт за основу понятие отображения

Отображение структур языка

Ещё одно объяснение берёт за основу понятие отображения структур

языка. Согласно этой точке зрения сущность языка определяют три его составные части:
1. Структура данных (Д) – представление данных (и результатов).
2. Структура управления (У) – преобразование исходных данных в результат.
3. Логическая структура (Л) – определение преобразования задачи в алгоритм.
Каждая из трёх структур языка моделирования (ПрО) может быть отображена на любую из структур языка программирования. При этом каждое такое отображение определяет либо некоторую методологию, либо, по крайней мере, достаточно серьёзный метод.