Русская Википедия:Методология программирования
Шаблон:Другие значения Методология разработки программного обеспечения — совокупность методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подходШаблон:Sfn.
Каждая методология характеризуется своимШаблон:Sfn:
- философским подходом или основными принципами. Эти принципы, от которых зависит эффективность всей методологии, обычно можно кратко сформулировать и легко объяснить;
- согласованным множеством моделей методов, которые реализуют данную методологию;
- концепциями (понятиями), позволяющими более точно определить методы.
В частном случае, когда методология применяется на стадии программирования (конструирования), её обычно называют парадигмой программированияШаблон:Sfn.
Происхождение
Можно проследить три пути возникновения методологий. Во-первых, они могут являться выражением практического опыта. Во-вторых, методологии могут происходить от одной из четырёх моделей алгоритма: абстрактная машина Тьюринга (императивное программирование), рекурсивные функции Гильберта и Аккермана (структурное программирование), лямбда-исчисление Чёрча (функциональное программирование), нормальные алгорифмы Маркова (логическое программирование)[1]Шаблон:Sfn. В-третьих, методологии можно объяснить через отображение одной из трёх структур языка моделирования на структуру языка программирования[2]. Составными частями могут быть структура данных, структура управления и логика. Каждое из девяти отображений определяет либо методологию, либо достаточно серьёзный метод программирования. Например, отображение логика-логика лежит в основе логического программированияШаблон:Sfn.
Классификация
По ядрам
При подходе к методологии, как имеющей ядро (Шаблон:Lang-en), соответствующее способу описания алгоритма, и дополнительные особенности, можно выделить следующие пять основных ядер методологийШаблон:Sfn:
- Методология императивного программирования
- Методология ООП
- Методология функционального программирования
- Методология логическое программирование
- Методология программирования в ограничениях
Можно заметить, что эти методологии находятся на шкале от навигационных (пошаговое управление исполнением) до спецификационных (определение требований к результату)Шаблон:Sfn.
По топологической специфике
Специфика (топологическая специфика) — способ выбора методов для уточнения ядра методологии. Критерием качества той или иной топологии может являться общие затраты на разработку ПО. В свою очередь, затраты на разработку зависят среди прочего от ключевых языковых абстракций: абстракции данных, управления и модульности. Например, в императивной методологии можно придерживаться методов структурного программирования, что даёт более выгодную топологию с точки зрения языковых абстракций. Результатом является методология структурного программированияШаблон:Sfn.
По специфике реализации
В соответствии с архитектурой аппаратного обеспечения, реализация может быть централизованной или параллельной. Например, методология (императивного) параллельного программирования, методология логического параллельного программированияШаблон:Sfn.
Кроме того, методология может быть гибридной. Например, наиболее часта смесь функционального и логического программированияШаблон:Sfn.
Проводятся исследования и по Шаблон:Не переведено 3.
Вывод
Языки программирования могут хорошо поддерживать те или иные методологии, но это не означает, что некоторый язык вообще нельзя использовать с несвойственной ему методологией, а только то, что потребуется затратить больше усилий и ресурсовШаблон:Sfn.
Методологии программирования различаются по общим затратам на решения задач с разными характеристиками (научные расчёты, финансовые задачи, системы реального времени и т. п.). Масштаб задач и эффективность создаваемого программного обеспечения также являются важными факторами при выборе методологии программированияШаблон:Sfn.
Примечания
Литература
Шаблон:Software Engineering Шаблон:Rq