Методологія програмування
Цей термін має також інші значення див. Методологія (значення).
Методологія програмування - сукупність методів, що застосовуються на різних стадіях життєвого циклу програмного забезпечення і мають загальний філософський підхід [1].
- філософським підходом або основними принципами. Ці принципи, від яких залежить ефективність всієї методології, зазвичай можна коротко сформулювати і легко пояснити;
- узгодженим безліччю моделей методів, які реалізують дану методологію;
- концепціями (поняттями), що дозволяють більш точно визначити методи.
В окремому випадку, коли методологія застосовується на стадії програмування (конструювання), її зазвичай називають парадигмою програмування [2].
Можна простежити три шляхи виникнення методологій. По-перше, вони можуть бути виразом практичного досвіду. По-друге, методології можуть походити від однієї з чотирьох моделей алгоритму: абстрактна машина Тьюринга (імперативне програмування), рекурсивні функції Гільберта і Аккермана (структурне програмування), лямбда-числення Черча (функціональне програмування), нормальні алгорифм Маркова (логічне програмування) [3 ] [4]. По-третє, методології можна пояснити через відображення однієї з трьох структур мови моделювання на структуру мови програмування [5]. Складовими частинами можуть бути структура даних. структура управління і логіка. Кожне з дев'яти відображень визначає або методологію, або достатньо серйозний метод програмування. Наприклад, відображення логіка-логіка лежить в основі логічного програмування [4].
При підході до методології, як має ядро (англ. Core), відповідне способу опису алгоритму, і додаткові особливості. можна виділити наступні п'ять основних ядер методологій [6]:
Можна помітити, що ці методології знаходяться на шкалі від навігаційних (покрокове управління виконанням) до специфікаційних (визначення вимог до результату) [6].
За топологічної специфіці
Специфіка (топологічна специфіка) - спосіб вибору методів для уточнення ядра методології. Критерієм якості тієї чи іншої топології може можуть бути загальні витрати на розробку ПО. У свою чергу, витрати на розробку залежать серед іншого від ключових мовних абстракцій: абстракції даних, управління і модульності. Наприклад, в імперативній методології можна дотримуватися методів структурного програмування. що дає більш вигідну топологію з точки зору мовних абстракцій. Результатом є методологія структурного програмування [7].
За специфікою реалізації
У відповідності з архітектурою апаратного забезпечення, реалізація може бути централізованою або паралельної. Наприклад, методологія (імперативного) паралельного програмування, методологія логічного паралельного програмування [8].
Крім того, методологія може бути гібридної. Наприклад, найбільш часта суміш функціонального і логічного програмування [8].
Мови програмування можуть добре підтримувати ті чи інші методології, але це не означає, що деякий мову взагалі не можна використовувати з невластивою йому методологією, а тільки те, що потрібно затратити більше зусиль і ресурсів [2].
Методології програмування розрізняються по загальних витрат на вирішення завдань з різними характеристиками (наукові розрахунки, фінансові завдання, системи реального часу і т. П.). Масштаб завдань і ефективність створюваного програмного забезпечення також є важливими факторами при виборі методології програмування [9].