هل يجب علي استخدام الأساليب الرسمية في مشروع البرامج الخاص بي؟

StackOverflow https://stackoverflow.com/questions/735609

سؤال

يريدنا عميلنا بناء تطبيق إنترنت غني على شبكة الإنترنت لجمع متطلبات البرامج. في الأساس إنها أداة حالة قائمة على شبكة الإنترنت تتبع عملية محددة للحصول على متطلبات من أصحاب المصلحة. أنا مدير المشروع وما زلنا في المراحل المبكرة للمشروع.

لقد كنت أفكر في استخدام الأساليب الرسمية للمساعدة في توضيح متطلبات الأداة لكل من موكلي والمطورين. من خلال الطرق الرسمية أعني بعض أشكال النمذجة، ربما شيء يستند إلى الرياضيات. بعض الأشياء التي قرأتها عنها وهي تفكر في تشمل Z (http://en.wikipedia.org/wiki/z_notation.)، آلات الدولة، UML 2.0 (ربما مع ملحقات مثل ocl.), شبكات بتري, ، وبعض الأشياء على مستوى الترميز مثل العقود وظروف ما قبل ونشر. هل هناك أي شيء آخر يجب أن أفكر فيه؟

يشهد المطورون ولكن اعتمادا على الشكليات المستخدمة قد يتعين عليهم تعلم بعض الرياضيات.

أحاول تحديد ما إذا كان الأمر يستحق ذلك بالنسبة لي لاستخدام الأساليب الرسمية في هذا المشروع وإذا كان الأمر كذلك، إلى أي مدى. أعرف أن "ذلك يعتمد" لذا فإن الإجابات الأكثر فائدة بالنسبة لي هي حجج بنعم / لا ودعم.

هل تستخدم الأساليب الرسمية إذا كنت في هذا المشروع؟

هل كانت مفيدة؟

المحلول

لقد كنت أفكر في استخدام الأساليب الرسمية للمساعدة في توضيح متطلبات الأداة لكل من موكلي والمطورين.

عدد قليل جدا من المطورين لديهم تجربة أساليب رسمية. المرة الوحيدة التي رأيتها العملاء الذين لديهم تدريب أساليب رسمية كانوا أعضاء في Zug عندما كنا نرفع كاديز إلى ويندوز.

من خلال الطرق الرسمية أعني بعض أشكال النمذجة، ربما شيء يستند إلى الرياضيات. بعض الأشياء التي قرأتها عنها وهي تفكر في تشمل Z (http://en.wikipedia.org/wiki/z_notation.)، آلات الدولة، UML 2.0 (ربما مع امتدادات مثل OCL)، وشبكات بتري، وبعض الأشياء على مستوى الترميز مثل العقود وظروف ما قبل النشر. هل هناك أي شيء آخر يجب أن أفكر فيه؟

هناك فجوة كبيرة جدا بين z، وهي طريقة رسمية، مع أخذ أساسها في نظرية المحددة، و UML، وهي تدوين غير رسمي مع بعض الرموز نصف الرسمية (آلات الدولة) الموسومة.

بعض العملاء التقنيين، كما تتوقع العثور على أداة متطلبات البرمجيات، مريحة للغاية مع UML.

قد تكون هناك قيمة خلق نموذج Z من المجال الخاص بك، وقد تكون هناك قيمة في إنشاء نموذج PI-Calcipulus من المراسلة الخاصة بك بين العميل والخادم (أو Net Petri-Net، لكنني أجد بي كلاهما أبسط وأقوى).

ما يقدمه نموذج Z للمجال الخاص بك هو مجموعة من القيود المستقلة للتنفيذ، معبرا عنها بقوة أكبر من نظام نوع أي لغة تنفيذ مشتركة.

ما يعطيك النموذج الرسمي للمراسلة الخاصة بك هو المرفق لتشغيل التحليلات للتأكد من أنك لا تفقد التحديثات أو التعارضات أو الجمود.

ما يمنحك نموذج UML هو تدوين لكسر نظام كبير في مناطق الوظائف (مخططات الحزمة)، من إظهار كيفية ارتباط الفصول الدراسية في تلك المجالات ببعضها البعض بشكل ثابت (مخططات فئة)، لإظهار كيف تتعلق مثيلات تلك الفصول ديناميكيا ( مخططات التسلسل والنشاط والتفاعل)، وإظهار كيفية نشر الحزم (مكون ومخططات النشر). هذه مفيدة للاتصال في الفريق، وللحصول على أفكار جسز قليلا، ولكن لا تحتوي على دلالات محددة رسميا والتي تتيح تحليل متطور للغاية.

تعتبر متخصصي Z الذين عملوا معهم في التسعينيات في فكرة تحديد قضية واجهة المستخدم الرسومية في Z سخيفة. إنشاء نموذج UML لمثل هذا واجهة المستخدم الرسومية شائعة.

لم أستخدم شروط ما قبل التصميم الرسمي قبل النشر، على الرغم من أنني أفعلها أحيانا في التعليقات، وفي كثير من الأحيان في تأكيدات، وأنا أحصل على ظروف اختبار الوحدة التي قد تنتهكها.

نصائح أخرى

السؤال الحقيقي الذي يجب طرحه هنا ليس هو ما يجب استخدامها أم لا، ولكن ما هو المكتسبة وفقدت.

هل ستتفوق الإنتاجية والنتائج على التعقيد والتعلم اللازم؟

بشكل عام، يجب عليك استخدام ما هو مريح الفريق. مع وجود عناصر جديدة، سيكون هناك منحنى تعليمي، مما يعني أن هناك أسئلة حول العملية والأخطاء التي تم إجراؤها. سيتم استخدام جزء من الجدول الزمني للتنمية لتصحيح هذه المشكلات، وإذا كنت لا تخطط لاستخدامها مع هذا الفريق في المستقبل، فأنت حقا لن يكون لديك مكسب طويل الأجل من خلال إدخال شيء جديد. تغيير عملية تستغرق وقتا طويلا والكثير من العمل.

إذا كنت قد تقدير ما يكفي من الوقت للتعامل مع هذه المشكلات، فقد تكون على ما يرام ..... إذا كان تقديرك صحيحا. بالنظر إلى أنك لم تعمل مع هؤلاء الأشخاص (على الأقل وهذا ما يبدو ما يبدو وكأنه ما يبدو)، فإن الفرص هي الجدول الزمني الخاص بك لن تكون دقيقة لأنها يجب أن تعني أنه لم يكن بإمكانك عدم تخصيص وقتا كافيا لإنهاء المشروع ناهيك عن تقديم عملية جديدة.

السؤال الآخر عليك أن تسأل نفسك هو "مدى راحة أنت مع العملية التي تريد تنفيذها؟" لا أحاول أبدا تقديم عملية جديدة في مشروع ما لم أكن أعرف أنه يمكنني سحب الفريق من خلاله إذا كان علي ذلك. تجربة أشياء جديدة من وقت لآخر أمر جيد، ولكن عليك أن تحصل على فريق أنت مرتاح لمعرفة كيفية التنقل في وضع ضيق.

لقد كنت أبحث في العديد من النهج عن الطرق الرسمية "خفيفة الوزن"، للتطبيقات التي قد تكون حرجة المهمة، ولكن ليس للحياة / السلامة الحرجة. بعض الافكار:

هناك بعض الأمثلة الناجحة لاستخدام ACSL لغة مواصفات ANSI C) التي تحتوي على مجموعة ناضجة من الأدوات التي تحتوي معظمها على مصدر مفتوح مثل السبب الأساسي، Frama-C. بالنسبة ل Java تقنية مماثلة تسمى JML (لغة النمذجة Java). أعتقد أن كلاهما يستخدمان لمشاريع صغيرة إلى متوسطة الحجم للتطبيقات المضمنة ويساعدون على إضافة بعض الضمانات إلى التعليمات البرمجية الخاصة بك ولكن لا تهدف إلى التحقق من المواصفات. Z ليس على الإطلاق سهل الاستخدام ويفتقر إلى دعم الأداة الكافية IMHO.

من بين الأدوات التجارية التي يمكن استخدامها في مراحل المواصفات، أود أن أنظر إلى منصة Rodin التي تستند إلى طريقة B.

في وقت متأخر من اللعبة هنا ولكن قد تعتبر شيئا مثل بنية حقيقية من خلال سافا التي نستخدمها للعديد من المشاريع التي يوجد فيها غلبة الاتصال أو التفاعل بين المكونات. غالبا ما ينظر إلى هذا في أي خدمية للخدمية إلى مقدمة الويب.

إنه يرتكز رسميا في PI-Calculus ولا تحتاج إلى فهم PI-Calculus لاستخدامه.

أوافق تماما مع توم واسأل نفس السؤال،

هل ستتفوق الإنتاجية والنتائج على التعقيد والتعلم اللازم؟

في رأيي ما لم يتم تحديد النظام / البرنامج على أنه "الأساليب الرسمية" الحاسمة بالسلامة غير ضرورية.

ما يعني السلامة النقدية:

عندما يمكن أن يؤدي فشل نظام الكمبيوتر إلى عواقب وخيمة، مثل فقدان الحياة البشرية أو الأضرار التي لحقت البيئة أو الأضرار التي لحقت النظام نفسه، يعرف هذا النظام باسم "السلامة".

وأنا أتفق مع كل من توم وأبورده - هل ستتفوق الإنتاجية والنتائج عن التعقيد والتعلم اللازم؟

أيضا، هل هذا ميثد أفضل للحصول على جميع المتطلبات قبل التنمية (AMD ضمان هذه المتطلبات محددة جيدا ويمكن اختبارها)؟ إن الحصول على جميع المتطلبات تبدو الأولى مثل الحس السليم، ولكن النسبة المئوية الكبيرة من البرامج تفعل الأشياء بالتوازي التفكير في عدم وجود مشكلة في الحصول على بعض المتطلبات في وقت لاحق. المتطلبات زحف هو كابوس! فيلم "حروب البنتاغون" هو فتحة العين إلى أي شخص يختلف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top