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

Цей термін має також інші значення див. Методологія (значення).

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

  • філософським підходом або основними принципами. Ці принципи, від яких залежить ефективність всієї методології, зазвичай можна коротко сформулювати і легко пояснити;
  • узгодженим безліччю моделей методів, які реалізують дану методологію;
  • концепціями (поняттями), що дозволяють більш точно визначити методи.

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

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

При підході до методології, як має ядро ​​(англ. Core), відповідне способу опису алгоритму, і додаткові особливості. можна виділити наступні п'ять основних ядер методологій [6]:

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

За топологічної специфіці

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

За специфікою реалізації

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

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

Мови програмування можуть добре підтримувати ті чи інші методології, але це не означає, що деякий мову взагалі не можна використовувати з невластивою йому методологією, а тільки те, що потрібно затратити більше зусиль і ресурсів [2].

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