Кіріспе

Берілген жүйенің функционалдығын кеңейту қабілеті мен оған қажетті күш-жігердің өлшемі. Кеңейтілім – бұл бағдарламалық жасақтаманы жобалау және жүйелерді құру принципі, ол болашақ дамуға мүмкіндік береді. Кеңейтілім – жүйенің кеңейтуге қабілеттілігінің және кеңейтуді іске асыруға қажетті күш-жігер деңгейінің көрсеткіші. Кеңейтулер жаңа функционалдық мүмкіндіктерді қосу немесе қолданыстағы функционалдықты өзгерту арқылы жүзеге асырылуы мүмкін. Бұл принцип жүйенің қазіргі функцияларын бұзбай жақсартуға мүмкіндік береді. Кеңейтілімге қолдау көрсетілген жүйенің ішкі құрылымы мен дерек ағыны жаңа немесе өзгертілген функционалдықтан минималды түрде әсер алады немесе әсер етпейді. Мысалы, жүйенің мінез-құлқын өзгерту үшін бастапқы кодты қайта құрастыру немесе өзгерту қажет болмауы мүмкін, мұны жүйенің авторы немесе басқа бағдарламашылар жасай алады. Бағдарламалық жүйелер ұзақ қызмет етеді және пайдаланушылардың талаптарына сәйкес жаңа мүмкіндіктер мен қосымша функционалдықтармен жаңартылады. Сондықтан кеңейтілім әзірлеушілерге бағдарламалық жасақтаманың мүмкіндіктерін кеңейтуге немесе қосуға және жүйелі түрде қайта пайдалануға мүмкіндік береді. Оның әдістеріне пайдаланушылардың өз бағдарламалық бөлімдерін қосуға мүмкіндік беру, жаңа дерек түрлерін анықтау және жаңа форматтау белгілерін анықтау мүмкіндіктері кіреді.

Кеңейтілетін конструкция

Бағдарламалық жасақтауда кеңейтілетін дизайн – барлық нәрсені алдын ала жобалау мүмкін емес екенін қабылдау. Оның орнына, өзгерістерге бейімделген жеңіл бағдарламалық құрал ұсынылады. Кеңейтілгіштік мүмкіндігін жоғалтпау үшін шағын командалар жасалады, жұмыс элементтерін түсінікті бөліктерге бөлу принципін сақтай отырып, бағдарламалық жасақтаманы әзірлеудегі төменгі байланыстылық және жоғары өзара тәуелділік сияқты дәстүрлі мәселелерден сақтануға және дамуды жалғастыруға мүмкіндік береді. Кеңейтілетін дизайн үшін өзгерістерді қабылдау маңызды, себебі қосымшалар үнемі енгізіліп отырады. Жүйенің әрбір бөлігі кез келген өзгеріске бейімделе алады, ал жүйе дизайнының негізгі идеясы – қосымша арқылы өзгеріс жасау болып табылады. Кеңейтілетін дизайн жиі басымдықтарды өзгертуге қолдау көрсетеді және функционалдықты қажеттілікке қарай кішігірім қадамдармен жүзеге асыруға мүмкіндік береді, бұл Agile әдістемелері мен итеративті даму принциптерімен үйлеседі. Кеңейтілгіштік даму барысында аз және анық тәуелділіктерді қамтамасыз етеді, сондай-ақ өзара тәуелділікті азайтады, байланысты абстракцияларды күшейтеді және жақсы анықталған интерфейстерді ұсынады.

Маңыздылық

Адам факторы барлық бағдарламалық жасақтаманың негізінде жатыр, себебі бағдарламалық жасақтама – адамдар жасап, қолдайтын, өзгеріп отыратын "дамып келе жатқан жүйе", сондықтан бағдарламалық жасақтаманың сипаттамалары мен іске асырылуында үнемі өзгерістер болып тұрады. Бағдарламалық жасақтаманың компоненттері көбінесе байланысы жоқ тараптармен тәуелсіз әзірленеді және орнатылады. Сыртқы жеткізушілердің компоненттері нақты қолдану сценарийіне тікелей сәйкес келмеуі мүмкін болғандықтан, өзгермелі бағдарламалық жасақтама компоненттері қажет, мұнда өндірушіден өзге үшінші тарап пайдаланушыларды да ескеру керек. Көптеген бағдарламалық жүйелер мен бағдарламалық өнімдердің топтамалары базалық жүйеден туындайды, олар ортақ бағдарламалық архитектураны немесе кейде функционалдық мүмкіндіктердің және іске асырудың үлкен бөлігін бөліседі, бірақ кеңейтілетін базалық жүйе талап ететін әртүрлі компоненттермен жабдықталуы мүмкін. Тәуелсіз кеңейтілетін бағдарламалық жүйелерді құру – маңызды міндет. Тәуелсіз кеңейтілетін жүйе екі адамға жүйеге тәуелсіз кеңейтімдер жасауға ғана емес, сонымен қатар екі кеңейтімді жаһандық тұтастығын тексерусіз біріктіруге мүмкіндік береді.

