Развој базиран на компонентама

Проф. др Игор Дејановић (igord на uns ac rs)

Креирано 2026-01-13 Tue 16:21, притисни ESC за мапу, Ctrl+Shift+F за претрагу, "?" за помоћ

1. Развој софтвера

In a world of rapidly changing business requirements, custom-made software is often too late – too late to be productive before becoming obsolete.

2. Модуларизација

  • Савладавање комплексности софтвера поделом на мање целине – Divide and Conquer принцип.
  • Модули треба да имају високу кохезију и слабу спрегу са другим модулима.

3. Софтверске компоненте

  • Софтверске компоненте су извршиве јединице које се независно производе, добављају и инсталирају и које се могу компоновати у циљу формирања функционалног система.
  • У циљу обезбеђивања композиције, компоненте морају да поштују одређени компонентни модел и да буду креиране за одређену циљну платформу.
  • Систем састављен од софтверских компоненти се назива компонентни софтвер (component software).

4. Развој базиран на компонентама

  • Развој базиран на компонентама (Component-Based Development - CBD) – израда софтвера употребом софтверских компоненти.
  • Компонентизација није нова идеја – успешно се примењује у различитим областима…
  • …ali до недавно није било великог успеха у области развоја софтвера.

5. Шта је проблем са софтвером?

Често се тврди да је софтвер превише флексибилан да би било могуће креирати компоненте – ово не може бити разлог већ више знак незрелости области.

6. Интеграција као предуслов поновне искористљивости компоненти

A key issue is that today's software environments focus on writing new software, instead of integrating existing software into new systems. In reality, integrating existing code has become a large part of the work of software developers. Therefore, there is a need for tools that standardize the integration aspects of software so that reusing existing components becomes reliable, robust and cheap.

7. Предуслови успешне компонентизације

  • Постојање стандарда који су практични и остварљиви:
    • OSGi
    • EJB
    • DCOM и ActiveX
    • CORBA
  • Постојање тржишта компоненти:
    • Eclipse Marketplace
    • Firefox/Chrome прикључци
    • Google Play, Apple App Store и др.
  • Исплативост развоја: сматра се да компонента мора бар 3 пута да се искористи да би се њен развој исплатио.

8. Врсте софтвера према начину добављања

  • Наменски израђен софтвер (Custom made)
  • Стандардни софтвер

9. Наменски израђен софтвер

  • Може бити у потпуности прилагођен кориснику.
  • Може користити власничка знања и искуство фирме за коју се производи.
  • Овим се може постићи значајна предност на тржишту.
  • Развој и одржавање може бити скупо. Интероперабилност са другим системима може бити проблематично.

10. Стандардни софтвер

  • Купује се готов и параметризује се да буде довољно добар за посао за који се користи.
  • Кратко време изградње – своди се на конфигурацију и прилагођавање.
  • Унапређење, одржавање и имплементација интероперабилности са другим системима се пребацује на произвођача стандардног софтвера.
  • Тешко може бити основа стицања предности на тржишту јер и конкуренција може купити исти софтвер.

11. Проблем са стандардним софтвером

  • Често захтева драстичну промену пословних процеса и начина рада у циљу прилагођавања – пример: увођење SAP R/3 у Аустралијску пошту.
  • Измену процеса би требало радити у складу са изменом пословног окружења а не у циљу прилагођавања предвиђеном начину рада софтвера.

12. Компонентни софтвер – хибридни приступ

  • Наменски израдити компоненте у домену експертизе.
  • Купити стандардне компоненте за остале домене.
  • Пример: куповина GUI компоненти, компоненти за рад са XML датотекама, базама и сл.
  • Добијамо предност на тржишту јер у свом домену радимо посао на начин на који желимо али истовремено убрзавамо развој употребом стандардних, робусних компоненти у доменима који нису од пресудног значаја за наш пословни домен.

13. Еволутивни развој

  • За разлику од монолитних решења где имамо периодичну замену система новим (револутивни приступ) код компонентног развоја унапређење система можемо радити еволутивно кроз независно унапређење компоненти.
  • Имамо низ чешћих мањих промена уместо ређих великих промена које мењају систем из корена.

14. Универзалне компоненте?

  • … не постоје.
  • Компоненте се праве за одређену циљну платформу и морају поштовати одређени компонентни модел.
  • Такође, морамо унапред имати свест о корисницима компоненте коју развијамо односно њиховим очекивањима.

15. Апстрактна архитектура софтвера базираног на компонентама

AbstractPlatform.png

16. Платформа

  • Обезбеђује инфраструктуру у коју се уграђују компоненте.
  • Пружа скуп базичних сервиса које компоненте могу да користе.

17. Сервиси

  • Представља скуп функционалности које одређена компонента пружа другим компонентама и чије коришћење је дефинисано уговором, који прописује начин употребе (нпр. интерфејси и протоколи), и ограничено политиком употребе сервиса.
  • Платформа мора имати прописане механизме за објављивање и проналажење сервиса.

18. Конзументи и пружаоци сервиса

  • У компонентном софтверу свака компонента може бити у улози пружаоца и/или конзумента сервиса.
  • Различите технике проналажења и повезивања сервиса.

19. Литература

  • C. Szyperski, Component Software: Beyond Object-Oriented Programming, Addison-Wesley Longman Publishing Co., Inc., 2002