Методологія розробки програмного забезпечення (англ. Software development methodology) — сукупність методів, застосовуваних на різних стадіях життєвого циклу розробки програмного забезпечення, що мають спільний філософський підхід та, відповідно до цього підходу, дозволяють забезпечити найкращу ефективність процесів розробки.
Кожна методологія характеризується:
- Філософським підходом або основними принципами. Ці принципи, від яких залежить ефективність всієї методології, зазвичай можна коротко сформулювати і легко пояснити;
- Узгодженою множиною моделей та методів, які реалізують дану методологію;
- Концепціями (поняттями), що дозволяють більш точно визначити методи.
У вужчому значенні, коли методологія застосовується на стадії програмування (конструювання), її зазвичай називають парадигмою програмування.
Поширені методології програмування: водоспадна модель (waterfall), макетування (prototyping), Ітеративна та інкрементна розробка (iterative and incremental development), (spiral development), спіральна модель (spiral model), швидка розробка програмного забезпечення (rapid application development), екстремальне програмування (extreme programming), різні види методологій гнучкої розробки (agile methodology).
Походження
Можна простежити три шляхи виникнення методологій. По-перше, вони можуть бути вираженням практичного досвіду. По-друге, методології можуть походити від однієї з чотирьох моделей алгоритму: абстрактна машина Тюрінга (імперативне програмування), рекурсивні функції Гільберта і Аккермана (структурне програмування), лямбда-числення Черча (функціональне програмування), нормальні алгоритми Маркова (логічне програмування). По-третє, методології можна пояснити через відображення однієї з трьох структур мови моделювання на структуру мови програмування. Складовими частинами можуть бути структура даних, структура управління і логіка. Кожне з дев'яти відображень визначає або методологію, або досить серйозний метод програмування. Наприклад, відображення логіка-логіка лежить в основі логічного програмування.
Класифікація
Класифікація за ядрами
При зверненні до методології, яка має ядро (англ. core), відповідне способу опису алгоритму, та додаткові особливості, можна виділити такі п'ять основних ядер методологій:
- Методологія імперативного програмування
- Методологія ООП
- Методологія функціонального програмування
- Методологія логічного програмування
- Методологія програмування в обмеженнях
Можна помітити, що ці методології знаходяться на шкалі від навігаційних (покрокове управління виконанням) до специфічних (визначення вимог до результату).
Класифікація за топологічною специфікою
Специфіка (топологічна специфіка) — спосіб вибору методів для уточнення ядра методології. Критерієм якості тієї чи іншої топології можуть бути загальні витрати на розробку ПЗ. Своєю чергою, витрати на розробку залежать серед іншого від ключових мовних абстракцій: абстракції даних, управління і модульності. Наприклад, в імперативній методології можна дотримуватися методів структурного програмування, що дає більш вигідну топологію з погляду мовних засобів. Результатом є методологія структурного програмування.
Класифікація за специфікою реалізації
Відповідно до архітектури апаратного забезпечення, реалізація може бути централізованою або паралельною. Наприклад, методологія (імперативного) паралельного програмування, методологія логічного паралельного програмування.
Крім того, методологія може бути гібридної. Наприклад, найбільш часта суміш функціонального та логічного програмування.
Проводяться дослідження щодо уніфікації методологій програмування.
Приклади методологій
Екстремальне програмування
З усіх гнучких методологій методологія екстремального програмування (XP) — найбільше відома. Частково це сталося тому, що лідери ХР, особливо Кент Бек (Kent Beck) наділені чудовою здатністю привертати до себе увагу. Важливу роль зіграв і талант Кента вербувати прихильників свого руху і вести їх за собою. Можна навіть сказати, що популярність ХР стала в деякому роді проблемою, бо ця методологія практично витіснила всі інші, а разом з ними і ті цінні ідеї, які вони несуть.
XP стоїть на чотирьох китах: Комунікація, Зворотний зв'язок, Простота і Сміливість. Із них слідують дванадцять практик, яким повинні слідувати проєкти, що використовують ХР. Багато з цих практик являють собою старі перевірені техніки, які, однак, багато встигли забути (включаючи більшість передбачуваних процесів). ХР не тільки воскрешає до життя такі техніки, але і з'єднує їх таким чином, що всі вони підтримують і підсилюють один одного.
На цьому фундаменті ХР будує еволюційний процес проєктування, оснований на реорганізації коду системи протягом кожної наступної ітерації. При цьому проєктується тільки та функціональність, яка належить до поточної ітерації, а будь-які майбутні потреби не враховуються. Одержаний в результаті процес вимагає від розробників дисципліни, і водночас поєднує її з високою адаптивністю. Таке дивне поєднання дозволяє припустити, що ХР є найбільш розвиненою адаптивної методології.
Open Source
У більшості проєктів з відкритим вихідним кодом є один або кілька координаторів. Координатор є лідером проєкту, єдиною людиною, яка може робити зміни безпосередньо в репозиторій вихідного коду. Однак, інші розробники теж можуть робити код зміни, з тієї лише різницею, що їм доведеться спочатку відіслати їх координатору, який прогляне виправлений код і вже потім робить зміни в репозиторій. Зазвичай такі зміни мають вигляд патч-файлів, що спрощує подібну процедуру. Таким чином, лідер проєкту координує патчі і стежить тим, щоб вони відповідали загальним планом розроблюваного ПЗ.
Ще однією особливістю розробки проєктів з відкритим вихідним кодом є те, що налагодження програми може вестися паралельно. Таким чином, до неї можна залучити велику кількість людей. Знайшовши в програмі помилку, вони можуть відіслати патч лідеру проєкту. Таким чином, не-координатори виконують дуже важливу функцію, тому що більша частина часу витрачається саме на пошук помилок. Крім того, ця робота підходить тим, у кого немає хороших навичок проєктування.
SCRUM
Методологія Scrum досить давно відома серед тих, хто займається об'єктно-орієнтованими розробками. Як і в інших гнучких методологіях, в ній робиться наголос на тому, що визначений і повторюваний процес годиться тільки для вирішення певних і повторюваних проблем у певному і повторюваному середовищі, в якому працюють і певні повторювані розробники.
Згідно з методом SCRUM, проєкт поділяється на ітерації (які називаються «спринт»), за 30 днів кожна. Перед початком спринту визначається функціональність, яка потрібна на цьому етапі, після чого починає роботу команда розробників. Важливо, щоб протягом одного спринту вимоги залишалися незмінними. Щодня команда розробників збирається на короткі (чверть години) збори, іменовані «scrum» («сутичка»), де побіжно проговорюється, чим займатиметься кожен з розробників протягом наступного дня. Крім того, на таких зборах керівникам компанії дають знати про проблеми в просуванні проєкту, які їм необхідно вирішити, а також повідомляють про виконану роботу, щоб вони ясно уявляли собі, в якій стадії знаходиться розробка.
В методології SCRUM основну увагу приділяють ітеративному плануванню і відстеження процесу. В цілому SCRUM дуже близький до інших гнучких методологій і повинен добре поєднуватися з правилами кодування ХР.
Вибір
Мови програмування можуть добре підтримувати ті чи інші методології, але це не означає, що деяку мову взагалі не можна використовувати з невластивою їй методологією, а тільки ту, у якій потрібно затратити більше зусиль і ресурсів.
Методології програмування розрізняються за загальним витратам на вирішення завдань з різними характеристиками (наукові розрахунки, фінансові завдання, системи реального часу тощо). Масштаб завдань і ефективність створюваного програмного забезпечення також є важливими факторами при виборі методології програмування.
Примітки
- Одінцов, 2004, с. 73
- Тузов В. А. Языки представления знаний. Л., ЛГУ, 1990
- Одинцов, 2004, с. 78
- Одинцов, 2004, с. 78-79
- Одинцов, 2004, с. 79
- Одинцов, 2004, с. 75
Див. також
Джерела
- Martin Fowler. The New Methodology (англ.) (Переклад (рос.))
- A spiral model of software development and enhancement (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Metodologiya rozrobki programnogo zabezpechennya angl Software development methodology sukupnist metodiv zastosovuvanih na riznih stadiyah zhittyevogo ciklu rozrobki programnogo zabezpechennya sho mayut spilnij filosofskij pidhid ta vidpovidno do cogo pidhodu dozvolyayut zabezpechiti najkrashu efektivnist procesiv rozrobki Zhittyevi cikli programnogo zabezpechennya Kozhna metodologiya harakterizuyetsya Filosofskim pidhodom abo osnovnimi principami Ci principi vid yakih zalezhit efektivnist vsiyeyi metodologiyi zazvichaj mozhna korotko sformulyuvati i legko poyasniti Uzgodzhenoyu mnozhinoyu modelej ta metodiv yaki realizuyut danu metodologiyu Koncepciyami ponyattyami sho dozvolyayut bilsh tochno viznachiti metodi U vuzhchomu znachenni koli metodologiya zastosovuyetsya na stadiyi programuvannya konstruyuvannya yiyi zazvichaj nazivayut paradigmoyu programuvannya Poshireni metodologiyi programuvannya vodospadna model waterfall maketuvannya prototyping Iterativna ta inkrementna rozrobka iterative and incremental development spiral development spiralna model spiral model shvidka rozrobka programnogo zabezpechennya rapid application development ekstremalne programuvannya extreme programming rizni vidi metodologij gnuchkoyi rozrobki agile methodology PohodzhennyaMozhna prostezhiti tri shlyahi viniknennya metodologij Po pershe voni mozhut buti virazhennyam praktichnogo dosvidu Po druge metodologiyi mozhut pohoditi vid odniyeyi z chotiroh modelej algoritmu abstraktna mashina Tyuringa imperativne programuvannya rekursivni funkciyi Gilberta i Akkermana strukturne programuvannya lyambda chislennya Chercha funkcionalne programuvannya normalni algoritmi Markova logichne programuvannya Po tretye metodologiyi mozhna poyasniti cherez vidobrazhennya odniyeyi z troh struktur movi modelyuvannya na strukturu movi programuvannya Skladovimi chastinami mozhut buti struktura danih struktura upravlinnya i logika Kozhne z dev yati vidobrazhen viznachaye abo metodologiyu abo dosit serjoznij metod programuvannya Napriklad vidobrazhennya logika logika lezhit v osnovi logichnogo programuvannya KlasifikaciyaKlasifikaciya za yadrami Pri zvernenni do metodologiyi yaka maye yadro angl core vidpovidne sposobu opisu algoritmu ta dodatkovi osoblivosti mozhna vidiliti taki p yat osnovnih yader metodologij Metodologiya imperativnogo programuvannya Metodologiya OOP Metodologiya funkcionalnogo programuvannya Metodologiya logichnogo programuvannya Metodologiya programuvannya v obmezhennyah Mozhna pomititi sho ci metodologiyi znahodyatsya na shkali vid navigacijnih pokrokove upravlinnya vikonannyam do specifichnih viznachennya vimog do rezultatu Klasifikaciya za topologichnoyu specifikoyu Specifika topologichna specifika sposib viboru metodiv dlya utochnennya yadra metodologiyi Kriteriyem yakosti tiyeyi chi inshoyi topologiyi mozhut buti zagalni vitrati na rozrobku PZ Svoyeyu chergoyu vitrati na rozrobku zalezhat sered inshogo vid klyuchovih movnih abstrakcij abstrakciyi danih upravlinnya i modulnosti Napriklad v imperativnij metodologiyi mozhna dotrimuvatisya metodiv strukturnogo programuvannya sho daye bilsh vigidnu topologiyu z poglyadu movnih zasobiv Rezultatom ye metodologiya strukturnogo programuvannya Klasifikaciya za specifikoyu realizaciyi Vidpovidno do arhitekturi aparatnogo zabezpechennya realizaciya mozhe buti centralizovanoyu abo paralelnoyu Napriklad metodologiya imperativnogo paralelnogo programuvannya metodologiya logichnogo paralelnogo programuvannya Krim togo metodologiya mozhe buti gibridnoyi Napriklad najbilsh chasta sumish funkcionalnogo ta logichnogo programuvannya Provodyatsya doslidzhennya shodo unifikaciyi metodologij programuvannya Prikladi metodologijEkstremalne programuvannya Z usih gnuchkih metodologij metodologiya ekstremalnogo programuvannya XP najbilshe vidoma Chastkovo ce stalosya tomu sho lideri HR osoblivo Kent Bek Kent Beck nadileni chudovoyu zdatnistyu privertati do sebe uvagu Vazhlivu rol zigrav i talant Kenta verbuvati prihilnikiv svogo ruhu i vesti yih za soboyu Mozhna navit skazati sho populyarnist HR stala v deyakomu rodi problemoyu bo cya metodologiya praktichno vitisnila vsi inshi a razom z nimi i ti cinni ideyi yaki voni nesut XP stoyit na chotiroh kitah Komunikaciya Zvorotnij zv yazok Prostota i Smilivist Iz nih sliduyut dvanadcyat praktik yakim povinni sliduvati proyekti sho vikoristovuyut HR Bagato z cih praktik yavlyayut soboyu stari perevireni tehniki yaki odnak bagato vstigli zabuti vklyuchayuchi bilshist peredbachuvanih procesiv HR ne tilki voskreshaye do zhittya taki tehniki ale i z yednuye yih takim chinom sho vsi voni pidtrimuyut i pidsilyuyut odin odnogo Na comu fundamenti HR buduye evolyucijnij proces proyektuvannya osnovanij na reorganizaciyi kodu sistemi protyagom kozhnoyi nastupnoyi iteraciyi Pri comu proyektuyetsya tilki ta funkcionalnist yaka nalezhit do potochnoyi iteraciyi a bud yaki majbutni potrebi ne vrahovuyutsya Oderzhanij v rezultati proces vimagaye vid rozrobnikiv disciplini i vodnochas poyednuye yiyi z visokoyu adaptivnistyu Take divne poyednannya dozvolyaye pripustiti sho HR ye najbilsh rozvinenoyu adaptivnoyi metodologiyi Open Source U bilshosti proyektiv z vidkritim vihidnim kodom ye odin abo kilka koordinatoriv Koordinator ye liderom proyektu yedinoyu lyudinoyu yaka mozhe robiti zmini bezposeredno v repozitorij vihidnogo kodu Odnak inshi rozrobniki tezh mozhut robiti kod zmini z tiyeyi lishe rizniceyu sho yim dovedetsya spochatku vidislati yih koordinatoru yakij proglyane vipravlenij kod i vzhe potim robit zmini v repozitorij Zazvichaj taki zmini mayut viglyad patch fajliv sho sproshuye podibnu proceduru Takim chinom lider proyektu koordinuye patchi i stezhit tim shob voni vidpovidali zagalnim planom rozroblyuvanogo PZ She odniyeyu osoblivistyu rozrobki proyektiv z vidkritim vihidnim kodom ye te sho nalagodzhennya programi mozhe vestisya paralelno Takim chinom do neyi mozhna zaluchiti veliku kilkist lyudej Znajshovshi v programi pomilku voni mozhut vidislati patch lideru proyektu Takim chinom ne koordinatori vikonuyut duzhe vazhlivu funkciyu tomu sho bilsha chastina chasu vitrachayetsya same na poshuk pomilok Krim togo cya robota pidhodit tim u kogo nemaye horoshih navichok proyektuvannya SCRUM Metodologiya Scrum dosit davno vidoma sered tih hto zajmayetsya ob yektno oriyentovanimi rozrobkami Yak i v inshih gnuchkih metodologiyah v nij robitsya nagolos na tomu sho viznachenij i povtoryuvanij proces goditsya tilki dlya virishennya pevnih i povtoryuvanih problem u pevnomu i povtoryuvanomu seredovishi v yakomu pracyuyut i pevni povtoryuvani rozrobniki Zgidno z metodom SCRUM proyekt podilyayetsya na iteraciyi yaki nazivayutsya sprint za 30 dniv kozhna Pered pochatkom sprintu viznachayetsya funkcionalnist yaka potribna na comu etapi pislya chogo pochinaye robotu komanda rozrobnikiv Vazhlivo shob protyagom odnogo sprintu vimogi zalishalisya nezminnimi Shodnya komanda rozrobnikiv zbirayetsya na korotki chvert godini zbori imenovani scrum sutichka de pobizhno progovoryuyetsya chim zajmatimetsya kozhen z rozrobnikiv protyagom nastupnogo dnya Krim togo na takih zborah kerivnikam kompaniyi dayut znati pro problemi v prosuvanni proyektu yaki yim neobhidno virishiti a takozh povidomlyayut pro vikonanu robotu shob voni yasno uyavlyali sobi v yakij stadiyi znahoditsya rozrobka V metodologiyi SCRUM osnovnu uvagu pridilyayut iterativnomu planuvannyu i vidstezhennya procesu V cilomu SCRUM duzhe blizkij do inshih gnuchkih metodologij i povinen dobre poyednuvatisya z pravilami koduvannya HR VibirMovi programuvannya mozhut dobre pidtrimuvati ti chi inshi metodologiyi ale ce ne oznachaye sho deyaku movu vzagali ne mozhna vikoristovuvati z nevlastivoyu yij metodologiyeyu a tilki tu u yakij potribno zatratiti bilshe zusil i resursiv Metodologiyi programuvannya rozriznyayutsya za zagalnim vitratam na virishennya zavdan z riznimi harakteristikami naukovi rozrahunki finansovi zavdannya sistemi realnogo chasu tosho Masshtab zavdan i efektivnist stvoryuvanogo programnogo zabezpechennya takozh ye vazhlivimi faktorami pri vibori metodologiyi programuvannya PrimitkiOdincov 2004 s 73 Tuzov V A Yazyki predstavleniya znanij L LGU 1990 Odincov 2004 s 78 Odincov 2004 s 78 79 Odincov 2004 s 79 Odincov 2004 s 75Div takozhGRASPDzherelaMartin Fowler The New Methodology angl Pereklad ros A spiral model of software development and enhancement angl