البرمجيات أشبه بأداة تُساعدنا على القيام بأشياء كثيرة، مثل لعب الألعاب، وإرسال الرسائل، أو حتى تعلم أشياء جديدة. عند بناء البرمجيات، علينا تحديد ما يجب أن تفعله قبل البدء. تُسمى هذه القائمة بمتطلبات البرمجيات. في هذا الدرس، سنتعلم ماهية متطلبات البرمجيات، وأهميتها، وكيفية ارتباطها بعملية إنشاء البرمجيات. سنستخدم كلمات بسيطة وأمثلة من حياتنا اليومية.
متطلب البرنامج هو بيان يصف ميزة أو وظيفة يجب أن يمتلكها البرنامج. تخيله كقائمة أمنيات أو مهام لبرنامج حاسوبي. على سبيل المثال، إذا كنت تريد لعبة بشخصيات ملونة وحركات سلسة وأصوات ممتعة، فإن هذه الأفكار تُصبح متطلبات اللعبة.
تخيل أنك تُخطط لحفلة عيد ميلادك. قد تقول: "أريد كعكة وبالونات وألعابًا". وبالمثل، عندما يُنشئ الناس برامج، يُحددون مهامها. تُساعد هذه القائمة الجميع على فهم الشكل النهائي للمنتج وكيفية عمله.
تنقسم عملية تطوير البرمجيات إلى عدة خطوات. نُطلق على هذه العملية اسم "دورة حياة تطوير البرمجيات"، أو اختصارًا SDLC. تبدأ متطلبات البرمجيات في البداية. لنلقِ نظرة على خطوات SDLC لنرى أين تُستخدم متطلبات البرمجيات:
تُرشد متطلبات البرنامج كل خطوة. فهي تُساعد الجميع على العمل بسلاسة، وتضمن أن البرنامج النهائي يُؤدي وظيفته على أكمل وجه.
متطلبات البرمجيات مهمة جدًا لأسباب عديدة. فهي بمثابة دليل واضح أو خريطة لكل من يعمل على مشروع. إليك بعض أسباب أهميتها:
في حياتنا اليومية، تخيّل وصفةً تُبيّن لك المكونات اللازمة لتحضير الكعك. بدون الوصفة، قد يفوتك أحد المكونات أو تُضيف كميةً زائدةً. وبالمثل، تُحدّد متطلبات البرمجيات للمطورين ما هو مطلوبٌ بالضبط لأفضل منتج برمجي.
جمع متطلبات البرنامج هو عملية التحدث مع الأشخاص الذين سيستخدمونه وتسجيل احتياجاتهم. يشبه هذا إجراء مقابلات مع الأصدقاء أو العائلة لمعرفة ما يمكنك تقديمه لهم. يطرح المطورون العديد من الأسئلة، مثل:
على سبيل المثال، إذا رغبت مكتبة محلية في نظام حاسوب جديد، فقد يقول المعنيون: "نحتاج إلى طريقة للبحث عن الكتب بسرعة"، و"نريد نظامًا يُسهّل استعارة الكتب"، و"نحتاج إلى طريقة لإضافة كتب جديدة إلى النظام". كل هذه المتطلبات ضرورية. يُدوّن المطورون هذه المتطلبات ويستخدمونها كخطة عند بناء النظام.
هذا الجزء من العملية أشبه بالاستماع بعناية لصديق. عندما يخبرك صديقك بما يريده لحفلة عيد ميلاده، دوّن أفكاره. وبالمثل، يستمع المطورون ويسجلون الأفكار التي ستصبح متطلبات برمجية.
يمكن تقسيم متطلبات البرمجيات إلى أنواع مختلفة. من أكثرها شيوعًا:
تخيل أنك تقود دراجة هوائية. المتطلبات الوظيفية تُشبه معرفة كيفية الدواسة والتوجيه والفرملة. أما المتطلبات غير الوظيفية فتُشبه امتلاك هيكل قوي وإطارات ناعمة ومقعد مريح. كلا النوعين ضروريان لركوب دراجة ممتع وآمن. وبالمثل، تضمن المتطلبات البرمجية، الوظيفية وغير الوظيفية، أن يعمل البرنامج بشكل صحيح وأن يكون سهل الاستخدام للمستخدمين.
بعد جمع المتطلبات، تأتي الخطوة التالية وهي كتابتها بوضوح وبساطة. تُشبه هذه القائمة دليل تعليمات لبناء البرنامج. يستخدم المطورون لغة واضحة وكلمات سهلة الفهم لكتابة كل متطلب.
فيما يلي بعض النصائح البسيطة لكتابة متطلبات برمجية جيدة:
تساعد هذه الإرشادات الفريق على العمل بسلاسة أكبر. عندما يفهم الجميع المتطلبات، يُسهّل بناء أفضل برنامج ممكن. يشبه الأمر رسم صور مع تسميات. تُسهّل التسميات على الجميع معرفة ما يُمثّله كل جزء من الرسم.
لنستخدم مثالاً بسيطاً لشرح متطلبات البرنامج بشكل أكبر. لنفترض أنك أنشأت كشكاً لبيع عصير الليمون. إذا كنت ستفتتح كشكاً لبيع عصير الليمون، فستكون لديك قائمة بالأشياء التي عليك القيام بها:
كل خطوة تتخذها تُشبه متطلبات البرنامج. الخطوة الأولى تُرشدك إلى ما يجب فعله أولاً، والثانية تُبيّن لك ما تحتاجه. إذا نسيتَ خطوةً، فقد لا يعمل كشك عصير الليمون الخاص بك بشكل جيد. في مجال البرمجيات، إذا فُقد أحد المتطلبات أو لم يكن واضحًا، فقد لا يعمل البرنامج كما هو متوقع. يحتاج كلٌّ من كشك عصير الليمون ومشروع البرمجيات إلى خطة واضحة لنجاحهما.
تُساعد متطلبات البرمجيات الفريق على اتخاذ قرارات مهمة. عندما يعرف جميع أعضاء الفريق ما يجب أن يفعله البرنامج، يُمكنهم تحديد أفضل طرق بنائه واختباره. على سبيل المثال، إذا نصّ أحد المتطلبات على أن تحتوي اللعبة على رسومات ملونة، فقد يُقرر الفريق استخدام أدوات خاصة لإنشاء صور زاهية. إذا تطلب متطلب آخر أوقات تحميل سريعة، فيجب على الفريق اختيار أفضل ممارسات البرمجة لتحقيق ذلك الهدف.
يشبه هذا تخطيط مشروع مدرسي. إذا أعطاك معلمك قائمة بالمستلزمات والمهام، يمكنك تحديد كيفية العمل مع زملائك. إذا كان أحد الطلاب بارعًا في الرسم والآخر في الكتابة، يمكنك تقسيم العمل. وبالمثل، تساعد متطلبات البرامج الواضحة المطورين والمصممين والمختبرين على العمل بكفاءة كفريق واحد.
تُستخدم متطلبات البرامج في العديد من الأماكن التي تراها يوميًا. في كل مرة تستخدم فيها تطبيقًا على جهاز لوحي أو كمبيوتر، يوجد فريقٌ مسؤولٌ عنه يتبع خطةً مُحددةً لمتطلبات البرامج. إليك بعض الأمثلة:
حتى الأجهزة البسيطة، كالآلة الحاسبة على الحاسوب أو الهاتف، تتطلب برمجيات. يجب أن تُجري الآلة الحاسبة عمليات الجمع والطرح والضرب والقسمة بشكل صحيح. جميع هذه الميزات مُخطط لها مسبقًا لضمان عمل الآلة الحاسبة بكفاءة.
بعد كتابة متطلبات البرنامج، من المهم مراجعتها. يطرح الفريق أسئلة مثل: "هل نفهم جميع الاحتياجات؟" و"هل هناك مجال للتحسين؟". قد يطلبون أحيانًا ملاحظات المستخدمين المستقبليين. تُسهم الملاحظات في تحسين المتطلبات وتحسينها.
تخيل أنك رسمت صورةً وأريتها لصديقك. قد يقول لك: "ربما أضف ألوانًا أكثر أو شمسًا أكبر". يمكنك حينها إضافة هذه الأفكار لجعل صورتك أجمل. وبالمثل، تساعد الملاحظات المطورين على تحسين قائمة المتطلبات قبل البدء في بناء البرنامج.
عملية الاستماع والمراجعة والإنهاء هذه بالغة الأهمية. فهي تضمن انطلاقة قوية للمشروع، وأن يعرف الجميع ما يجب إنشاؤه بالضبط. كما أنها تساعد على تجنب المشاكل لاحقًا أثناء بناء البرنامج، تمامًا كما يساعد التخطيط المسبق على تجنب لقاءات اللعب غير المثمرة.
على الرغم من أن متطلبات البرمجيات مفيدة للغاية، إلا أن كتابتها قد تكون صعبة في بعض الأحيان. ومن أهم التحديات ضمان فهم الجميع للقائمة بنفس الطريقة. ففي بعض الأحيان، قد تكون الكلمات مُربكة، أو قد تُفهم الأفكار بشكل خاطئ.
تخيل أنك تلعب لعبة هاتف مع أصدقائك. يهمس أحدهم برسالة، وبحلول وصولها إلى آخر صديق، قد تكون الرسالة قد تغيرت. في مشاريع البرمجيات، إذا لم يكن أحد المتطلبات واضحًا، فقد يبني الفريق مشروعًا مختلفًا عما هو مطلوب. لتجنب ذلك، يعمل الفريق معًا، ويطرح الأسئلة، ويتأكد من أن جميع المتطلبات واضحة وبسيطة.
من التحديات الأخرى تغير الاحتياجات. أحيانًا، تتغير الاحتياجات بمرور الوقت. على سبيل المثال، إذا قررت مدرسة استخدام أسلوب تعليمي جديد، فقد يحتاج برنامج الحاسوب الخاص بها إلى ميزات جديدة. يجب أن تكون متطلبات البرنامج مرنة، ويتم تحديثها حسب الحاجة ليساعد البرنامج النهائي الجميع على النحو المنشود.
جمع متطلبات البرامج ليس مهمةً لشخصٍ واحد. من المهم إشراك جميع من سيستخدم البرنامج، بما في ذلك المستخدمون النهائيون والعملاء والمطورون وحتى المختبرون. عندما يشارك الجميع أفكارهم واحتياجاتهم، تصبح قائمة المتطلبات أكثر شمولاً وفائدة.
فكّر في التخطيط لنزهة عائلية. قد يكون لدى كل فرد من أفراد العائلة أفكار، مثل إحضار شطائر، أو لعب ألعاب، أو زيارة حديقة. بدمج هذه الأفكار، تصبح خطة النزهة أفضل بكثير وأكثر متعة للجميع. تعمل مشاريع البرمجيات بطريقة مماثلة. كلما زادت الأفكار المُشاركة، أصبحت متطلبات البرمجيات أوضح وأفضل.
يُسهم هذا العمل الجماعي في بناء الثقة. فعندما يُدرك جميع أعضاء الفريق أن أفكارهم محل تقدير، يشعرون بمزيد من الحماس والمسؤولية تجاه المشروع. وتضمن هذه الروح الإيجابية في العمل إنتاج البرنامج النهائي بعناية واهتمام بالتفاصيل.
بعد بناء البرنامج، يتحقق الفريق من استيفاء جميع المتطلبات. يتم ذلك خلال مرحلة الاختبار ضمن دورة حياة تطوير البرنامج. يقارن المختبرون البرنامج بقائمة المتطلبات ويتأكدون من أن كل شيء يعمل كما هو مخطط له.
تخيل أنك صنعت نموذج طائرة. قبل عرضه على معلمك، قد تتحقق من تركيب جميع أجزائه وقدرته على الطيران. في عالم البرمجيات، يكون المختبرون بمثابة مفتشين. يشغّلون البرنامج ويتحققون من كل متطلب فيه. إذا كان هناك أي نقص أو عطل، فسيتم إصلاحه قبل مشاركة البرنامج مع المستخدمين.
تساعد عملية التحقق هذه على ضمان موثوقية البرنامج وأمانه، كما تضمن حصول المستخدمين على تجربة جيدة. إذا استوفى البرنامج جميع المتطلبات، فهو جاهز للاستخدام من قبل الجميع، تمامًا كما أن اللعبة المتقنة جاهزة للاستمتاع بها من قبل الأطفال.
إن اتباع متطلبات برمجية واضحة يُحقق فوائد عديدة للمشروع. إليك بعض أهم هذه المزايا:
هذه المزايا تُشبه التخطيط لحدثٍ ممتع. عندما تُخطط أنت وأصدقاؤك لحفلةٍ بفكرةٍ واضحةٍ عمّا ترغبون به، يسير كل شيءٍ بسلاسة. يُساعد الجميع، وتنتهي الحفلة بشكلٍ أفضل. في البرمجيات، تُؤدي المتطلبات الجيدة إلى منتجاتٍ أكثر موثوقيةً وسهولةً في الاستخدام.
ليس من الصعب فهم متطلبات البرمجيات عند ربطها بحياتنا اليومية. إليك الأمثلة اليومية التالية:
يستخدم مطورو البرامج الفكرة نفسها. فهم يدونون ما يجب أن يفعله البرنامج وكيفية عمله. تُسهّل هذه الخطة الواضحة على الجميع بناء البرنامج واستخدامه بنجاح.
تُساعد متطلبات البرمجيات المطورين أيضًا على التخطيط للمستقبل. فمع تغير التكنولوجيا، تنشأ احتياجات جديدة. بوجود متطلبات واضحة، يُمكن لمشروع برمجي التكيف مع هذه التغييرات بسهولة. ويمكن للمطورين إضافة ميزات جديدة أو تعديل الميزات القديمة عند الحاجة. هذه المرونة تجعل البرنامج مفيدًا لفترة أطول.
فكّر في لعبتك المفضلة. حتى لو لعبت بها لفترة طويلة، قد تضيف إليها أفكارًا جديدة أو تُغيّر طريقة استخدامها. يعمل البرنامج بالطريقة نفسها، حيث تُحدّث قائمة المتطلبات عند ظهور أفكار جديدة. بهذه الطريقة، يتطور البرنامج مع احتياجات مستخدميه.
هذا النهج الاستشرافي بالغ الأهمية في عالمٍ تُكتشف فيه تقنيات جديدة كل يوم. هذا يعني أن البرمجيات ليست منتجًا ثابتًا، بل مشروعٌ حيّ قابلٌ للتطور مع مرور الوقت.
متطلبات البرمجيات أشبه بقائمة أمنيات لبرنامج حاسوبي. فهي تُبيّن لنا ما يجب أن يفعله البرنامج، وتُرشدنا في كل خطوة من خطوات عملية إنشائه.
في هذا الدرس، تعلمنا أن متطلبات البرمجيات هي أساس البرمجيات الجيدة. فهي تضمن أن تكون كل خطوة من التخطيط إلى البناء واضحة ومدروسة جيدًا. باتباع قواعد بسيطة وإشراك الجميع، يصبح البرنامج موثوقًا وممتعًا لجميع المستخدمين.
تذكر أن الخطة الواضحة تؤدي إلى نتائج أفضل. سواء كنت تخطط للعبة أو حفلة أو تصمم برنامجًا حاسوبيًا، فإن تدوين احتياجاتك هو الخطوة الأولى نحو النجاح. تساعد متطلبات البرنامج جميع أعضاء الفريق على العمل معًا لبناء شيء ممتع ومفيد وسهل الاستخدام.