Кіріспе

Архитектураны сипаттау тілдері (ADL) бірнеше салаларда қолданылады: жүйелік инженерия, бағдарламалық жасақтама инженериясы және кәсіпорынды модельдеу және жобалау. Жүйелік инженерия саласында архитектураны сипаттау тілі жүйелік архитектураны сипаттау және бейнелеу үшін тіл және/немесе тұжырымдамалық модель ретінде қолданылады. Бағдарламалық жасақтама инженериясы саласында архитектураны сипаттау тілі бағдарламалық жасақтама архитектурасының сипаттамасын жасау үшін компьютерлік тіл ретінде пайдаланылады. Техникалық архитектура жағдайында архитектура бағдарламалық жасақтаманы дамытушыларға жеткізілуі керек; ал функционалдық архитектура түрлі мүдделі тараптар мен пайдаланушыларға жеткізіледі. Дамытылған ADL-дердің мысалдары: Acme (CMU әзірлеген), AADL (SAE стандарттаған), C2 (UCI әзірлеген), SBC ADL (Ұлттық Sun Yat Sen университеті әзірлеген), Darwin (Лондон Императорлық колледжі әзірлеген) және Wright (CMU әзірлеген).

Шолу

ISO/IEC/IEEE 42010 құжаты, Жүйелер және бағдарламалық қамтамасыз ету инженериясы – Архитектураның сипаттамасы, архитектураның сипаттау тілін "архитектура сипаттамаларында қолданылатын кез келген өрнек түрі" деп анықтайды және ADL-дерге қойылатын минималды талаптарды белгілейді. Кәсіпорынды модельдеу және инженерлік қауымдастықтар корпоративтік деңгейдегі архитектураны сипаттауға арналған тілдерді де әзірледі. Мысалдарға ArchiMate (қазір The Open Group стандарты), DEMO және ABACUS (Сидней технологиялық университеті жасаған) кіреді. Бұл тілдер міндетті түрде бағдарламалық компоненттерге және т.б. сілтеме жасамайды. Дегенмен, олардың көпшілігі бағдарламалық жасақтама инженерлеріне жеткізілетін архитектура ретінде қолданба архитектурасын қарастырады. Төмендегі мәтіннің көп бөлігі бағдарламалық жасақтама инженерлік қауымдастығының көзқарасына бағытталған. Архитектураны бейнелеу үшін стандартты белгілеу (ADL) өзара түсіністікті арттыруға, ерте жобалау шешімдерін іске асыруға және жүйенің ауыстырылатын абстракциясын жасауға көмектеседі. Бұрынғы архитектуралар көбінесе компоненттің сипаты, қасиеттері, байланыстардың семантикасы және жүйенің жалпы мінез-құлқы сияқты түсіндірмелермен жазылған қораптар мен сызықтар түрінде бейнеленген. ADL-дер архитектураны ресми түрде бейнелеуге лингвистикалық тәсілден туындайды және осы себепті олардың кемшіліктерін жояды. Сонымен қатар, жетілдірілген ADL-дер архитектуралық жобалау шешімдерін ерте саралауға және олардың мүмкіндігін тексеруге мүмкіндік береді.

Тарих

ADL-дер үш негізгі санатқа бөлінеді: қораптық және сызықтық бейресми суреттер, архитектураны сипаттаудың формальды тілі және UML (Бірыңғай модельдеу тілі) негізіндегі белгілер. Қорап пен сызықтар көп уақыт бойы жүйелік архитектураны (ЖА) сипаттаудың ең көп қолданылатын тәсілі болды. Пайдалы құжаттаманы қамтамасыз ете білгенімен, бейресмилігі архитектуралық сипаттаманың тиімділігін шектеді. ЖА-ны сипаттаудың қатаң әдісі қажет болды. Аллен мен Гарланның (1997) сөздерін келтіре отырып, "осы [қорап пен сызық] сипаттамалары пайдалы құжаттама ұсынуы мүмкін, бірақ олардың қазіргі бейресмилігі олардың тиімділігін шектейді. Мұндай архитектуралық сипаттамалардың мағынасы көбінесе нақты емес болғандықтан, архитектураны дәйектілікке сәйкестігі үшін талдау немесе оның маңызды емес қасиеттерін анықтау мүмкін емес. Сонымен қатар, жүйелік іске асырудың архитектуралық жобаға сәйкес келетінін тексерудің жолы жоқ". Перри мен Вольф (1992) да осыған ұқсас қорытынды жасады: "Нақты және дәйекті құжаттаманы ұсынудан басқа, сипаттамалардың басты мақсаты құжаттарды автоматтандырылған түрде талдау және әдетте байқалмайтын түрлі проблемаларды анықтау болып табылады". Содан бері жүйелік архитектураны сипаттау үшін формальды тілдерді зерттеу жұмыстары жүргізілуде. Онға жуық формальды ADL ұсынылды, олардың әрқайсысы әртүрлі тұжырымдамалық архитектуралық элементтермен, әртүрлі синтаксис немесе семантикамен сипатталады, нақты операциялық салаға бағытталған немесе әртүрлі талдау техникаларына ғана жарамды. Мысалы, салалық ADL-дер енгізілген және нақты уақыт жүйелерімен (мысалы, AADL, EAST ADL және EADL), басқару контуры қолданбаларымен (DiaSpec), өнімдік желі архитектураларымен (Koala) және динамикалық жүйелермен (Π ADL) жұмыс істеу үшін ұсынылды. Талдауға арналған ADL-дер қол жетімділік, сенімділік, қауіпсіздік, ресурстарды тұтыну, деректер сапасы және нақты уақыттағы өнімділікті талдау (AADL, мінез-құлық талдауы (Fractal) және сенімділік талдауы (TADL)) үшін ұсынылды. Алайда, бұл күш-жігер өнеркәсіптік тәжірибеде күтілгендей қабылдауға ие болған жоқ. Вудс және Хиллиард, Пандей, Клементс және басқалар бұл қабылдамаудың себептерін талдады: формальды ADL-дер бағдарламалық өмірлік циклге сирек интеграцияланады, оларды жетілген құралдар сирек қолдайды, олар өте нақты қажеттіліктерге бағытталған және жаңа мүмкіндіктерді қосуға мүмкіндік беретін кеңейтулерге орын қалдырмайды. Осы шектеулердің кейбірін жою үшін UML қолданыстағы ADL-дердің ықтимал ізбасары ретінде қарастырылды. Бағдарламалық жасақтама архитектурасын дұрыс модельдеу үшін UML-ді пайдалану немесе кеңейту туралы көптеген ұсыныстар енгізілді. 2013 жылғы зерттеу көрсеткендей, тәжірибелі мамандар қолданған ADL-дердің жобалау мүмкіндіктеріне көбінесе қанағаттанған, бірақ олармен бірнеше маңызды мәселелерге тап болды: оларда талдау мүмкіндіктері мен қосымша функционалдық қасиеттерді анықтау мүмкіндігі болмады; тәжірибеде қолданылатындары көбінесе академиялық зерттеулер емес, өнеркәсіптік дамудан туындады; оларға көбірек формальдылық және жақсы қолдану қажет болды.

