Proqram konfiqurasiyasının idarə edilməsi

**Proqram konfiqurasiyasının idarə edilməsi** () — proqramın inkişaf prosesi zamanı meydana gələn bütün dəyişiklikləri izləmək, idarə etmək və nəzarət etmək üçün istifadə edilən sistematik yanaşmadır. Bu, proqram təminatının keyfiyyətini və sabitliyini qorumaq, layihədə dəyişikliklərin təsirlərini anlamaq və layihənin hər mərhələsini uyğunlaşdırmaq üçün çox vacibdir.

## Əsas mərhələləri
#Versiya izləmə ()
#*Proqramın müxtəlif versiyalarının izlənilməsi və saxlanılması üçün istifadə edilir.
#*Məsələn, `Git`, `SVN` və ya `Mercurial` kimi versiya idarəetmə sistemləri (VCS) ilə proqram fayllarının hər dəyişiklikdə yeni versiyaları qeyd olunur.
#*Versiya izləmə həm də komanda üzvlərinin eyni faylda konflikt yaratmadan çalışmasına imkan verir.
#Dəyişikliklərin İdarə Edilməsi ()
#*Layihəyə əlavə ediləcək və ya dəyişdiriləcək hər hansı tələbin və ya funksionallığın təsdiqlənməsi, izlənməsi və tətbiq edilməsi prosesidir.
#*Dəyişikliklərdən əvvəl və sonra proqramın vəziyyətini müqayisə etmək və dəyişikliklərin müsbət və mənfi təsirlərini qiymətləndirmək üçün istifadə edilir.
#Konfiqurasiya elementlərinin identifikasiyası ()
#*Proqramda izlənilməsi vacib olan hər bir element müəyyənləşdirilir və unikal bir identifikatorla qeyd olunur.
#*Bu elementlərə kod faylları, sənədlər, kitabxanalar, qurma () skriptləri, testlər və ya sistem arxitekturası sənədləri aid ola bilər.
#Dəyişikliklərin təhlili və təsdiqi ()
#*Proqramda baş verən hər bir dəyişiklik konfiqurasiya idarəetmə komitəsi () tərəfindən təsdiqlənməlidir.
#*CCB dəyişikliklərin layihəyə təsirini qiymətləndirir və tətbiq olunacaq dəyişiklikləri təhlil edərək qərar qəbul edir.
#Konfiqurasiya statusunun hesabatı ()
#*Konfiqurasiyanın vəziyyəti və dəyişikliklərin tarixçəsi barədə hesabatların aparılmasıdır.
#*Bu hesabatlar dəyişikliklərin izlənməsini, problemlərin həllini və konfiqurasiyanın düzgün aparılmasını təmin edir.
#Auditoriya və nəzarət ()
#*Proqramın müəyyən versiyalarının tələblərə uyğun olaraq hazırlanıb-hazırlanmadığını yoxlamaq məqsədilə konfiqurasiya yoxlamaları həyata keçirilir.
#*Bu, həmçinin tətbiq edilən hər dəyişikliyin düzgün olub olmadığını və proqramın uyğun versiyada olmasını yoxlayır.

## Proqram konfiqurasiyasının idarə edilməsinin əhəmiyyəti
* Davamlılıq — proqramın hər hansı bir mərhələdə dəqiq vəziyyətini əldə etmək və əvvəlki versiyalara qayıtmaq üçün imkan yaradır.
* Problem həlli — kodda problem yaranarsa, problemli versiyanı və kodu tez bir zamanda müəyyən etməyə imkan verir.
* Komanda işini təşviq — versiya nəzarət sistemləri ilə bir çox inkişafçı eyni layihədə təhlükəsiz işləyə bilər və işlər bir-birinə mane olmadan inteqrasiya olunur.
* Keyfiyyətə nəzarət — SCM sistemləri vasitəsilə kodun düzgün işləyib-işləmədiyi, hər dəyişiklikdən sonra testlərin icra olunması və keyfiyyətin qorunması təmin edilir.

## Konfiqurasiya idarəetmə alətləri
Bir çox SCM aləti proqram konfiqurasiyasının idarə edilməsində geniş istifadə olunur. Əsas alətlərdən bəziləri bunlardır:

* Git — ən populyar SCM alətlərindən biridir, versiyaların idarə olunması və kodun müvəqqəti (branching) şaxələndirilməsi üçün istifadə edilir.
* SVN () — açıq mənbəli VCS olub, versiya izləmə və dəyişikliklərin idarə olunmasını təmin edir.
* Jira və Trello — dəyişikliklərin idarə olunması, tapşırıqların izlənməsi və layihə idarəetmə sistemləri kimi istifadə olunur.

Proqram konfiqurasiyasının idarə edilməsi vasitəsilə layihələrdə səmərəlilik artır, dəqiqlik təmin olunur və proqram təminatı yüksək keyfiyyət standartlarına uyğun hazırlanır.

## İstinadlar

## Ədəbiyyat
* Dennis, A., Wixom, B.H. & Tegarden, D. (2002). *System Analysis & Design: An Object-Oriented Approach with UML.* Hoboken, New York: John Wiley & Sons, Inc.
* Department of Defense, USA (2001). *Military Handbook: Configuration management guidance (rev. A) (MIL-HDBK-61A)*. Retrieved January 5, 2010, from http://www.everyspec.com/MIL-HDBK/MIL-HDBK-0001-0099/MIL-HDBK-61_11531/
* Futrell, R.T. *et al.* (2002). *Quality Software Project Management.* 1st edition. Prentice-Hall.
* International Organization for Standardization (2003). *ISO 10007: Quality management systems – Guidelines for configuration management*.
* Saeki M. (2003). Embedding Metrics into Information Systems Development Methods: An Application of Method Engineering Technique. *CAiSE 2003,* 374–389.
* Scott, J.A. & Nisse, D. (2001). Software configuration management. In: *Guide to Software Engineering Body of Knowledge*. Retrieved January 5, 2010, from http://www.computer.org/portal/web/swebok/htmlformat
* Paul M. Duvall, Steve Matyas, and Andrew Glover (2007). *Continuous Integration: Improving Software Quality and Reducing Risk*. (1st ed.). Addison-Wesley Professional. .

## Xarici keçidlər
*SCM and ISO 9001 by Robert Bamford and William Deibler, SSQC
*Use Cases and Implementing Application Lifecycle Management 
*Parallel Development Strategies for Software Configuration Management