Tech Trends & Architecture

قبلما تبدأ بتخطيط أي نظام، في بعض الحاجات اللي المفروض تأخذها بعين الاعتبار. من أهم الحاجات هي…

قبلما تبدأ بتخطيط أي نظام، في بعض الحاجات اللي المفروض تأخذها بعين الاعتبار. من أهم الحاجات هي القدرة على التفريق بين المتطلبات الوظيفية (Domain Requirements) والخصائص غير الوظيفية (Characteristics Requirements)،…

قبلما تبدأ بتخطيط أي نظام، في بعض الحاجات اللي المفروض تأخذها بعين الاعتبار. من أهم الحاجات هي القدرة على التفريق بين المتطلبات الوظيفية (Domain Requirements) والخصائص غير الوظيفية (Characteristics Requirements)، كثير من المطورين يسموها بـ Non-Functional Requirements أو Cross-Cutting Concerns، واللي تشمل خصائص زي المرونة (Flexibility)، والقابلية للتوسع (Scalability)، والأمان (Security)، والاعتمادية (Reliability)، وغيرها.
تحديد الخصائص اللي يحتاج نظامك لدعمها يعتمد بشكل أساسي على طبيعة النظام الذي تعمل عليه.
يمكن تلخيص هذه الخصائص بناءً على المتطلبات الوظيفية للنظام (Domain requirements)، لأن الهدف الأساسي من بناء النظام هو تحقيق هذه المتطلبات. فكلما كان فهمك لطبيعة النظام وبيئته أكبر، زادت قدرتك على تحديد ال characteristics requirements.
على سبيل المثال، لو كنت شغال على نظام مالي، فإن طبيعة الأنظمة المالية تتطلب عادة مستوى عالي من الأمان (Security) ودرجة عالية من التوفر (High Availability).
فمن المهم أنك تحدد هذه الخصائص بعناية ودون مبالغة لتجنب الـ Over Engineering. لأنه زيادة الخصائص المدعومة في النظام يعني زيادة في تعقيد النظام، مما قد يؤثر على خصائص أخرى وأحيان يؤدي إلى تغييرات كبيرة في المتطلبات الوظيفية نفسها.
لو رجعنا لمثال النظام المالي لو كنت بحاجة إلى ضمان أمان عالي لحماية بيانات العملاء والبطاقات البنكية، بنحتاج تطبيق تقنيات مثل تشفير البيانات (Data Encryption). وكلنا عارفين إن التشفير وفك التشفير عمليات تستهلك وقتًا وجهدًا، ما يعني أن الأداء (Performance) قد يتأثر نتيجة تعزيز الأمان.
عشان كذه تحقيق التوازن بين الخصائص المختلفة أمر ضروري، حيث إن التركيز الزائد على خاصية معينة قد يأتي على حساب خصائص أخرى. من المهم أن تأخذ هذا التوازن بعين الاعتبار أثناء تصميم النظام لضمان تحقيق الأهداف المطلوبة بكفاءة دون التأثير على استقرار النظام أو أدائه.

LinkedIn

Original source

This content was originally published as a LinkedIn post. Open it in a new tab.

Open on LinkedIn