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

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


== Ակնարկ ==
Ծրագրավորման կազմերում առաջացած խնդիրների լուծումներով զբաղվող Հ.Գ.-ի ճյուղ, որը լայն տարածում է ստացել 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»


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