# Proqram təminatı tərtibatı

**Proqram təminatı tərtibatı** (ing. software development) — tətbiqləri, freymvorkları və ya digər proqram komponentlərini yaratmaq və müşayiət üçün nəzərdə tutmaq, dəqiqləşdirmək, dizayn etmək, proqramlaşdırmaq, sənədləşdirmək, sınaqdan keçirmək və səhvləri düzəltmək üçün istifadə olunan proses. Proqram təminatının tərtibatı mənbə kodunun yazılmasını və müşayiət olunmasını əhatə edir, lakin daha geniş mənada o, arzu olunan proqram təminatının konsepsiyasından yekun təzahürə qədər bütün prosesləri, adətən proqram təminatı mühəndisliyi ilə üst-üstə düşən planlı və strukturlaşdırılmış prosesdə bütün prosesləri əhatə edir. Proqram təminatının hazırlanmasına həmçinin tədqiqat, yeni inkişaf, prototipləşdirmə, modifikasiya, təkrar istifadə, yenidən mühəndislik, texniki xidmət və ya proqram məhsulları ilə nəticələnən hər hansı digər fəaliyyətlər daxildir.

*Proqram tərtibatı* — bir ideyanın konsepsiyadan son istifadəyə qədər tam işlək proqram təminatına çevrilməsini təmin edən prosesdir. Bu proses proqramın planlaşdırılması, kodlaşdırılması, test olunması, yerləşdirilməsi və dəstəklənməsindən ibarətdir. Proqram tərtibatının məqsədi, müəyyən problemi həll etmək və ya istifadəçilərin ehtiyaclarını qarşılamaq üçün effektiv, etibarlı və istifadəyə yararlı bir proqram təminatı hazırlamaqdır.

## Əsas mərhələləri

1. Tələblərin toplanması və analizi
	* Proqramın tələblərinin və məqsədlərinin aydın şəkildə müəyyən edilməsi ilk mərhələdir.
	* İstifadəçilərin ehtiyaclarını, proqramın əsas funksiyalarını və gözləntilərini başa düşmək üçün müştərilər və digər maraqlı tərəflərlə məsləhətləşmələr aparılır.
2. Dizayn
	* Dizayn (ing. Design) mərhələsində proqramın strukturu, arxitekturası və istifadəçi interfeysi planlaşdırılır.
	* Burada məlumat axınları, modul və komponentlərin qarşılıqlı əlaqəsi və verilənlər bazası quruluşu kimi texniki detallar müəyyən edilir.
3. Kodlaşdırma
	* Proqram dizaynına əsaslanaraq kod (ing. Coding) yazılır.
	* Kodlaşdırma proqramlaşdırma dilləri (məsələn, Python, Java, C++, JavaScript) vasitəsilə aparılır və proqramın hər bir funksional komponenti yazılır.
	* Bu mərhələ həmçinin kodun optimallaşdırılması və proqramın daha səmərəli işləməsi üçün əhəmiyyətlidir.
4. Test və təkmilləşdirmə
	* Proqramda potensial səhvləri və nasazlıqları müəyyən etmək üçün testlər aparılır.
	* Test (ing. Testing) mərhələsində proqramın düzgün işlədiyindən, tələbləri qarşıladığından və gözlənilməz hallara cavab verə bildiyindən əmin olunur.
	* Bura fərdi test, inteqrasiya testi, sistem testi və istifadəçi testi daxil ola bilər.
5. Yerləşdirmə
	* Proqram təminatının istifadəyə verilməsi, yəni istifadəçilər üçün əlçatan edilməsi bu mərhələdə baş verir.
	* Yerləşdirmə (ing. Deployment) yerli sistemlərdə, serverlərdə və ya bulud texnologiyaları vasitəsilə həyata keçirilə bilər.
6. Dəstək və baxım
	* İstifadəyə verildikdən sonra proqramın fəaliyyəti izlənir (ing. Maintenance) və lazım olduqda yenilənir və təkmilləşdirilir.
	* Təhlükəsizlik problemlərinin həll edilməsi, səhvlərin düzəldilməsi və yeni funksionallıqların əlavə edilməsi bu mərhələdə həyata keçirilir.

## Əsas modelləri

Proqram tərtibatı müxtəlif metodologiya və modellərə uyğun olaraq həyata keçirilə bilər. Əsas modellər bunlardır:

