Пројектни узорци
From Wikipedia, the free encyclopedia
Remove ads
У софтверском инжењерству, пројектни узорак, шаблон или образац (енгл. ) је опште, поново употребљиво решење за честе проблеме који се срећу приликом пројектовања софтвера. Пројектни узорак није готов дизајн који се може директно претворити у изворни код. Он служи само као опис или шаблон прилагођен да реши неки општији пројектни проблем у посебном контексту. Објектно оријентисани пројектни узорци су обично описи комуницирајућих објеката и класа, без одређивања конкретних класа и објеката.
Пројектни узорци припадају домену модула и веза између њих. На вишем нивоу су архитектурни узорци који су већи по опсегу, а обично описују општије обрасце који су везани за цео систем. [1]
Нису сви софтверски узорци у исто време и пројектни узорци. На пример, алгоритми не решавају пројектне проблеме, већ само рачунарске проблеме.
Remove ads
Историјат
Узорци су првобитно настали као концепт у архитектури које је осмислио Кристофер Александер (1977-79). Године 1987, Кент Бек и Вард Канингем су почели да експериментишу са идејом примене узорака у програмирању и изнели су своје резултате исте године на конференцији. Наредних година су Бек, Канингем и остали наставили рад на узорцима.
Пројектни узорци су добили на популарности 1994. године, када је објављена књига коју су написали Ерих Гама, Ричард Хелм, Ралф Џонсон и Џон Влисајдс (познатији као „“ или често скраћено ). Те исте године је одржана и прва конференција о пројектним узорцима.
Remove ads
Пракса
Пројектни узорци могу да убрзају процес развоја софтвера тако што нуде тестиране и доказане парадигме развоја. Ефективно пројектовање софтвера захтева узимање у обзир проблема који нису видљиви све до касних фаза имплементације. Поново употребљиви пројектни узорци помажу да се избегну ситна проблематична питања која касније могу да изазову огромне проблеме, а побољшавају и читљивост изворног кôда оним програмерима који су већ упознати са пројектним узорцима.
Да би се повећала флексибилност, пројектни узорци често уводе додатни ниво комплексности, који у неким случајевима може да усложни дизајн и да чак утиче и на перформансе апликације.
По дефиниције, нови узорак се мора писати од почетка за сваку апликацију која га користи. Пошто неки аутори ово виде као корак уназад од поновне употребљивости компонената, истраживачи су радили на томе да претворе пројектне узорке у готове компоненте. Мејер и Арнаут тврде са имају успешност од 66% у претварању у компоненте најпознатијих узорака. [2]
Често, људи само разумеју како да примене неки пројектни дизајн на одређени проблем. Овакве технике су тешко примењиве на шири скуп проблема. Пројктни узорци нуде општија решења, документовани на начин који не захтева везивање за специфичности одређеног проблема.
Remove ads
Структура
Пројектни узорци су састављени од неколико делова (погледати документацију испод). Најинтересантнији одељци су „Структура“, „Учесници“ и „Колаборација“. Ови одељци описују основну дизајнерску идеју: прототип микроархитектуре коју програмери копирају и прилагођавају њиховом дизајну да би решили проблем који се изнова понавља. Микроархитектура је скуп делова програма (класа, метода...) и веза између њих. Програмери искоришћавају пројектне узорке тако што у сопствени дизајн уводе ове прототипске микроархитектуре, што доводи до тога да њихове микроархитектуре дизајном почињу да личе на основну идеју пројектног узорка.
Поред овога, узорци омогућавају програмерима да комуницирају међусобно користећи имена која су већ увелико у употреби, разумевајући се лакше на тај начин. Основни пројектни узорци се временом могу побољшавати, чинећи их тако робуснијим од дизајна.
Доменски специфични узорци
Уложен је посебан труд да се направе пројектни узорци за одређене домене, укључујући и постојеће пројектне узорке, али и доменски специфичне пројектне узорке. Примери оваквих узорака су пројектни узорци корисничког сучеља [3] , узорци визуелизације података [4] и узорци у веб-дизајнирању [5].
Класификација и листа
Пројектни узорци су оригинално груписани у категорије: узорци креирања, узорци структуре и узорци понашања, а описани концептима делегирања, агрегације и консултације. Још једна класификација је увела и појам архитектурног узорка који се може применити на нивоу архитектуре система, а пример таквог узорка је узорак.
Remove ads
Документација
Документација пројектног узорка описује контекст у коме се узорак користи, проблематику које узорак треба да реши и предложено решење. Не постоји један стандардни формат за документовање пројектних узорака. Штавише, постоји доста различитих формата које су користили различити аутори узорака. Ипак, према Мартину Фаулеру, неке форме за описивање пројектних узорака су постале познатије од других, а самим тим и постале основа за описивање нових пројектних узорака. [6] Један од чешће коришћених формата документације је онај који су користили Ерих Гама и остали („“) при писању књиге „“. Тај формат садржи следеће одељке:
- Име узорка и класификација: Јединствено описно име узорка које служи да се он идентификује.
- Намера: Опис циља који стоји иза узорка и разлози за његово коришћење.
- Познат и као: Остала имена узорка.
- Мотивација: Опис проблема и контекст где је узорак применљив.
- Применљивост: Ситуације у којима је узорак применљив; контекст узорка.
- Структура: Графичка представа узорка. У ову сврху се могу користити дијаграми класа и/или остали дијаграми.
- Учесници: Списак класа и објеката коришћених у узорку и њихових улога у дизајну.
- Колаборација: Опис како класе и објекти коришћени у узорку комуницирају међусобно.
- Консеквенце: Опис резултата и последица примене узорка, као и разумевање цене и добити примене узорка.
- Имплементација: Опис имплементације узорка.
- Примери кôда: Илустративни пример како се узорак може употребити у изворном кôду.
- Примери употреба: Примери употреба узорка из стварног живота.
- Повезани или слични узорци: Остали узорци који су на неки начин у вези са овим узорком. Дискусија између овог и осталих сличних узорака.
Remove ads
Референце
Литература
Спољашње везе
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads