Feature driven development (FDD, розробка, керована функціональністю) — ітеративна методологія розробки програмного забезпечення, одна з гнучких методологій розробки (agile). FDD являє собою спробу об'єднати найбільш визнані в індустрії розробки програмного забезпечення методики, які беруть за основу важливу для замовника функціональність (властивості) розроблюваного програмного забезпечення. Основною метою даної методології є розробка реального, працюючого програмного забезпечення систематично, в поставлені терміни.
Історія
FDD була запропонована Джеффом Де Люка для проєкту (розрахованого на 15 місяців і 50 осіб) з розробки програмного забезпечення для одного великого Сінгапурського банку в 1997 році. Де Люка виділив набір з п'яти процесів, що охоплює як розробку загальної моделі, так і ведення списку, планування, проєктування і реалізацію елементів функціональності (англ. feature).
Перший опис FDD з'явився в 1996 році в главі 6 книги Java Modeling in Color with UML [1]. У книзі A Practical Guide to Feature-Driven Development [2] (2002 рік) опис FDD було узагальнено, і зокрема позбавлено від прив'язок до конкретної мови програмування.
Огляд
FDD включає в себе п'ять базових видів діяльності:
- Розробка загальної моделі;
- Складання списку необхідних функцій системи;
- Планування роботи над кожною функцією;
- Проєктування функції;
- Реалізація функції.
Перші два процеси відносяться до початку проєкту. Останні три здійснюються для кожної функції. Розробники в FDD діляться на «господарів класів» і «головних програмістів». Головні програмісти залучають господарів задіяних класів до роботи над черговою властивістю. Робота над проєктом передбачає часті збірки і ділиться на ітерації, кожна з яких передбачає реалізацію певного набору функцій.
Розробка загальної моделі
Розробка починається з високорівневого наскрізного аналізу обсягу кола вирішуваних завдань і контексту системи. Далі для кожної модельованої області робиться більш детальний наскрізний аналіз. Наскрізні опису складаються в невеликих групах і виносяться на подальше обговорення та експертну оцінку. Одна з пропонованих моделей або їх об'єднання стає моделлю для конкретної області. Моделі кожній області завдань об'єднуються в загальну підсумкову модель, яка змінюється в ході роботи.
Складання списку можливостей (функцій)
Інформація, зібрана при побудові загальної моделі, використовується для складання списку функцій. Це здійснюється розбиттям областей (англ. domain) на підобласті (предметні області, англ. subject areas) з точки зору функціональності. Кожна окрема підобласть відповідає якомусь бізнес-процесу, кроки якого стають списком функцій (властивостей). У даному випадку функції - це маленькі частини розуміються користувачем функцій, представлених у вигляді «<дія> <результат> <об'єкт>», наприклад, «перевірка пароля користувача». Розробка кожної функції повинна займати не більше 2 тижнів, інакше задачу необхідно розбити на кілька підзадач, кожна з яких зможе бути завершена за встановлений двотижневий термін.
План за властивостями (функціями)
Після складання списку основних функцій, настає черга складання плану розробки програмного забезпечення. Володіння класами розподіляється серед провідних програмістів шляхом упорядкування та організації властивостей (або наборів властивостей) в класи.
Проєктування функцій
Для кожної властивості створюється проєктувальний пакет. Провідний программіст виділяє невелику групу властивостей для розробки протягом двох тижнів. Разом з розробниками відповідного класу провідний програміст складає докладні діаграми послідовності для кожної властивості, уточнюючи загальну модель. Далі пишуться «болванки» класів і методів, і відбувається критичний розгляд дизайну.
Реалізація функції
Після успішного розгляду дизайну, дана видима клієнту функціональність реалізується до стану готовності. Для кожного класу пишеться програмний код. Після модульного тестування кожного блоку і перевірки коду, завершена функція включається в основний проєкт (англ. build).
Етапи
Так як функції малі, то їх розробка - відносно легке завдання. Для моніторингу проєкту з розробки ПЗ і надання точних даних про розвиток проєкту необхідно протоколювати розробку кожної властивості (функції). FDD виділяє шість послідовних етапів для кожної функції (властивості). Перші три повністю завершуються в процесі проєктування, останні три - в процесі реалізації. Для зручності контролю за виконанням робіт на кожному етапі показується відсоток його готовності (виконання). У таблиці нижче наведені основні етапи. Функція, яка все ще знаходиться в розробці, завершена на 44% (Аналіз області 1% + Дизайн 40% + Перевірка дизайну 3% = 44%)
Аналіз області | Дизайн | Перевірка дизайну | Код | Перевірка коду | Включення до збірки |
1 % | 40 % | 3 % | 45 % | 10 % | 1 % |
Передовий досвід
FDD побудований на основі набору передового досвіду (набору найкращих практик), визнаного в галузі і отриманого з інженерії програмного забезпечення. Ці практичні методи будуються з точки зору важливого для клієнта функціоналу. Нижче подано короткий опис кожного методу:
- Об'єктне моделювання області. Об'єктне моделювання складається з дослідження і з'ясування рамок предметної області розв'язуваної задачі. Результатом є загальний каркас, який можна надалі доповнювати функціями.
- Розробка по функції. Будь-яка функція, яка занадто складна для розробки протягом двох тижнів, розбивається на менші підфункції до тих пір, поки кожна підзадача не може бути названа властивістю (тобто, бути реалізована за 2 тижні). Це полегшує створення коректно працюючих функцій, розширення і модифікацію системи.
- Індивідуальне володіння класом (кодом). Означає, що кожен блок коду закріплений за конкретним власником-розробником. Власник відповідальний за узгодженість, продуктивність і концептуальну цілісність своїх класів.
- Команда з розробки функцій (властивостей). Команда з розробки функцій (властивостей) - маленька команда розробників, яка формується динамічно і займається невеликою підзадачею. Дозволяє декільком розробникам брати участь у дизайні властивості, а також оцінювати дизайнерські рішення перед вибором найкращого.
- Перевірка коду (англ. code review) Перевірки забезпечують хорошу якість коду, в першу чергу шляхом виявлення помилок.
- Конфігураційне управління. Допомагає з ідентифікацією вихідного коду для всіх функцій (властивостей), розробка яких завершена на поточний момент, і з протоколюванням змін, зроблених розробниками класів.
- Регулярна збірка. Регулярна збірка гарантує, що завжди є продукт (система), яка може бути представлена замовнику, і допомагає знаходити помилки при об'єднанні частин вихідного коду на ранніх етапах.
- Осяжність ходу робіт і результатів. Часті і точні звіти про хід виконання робіт на всіх рівнях всередині і за межами проєкту допомагають менеджерам правильно керувати проєктом.
Див. Також
Примітки
Література
- ↑ Coad, P., Lefebvre, E. & De Luca, J. (1999). Java Modeling In Color With UML: Enterprise Components and Process. Prentice Hall International. ()
- ↑ Palmer, S.R., & Felsing, J.M. (2002). A Practical Guide to Feature-Driven Development. Prentice Hall. ()
- Alan S. Koch. Agile Software Development: Evaluating the Methods for Your Organization. — Artech House, 2004. — 280 с. — . (Appendix F)
Посилання
- Feature Driven Development Community [ 22 червня 2015 у Wayback Machine.]
- FDD and Agile Modeling [ 9 травня 2015 у Wayback Machine.]
- Interview with FDD-Creator Jeff DeLuca [ 14 квітня 2015 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Feature driven development FDD rozrobka kerovana funkcionalnistyu iterativna metodologiya rozrobki programnogo zabezpechennya odna z gnuchkih metodologij rozrobki agile FDD yavlyaye soboyu sprobu ob yednati najbilsh viznani v industriyi rozrobki programnogo zabezpechennya metodiki yaki berut za osnovu vazhlivu dlya zamovnika funkcionalnist vlastivosti rozroblyuvanogo programnogo zabezpechennya Osnovnoyu metoyu danoyi metodologiyi ye rozrobka realnogo pracyuyuchogo programnogo zabezpechennya sistematichno v postavleni termini IstoriyaFDD bula zaproponovana Dzheffom De Lyuka dlya proyektu rozrahovanogo na 15 misyaciv i 50 osib z rozrobki programnogo zabezpechennya dlya odnogo velikogo Singapurskogo banku v 1997 roci De Lyuka vidiliv nabir z p yati procesiv sho ohoplyuye yak rozrobku zagalnoyi modeli tak i vedennya spisku planuvannya proyektuvannya i realizaciyu elementiv funkcionalnosti angl feature Pershij opis FDD z yavivsya v 1996 roci v glavi 6 knigi Java Modeling in Color with UML 1 U knizi A Practical Guide to Feature Driven Development 2 2002 rik opis FDD bulo uzagalneno i zokrema pozbavleno vid priv yazok do konkretnoyi movi programuvannya OglyadFDD vklyuchaye v sebe p yat bazovih vidiv diyalnosti Rozrobka zagalnoyi modeli Skladannya spisku neobhidnih funkcij sistemi Planuvannya roboti nad kozhnoyu funkciyeyu Proyektuvannya funkciyi Realizaciya funkciyi Pershi dva procesi vidnosyatsya do pochatku proyektu Ostanni tri zdijsnyuyutsya dlya kozhnoyi funkciyi Rozrobniki v FDD dilyatsya na gospodariv klasiv i golovnih programistiv Golovni programisti zaluchayut gospodariv zadiyanih klasiv do roboti nad chergovoyu vlastivistyu Robota nad proyektom peredbachaye chasti zbirki i dilitsya na iteraciyi kozhna z yakih peredbachaye realizaciyu pevnogo naboru funkcij Rozrobka zagalnoyi modeli Rozrobka pochinayetsya z visokorivnevogo naskriznogo analizu obsyagu kola virishuvanih zavdan i kontekstu sistemi Dali dlya kozhnoyi modelovanoyi oblasti robitsya bilsh detalnij naskriznij analiz Naskrizni opisu skladayutsya v nevelikih grupah i vinosyatsya na podalshe obgovorennya ta ekspertnu ocinku Odna z proponovanih modelej abo yih ob yednannya staye modellyu dlya konkretnoyi oblasti Modeli kozhnij oblasti zavdan ob yednuyutsya v zagalnu pidsumkovu model yaka zminyuyetsya v hodi roboti Skladannya spisku mozhlivostej funkcij Informaciya zibrana pri pobudovi zagalnoyi modeli vikoristovuyetsya dlya skladannya spisku funkcij Ce zdijsnyuyetsya rozbittyam oblastej angl domain na pidoblasti predmetni oblasti angl subject areas z tochki zoru funkcionalnosti Kozhna okrema pidoblast vidpovidaye yakomus biznes procesu kroki yakogo stayut spiskom funkcij vlastivostej U danomu vipadku funkciyi ce malenki chastini rozumiyutsya koristuvachem funkcij predstavlenih u viglyadi lt diya gt lt rezultat gt lt ob yekt gt napriklad perevirka parolya koristuvacha Rozrobka kozhnoyi funkciyi povinna zajmati ne bilshe 2 tizhniv inakshe zadachu neobhidno rozbiti na kilka pidzadach kozhna z yakih zmozhe buti zavershena za vstanovlenij dvotizhnevij termin Plan za vlastivostyami funkciyami Pislya skladannya spisku osnovnih funkcij nastaye cherga skladannya planu rozrobki programnogo zabezpechennya Volodinnya klasami rozpodilyayetsya sered providnih programistiv shlyahom uporyadkuvannya ta organizaciyi vlastivostej abo naboriv vlastivostej v klasi Proyektuvannya funkcij Dlya kozhnoyi vlastivosti stvoryuyetsya proyektuvalnij paket Providnij programmist vidilyaye neveliku grupu vlastivostej dlya rozrobki protyagom dvoh tizhniv Razom z rozrobnikami vidpovidnogo klasu providnij programist skladaye dokladni diagrami poslidovnosti dlya kozhnoyi vlastivosti utochnyuyuchi zagalnu model Dali pishutsya bolvanki klasiv i metodiv i vidbuvayetsya kritichnij rozglyad dizajnu Realizaciya funkciyi Pislya uspishnogo rozglyadu dizajnu dana vidima kliyentu funkcionalnist realizuyetsya do stanu gotovnosti Dlya kozhnogo klasu pishetsya programnij kod Pislya modulnogo testuvannya kozhnogo bloku i perevirki kodu zavershena funkciya vklyuchayetsya v osnovnij proyekt angl build EtapiTak yak funkciyi mali to yih rozrobka vidnosno legke zavdannya Dlya monitoringu proyektu z rozrobki PZ i nadannya tochnih danih pro rozvitok proyektu neobhidno protokolyuvati rozrobku kozhnoyi vlastivosti funkciyi FDD vidilyaye shist poslidovnih etapiv dlya kozhnoyi funkciyi vlastivosti Pershi tri povnistyu zavershuyutsya v procesi proyektuvannya ostanni tri v procesi realizaciyi Dlya zruchnosti kontrolyu za vikonannyam robit na kozhnomu etapi pokazuyetsya vidsotok jogo gotovnosti vikonannya U tablici nizhche navedeni osnovni etapi Funkciya yaka vse she znahoditsya v rozrobci zavershena na 44 Analiz oblasti 1 Dizajn 40 Perevirka dizajnu 3 44 Tablicya 1 Osnovni etapi Analiz oblasti Dizajn Perevirka dizajnu Kod Perevirka kodu Vklyuchennya do zbirki1 40 3 45 10 1 Peredovij dosvidFDD pobudovanij na osnovi naboru peredovogo dosvidu naboru najkrashih praktik viznanogo v galuzi i otrimanogo z inzheneriyi programnogo zabezpechennya Ci praktichni metodi buduyutsya z tochki zoru vazhlivogo dlya kliyenta funkcionalu Nizhche podano korotkij opis kozhnogo metodu Ob yektne modelyuvannya oblasti Ob yektne modelyuvannya skladayetsya z doslidzhennya i z yasuvannya ramok predmetnoyi oblasti rozv yazuvanoyi zadachi Rezultatom ye zagalnij karkas yakij mozhna nadali dopovnyuvati funkciyami Rozrobka po funkciyi Bud yaka funkciya yaka zanadto skladna dlya rozrobki protyagom dvoh tizhniv rozbivayetsya na menshi pidfunkciyi do tih pir poki kozhna pidzadacha ne mozhe buti nazvana vlastivistyu tobto buti realizovana za 2 tizhni Ce polegshuye stvorennya korektno pracyuyuchih funkcij rozshirennya i modifikaciyu sistemi Individualne volodinnya klasom kodom Oznachaye sho kozhen blok kodu zakriplenij za konkretnim vlasnikom rozrobnikom Vlasnik vidpovidalnij za uzgodzhenist produktivnist i konceptualnu cilisnist svoyih klasiv Komanda z rozrobki funkcij vlastivostej Komanda z rozrobki funkcij vlastivostej malenka komanda rozrobnikiv yaka formuyetsya dinamichno i zajmayetsya nevelikoyu pidzadacheyu Dozvolyaye dekilkom rozrobnikam brati uchast u dizajni vlastivosti a takozh ocinyuvati dizajnerski rishennya pered viborom najkrashogo Perevirka kodu angl code review Perevirki zabezpechuyut horoshu yakist kodu v pershu chergu shlyahom viyavlennya pomilok Konfiguracijne upravlinnya Dopomagaye z identifikaciyeyu vihidnogo kodu dlya vsih funkcij vlastivostej rozrobka yakih zavershena na potochnij moment i z protokolyuvannyam zmin zroblenih rozrobnikami klasiv Regulyarna zbirka Regulyarna zbirka garantuye sho zavzhdi ye produkt sistema yaka mozhe buti predstavlena zamovniku i dopomagaye znahoditi pomilki pri ob yednanni chastin vihidnogo kodu na rannih etapah Osyazhnist hodu robit i rezultativ Chasti i tochni zviti pro hid vikonannya robit na vsih rivnyah vseredini i za mezhami proyektu dopomagayut menedzheram pravilno keruvati proyektom Div TakozhGnuchka rozrobka programnogo zabezpechennyaPrimitkiLiteratura Coad P Lefebvre E amp De Luca J 1999 Java Modeling In Color With UML Enterprise Components and Process Prentice Hall International ISBN 0 13 011510 X Palmer S R amp Felsing J M 2002 A Practical Guide to Feature Driven Development Prentice Hall ISBN 0 13 067615 2 Alan S Koch Agile Software Development Evaluating the Methods for Your Organization Artech House 2004 280 s ISBN 978 1580538428 Appendix F PosilannyaFeature Driven Development Community 22 chervnya 2015 u Wayback Machine FDD and Agile Modeling 9 travnya 2015 u Wayback Machine Interview with FDD Creator Jeff DeLuca 14 kvitnya 2015 u Wayback Machine