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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

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

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

Происхождение[править | править вики-текст]

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

Классификация[править | править вики-текст]

Классификация по ядрам[править | править вики-текст]

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

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

Классификация по топологической специфике[править | править вики-текст]

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

Классификация по специфике реализации[править | править вики-текст]

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

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

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

Выбор[править | править вики-текст]

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

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

Примечания[править | править вики-текст]

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

Литература[править | править вики-текст]

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