* Şəlalə Modeli (ing. Waterfall Model) — mərhələli prosesdir və hər mərhələ ardıcıl olaraq tamamlanmalıdır. Bu model əsasən sabit tələblərə malik layihələr üçün uyğundur.
* Agile Modeli — çevik və təkrar olunan bir modeldir. Layihələr qısa dövrlərlə (sprintlər) həyata keçirilir və hər bir sprintdə proqramın yeni funksiyaları əlavə olunur.
* V-Modeli — şəlalə modelinin bir variantıdır və hər mərhələ üçün test mərhələsi əlavə olunur. Bu model həm inkişafı, həm də testləri paralel şəkildə nəzərdə tutur.
* Spiral Model — risklərin idarə olunması üçün istifadə olunur və layihə mərhələlərini dövrlər şəklində təkrarlamağa imkan verir.

## Əsas prinsipləri

* Modulyarlıq və yenidən istifadə — proqram modullara bölünməli və təkrar istifadə edilə bilən komponentlərdən ibarət olmalıdır.
* Kodun oxunaqlılığı — kod həm komanda üzvləri, həm də gələcəkdə proqramı dəstəkləyən şəxslər tərəfindən asan başa düşülən və izlənilən olmalıdır.
* Təhlükəsizlik və sabitlik — proqram təhlükəsiz və möhkəm olmalıdır, yəni zərərli müdaxilələrə davamlı və yüksək yüklərə davam gətirə bilməlidir.
* İstifadəçi fokuslu dizayn — istifadəçi tələblərinə cavab verən funksionallıq və interfeys təmin edilməlidir.

Proqram tərtibatı texnologiya sahəsinin mərkəzi proseslərindən biridir və bu prosesin uğurlu aparılması üçün layihə idarəetmə bacarıqları, texniki biliklər və ən yaxşı təcrübələrə əməl etmək vacibdir.

## Metodologiyalar

Bir sistemin tərtibat metodologiyası bütün layihələr tərəfindən istifadə üçün uyğun deyil. Mövcud metodologiyaların hər biri müxtəlif texniki, təşkilati, layihə və komanda mülahizələrinə əsaslanan spesifik layihələr üçün uyğundur.

## İşçi qrupu

Proqram tərtibatçısı araşdırma, dizayn, proqramlaşdırma, sınaq və kompüter proqram təminatının yaradılmasının digər aspektləri daxil olmaqla proqram təminatının hazırlanması prosesi ilə məşğul olan şəxs və ya şirkətdir. Bənzər mənaları olan insanlar üçün digər iş başlıqlarına proqramçı, proqram analitiki və ya proqram mühəndisi daxildir. Proqram təminatı sahəsində ixtisaslaşmış şirkətləri proqram evləri adlandırmaq olar. Böyük bir şirkətdə sadəcə bir hissədən məsuliyyət daşıyan işçilər ola bilər. Daha kiçik tərtibat mühitlərində bir neçə nəfər və ya tək bir şəxs bütün prosesi idarə edə bilər. Açıq mənbəli proqram təminatı kimi əməkdaşlıq mühitləri bir çox tərtibatçını bir araya gətirə bilər.

## İstinadlar

## Əlavə ədəbiyyat

* *Kit, Edward.* Software Testing in The Real World. Addison-Wesley Professional. 1992. ISBN 0201877562.
* *McCarthy, Jim.* Dynamics of Software Development. Microsoft Press. 1995. ISBN 1556158238.
* *Conde, Dan.* Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales. Aspatore Books. 2002. ISBN 1587622025.
* *Davis, A. M.* Just enough requirements management: Where software development meets marketing. Dorset House Publishing Company, Incorporated. 2005. ISBN 0932633641.
* *Hasted, Edward.* Software That Sells: A Practical Guide to Developing and Marketing Your Software Project. Wiley Publishing. 2005. ISBN 0764597833.
* *Hohmann, Luke.* Beyond Software Architecture: Creating and Sustaining Winning Solutions. Addison-Wesley Professional. 2003. ISBN 0201775948.
* John W. Horch (2005). "Two Orientations On How To Work With Objects." In: *IEEE Software*. vol. 12, no. 2, pp. 117–118, Mar., 1995.
* *Rittinghouse, John.* Managing Software Deliverables: A Software Development Management Methodology. Digital Press. 2003. ISBN 155558313X.
* *Wiegers, Karl E.* More About Software Requirements: Thorny Issues and Practical Advice. Microsoft Press. 2005. ISBN 0735622671.
* *Wysocki, Robert K.* Effective Software Project Management. Wiley. 2006. ISBN 0764596365.

## Xarici keçidlər