التحقق من صحة البرامج والتحقق من صحتها
في إدارة مشاريع البرمجيات ، واختبار البرمجيات ، وهندسة البرمجيات ، يُعد التحقق والتدقيق عملية التأكد من أن نظام البرمجيات يفي بالمواصفات والمتطلبات لضمان تحقيقه للغرض المنشود. ويُشار إليه أيضًا بمراقبة جودة البرمجيات . وعادةً ما تقع هذه المسؤولية على عاتق مختبري البرمجيات كجزء من دورة حياة تطوير البرمجيات . ببساطة، يُقصد بالتحقق من البرمجيات : "بافتراض أننا سنبني البرنامج X، هل يحقق برنامجنا أهدافه دون أي أخطاء أو ثغرات؟" أما التدقيق، فيُقصد به: "هل كان البرنامج X هو ما كان ينبغي علينا بناؤه؟ هل يفي البرنامج X بالمتطلبات الأساسية؟"
التعريفات
التحقق والتحقق من الصحة ليسا الشيء نفسه، على الرغم من الخلط بينهما في كثير من الأحيان. وقد عبّر بوهم بإيجاز عن الفرق على النحو التالي [ 1 ] :
- التحقق: هل نقوم ببناء المنتج بشكل صحيح؟
- التحقق: هل نقوم ببناء المنتج الصحيح؟
يُعنى مفهوم "بناء المنتج بشكل صحيح" بالتأكد من تنفيذ النظام للمواصفات بدقة، بينما يُعنى مفهوم "بناء المنتج المناسب" بتلبية احتياجات المستخدم . في بعض السياقات، يُشترط وجود متطلبات مكتوبة لكليهما، بالإضافة إلى إجراءات أو بروتوكولات رسمية لتحديد مدى الامتثال. ومن الناحية المثالية، توفر الأساليب الرسمية ضمانًا رياضيًا بأن البرنامج يفي بمواصفاته.
يتطلب بناء المنتج بشكل صحيح استخدام مواصفات المتطلبات كمدخل للمرحلة التالية من عملية التطوير، وهي عملية التصميم، التي تُنتج مواصفات التصميم. كما يتطلب ذلك استخدام مواصفات التصميم لتغذية عملية البناء. في كل مرة تُنفذ فيها مخرجات عملية ما مواصفات مدخلاتها بشكل صحيح، يقترب المنتج البرمجي خطوةً نحو التحقق النهائي. إذا كانت مخرجات عملية ما غير صحيحة، فهذا يعني أن المطورين لم يُنفذوا أحد مكونات تلك العملية بشكل صحيح. يُطلق على هذا النوع من التحقق اسم "التحقق من المنتج أو التحقق من المواصفات".
التحقق من البرامج
قد يستلزم ذلك التحقق من استيفاء المواصفات بتشغيل البرنامج، لكن هذا غير ممكن (مثلاً، كيف يمكن لأحد أن يعرف ما إذا كانت البنية/التصميم/إلخ قد نُفذت بشكل صحيح بمجرد تشغيل البرنامج؟). لا يمكن لأحد أن يستنتج ما إذا كانت المواصفات مستوفاة أم لا إلا بمراجعة الملفات المرتبطة به.
التحقق من القطعة الأثرية أو المواصفات
يمكن أيضًا إخضاع مخرجات كل مرحلة من مراحل عملية تطوير البرمجيات للتحقق عند مقارنتها بمواصفات الإدخال الخاصة بها (انظر التعريف الوارد في CMMI أدناه).
أمثلة على التحقق من صحة القطع الأثرية:
- مقارنة مواصفات التصميم بمواصفات المتطلبات: هل تقوم مواصفات التصميم المعماري والتصميم التفصيلي ونموذج قاعدة البيانات المنطقي بتنفيذ مواصفات المتطلبات الوظيفية وغير الوظيفية بشكل صحيح؟
- من بين عناصر البناء التي تقارن بمواصفات التصميم: هل يقوم كل من الكود المصدري وواجهات المستخدم والنموذج المادي لقاعدة البيانات بتنفيذ مواصفات التصميم بشكل صحيح؟
التحقق من صحة البرمجيات
تتحقق عملية التحقق من صحة البرمجيات من أن المنتج البرمجي يلبي أو يتوافق مع الاستخدام المقصود (التحقق عالي المستوى)، أي أن البرنامج يلبي متطلبات المستخدم، ليس فقط كمواصفات أو كاحتياجات من سيشغلون البرنامج، بل كاحتياجات جميع أصحاب المصلحة (مثل المستخدمين، والمشغلين، والمسؤولين، والمديرين، والمستثمرين، إلخ). هناك طريقتان لإجراء التحقق من صحة البرمجيات: داخلي وخارجي. خلال التحقق الداخلي، يُفترض أن أهداف أصحاب المصلحة قد فُهمت بشكل صحيح وأنها عُبِّر عنها في متطلبات البرنامج بدقة وشمولية. إذا كان البرنامج يفي بمواصفات المتطلبات، فقد تم التحقق منه داخليًا. أما التحقق الخارجي فيتم عن طريق سؤال أصحاب المصلحة عما إذا كان البرنامج يلبي احتياجاتهم. تتطلب منهجيات تطوير البرمجيات المختلفة مستويات مختلفة من مشاركة المستخدمين وأصحاب المصلحة وردود أفعالهم؛ لذا، يمكن أن يكون التحقق الخارجي حدثًا منفصلاً أو مستمرًا. يتحقق التحقق الخارجي النهائي بنجاح عندما يقبل جميع أصحاب المصلحة المنتج البرمجي ويؤكدون أنه يلبي احتياجاتهم. يتطلب هذا التحقق الخارجي النهائي استخدام اختبار قبول وهو اختبار ديناميكي .
ومع ذلك، من الممكن أيضًا إجراء اختبارات ثابتة داخلية لمعرفة ما إذا كان البرنامج يفي بمواصفات المتطلبات، ولكن ذلك يندرج ضمن نطاق التحقق الثابت لأن البرنامج لا يعمل.
التحقق من صحة القطعة الأثرية أو المواصفات
ينبغي التحقق من صحة المتطلبات قبل أن يصبح منتج البرمجيات ككل جاهزًا (تتطلب عملية تطوير الشلال تحديدها بشكل مثالي قبل بدء التصميم؛ لكن عمليات التطوير التكرارية لا تتطلب ذلك وتسمح بتحسينها المستمر).
أمثلة على التحقق من صحة القطع الأثرية:
- التحقق من صحة مواصفات متطلبات المستخدم: يتم التحقق من صحة متطلبات المستخدم، كما هو موضح في وثيقة تُسمى "مواصفات متطلبات المستخدم"، من خلال التأكد من أنها تعكس بالفعل رغبات وأهداف أصحاب المصلحة. ويمكن القيام بذلك عن طريق إجراء مقابلات مع أصحاب المصلحة وسؤالهم مباشرةً (الاختبار الثابت)، أو حتى عن طريق إصدار نماذج أولية وإخضاعها لتقييم المستخدمين وأصحاب المصلحة (الاختبار الديناميكي).
- التحقق من صحة إدخال المستخدم: يتم التحقق من صحة إدخال المستخدم (الذي يتم جمعه بواسطة أي جهاز طرفي مثل لوحة المفاتيح أو جهاز الاستشعار البيومتري وما إلى ذلك) عن طريق التحقق مما إذا كان الإدخال المقدم من قبل مشغلي البرامج أو المستخدمين يفي بقواعد وقيود المجال (مثل نوع البيانات والنطاق والتنسيق).
التحقق مقابل المصادقة
وفقًا لنموذج نضج القدرات (CMMI-SW v1.1)، [ 2 ]
- التحقق من صحة البرمجيات: عملية تقييم البرمجيات أثناء أو في نهاية عملية التطوير لتحديد ما إذا كانت تفي بالمتطلبات المحددة. [IEEE-STD-610]
- التحقق من البرمجيات: عملية تقييم البرمجيات لتحديد ما إذا كانت منتجات مرحلة تطوير معينة تفي بالشروط المفروضة في بداية تلك المرحلة. [IEEE-STD-610]
يمكن اعتبار التحقق أثناء عملية تطوير البرمجيات شكلاً من أشكال التحقق من مواصفات متطلبات المستخدم؛ وهو في نهاية عملية التطوير يعادل التحقق الداخلي و/أو الخارجي للبرمجيات. ومن وجهة نظر نموذج نضج القدرات المتكاملة (CMMI)، يُعد التحقق من نوع المنتج النهائي.
بمعنى آخر، يضمن التحقق من البرمجيات أن مخرجات كل مرحلة من مراحل عملية تطوير البرمجيات تُنفذ بفعالية ما تحدده مُدخلاتها (المتطلبات ← التصميم ← المنتج البرمجي)، بينما يضمن التحقق من صحة البرمجيات أن المنتج البرمجي يُلبي احتياجات جميع أصحاب المصلحة (وبالتالي، تم التعبير عن مواصفات المتطلبات بشكل صحيح ودقيق منذ البداية). يضمن التحقق من البرمجيات أنك قمت ببناء المنتج بشكل صحيح، ويؤكد أن المنتج، كما هو مُقدم، يُحقق خطط المطورين. أما التحقق من صحة البرمجيات فيضمن أنك قمت ببناء المنتج الصحيح، ويؤكد أن المنتج، كما هو مُقدم، يُحقق الاستخدام المقصود وأهداف أصحاب المصلحة.
استخدمت هذه المقالة التعريف الدقيق أو الضيق للتحقق.
من منظور الاختبار:
- خطأ – دالة خاطئة أو مفقودة في الكود.
- الفشل – هو ظهور خلل أثناء التنفيذ. لم يكن البرنامج فعالاً. فهو لا يؤدي وظيفته كما هو مُفترض.
- عطل – وفقًا لمواصفاته، لا يؤدي النظام وظيفته المحددة. استهلك البرنامج موارد مفرطة (وقتًا أو دورات معالجة مركزية أكثر من اللازم، ذاكرة أكثر من اللازم، عمليات إدخال/إخراج كثيرة جدًا، إلخ)؛ ونتجت عنه آثار جانبية (مخاطر الحرارة/الجهد/الاهتزاز على الأنظمة، ومخاطر الحرارة/التيار/القوة على المستخدمين؛ لم يكن قابلاً للاستخدام، وغير موثوق، إلخ. إنه لا يؤدي وظيفته بالطريقة المطلوبة.
مفاهيم ذات صلة
يرتبط كل من التحقق والتدقيق بمفهومي الجودة وضمان جودة البرمجيات . ولا يضمن التحقق والتدقيق وحدهما جودة البرمجيات ؛ بل يتطلبان التخطيط، والتتبع ، وإدارة التكوين، وجوانب أخرى من هندسة البرمجيات.
في مجتمع النمذجة والمحاكاة ، تتشابه تعريفات التحقق والتحقق من الصحة والاعتماد:
- التحقق من النماذج والمحاكاة هو عملية تحديد ما إذا كان نموذج الحاسوب أو المحاكاة أو اتحاد النماذج وتطبيقات المحاكاة والبيانات المرتبطة بها يمثل بدقة الوصف المفاهيمي والمواصفات الخاصة بالمطور. [ 3 ]
- التحقق من صحة النماذج والمحاكاة هو عملية تحديد مدى دقة تمثيل النموذج أو المحاكاة أو اتحاد النماذج والمحاكاة، والبيانات المرتبطة بها، للعالم الحقيقي من منظور الاستخدام (الاستخدامات) المقصودة. [ 3 ]
- الاعتماد هو الشهادة الرسمية التي تثبت أن نموذجًا أو محاكاة مقبولة للاستخدام لغرض محدد. [ 3 ]
يركز تعريف التحقق من صحة النمذجة والمحاكاة على مدى دقة تمثيلها للاستخدامات المقصودة في العالم الحقيقي. ويُعدّ تحديد درجة دقة النمذجة والمحاكاة أمرًا ضروريًا لأن جميع نماذج المحاكاة والمحاكاة هي تقريب للواقع، ومن الأهمية بمكان عادةً تحديد ما إذا كانت درجة التقريب مقبولة للاستخدامات المقصودة. وهذا يختلف عن التحقق من صحة البرمجيات.
طُرق
رَسمِيّ
في أنظمة البرمجيات بالغة الأهمية ، يمكن استخدام الأساليب الرسمية لضمان التشغيل السليم للنظام. إلا أن هذه الأساليب الرسمية قد تكون مكلفة، إذ تمثل ما يصل إلى 80% من إجمالي تكلفة تصميم البرمجيات.
مستقل
تستهدف عملية التحقق والتدقيق المستقل للبرمجيات (ISVV) أنظمة البرمجيات ذات الأهمية البالغة للسلامة ، وتهدف إلى رفع جودة منتجات البرمجيات، وبالتالي تقليل المخاطر والتكاليف طوال دورة حياة تشغيلها. ويتمثل هدف ISVV في ضمان أداء البرمجيات وفقًا لمستوى الثقة المحدد وضمن معاييرها المصممة ومتطلباتها المحددة. [ 4 ] [ 5 ]
تُنفَّذ أنشطة التحقق من صحة البرمجيات المستقلة (ISVV) بواسطة فرق هندسية مستقلة، غير مشاركة في عملية تطوير البرمجيات، لتقييم العمليات والمنتجات الناتجة. وتُطبَّق استقلالية فريق التحقق من صحة البرمجيات المستقلة على ثلاثة مستويات مختلفة: المالية والإدارية والفنية.
يتجاوز التحقق والتقييم المتكامل (ISVV) أساليب التحقق والتقييم "التقليدية" التي تطبقها فرق التطوير. فبينما تهدف الأخيرة إلى ضمان أداء البرنامج بشكل جيد وفقًا للمتطلبات الاسمية، يركز التحقق والتقييم المتكامل على المتطلبات غير الوظيفية مثل المتانة والموثوقية، وعلى الظروف التي قد تؤدي إلى فشل البرنامج.
يتم إرسال نتائج واستنتاجات ISVV إلى فرق التطوير لتصحيحها وتحسينها.
تاريخ
يستمد نظام التحقق والتدقيق المستقل (ISVV) من تطبيق نظام التحقق والتدقيق المستقل (IV&V) على البرمجيات. يعود تاريخ التطبيق المبكر لنظام ISVV (كما هو معروف اليوم) إلى أوائل سبعينيات القرن الماضي، عندما رعى الجيش الأمريكي أول برنامج هام متعلق بنظام IV&V لنظام سيفغارد المضاد للصواريخ الباليستية . [ 6 ] ومن الأمثلة الأخرى برنامج IV&V التابع لوكالة ناسا، والذي أُنشئ عام 1993. [ 7 ]
بحلول نهاية سبعينيات القرن العشرين، اكتسبت تقنية التحقق والتدقيق المستقل (IV&V) شعبية متزايدة. وقد أدى التزايد المستمر في تعقيد البرمجيات وحجمها وأهميتها إلى زيادة الطلب على تطبيق تقنية التحقق والتدقيق المستقل عليها.
في غضون ذلك ، ترسخت منهجية التحقق والتدقيق المستقل (IV&V) (وISVV لأنظمة البرمجيات) وأصبحت تُستخدم على نطاق واسع من قبل منظمات مثل وزارة الدفاع الأمريكية ، وإدارة الطيران الفيدرالية ، ووكالة ناسا ، ووكالة الفضاء الأوروبية . وقد ذُكرت منهجية التحقق والتدقيق المستقل في معيار DO-178B ، ومعيار ISO/IEC 12207 ، وتمّ إضفاء الطابع الرسمي عليها في معيار IEEE 1012 .
في وكالة الفضاء الأوروبية
في البداية، خلال الفترة 2004-2005، قام اتحاد أوروبي بقيادة وكالة الفضاء الأوروبية ، يضم شركات DNV و Critical Software SA و Terma و CODA SciSys plc، بإنشاء النسخة الأولى من دليل مخصص للتحقق والتدقيق المستقلين (ISVV)، بعنوان "دليل وكالة الفضاء الأوروبية للتحقق والتدقيق المستقلين"، بدعم من منظمات أخرى. [ 10 ] يغطي هذا الدليل المنهجيات المطبقة على جميع مراحل هندسة البرمجيات فيما يتعلق بالتحقق والتدقيق المستقلين.
في عام 2008، أصدرت وكالة الفضاء الأوروبية نسخة ثانية، بعد أن تلقت مدخلات من العديد من الجهات المعنية المختلفة في مجال رؤية الفضاء الأوروبي. [ 10 ]
المنهجية
يتكون نظام ISVV عادةً من خمس مراحل رئيسية، ويمكن تنفيذ هذه المراحل بالتتابع أو كنتيجة لعملية التخصيص.
تخطيط
- تخطيط أنشطة ISVV
- تحليل أهمية النظام: تحديد المكونات الحرجة من خلال مجموعة من أنشطة RAMS (القيمة مقابل المال)
- اختيار الأساليب والأدوات المناسبة
التحقق من المتطلبات
- التحقق من: الاكتمال، والصحة، وقابلية الاختبار
التحقق من التصميم
- مدى ملاءمة التصميم ومطابقته لمتطلبات البرمجيات والواجهات
- الاتساق الداخلي والخارجي
- التحقق من الجدوى والصيانة
التحقق من الرمز
- التحقق من: الاكتمال، والصحة، والاتساق
- تحليل مقاييس الكود
- التحقق من الامتثال لمعايير الترميز
تصديق
- تحديد المكونات/الوظائف غير المستقرة
- يركز التحقق على معالجة الأخطاء: وهو تحقق تكميلي (وليس متزامنًا) مع التحقق الذي أجراه فريق التطوير.
- الامتثال لمتطلبات البرامج والأنظمة
- تقنيات اختبار الصندوق الأسود واختبار الصندوق الأبيض
- تقنيات قائمة على الخبرة
البيئة التنظيمية
غالباً ما يتعين على البرامج تلبية متطلبات الامتثال للصناعات الخاضعة للتنظيم القانوني، والتي غالباً ما تُوجهها الهيئات الحكومية [ 11 ] [ 12 ] أو السلطات الإدارية الصناعية. على سبيل المثال، تشترط إدارة الغذاء والدواء الأمريكية التحقق من صحة إصدارات البرامج وتحديثاتها . [ 13 ]
انظر أيضاً
للمزيد من القراءة
- معيار IEEE 1012-2012 للتحقق من صحة الأنظمة والبرمجيات . 2012. doi : 10.1109/IEEESTD.2012.6204026 . ISBN 978-0-7381-7268-2.
- تران، إي. (1999). "التحقق/التصديق/الاعتماد" . في: كوبمان، ب. (محرر). مواضيع في الأنظمة المدمجة الموثوقة . جامعة كارنيجي ميلون . تاريخ الاسترجاع: 18 مايو 2007 .
- مينزيس، ت.؛ واي. هو (2003). "استخراج البيانات للأشخاص المشغولين للغاية". مجلة الكمبيوتر . 36 (1): 22-29 . doi : 10.1109/MC.2003.1244531 .
روابط خارجية
- فصل حول جودة البرمجيات (بما في ذلك التحقق من صحة البرمجيات والتحقق منها) مؤرشف بتاريخ 8 ديسمبر 2014 في أرشيف الإنترنت (Wayback Machine ) ضمن كتاب SWEBOK
مراجع
- ↑ بوهم، باري دبليو. (يناير 1984). "التحقق من صحة متطلبات البرمجيات ومواصفات التصميم" . مجلة IEEE للبرمجيات . 1 (1): 75-88 . doi : 10.1109/MS.1984.233702 . تاريخ الاسترجاع: 23 مارس 2026 .
- ↑ "نموذج نضج القدرات المتكامل لهندسة البرمجيات، الإصدار 1.1، التمثيل المرحلي (CMMI-SW، الإصدار 1.1، المرحلي)" . resources.sei.cmu.edu . 31 يوليو 2002. تاريخ الاسترجاع: 20 مارس 2021 .
- 1 2 3 وثائق وزارة الدفاع للتحقق والتحقق من الصحة والاعتماد (VV&A) للنماذج والمحاكاة ، وكالة الدفاع الصاروخي، 2008
- ↑ روجرز، ر. (26 أكتوبر 1981). "التخطيط للتحقق المستقل من البرمجيات والتحقق من صحتها" . المؤتمر الثالث للحواسيب في مجال الطيران والفضاء . مؤتمر الحواسيب في مجال الطيران والفضاء. سان دييغو، كاليفورنيا، الولايات المتحدة الأمريكية: المعهد الأمريكي للملاحة الجوية والفضائية. doi : 10.2514/6.1981-2100 .
- ↑ أمبروسيو، آنا؛ ماتيلو-فرانسيسكو، فاطمة؛ مارتينز، إليان (12 مايو 2008). "عملية مستقلة للتحقق من صحة البرمجيات وتطبيقاتها الفضائية" . مؤتمر SpaceOps 2008. هايدلبرغ، ألمانيا: المعهد الأمريكي للملاحة الجوية والفضائية. doi : 10.2514/6.2008-3517 . ISBN 978-1-62410-167-0.
- ↑ لويس، روبرت أو. (1992). التحقق والتدقيق المستقلان : عملية هندسة دورة حياة البرمجيات عالية الجودة . نيويورك: وايلي. ISBN 0-471-57011-7. OCLC 74908695 .
- 1 2 أسبري، مايكل (9 مارس 2015). "حول برنامج التحقق والتدقيق المستقل التابع لناسا" . ناسا . تم الاسترجاع في 20 مارس 2021 .
- ↑ بالجي، أ. (2010). "القواعد الذهبية للتحقق والتحقق من الصحة والاختبار والشهادة لتطبيقات النمذجة والمحاكاة". S2CID 61476570 .
{{cite web}}: مفقود أو فارغ|url=( مساعدة ) - ↑ "قسم أنظمة برمجيات الطيران (TEC-SWF)" . www.esa.int . تاريخ الاسترجاع: 2021-03-20 .
- 1 2 lavva.pt. "دليل ISVV الجديد للفضاء قيد الإعداد" . www.criticalsoftware.com . تم الاطلاع عليه بتاريخ 20 مارس 2021 .
- ↑ "المبادئ العامة للتحقق من صحة البرمجيات؛ إرشادات نهائية للصناعة وموظفي إدارة الغذاء والدواء" (ملف PDF) . إدارة الغذاء والدواء . 11 يناير 2002. مؤرشف من الأصل (ملف PDF) في 17 يونيو 2009. تم الاطلاع عليه في 12 يوليو 2009 .
- ↑ "إرشادات للصناعة: الجزء 11، السجلات الإلكترونية؛ التوقيعات الإلكترونية - النطاق والتطبيق" (ملف PDF) . إدارة الغذاء والدواء . أغسطس 2003. مؤرشف من الأصل (ملف PDF) في 9 يوليو 2009. تم الاطلاع عليه في 12 يوليو 2009 .
- ↑ "إرشادات للصناعة: الأمن السيبراني للأجهزة الطبية المتصلة بالشبكة والتي تحتوي على برامج جاهزة للاستخدام" (ملف PDF) . إدارة الغذاء والدواء الأمريكية . 14 يناير 2005. مؤرشف من النسخة الأصلية (ملف PDF) في 10 يوليو 2009. تم الاطلاع عليه في 12 يوليو 2009 .
ملحوظات
- الأساليب الرسمية
- جودة البرمجيات
