Методология программирования

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Методология разработки программного обеспечения — совокупность методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подход[1].

Каждая методология характеризуется своим[2]:

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

В частном случае, когда методология применяется на стадии программирования (конструирования), её обычно называют парадигмой программирования[2].

Происхождение

Можно проследить три пути возникновения методологий. Во-первых, они могут являться выражением практического опыта. Во-вторых, методологии могут происходить от одной из четырёх моделей алгоритма: абстрактная машина Тьюринга (императивное программирование), рекурсивные функции Гильберта и Аккермана (структурное программирование), лямбда-исчисление Чёрча (функциональное программирование), нормальные алгорифмы Маркова (логическое программирование)[3][4]. В-третьих, методологии можно объяснить через отображение одной из трёх структур языка моделирования на структуру языка программирования[5]. Составными частями могут быть структура данных, структура управления и логика. Каждое из девяти отображений определяет либо методологию, либо достаточно серьёзный метод программирования. Например, отображение логика-логика лежит в основе логического программирования[4].

Классификация

По ядрам

При подходе к методологии, как имеющей ядро (англ. core), соответствующее способу описания алгоритма, и дополнительные особенности, можно выделить следующие пять основных ядер методологий[6]:

Можно заметить, что эти методологии находятся на шкале от навигационных (пошаговое управление исполнением) до спецификационных (определение требований к результату)[6].

По топологической специфике

Специфика (топологическая специфика) — способ выбора методов для уточнения ядра методологии. Критерием качества той или иной топологии может являться общие затраты на разработку ПО. В свою очередь, затраты на разработку зависят среди прочего от ключевых языковых абстракций: абстракции данных, управления и модульности. Например, в императивной методологии можно придерживаться методов структурного программирования, что даёт более выгодную топологию с точки зрения языковых абстракций. Результатом является методология структурного программирования[7].

По специфике реализации

В соответствии с архитектурой аппаратного обеспечения, реализация может быть централизованной или параллельной. Например, методология (императивного) параллельного программирования, методология логического параллельного программирования[8].

Кроме того, методология может быть гибридной. Например, наиболее часта смесь функционального и логического программирования[8].

Проводятся исследования и по унификации методологий программирования  (англ.).

Вывод

Языки программирования могут хорошо поддерживать те или иные методологии, но это не означает, что некоторый язык вообще нельзя использовать с несвойственной ему методологией, а только то, что потребуется затратить больше усилий и ресурсов[2].

Методологии программирования различаются по общим затратам на решения задач с разными характеристиками (научные расчёты, финансовые задачи, системы реального времени и т. п.). Масштаб задач и эффективность создаваемого программного обеспечения также являются важными факторами при выборе методологии программирования[9].

Примечания

  1. Одинцов, 2004, с. 73.
  2. 2,0 2,1 2,2 Одинцов, 2004, с. 74.
  3. Логика и компьютер. Моделирование рассуждений и проверка правильности программ. М., Наука, 1990
  4. 4,0 4,1 Одинцов, 2004, с. 76.
  5. Тузов В. А. Языки представления знаний. Л., ЛГУ, 1990
  6. 6,0 6,1 Одинцов, 2004, с. 78.
  7. Одинцов, 2004, с. 78-79.
  8. 8,0 8,1 Одинцов, 2004, с. 79.
  9. Одинцов, 2004, с. 75.

Литература

  • Одинцов И. О. Профессиональное программирование. Системный подход. — 2-е изд.. — СПб.: БХВ-Петербург, 2004. — 624 с. — ISBN 5-94157-457-6.