Сәулет өнерінің жалпы түсініктері

ADL қауымдастығы, әдетте, Бағдарламалық архитектура компоненттер мен олардың арасындағы байланыстар жиынтығы екендігіне келіседі. Бірақ, мынадай әртүрлі архитектуралар бар:

Сәулет және дизайн

Архитектура, бағдарламалық жүйелер контекстінде, негізінен бағдарламалық архитектура, желілік архитектура және жүйелік архитектура болып үшке бөлінеді. Осы санаттардың әрқайсысында архитектура мен дизайн арасында айқын, бірақ шартты айырмашылық бар. Бұл айырмашылықты мүмкіндігінше жалпы және анық көрсету үшін дизайнды етістік емес, есім ретінде қарастырған жөн, осылайша екі есімді салыстыруға болады. Дизайн – бұл іске асырылған немесе іске асырылатын функционалдық үлгілер мен құрылымдардың абстракциясы және сипаттамасы. Архитектура абстракция және түйіршіктік деңгейі бойынша жоғары тұрады. Осыған байланысты, архитектура дизайнға қарағанда топологиялық сипатқа ие, себебі ол негізгі компоненттердің қайда қиылысатынын және олардың бір-бірімен қалай байланысқандарын көрсетеді. Архитектура негізгі функционалдық аймақтарды жоғары деңгейдегі компоненттерге бөлуге, олардың физикалық немесе виртуалды орналасуына, қолданылуға болатын дайын компоненттерге, жалпы алғанда әр компоненттің қандай интерфейстерді ұсынатынына, олардың арасында қандай хаттамалар қолданылатынына және кеңейтімділік, қолдау, сенімділік, беріктік, масштабируемость және басқа да функционалдық емес мақсаттарға жауап беретін тәжірибелер мен жоғары деңгейдегі үлгілерге назар аударады. Дизайн – бұл осы таңдаулардың егжей-тегжейлі сипаттамасы және функционалдық талаптарды орындау үшін функционалдықтың бөліктерін ұсақ компоненттерге қалай тапсыру және осы кіші компоненттердің үлкендері ішінде қалай ұйымдастырылатынының нақтылауы. Архитектураның бір бөлігі әдетте қосымшаны, жүйені немесе желіні жобалау кезінде жасалады және талаптар құжаттамасының функционалдық емес бөлімдерінде көрінуі мүмкін. Әдетте, дизайн талаптарда көрсетілмейді, оларға сүйенеді. Архитектураны анықтау процесіне архитектордың немесе архитектуралық команданың домендегі тәжірибесінен алынған эвристикалық әдістер қатысуы мүмкін. Дизайн сияқты, архитектура да көбінесе бірнеше итерациялар арқылы дамиды, және жоғары деңгейдегі дизайнның дұрыстығы төмен деңгейдегі дизайн мен іске асыру кезінде сынақтан өткендей, архитектураның дұрыстығы жоғары деңгейдегі дизайнды анықтау кезінде сынақтан өтеді. Екі жағдайда да, егер сипаттаманың дұрыстығына күмән туса, архитектураның немесе дизайнның тағы бір итерациясы қажет болуы мүмкін. Қорыта айтқанда, архитектура мен дизайн арасындағы негізгі айырмашылықтар – түйіршіктік және абстракция деңгейі, сондай-ақ (соның салдарынан) уақыт бойынша реттілігі. (Архитектура, әдетте, дизайннан бұрын жасалады, бірақ араласу және циклдық итерация жиі кездеседі.)