Proqram dizaynı

Proqram dizaynı (ing. Software design) — proqram təminatının əsas strukturunun və davranışlarının necə qurulacağını müəyyən edən prosesdir. Bu proses proqramın funksionallığını, modul quruluşunu, və digər texniki aspektlərini planlaşdırır.[1] Proqram dizaynı, proqramın həm istifadəsini, həm də onun inkişaf və dəstəklənməsini asanlaşdıran ən yaxşı təcrübələrə və prinsiplərə əsaslanır.[2]

Əsas istiqamətləri

[redaktə | mənbəni redaktə et]
  1. Tələblərin analizi — proqramın həll etməli olduğu məsələləri müəyyən etmək. Tələbləri toplamaq və dəqiq başa düşmək vacibdir, çünki dizayn bu tələblər əsasında qurulur.[3]
  2. Arxitektura dizaynı — proqramın ümumi quruluşunun və arxitekturasının planlaşdırılması. Bu mərhələdə proqramın əsas komponentləri, modullar və onların qarşılıqlı əlaqələri müəyyən edilir. Məsələn, çoxmodullu bir sistemdə hər bir modulu, onun funksionallığını və digər modullarla əlaqələrini müəyyən etmək.[4]
  3. Detallı dizayn — arxitektura dizaynından sonra hər bir modulun və funksiyanın təfərrüatları hazırlanır. Bu mərhələdə dəyişənlərin, funksiyaların, məlumat strukturunun və algoritmlərin təfərrüatları müəyyən olunur.
  4. İstifadəçi interfeysi dizaynı — əgər proqram istifadəçilə birbaşa qarşılıqlı əlaqədə olacaqsa, istifadəçi interfeysinin dizaynı çox vacibdir. İstifadəçinin rahat və səmərəli şəkildə proqramdan istifadə etməsi üçün uyğun interfeys və naviqasiya qurulmalıdır.
  5. Prototipləşdirmə və test dizaynı — proqramın funksionallığını ilkin mərhələdə sınamaq üçün prototip hazırlamaq və mümkün səhvləri aradan qaldırmaq üçün test dizaynını yaratmaq. Bu mərhələ proqramın dizaynını təkmilləşdirməyə və səhvləri erkən aşkar etməyə kömək edir.[5]

Əsas prinsipləri

[redaktə | mənbəni redaktə et]
  • Modulyarlıq — proqram müxtəlif, müstəqil modullara bölünməli və hər modul öz funksiyasını yerinə yetirməlidir. Bu proqramın oxunaqlı və təkmilləşdirilə bilən olmasını asanlaşdırır.[6]
  • Abstraksiya — çətin məsələləri sadə formalarda təqdim etmək. Təfərrüatlara ilişmədən proqramın ümumi məqsədini saxlamağa kömək edir.
  • İstifadə asanlığı — hər bir funksional element və interfeys istifadəçi dostu və intuitiv olmalıdır.
  • Uyğunluq və təkrar istifadə — dizaynı elə qurmaq lazımdır ki, komponentlər başqa proqramlarda və ya digər hissələrdə də istifadə edilə bilsin.[7]
  • Çeviklik və uyğunlaşma — proqram dizaynı elə qurulmalıdır ki, proqram asanlıqla yeni funksionallıqlar əlavə etməyə və dəyişikliklərə uyğunlaşmağa imkan versin.[8]

Dizayn nümunələri

[redaktə | mənbəni redaktə et]

Dizayn nümunələri müəyyən problemlərin sınanmış həll yollarını təklif edir. Məşhur dizayn nümunələrinə:[9]

  • Singleton — bütün proqramda bir obyektin yalnız bir dəfə yaradılmasını təmin edir.
  • Observer — bir obyektin vəziyyətində dəyişiklik baş verdikdə, digər obyektlərin bu dəyişikliklərə reaksiya verməsini təmin edir.
  • Factory — müxtəlif obyektlər yaratmaq üçün ümumi interfeysi təmin edir.[10]

Yaxşı düşünülmüş proqram dizaynı inkişaf və dəstək mərhələlərində daha az vaxt və resurs tələb edir, proqramın istifadəçi üçün funksional və sabit qalmasına kömək edir.[11]

  1. Ralph, P. and Wand, Y. (2009). A proposal for a formal definition of the design concept. In Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., editors, Design Requirements Workshop (LNBIP 14), pp. 103–136. Springer-Verlag, p. 109 DOI:10.1007/978-3-540-92966-6_6.
  2. Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, pp. 103-136
  3. Bell, Michael. Introduction to Service-Oriented Modeling // Service-Oriented Modeling: Service Analysis, Design, and Architecture. Wiley & Sons. 2008. ISBN 978-0-470-14111-3.
  4. Freeman, Peter; David Hart. "A Science of design for software-intensive systems". Communications of the ACM. 47 (8). 2004: 19–21 [20]. doi:10.1145/1012037.1012054.
  5. Davis, A:"201 Principles of Software Development", McGraw Hill, 1995.
  6. Suryanarayana, Girish. Refactoring for Software Design Smells. Morgan Kaufmann. November 2014. 258. ISBN 978-0128013977.
  7. Carroll, John, redaktorScenario-Based Design: Envisioning Work and Technology in System Development. New York: John Wiley & Sons. 1995. ISBN 0471076597.
  8. Booch, Grady; və b. Object-Oriented Analysis and Design with Applications (3rd). MA, US: Addison Wesley. 2004. ISBN 0-201-89551-X. İstifadə tarixi: 30 January 2015.
  9. Building Serverless Applications on Knative. O'Reilly Media. ISBN 9781098142049.
  10. Judith Bishop. "C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems". C# Books from O'Reilly Media. 2012-03-27 tarixində arxivləşdirilib. İstifadə tarixi: 2012-05-15. If you want to speed up the development of your .NET applications, you're ready for C# design patterns -- elegant, accepted and proven ways to tackle common programming problems.
  11. Dijkstra, E. W. "On the cruelty of really teaching computing science". 1988. 2014-01-30 tarixində arxivləşdirilib. İstifadə tarixi: 2014-01-10.