Кеңейту механизмдерінің жіктелуі

Бағдарламалық жасақтаманы кеңейтудің үш түрі бар: ақ қорап кеңейтуі, сұр қорап кеңейтуі және қара қорап кеңейтуі, олар өзгертілетін артефактілер мен олардың өзгеру жолына байланысты.

Ақ-қапшық

Бұл кеңейту түрі бойынша бағдарламалық жүйені бастапқы кодты өңдеу арқылы кеңейтуге болады, бұл ең икемді және ең шектеусіз түр болып табылады. Өзгерістерді қалай енгізуге байланысты, кеңейтудің екі нұсқасы бар: ашық жәшік кеңейту және «көрінетін» жәшік кеңейту.

Ашық-сақтау

Өзгерістер ашық жүйелерде тікелей араласу арқылы жасалады; яғни, бастапқы кодқа тікелей өзгерістер енгізіледі. Бұл үшін бастапқы кодтың қолжетімді болуы және оны өзгертуге рұқсат беретін лицензия қажет. Ашық жүйенің кеңейтілу мүмкіндігі ең алдымен қателерді жою, ішкі кодты жаңарту немесе бағдарламалық өнімнің келесі нұсқасын дайындау үшін маңызды.

Шыны қорап

Шыны қораптың кеңейтілуі (архитектураға бағытталған фреймворктер деп те аталады) бағдарламалық жүйені қолжетімді бастапқы кодпен кеңейтуге мүмкіндік береді, бірақ кодты өзгертпеуі мүмкін. Кеңейтімдер бастапқы жүйеге әсер етпейтіндей етіп, одан бөлек орналасуы керек. Мұндай кеңейтудің бір мысалы – объектіге бағытталған қолданбалық фреймворктер, олар мұрагерлік және динамикалық байланыс арқылы кеңейтуді қамтамасыз етеді.

Қара қорап

Қара қорап кеңейтілуі (деректерге бағытталған құрылымдар деп те аталады) жүйенің ішкі құрылымы туралы ешқандай мәлімет жүйенің жұмысқа қосылуына немесе кеңейтілуіне қолданылмайды; тек интерфейс талаптары ғана беріледі. Бұл тәсіл әртүрлі ақ қорап тәсілдеріне қарағанда шектеулі. Қара қорап кеңейтулері әдетте жүйелік конфигурация бағдарламалары арқылы немесе компоненттердің интерфейсін анықтау арқылы, қолданбаға тән сценарий тілдерін пайдалану арқылы жүзеге асырылады.

Сұр-Қойма

Сұр қораптың кеңейтілуі – таза ақ қорап және таза қара қорап тәсілдерінің арасындағы шартты келісім, ол бастапқы кодты толығымен ашуға тәуелді емес. Бағдарламашыларға жүйенің мамандану интерфейсі берілуі мүмкін, онда барлық қолжетімді абстракциялар мен кеңейтулерді қалай жасау керектігі туралы нұсқаулар тізімі болады.

Ұзартылуы мен қайта қолданылуы

Кеңейтілу және қайта қолданылу көптеген ортақ қасиеттерге ие, оның ішінде төмен байланыс, модулдік және жоғары тәуекел элементтерінің әртүрлі бағдарламалық жүйелерде құрастырылу мүмкіндігі бар. Бұл бағдарламалық жүйелердің көбінесе ортақ элементтерді бөлісуінен туындайды. Қайта қолданылу және кеңейтілу технологияны даму және техникалық қолдау уақытын қысқартумен, сондай-ақ сенімділікті және тұрақтылықты арттыру арқылы басқа жобаға көшіруге мүмкіндік береді.

Қауіпсіздік

Қазіргі операциялық жүйелер құрылғы драйверлері және жүктелетін ядро модульдері арқылы кеңейтімділікті қолдайды. Көптеген заманауи қосымшалар плагиндер, кеңейту тілдері, апплеттер және т.б. арқылы кеңейтімділікті қолдайды. Кеңейтімділікті арттыру тенденциясы бағдарламалық қамтамасыз ету қауіпсіздігіне кері әсер етеді. CGI – веб-серверлердің кеңейтімділікті қамтамасыз етуінің негізгі тәсілдерінің бірі. Кейбір адамдар CGI сценарийлерін "үлкен қауіпсіздік кемшілігі" деп қарастырады.