Ծրագրակազմի ճարտարագիտություն

ծրագրային սիսթեմների կազմակերպման կարևորագույն որոշումների համագործակցություն։ Իրենից ներկայացնում է՝ ծրագրավորման կազմի հիմնային կառուցվածքների ստեղծման և նրանց կարգ ու կանոնի ապահովման, համակարգչային գիտությունների ճյուղ։

## Ակնարկ
Ծրագրավորման կազմերում առաջացած խնդիրների լուծումներով զբաղվող Հ.Գ.-ի ճյուղ, որը լայն տարածում է ստացել 1990-ական թվականներին։ Որպես այդպիսին՝ ծրագրակազմի ճարտարագիտությունը, չի գործածվում որպես մի լիարժեք տերմին։ Գոյություն ունեն տվյալ ուղղության շատ շրջանակներ, օրինակ ՝ Ծրագրային Ապահովման Ինժեներական Ինստիտուտի կայքը ներկայացնում է տվյալ ճյուղի ավելի քան 150 կողմնորոշում։ Տվյալ ճյուղի հիմքում ընկած գաղափարը ծրագրավորման գործողությունների հեշտացումն է։ Այն իր մեջ ներառում է․
#	Գործողությունների կատարման տարածքի ուսումնասիրումը և այնտեղ գործելու համար անհրաժեշտ էլեմենտների ապահովումը
#	Տարածքում գործող կառուցվածքների և էլեմենտների փոխկապակցումը միմյանց հետ և դրանց պահվածքը
#	Ճարտարագիտական ոճի ապահովումը, որով առաջնորդվելու է ամբողջ կազմակերպությունը
#	Մշակողների միջև շփման ապահովումը

## Պատմությունը
Երբ համակարգչային գիտությունները զարգացան, հայտնվեցին խնդիրներ կապված ծրագրավորման համակարգերի դիսցիպլինայի հետ։ Որպես արդյունք առաջացավ ծրագրակազմի ճարտարագիտության գաղափարը 1960-ական թվականներին։ Այդ գաղափարի մշակումը հայտնվեց գիտնականներ Էդսգեր Դեիհկսթրաի (1968 թ․) և Դեյվիդ Պարնասի (1970 թ․) հետազոտական աշխատանքներում։ Այս գիտնականները շեշտը դրեցին ճիշտ կառուցվածքների կազման՝ ծայրահեղ կարևորության, վրա։ Ծրագրային ճարտարագիտության գաղափարի հետագա տարածումը տեղի ունեցավ 1990 թվականի սկզբին։

## Ծրագրային Ճարտարագիտության Բնութագրման Լեզուներ
Այլ կերպ ՝ ADLS ։ Տարբեր ինստիտուտների կողմից ստեղծվել են տարբեր Ծ.Ճ.Բ.Լ.-ներ․
# AADL (ստանդարտ SAE)
# Wright (Քարնեգի Մելոն համալսարան)
# Acme (Քարնեգի Մելոն համալսարան)
# xADL (UCI)
# Darwin (Լոնդոնի Իմպերիալիստական Քոլեջ)
Սակայն, բացի մասնագիտացված լեզուներից օգտագործվում է նաև մոդելավորման միասնակն լեզու։

## Չորս Հիմնական Գործողություննեը
# **Ճարտարագիտական Վերլուծություն՝** տվյալ գործողության տեղանքի ուսումնասիրության ընդացք, որի շնորհիվ կողմնորոշվում են համակարգի պահանջները։ Հետազոտության համար նախատեսված մուտքագրումներն ու պահանջները կարող են գալ ցանկացած քանակի աշխատակիցներից և պարունակի տարրեր ինչպիսիք են՝ 1) այն ինչը համակարգը կանի ֆունկցիոնալ պահանջների հետ, 2) որքան լավ համակարգը կբարելավվի ոչ-ֆունկցիոնալ պահանջարկները (հուսալիություն, գործունակություն, կատարման արդյունավետություն, անվտանգության և համատեղելիության ապահովում) ՝ աշխատանքային ժամանակի մեջ տեղավորվելով, 3) ոչ-ֆունկցիոնալ պահանջարկների զարգացման ժամանակը, 4) բիզնեսի պահանջները և համակարգի բնապահպանական ենթատեքստերը, որոնք ժամանակի ընթացքում կարող են փոխվել, օրինակ՝ իրավաբանական, սոցիալական, ֆինանսական, մրցակցային և տեխնոլոգիական խնդիրները։ Հետազոտության արդյունքներն այն պահաջարկներն են, որոնք ունեն չափելի ազդեցություն տվյալ համակարգի կառուցվածքի վրա։ Այդ արդյունքները կոչվում են ճարտարագիտորեն էական պահանջներ։
# **Ճարտարագիտական Սինթեզ՝** դիզայնի կառուցման ընդացքը։ Հաշվի առնելով` վերլուծության արդյունքում որոշված, ճարտարագիտական նշանակալի պահանջները, նախագծի ներկա վիճակը և գնահատման ցանկացած գործողության արդյունքները, ստեղծվում և բարելավվում է դիզայնը։
# **Ճարտրագիտակն Գնահատում՝** պրոցես, որի ժամանակ որոշվում է, թե հետազոտության ընդացքում ծագած պահանջարկները որքանով են բարելավված՝ տվյալ դիզայնի, կամ տվյալ դիզայնի ինչ-որ մի բաժնի, կողմից։ Գնահատումը տեղի է ունենում, երբ ճարտարգետը կայացնում է դիզայներական որոշում։ Գնահատումը կարող է տեղի ունենալ, երբ դիզայնի որոշ բաժին արդեն արված է։ Գնահատումը կարող է տեղի ունենալ, երբ վերջնակն դիզայնը պատրաստ է։ Նաև գնահատումը կարող է տեղի ունենալ համակարգի կառուցումից հետո։ 
# **Ճարտարագիտական Զարգացում՝** պահանջների և միջավայրի փոփոխություններին համապատասխանելու համար գոյություն ունեցող ծրագրակազմի կառուցվածքը պահպանելու և հարմարեցնելու գործընթացը։ Քանի որ, ծրագրակազմի ճարտարագիտությունը ապահովում է ծրագրակազմի համակարգի հիմնարար կառուցվածքը, նրա զարգացումն ու օգտագործումը պարտադիր ազդեցություն կթողնեն հիմնարար կառուցվածքի վրա։ Որպես այդպիսին, ճարտարագիտական զարգացումը կապված է նոր գործառույթներ ավելացնելու, ինչպես նաև առկա ֆունկցիոնալությունն ու համակարգի վարքը պահպանելու հետ։

## Գրականություն
* Ռոբերտ Սեսիլ Մարտին՝ «Clean Architecture: A Craftsman's Guide to Software Structure and Design»
* Կառլ Ի․ Վիգերս և Ջոհն Բիթթի՝ «Development of software requirements»
* Ռ․ Ն․ Թեյլոր, Ն․ Մեդվիդովիչ և Ի․ Մ․ Դաշոֆի՝ «Software Architecture: Foundations, Theory, and Practice»

## Տեսեք նաև
# Վիրտուալիզացիա
# Ցանցային ծրագրավորում
# Ծրագրակազմի փորձարկում
# Ծրագրակազմի անվտանգության էթիկա

Կատեգորիա:Ծրագրավորում