Фрејмворк — разлика између измена

Садржај обрисан Садржај додат
Autobot (разговор | доприноси)
м Разне исправке; козметичке измене
Ред 2:
 
Оквири садрже кључно препознатљиве могућности које их одвајају од нормалних библиотека:
* ''[[Инверзија контроле]]'': У оквиру, за разлику од библиотека или нормалних апликација корисника, свеобухватно програмско [[управљање током]] није наређивано од стране саговорника, већ од стране оквира.<ref>{{Шаблон:Citation|url = http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf|last=Riehle|first = Dirk|last = Riehle|title = Framework Design: A Role Modeling Approach|publisher = [[ETH Zurich|Swiss Federal Institute of Technology]]|year = 2000|postscript = <!--none-->}}</ref>
* ''подразумевано понашање'': Оквир има подразумевано понашање. Ово подразумевано понашање мора бити неко корисно понашање а не скуп бескорисних потпрограма.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;" contenteditable="false">&#x5B;''<span title="This claim needs references to reliable sources. (January 2015)">citation needed</span>''&#x5D;</sup>
* '' [[растегљивост]]: ''Оквир може бити проширен од стране корисника обично селективним обарањем или специјализованим кодом корисника да омогући специфичне функционалности.
Ред 8:
 
== Образложење ==
Дизајнери програмских оквира циљају да олакшају софтверски развој омогућавајући дизајнерима и програмерима да одвоје своје време на упознавање софтверских захтева уместо на детаље вишестандардног нижег нивоа које доприносе систем који ради, и тиме смањујући свеобухватно време развоја.<ref>{{Шаблон:Cite web|url = http://docforge.com/wiki/Framework|title = Framework|accessdate = 15 December 2008|work = DocForge}}</ref> На пример, тим који користи [[оквир веб прилога]] да направи банкарски веб сајт се може фокусирати на писање кода који се посебно односи на банкарство уместо на механику захтева и управљања.
 
Оквири често додају величини програма, феномен назван "[[Code_bloat|code bloat]]". Звог апликацијских захтева корисника, и такмичарски и комплементарни оквири понекад се појаве заједно у производу. Даље, звог комплексности АПИ-а, намењено смањење у свеовухватном времену развоја можда не може бити постигнуто због потребе за додатним временом на учење коришћења оквира; ова критика је очито валидна када посебни или нови оквир је први пут сусретнут од стране развојног тима.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;" contenteditable="false">&#x5B;''<span title="This claim needs references to reliable sources. (April 2011)">citation needed</span>''&#x5D;</sup> Ако се такав оквир не искористи у следећим задацима посла, уложено време у учењу оквира може коштати више него код који је посебно написан, а познат пројектном тиму; многи програмери чувају копије корисног boilerplate-а за честе потребе.
 
Какогод, када се оквир коначно научи, будући пројекти могу бити брже и лакше завршени; концепт оквира је да се направи скуп једна-величина-која-одговара-свима решења, и са присношћу, производња кода би логично требала да се догоди. Не постоје тврдње око величине кода која је евентуално уграђена са извозом производа, нити око њене ефикасности и концизности. Коришћење било ког библиотекарског решења неопходно повлачи са собом додатке и некоришћена спољна средства осим ако је програм везник компајлера и објекта правећи тесни (мали, потпуно контролисани, и одређени) извршни модул.
Ред 20:
== Примери ==
Програмски оквири овично садрже знатна вођења домаћинства и код алатке да би помогли у бут-стрепу корисничких апликација, али генерално се фокусирајући на специфичне проблеме домена, као што су:
* Уметничко цртање, композиција музике, и механички [[CAD]]<ref>{{Шаблон:Citation|doi = 10.1145/98188.98197|last1 = Vlissides|first1 = J M|last2 = Linton|first2 = M A|year = 1990|title = Unidraw: a framework for building domain-specific graphical editors|journal = ACM Transactions of Information Systems|volume = 8|issue = 3|pages = 237–268|postscript = <!--none-->|pages=237–268}}</ref><ref>{{Шаблон:Citation|last = Johnson|first = R E|year = 1992|title = Documenting frameworks using patterns|publisher = ACM Press|journal = Proceedings of the Conference on Object Oriented Programming Systems Languages and Applications|pages = 63–76|postscript = <!--none-->|pages=63–76}}</ref>
* Апликације модела финансирања<ref>{{Шаблон:Citation|last1 = Birrer|first1 = A|first2 = T|last2 = Eggenschwiler|year = 1993|work = Frameworks in the financial engineering domain: an experience report|publisher = [[Springer-Verlag]]|title = Proceedings of the European conference on object-oriented programming|pages = 21–35}}</ref>
* Апликације модела система Земље<ref>{{Шаблон:Citation|last1 = Hill|first1 = C|first2 = C|last2 = DeLuca|first3 = V|last3 = Balaji|first4 = M|last4 = Suarez|first5 = A|last5 = da Silva|title = Architecture of the Earth System Modeling Framework ([[ESMF]])|journal = Computing in Science and Engineering|year = 2004|pages = 18–28|postscript = <!--none-->|pages=18–28}}</ref>
* [[Sistemi za podršku odlučivanju|Системи за подршку у одлучивању]]<ref>{{Шаблон:Citation|last = Gachet|first = A|year = 2003|title = Software Frameworks for Developing Decision Support Systems – A New Component in the Classification of DSS Development Tools|journal = Journal of Decision Systems|volume = 12|issue = 3|pages = 271–281|postscript = <!--none-->|pages=271–281}}</ref>
* [[Мултимедијални оквир]] - Репродукција медијских фајлова
* [[Ajaks (programiranje)|Ajax оквир]] / [[JavaScript оквир]]
* [[Оквир веб прилога|Оквир веб прилога]]
* [[Posredni softver|Посредни софтвер]]
* [[Cactus оквир]] - Научно рачунање високих перформанси<br />
* [[Оквир апликације]] - Генералне апликације [[Grafički korisnički interfejs|ГКИ]]<br />
* [[Enterprise Architecture оквир]]
* [[Oracle Application Development оквир]]
 
== Архитектура ==
Према Прију,<ref>{{Шаблон:Citation|title = Meta Patterns: A Means for Capturing the Essentials of Reusable Object-Oriented Design|author last= Pree, |first=W|journal = Proceedings of the 8th European Conference on Object-Oriented Programming|pages = 150–162|year = 1994|publisher = [[Springer-Verlag]]|pages=150–162}}</ref> програмски оквири се састоје из ''залеђених делова'' и''врућих делова''. ''Залеђени делови'' дефинишу свеобухватну архитектуру програмског система, мислећи се на основне компоненте и везе између њих. Оне остају непромењене (замрзнуте) и било ком делу оквира апликације. ''Врући делови'' представљају оне делове где програмери који користе оквир да додају свој код да додају функционалност специфичну за свој пројекат.
 
У окружењу [[Објектно-оријентисано програмирање|објектно-орјентисаног програмирања]], оквир се састоји из апстрактних и конкретних класа. Примери таквих оквира се састоје из компоновања и [[Наслеђивање (објектно-оријентисано програмирање)|наслеђивања]] већ постојећих класа.<ref>{{Шаблон:Citation|last = Buschmann|first = F|year = 1996|title = Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester|publisher = [[John Wiley & Sons|Wiley]]|isbn id=ISBN 0-471-95869-7|postscript = <!--none-->}}</ref>
 
Приликом развоја конкретног програмског система са програмским оквиром, програмери искоришћавају вруће делове у складу са специфичним потребама и неопходности система. Програмски оквири се ослањају на [[Холивудски принцип]]: "Не зовите нас, ми ћемо вас звати."<ref>{{Шаблон:Citation|last = Larman|first = C|year = 2001|title = Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process|isbn id=ISBN 0-13-092569-1|publisher = [[Prentice Hall]]|edition = 2nd|postscript = <!--none-->}}</ref> Ово значи да кориснички дефинисане класе (на пример, нове подкласе), добијају поруке из већ дефинисаних оквира класа. Програмери обично рукују са овим имплементирајући апстрактних метода [[Наслеђивање (објектно-оријентисано програмирање)|наслеђивања]].
 
== Погледати такође ==
Ред 48:
 
== Референце ==
{{Reflistreflist|30em}}
 
== Спољни линкови ==
Ред 54:
* [http://davis.lbl.gov/home/scidac/node8.html Approach to Software Framework Design]
* [http://www.cse.wustl.edu/~schmidt/PDF/HPL.pdf Applying Patterns and Frameworks to Develop Object-Oriented Communication Software]
 
[[Категорија:Објектно-орјентисано програмирање]]
[[Категорија:Софтверска архитектура]]