Кіріспе

Бағдарламалық жасақтаманы өңдеу элементтерінің тізбегі, бағдарламалық құбыржолдар жалпы алғанда.

Бағдарламалық инженерияда құбыржол – өңдеу элементтерінің тізбегінен (процестер, жіптер, корутиндер, функциялар және т.б.) тұрады, мұнда әр элементтің шығысы келесі элементтің кірісі болып табылады. Бұл тұжырым физикалық құбыр желісіне ұқсас. Әдетте, тізбектегі келесі элементтер арасында буферлік жад қарастырылады. Осы құбыржолдарда ақпарат жазбалар, байттар немесе биттер ағыны түрінде ағып жатады, ал құбыржол элементтері сүзгілер деп аталуы мүмкін. Бұл сондай-ақ құбырлар мен сүзгілердің дизайн үлгісі деп те аталады. Элементтерді құбыржолға қосу функциялық композицияға ұқсас. Нақты айтқанда, құбыржол сызықты және бір бағытты болады, бірақ кейде бұл термин жалпы ағындарға да қолданылады. Мысалы, негізінен бір бағытты құбыржолда кері арна немесе артқа қайтару арнасы сияқты екінші бағытта да байланыс болуы мүмкін, немесе құбыржол толық екі бағытты болуы мүмкін. Бір бағытты ағаштар мен бағытталған ациклдік граф топологиялары бар ағындар сызықты құбыржолдар сияқты жұмыс істейді. Мұндай ағындарда циклдың болмауы оларды қарапайым етеді, сондықтан оларды "құбыржолдар" деп шартты түрде атауға болады.

VM/CMS және z/OS

CMS Pipelines – бұл құбыржол идеясының VM/CMS және z/OS жүйелеріне көшірілуі. Ол Unix қабықшаларына қарағанда әлдеқайда күрделі құбыржол құрылымдарын қолдайды, қадамдар бірнеше кіріс ағындарын қабылдап, бірнеше шығыс ағындарын шығарады. (Мұндай мүмкіндік Unix ядросымен де қолдалады, бірақ оны көп бағдарламалар қолданбайды, себебі ол күрделі синтаксис пен тоқтату режимдерін тудырады, алайда кейбір қабықшалар оны кездейсоқ файл дескрипторларын тағайындау арқылы қолдайды). IBM мейнфрейм операциялық жүйелеріндегі дәстүрлі қолданба бағдарламаларында қайта бағыттау немесе құбыр арқылы жіберуге мүмкіндік беретін стандартты кіріс және шығыс ағындары жоқ. Сыртқы бағдарламалармен процестерді іске қосудың орнына, CMS Pipelines 200-ден астам UNIX құралдарының типік функционалын іске асыратын бағдарламаларды бір мезгілде орындауға арналған жеңіл диспетчерді ұсынады және құрылғылармен және операциялық жүйе қызметтерімен байланысады. Құрастырылған бағдарламаларға қосымша, CMS Pipelines құбыржолда пайдаланылатын кіріс және шығыс ағындары бар пайдаланушы жазған REXX бағдарламаларын пайдалануға рұқсат беру үшін қаңқаны анықтайды. IBM мейнфреймдеріндегі деректер әдетте жазбаға бағытталған файлдық жүйеде сақталады, ал қосылған I/O құрылғылары ағын режимінде емес, жазба режимінде жұмыс істейді. Осының салдарынан, CMS Pipelines деректерін жазба режимінде өңдейді. Мәтіндік файлдар үшін жазбада бір жол мәтін болады. Жалпы алғанда, CMS Pipelines деректерді буферлемейді, бірақ деректерді бір бағдарламадан екіншісіне қадамдық түрде жібереді. Бұл өзара байланысқан құбыр желілері арқылы деректердің нақты ағынын қамтамасыз етеді.

Нысан құбырлары

Байт ағыны негізіндегі құбыржолдардан өзге, объектілік құбыржолдар да болады. Объектілік құбыржолда өңдеу элементтері мәтін емес, объектілерді шығарады. PowerShell ішкі объектілік желіні қамтиды, ол .NET объектілерін PowerShell орындалыс ортасында функциялар арасында жібереді. Limbo бағдарламалау тіліндегі арналар осы тұжырымның тағы бір мысалы.

ГИЖ-дегі құбырлар

RISC OS және ROX Desktop сияқты графикалық орталар да құбыржолдарды қолданады. Файлдарды басқарушысы бар сақтау терезесін ұсынудың орнына, бағдарлама деректерді қайда сақтау керектігін пайдаланушыға көрсету үшін, RISC OS және ROX белгішесі бар (және атауын енгізуге арналған өрісі бар) сақтау терезесін ұсынады. Сақтау орны белгішені сүйреп тастау арқылы анықталады. Пайдаланушы белгішені кез келген жерге тастай алады, тіпті басқа бағдарламалардың белгішелеріне де. Егер белгіше бағдарлама белгішесіне түсірілсе, ол іске қосылады және сақталмақ болған мазмұн жаңа бағдарламаның стандарттық кіріс ағынына жіберіледі. Мысалы, пайдаланушы әлемдік желіде gz форматындағы қысылған суретті кездестіріп, оны өңдеуге және қайта жүктеуге ниеттенсе, GUI құбыржолдары арқылы ол сілтемені өшіру бағдарламасына, алынған мазмұнды көрсететін белгішені сурет өңдегішке сүйреп, оны өңдеп, «сақтау ретінде» терезесін ашып, оның белгішесін жүктеу бағдарламасына сүйреп тастауы мүмкін. Теориялық тұрғыдан алғанда, бұл әдіс дәстүрлі сақтау терезесімен де қолданылуы мүмкін, бірақ бұл пайдаланушының бағдарламаларының файлдық жүйеде анық және оңай қолжетімді орны болуын қажет етеді. Мұндай жағдай көбінесе болмағандықтан, GUI құбыржолдары сирек кездеседі.

Басқа да ескертулер

"Құбыр" атауы физикалық құбыр жүйелерімен шамамен салыстырудан туындаған, себебі құбыр әдетте ақпараттың тек бір бағытта ғана ағуына мүмкіндік береді, сияқты су көбінесе құбырдың ішінде ағады. Құбырлар мен сүзгілерді байт ағындарын дерек нысандары ретінде пайдалана отырып, функционалдық бағдарламалаудың бір түрі ретінде қарастыруға болады. Көбірек нақты айтқанда, оларды кіріс-шығыс операциялары үшін моноданың ерекше түрі деп қарастыруға болады. Құбыр тұжырымы Cocoon веб-әзірлеу аясының немесе кез келген XProc (W3C стандарттары) іске асыруларының орталық бөлігі болып табылады, ол бастапқы ағынды соңғы көрсетілімге дейін өзгертуге мүмкіндік береді. Бұл үлгі бағдарламалардың кіріс және шығысы ретінде мәтін ағындарын пайдалануға ынталандырады. Мәтінге деген осы тәуелділікті мәтіндік бағдарламаларға графикалық интерфейс жасағанда ескеру қажет.