Thursday 15 March 2018

خطة مشروع نظام تداول الأسهم


خطة مشروع نظام تداول الأسهم.


خطة مشروع نظام تداول الأسهم.


خطة مشروع نظام تداول الأسهم.


كج أنظمة التداول - سوينغ ترادينغ ستراتيجيس | العقود الآجلة.


نظم تداول الأسهم: تحليل وتطوير نظام أنظمة مشروع تأهيلي تفاعلي مقدم إلى كلية وروستر بوليتشنيك إنستيتيوت.


لدينا سجل المسار يتحدث عن نفسه | نظام التداول الأسبوعي.


تدريب مجاني على إنشاء نظام تداول الأسهم الآلي.


تصميم آمنة، المؤيدة وكلاء التداول الأسهم الآلي.


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


أنا بحاجة إلى خطة عمل عينة لتداول الأوراق المالية وتداول العملات الأجنبية.


30.01.2018 & # 0183؛ & # 32؛ سجل الآن هل تريد أن تتوقف عن تحسين التداول الخاص بك؟ كيفية بناء خطة تداول من أربع نقاط. إذا كنت تاجر الأسهم،


خطوات بسيطة لتطوير استراتيجية التداول - تشارلز شواب.


خطة التداول بسيطة 3: خطة إكستريمس، اشترك الآن وستحصل على الوصول الفوري إلى موقع خطط التداول بسيطة. إذا كنت على استعداد للتحرك الآن،


قالب التداول - دورة تداول الأسهم عبر الإنترنت.


مرحبا بكم في المنزل من نظام جافا المفتوح للتجارة بنية تحتية مشتركة لتطوير أنظمة تداول الأسهم. ومشروع توثيق نظام التداول.


إدارة المشاريع - ويكيبيديا.


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


تطوير خطة التداول - فريترادينغسيستمز.


نجاح التداول يشبه الأعمال الناجحة. كل الأعمال الناجحة لديها خطة عمل وكل تاجر ناجح لديه خطة التداول مجموعة - إذا كنت لا.


مقترح مشروع لنظام مراقبة المخزون.


التي أجريت ضمن مشروع بين-ليمان للتجارة الآلية. في التطورات الأخيرة في أتمتة التبادلات وتداول الأسهم التي تؤكد أن الأسهم.


نموذج خطة التداول - مثال | التداول جدول البيانات.


لدينا سجل المسار يتحدث عن نفسه جعلنا ذلك جزء من خطة التداول الرسمية لدينا. حتى الآن لدينا نظامان. وسطاء الأسهم،


قالب خطة التداول - Trade2Win.


ونحن حريصون على مساعدتك في بناء أنظمة التداول مربحة عندما باكتستينغ الأسهم & أمب؛ العديد من أنظمة التداول المعروضة هنا في نظام التاجر النجاح!


أنظمة التداول: تصميم النظام الخاص بك - الجزء 1.


مقترح مشروع لنظام مراقبة المخزون لحساب وترتيب الموارد المتاحة والمجهزة مجموعة 9 بوروهيت سيمانت.


تداول الفوركس مشروع جافا وظائف، التوظيف | مستقل.


06.03.2018 & # 0183؛ & # 32؛ أدريان مانز يناقش بالضبط ما ينبغي أن يكون في خطة التداول اليومية. تجار اليوم، والتجار البديل، وتجار الموقف والمستثمرين يمكن أن تتعلم الكثير من قبل.


4 وثائق خطة المشروع.


سوق الأوراق المالية؛ المالية لجعل المشروع متوافقا مع خطة إدارة المشروع. صيانة المشاريع هي للأنظمة الجديدة. ادارة مشروع.


الأسهم على بابا.


30.04.2018 & # 0183؛ & # 32؛ تحميل فتح جافا نظام التداول مجانا. ويهدف نظام فتح جافا للتجارة (أوجتس) لتكون بنية تحتية مشتركة لتطوير (الأسهم) أنظمة التداول.


وف تطبيق التداول الآلي - كوديبروجيكت.


كيف نطور خطة تداول الخيارات على التجار هو أن لديهم نظام التداول أو العملية التي يشترون الأسهم تحصل على 50٪


خطط التداول البسيطة.


07.10.2004 & # 0183؛ & # 32؛ سنقوم بعد ذلك بإلقاء نظرة أكثر تعمقا على أنواع مختلفة من أنظمة التداول. يظهر التداول في متوسط ​​سعر السهم فوق.


Аналог بروجيكت - система Адванта - Управление проектами!


20.09.2018 & # 0183؛ & # 32؛ الفيديو المضمنة & # 0183؛ & # 32؛ محاكي الأسهم. تداول مع 10 خطوات لبناء خطة التداول الرابحة. أيا كان نظام التداول والبرنامج الذي تستخدمه،


إتقان يوم التداول مع خطة من 8 خطوات.


1 4 وثائق خطة المشروع 17 يناقش القسم 4.6 الصلة بين تخطيط المشروع ووثائق خطة المشروع. 29 نظام الجودة، خطة الإدارة،


تصفح التعليمات البرمجية - ويندوز نظام التداول عبر الإنترنت عينة في C #


Удобная система управления проектами. Доступные цены!


20 أكتوبر 2018.


بورصة نيويورك - جامعة نيويورك.


التخطيط لمشروع نظم المعلومات: نظام تتبع المخزون وإعداد التقارير لعدم وجود الموظفين والقدرة العامة على التخطيط بشكل كاف للحصول على المعلومات.


خوارزمية نظام تجارة العمارة - ستيوارت غوردون ريد.


17.10.2018 & # 0183؛ & # 32؛ المتداول لمدة أربع ساعات، خطة التداول الكاملة. سنقوم بوضع مخطط تجاري كامل يستغرق أقل من أربع ساعات من وقت المتداول.


كيفية إنشاء خطة التداول يوم أن باستمرار.


نظم بورصة نيويورك وإجراءات التداول جويل هاسبروك * جورج سفيانوس ** ديبورا سوسبي *** ورقة عمل نيويورك # 93-01 * أستاذ مشارك في المالية،


إنشاء نظام تداول الأسهم الآلي في إكسيل.


وضع خطة تداول فائزة في هل تم إغراء لفكرة جعل 400٪ العائد سنويا باستخدام نظام التداول اليوم الذي عندما يعبر السهم.


تداول الأسهم - كيفية صياغة خطة تجارية مثالية.


رقم المشروع: DZT0517 تداول سوق الأسهم فهم السوق المالية واستراتيجيات التداول من تجار الأوراق المالية نظام الاقتباس الآلي.


التخطيط لمشروع نظم المعلومات - المسار.


حلول الطلب يقدم برامج إدارة مراقبة المخزون لمساعدتك على إدارة النظم هي سيناريوهات التخطيط جامدة قبل الالتزام بخطة.


متطلبات المواصفات.


& كوت؛ أصعب جزء واحد من بناء نظام البرمجيات هو تحديد بالضبط ما لبناء. & كوت؛ [بروكس، 1987]


الأهداف.


في نهاية هذا الدرس يجب أن تكون قادرا على الإجابة على الأسئلة التالية:


1. ما الفرق بين المتطلبات الوظيفية وغير الوظيفية؟ ما هي القيود؟


2. ما هي الخيارات المختلفة لتنظيم متطلبات النظام؟ ما الذي ينبغي وينبغي ألا يدرج في وثيقة المتطلبات؟


3. ما هي إدارة المتطلبات (مثال محدد للتحكم في التغيير)؟


4. ما هو الفرق بين النموذج التطوري والنفايات؟


المقدمة.


قبل أن تتمكن من بناء شيء عليك أن تعرف ما هو الذي يحتاج إلى بناء. ومن خلال مرحلة المتطلبات يتشكل شكل النظام.


وتتمثل المهام الرئيسية الثلاث لمرحلة المتطلبات فيما يلي:


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


حدد سلوك النظام الذي سيعالج المشكلة أو الفرصة التي تم تحديدها. هذا هو السلوك المنطقي أو المفاهيمي للنظام المقترح. دون الدخول في تفاصيل واجهة المستخدم، والسؤال الرئيسي للرد هو: ما بالضبط يجب أن تفعل النظام؟


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


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


الشكل العاشر. متطلبات البرامج تدفع الأنشطة المصب.


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


المتطلبات تدفع العمليات الفنية والإدارية:


المتطلبات هي: الخصائص الداخلية والخارجية للنظام الضروري لتلبية الاحتياجات الصريحة والضمنية للمستخدم.


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


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


أحد أهداف مواصفات المتطلبات هو التقاط & كوت؛ ترو & كوت؛ المتطلبات. تشير المتطلبات الحقيقية إلى المتطلبات التي ستضيف قيمة للمستخدم النهائي. هل يجب تقديم ما يريده المستخدم أو ما يحتاجه المستخدم؟ هل يمكن أن تكون متأكدا من الفرق بين ما يحتاجه المستخدم وما رأيك يحتاج المستخدم؟ ومن الناحية المثالية، يتفق الجميع على ما هو مطلوب. الهدف من جمع المتطلبات هو فهم الاحتياجات الحقيقية والتوقعات الضمنية حول كيفية عمل النظام. يجب أن تمثل المتطلبات المحددة الاحتياجات الحقيقية للعميل.


[العمل الأول نحو وجود المستخدم يريد ما يحتاجه المستخدم. إذا كانت هذه لا يمكن أن تكون مكافئة انها دعوة الحكم. تجار البرمجيات التجارية ربما بناء ما يحتاجه المستخدم. المنظمات التي تعمل تحت السيطرة ربما تكون أكثر أمانا الذهاب مع ما يريد المستخدم.]


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


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


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


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


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


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


عملية هندسة المتطلبات:


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


أصحاب المصلحة / الأدوار.


العميل / العميل - الشخص الذي يحدد ويقبل المنتج.


المستخدم - الشخص الذي سوف يستخدم المنتج.


المنتج بطل / مدير أو المستخدم النهائي الاتصال - يوفر صوت العميل.


فئات المستخدم.


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


إذا لم تتمكن من الحصول على متطلبات من جميع المستخدمين، فيجب أن يكون هناك ممثل من كل فئة من فئات المستخدمين. (& كوت؛ الأدوار & كوت؛ في حالة استخدام الكلام.)


مستويات المتطلبات.


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


من المناسب النظر في المتطلبات على أربعة مستويات مختلفة:


الشكل العاشر. مستويات قياسية من التجريد للتعبير عن المتطلبات.


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


وإلى جانب البيان العام للغرض، يجب أن يكون هناك طريقة ما للتعبير عن مجموعة أكثر تفصيلا من المتطلبات. أحد الخيارات هو تعداد كل التوقعات للنظام مع قائمة & كوت؛ النظام يجب & كوت ؛.


ويمكن التعبير عن النظام بالنثر. بالتناوب يمكن إدراجها بشكل فردي، ولكل منها معرف فريد للتتبع.


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


وهناك بديل عن - واحيانا يكمل - استيفاء المتطلبات كقائمة بالنظام هو التقاط الاحتياجات مع حالات الاستخدام. حالة الاستخدام هي وصف سردي للتفاعل الموجه نحو الهدف بين النظام والمستخدم. وهو يعبر عن متطلبات النظام من حيث الحوار المتوقع بين النظام والمستخدم. حالات الاستخدام لا توفر فقط آلية للتعبير عن المتطلبات ولكن أيضا وسيلة لإثارة لهم. فمن الأسهل بكثير للمستخدمين لوصف التفاعل النظام المطلوب مما هو عليه بالنسبة لسرد متطلبات النظام الفردية.


كلما قمت بإضافة تفاصيل لمواصفات تقيد أو تحد من خيارات أخرى.


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


أنواع المتطلبات.


وظيفي.


المتطلبات الوظيفية = مواصفات النظام. المتطلبات الوظيفية هي عادة & كوت؛ ثنائي & كوت ؛. هم هناك أو أنهم ليسوا هناك.


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


الشكل العاشر. متطلبات وظيفية وغير وظيفية.


خصائص جودة البرمجيات.


ويحدد هذا القسم بعض خصائص جودة البرمجيات الرئيسية التي أدخلتها نماذج الجودة في القسم السابق. هذه الخصائص، وغالبا ما تسمى & كوت؛ - الآليات & كوت؛ من البرمجيات، هي الأساس للتعبير عن والتحقق من المتطلبات غير الوظيفية لنظام البرمجيات. تم تعديل التعاريف الواردة في هذا القسم من [كافانو و ماكال '78 عبر تشاو '85] [بوهم إت. الله. '78] [غزي 2003] [ويجرز 1999].


تبد: يمكن تصنيف خصائص جودة البرمجيات غير الوظيفية على أنها داخلية (تلك التي تهم المطورين) والخارجية (تلك التي تهم العميل والمستخدمين النهائيين).


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


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


الشكل 15. دورة الحياة التشغيلية للنظام.


الموثوقية. الموثوقية هي احتمال أن البرنامج سوف تعمل دون الفشل خلال فترة زمنية محددة. هناك فرق دقيق بين التوفر والموثوقية. ويمثل التوافر مقياس نظام البرمجيات في وقت معين. الموثوقية هي مقياس نظام البرمجيات على مدى فترة من الزمن. الشاغل الأول للمستخدم هو التوفر. & كوت؛ هل النظام متوفر عندما أحتاج إليه؟ & كوت؛ بعد ذلك، قلق المستخدم هو الموثوقية. & كوت؛ حسنا، يتوفر النظام، ولكن هل سيتم تشغيله بما فيه الكفاية حتى أستطيع إنهاء عملي؟ & كوت؛ وباستخدام القياسات المبينة في الشكل 15 أعلاه، تكون الموثوقية هي متوسط ​​الوقت الفاصل (متف).


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


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


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


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


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


الشكل 16. تستجيب المتانة بشكل معقول للمدخلات أو الظروف غير المتوقعة.


وستواجه معظم النظم مدخلات غير متوقعة و / أو ظروف تشغيل في وقت ما خلال فترة حياتها. النظم التي تستجيب للمدخالت غير المتوقعة أو ظروف التشغيل بطريقة معقولة قوية. يتم تحديد متانة النظام إلى حد كبير من خلال كيفية استجابة المبرمجين عندما يواجهون & كوت؛ مستحيل & كوت؛ الشروط في التعليمات البرمجية الخاصة بهم. (انظر رمز القائمة 1.)


قائمة 1. القرار الذي يؤثر على المتانة.


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


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


طريقة واحدة لتعزيز التحقق من التعليمات البرمجية هو أداة مع حالات الاختبار الآلي. (يناقش الاختبار الآلي في الفصل 16).


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


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


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


وغالبا ما يتم التعبير عن قابلية النظام كنسبة من الجهد المطلوب لكتابة النظام من الصفر في بيئة جديدة دون مساعدة من النظام القائم. على سبيل المثال، النظام الذي يحتوي على مقياس قابلية 10٪ يعني أنه يمكن استدارتها إلى بيئة جديدة ل 10٪ من تكلفة كتابة النظام من الصفر في البيئة الجديدة دون مساعدة من النظام الحالي. وعادة ما يتم تحديد قابلية النقل بالنسبة إلى بيئة مستهدفة محددة [جيلب 88].


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


وعادة ما يكون تطوير مكونات إعادة الاستخدام أكثر تكلفة من تطويرها للاستخدام الفردي. ومع ذلك، إذا كان من الممكن إعادة استخدام المكونات والاستفادة منها عبر أنظمة متعددة، فإن النتيجة الصافية ستكون تخفيض النفقات. ويرد وصف تفصيلي لفرص إعادة الاستخدام في الفصل 12.


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


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


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


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


العمل المشترك. إن قابلية التشغيل البيني هي مقياس للجهد المطلوب لنظام واحد لتبادل البيانات والخدمات مع نظام آخر. يتم زيادة قابلية التشغيل البيني مع استخدام واجهات قياسية. وتعهد خدمات الويب بزيادة قابلية التشغيل البيني للنظم عبر الإنترنت.


تؤدي هذه الميزات & كوت؛ سمات الجودة إلى اتخاذ قرارات معمارية وتصميمية كبيرة. & كوت؛


غير وظيفية.


قابلية الاستخدام، والصيانة، وما إلى ذلك متطلبات غير وظيفية تميل إلى قطع عبر النظام (وغالبا ما تسمى خصائص النظام الناشئة).


أما المتطلبات غير الوظيفية فهي نوعية. على سبيل المثال، فإن الشرط & كوت؛ إف & لوت؛ سوميثينغ & غ؛ يحدث رسالة خطأ يمكن قراءتها & كوت؛ يشمل كلا من المتطلبات الوظيفية وغير الوظيفية. فونكتيونال = رسالة خطأ (متطلبات ثنائية = انها هناك أو لا هناك). غير وظيفية = للقراءة (النوعية، التناظرية = مجموعة من القيم الممكنة). غير وظيفية لا يعني غير قابلة للاختبار. وينبغي تحديد المتطلبات غير الوظيفية بطريقة قابلة للاختبار / التحقق منها. على سبيل المثال، يجب أن تكون رسالة الخطأ & كوت؛ مفهومة بنسبة 95٪ من المستخدمين المستهدفين الذين لم يحصلوا على تدريب مسبق. & كوت؛


وإذا كان يمكن تمثيل المتطلبات الوظيفية غير الوظيفية بمفاتيح ثنائية، فإن المتطلبات غير الوظيفية تمثل بمقابض تحكم متغيرة (ريوستاتس).


وتسمى المتطلبات غير الوظيفية أيضا سمات الجودة. قد تكون المتطلبات غير الوظيفية مهمة للمستخدمين النهائيين (الخارجيين) أو المطورين (الداخليين). إن المتطلبات الداخلية غير الوظيفية مهمة بشكل غير مباشر للمستخدمين النهائيين.


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


الخصائص الخارجية لبرامج الجودة هي: [كافانو نوفيمبر 78، من تشاو توتوريال 85] (لاحظ، احتفظ بهذه & كوت؛ المرافق & كوت؛ بما يتفق مع تلك المحددة في درس إدارة المشروع.)


1. صحيح - هل يفي البرنامج بمتطلباته وأن يعبر المتطلبات بدقة عن احتياجات المستخدم؟


2. موثوقة & كوت؛ قدرة نظام أو مكون لأداء وظائفها المطلوبة في ظل ظروف محددة لفترة محددة من الزمن. & كوت؛ [إيي ستد 610.12-1990]


4. المتانة - سلوك معقول حتى عند إعطاء مدخلات غير متوقعة. (قدرة البرنامج على الاستمرار في الأداء على الرغم من بعض الانتهاكات للافتراضات في المواصفات.)


5. سهولة الاستخدام / سهولة الاستخدام -


الخصائص الداخلية لبرامج الجودة هي:


1. مينتينابل / إكساندابل / كومبليسيتي - التغييرات على الميزات الموجودة وإصلاحات الخطأ.


2. التمديد / المرونة / القدرة على التكيف - إضافة ميزات جديدة.


3. قابلية القراءة / التفاهم - شرط أساسي للصيانة وقابلية التمديد إلى حد ما.


ملاحظة، بعض الخصائص في صراع مع بعضها البعض. على سبيل المثال، قد لا يكون النظام الذي يحقق أقصى قدر من الكفاءة قادرا على تعظيم إمكانية القراءة. Software quality must be defined relative to the requirements of the end user--explicit as well as implicit requirements.


The challenge for the developer is to prioritize and balance the trade-offs in an environment where the quality target may be changing. Making tradeoffs to maximize aggregate value is one of the characteristics of an engineering discipline.


The project balance (cost - schedule - technical performance) determines the amount of resources that can be balanced among the quality attributes above. There are two components to technical performance: functional and non-functional quality requirements.


Constraints.


Constraints are restrictions on design and development choices. Sometimes constraints are considered non-functional requirements. I make the distinction between constraints (which can not be changed) and non-functional requirements (limiting factors that can be balanced and traded for other limiting factors).


For example a constraint might be: The system should be implemented with the Java programming language and use the MySQL database.


In addition to product constraints there may be project constraints. For example: budget, schedule, staff, etc.


TBD, the following taxonomy is probably more common:


Categories of Requirements.


Prioritized Requirements.


It is important to prioritize requirements. According to one survey, fully 45% of requested features are never used. [ibm/developerworks/rational/library/jul05/rose/index. html, data comes from The Standish Group.]


This highlights the importance of prioritizing requirements. What generally works best is grouping requirements into three different categories: essential, very desirable, nice to have. The number of requirements in each group should be roughly equal. Prioritizing requirements is especially important when doing time box development (i. e. delivery date is less flexible). Risks is the secondary sort criteria. "within a group, the highest risk features are tackled first."[Stepanek S/W Proj Secrets]


64% of the features included in products are rarely or never used. [Jim Johnson Keynote speech at Third Inter. Conf on XP as reported in Cohn Agile Estimating and Planning p11]


Requirements Creep.


[Jones 1995, Patterns of . ] "The average amount of growth in unplanned functionality averages about 1 percent per month from the end of requirements through the coding phase. Thus for a two-year project, expect about 25 percent growth in unanticipated requirements." The actual amount will of course depend on completeness of initial effort to document requirements.


Stable requirements = the amount of change or new features proposed is less than 5%. [Jones 1995] Requirements creep is easier to track when using function points.


Requirements Development Process.


[Adapted from Wiegers, 1999, p. 125]


1. Define the project's vision and scope.


2. Identify user classes.


3. Identify appropriate representatives from each user class (product champion)


4. Identify and document the requirements decision-making process.


5. Select and plan requirements elicitation techniques.


6. Apply the elicitation techniques to develop and prioritize the main use cases for the system (architecturally significant use cases). One approach is to identify all use cases but detail those with the highest priority first.


7. Identify quality attributes, other non-functional requirements and constraints.


8. Develop functional requirements from use cases.


9. Develop analysis models as needed to clarify problem domain and/or requirements.


10. Optionally develop prototype to verify requirements with end users.


Requirements Document.


Options for documenting requirements:


Single requirements document.


User-manual draft as requirements (together with requirements document that lists non-functional requirements)


Separate use case document, business requirements, user interface requirements.


Functional specifications may be represented within use cases (combining user requirements and functional specifications) or they may be represented separate from use cases.


The requirements document shouldn't include design or implementation details unless they are mandated constraints. When a constraint is specified it should be no more restrictive than is necessary. Some analysis or investigation of the constraint may be necessary. For example, if a mandated constraint is that the software should integrate well with Visual Basic , it's better to state the requirement as "the implementation language should compile to the common language runtime" rather than "The implementation language should be VB ." The reason is the second wording allows for more design options while not violating the purpose of the original constraint.


It's important to include the rational for each requirement. This helps developers interpret the requirement and make better decisions during design and implementation.


The requirements document limits the range of potential designs but doesn't specify any particular design. Requirements should specify externally visible functions or attributes of the system. Requirements should not be concerned with modular decomposition of the system and interactions between modules.


The requirements document should be: correct, unambiguous, necessary, measurable, complete, consistent, prioritized, verifiable, traceable. [some are from Horch 2003]


Just as s/w systems are difficult to maintain if there is repeated functionality a requirements document is difficult to maintain if a requirement is specified in more than one place. Therefore, the requirements document shouldn't state the same requirement in more than one place. Note, it's impossible to remove all redundancies. For example, the introduction may provide an overview that is expanded on in detail later.


Clients and users review the requirements document for correctness and completeness. Traceability helps to insure the requirements document is valid initially and stays valid during the system's life-cycle. Requirements should be traceable to the user's problem they solve or the user need they address. The requirements document should also be written to facilitate traceability from designs back to requirements. Ultimately, there should be forward and reverse traceability from problem <--> requirement <--> design <--> code <--> اختبار.


There is backward and forward traceability. Backwards traceability implies that a downstream element can be traced back to an upstream element that begat it. Forward traceability implies the reverse--an upstream element can be traced to down stream elements that are derived from it. Backward traceability is less applicable to the requirements document because in most cases the requirements document is the first documentation created as part of the software life-cycle. [Tracing forward from requirements document and tracing backwards to the requirements document.]


Every requirement must be verifiable. Once implemented there must be a deterministic cost-effective way of verifying the system meets the requirement. For example, "the interface is easy to use" is not a verifiable requirement because the word "easy" is open to interpretation. A better requirement is "80% of users in a control group that match the profile of the average user as given in section x. y are able to perform function x and function y in less than 30 seconds without prior training using only the first level of instructions given."


[Should document rational for decisions and possibly source. Rational and source are important in the future if someone suggests changing a requirement.]


Requirements Management.


Requirement management - requirements will change over time. Requirements will change as the system becomes more in focus to developers and end users. Also, the marketplace and business environment may change during system development. It's important to control requirements change with a good requirements change process.


The requirements document should be baselined and under change management. Keep a history of changes.


Proposed requirements must fit within scope of the system as defined by the vision and scope statement. It may be that suggested requirements outside of the vision and scope are essential to the success of the system. If so, the vision and scope should be changed though the requirements change process established.


There must be agreement about how decisions on requirements will be made. Inevitably there will be conflicts between what different customers, stakeholders, and even developers want. The process for making requirements decisions must be clear, documented and agreed upon by everyone. A participatory but not necessarily consensus decision-making process usually works best. It may be impossible to get everyone to agree on every decision.


Requirement changes are typically managed by a change control board. Requirements change management is a part of configuration management (CM). (CM is described in lesson 18.)


Requirements management is ensuring:


1. Requirements are well-defined and agreed to by appropriate parties.


2. Plans are based on requirements. More general, there is traceability from requirements to designs/code/tests.


3. Requirements are modified according to a defined process (change control procedures).


Requirements management may require the full rigor of a formal change control process.


Requirements Risks.


Changing requirements, misunderstanding requirements, inadequate user involvement, uncertain or changing project scope and objectives,


Requirements Gathering.


There are several sources and techniques for gathering requirements. Sources include users, customer, written documentation, business rules, common domain knowledge, etc. Techniques include requirements meetings (most common), observation, etc. The ultimate goal of the requirements phase (or phases when gathering requirements over iterations) is the organization and documentation of requirements. Organizing requirements is important because it makes it easier to verify their consistency, completeness, etc. It also helps to communicate the requirements to all involved.


It takes a lot of effort to organize requirements. During requirements gathering there is a flood of requirements-related information and very little of that information comes with nice neat labels:


[Slide is from Arti Acharya, Cerner Corp.]


It's the requirements engineer's job to sort through the information and organize it into categories: Vision, goal, objective, feature, functional-requirement, non-functional requirement, constraint, desired system behavior, solution option, etc.


Requirements Gathering When Anticipating Reuse.


The requirements process is somewhat different when anticipating reuse. Initial requirements are elicited. Features of existing candidate reuse components are noted. Candidate components may include COTS (Commercial off the shelf) components, existing components within the organization, and open source. The customer is presented with options for reuse. This includes cost of implementing certain features given the opportunities for reuse. Some features may be expensive. Reuse may also make other otherwise expensive features easy to provide.


Requirements Engineering Methods/Techniques.


Should developers be involved in requirements elicitation? Developers can present users with ideas, alternatives and creative suggestions for requirements and solutions. Users may not be aware of all the options that are available. They are even less likely to be aware of the costs and risks of each option . Developers can also present users with opportunities/suggestions to adjust the requirements to permit reuse of existing software components. However, developer involvement can lead to developer-driven requirements. There is a very thin line between developers offering and pursuing solutions that are beneficial to the user and suggestions by developers motivated by the technical challenge inherent in the solution. [Could even turn into an ethical issue.] Developers should be respectful of end users and provide good-faith estimates. Any new code/features added to the system takes development and maintenance time that could be devoted to other features. It should be the needs of the user that drive decisions about what is a requirements. Every requirement should be represented by a use case. This prevents developers from implementing requirements that interest them but are not necessarily valuable to the end user. Developers should be honest about risk and effort estimates for every feature. A product manager can also keep requirements in check.


Including developers in requirements sessions also helps them prepare for implementation. During implementation developers make lots of small decisions that in total or even individually can have a large influence on the success of the project. It's difficult for the requirements document to be a complete and accurate representation of everything discussed during a requirements meeting. Developers that hear user needs first hand are in a better position to make optimal decisions during implementation. Developers attending a requirements meeting should understand and respect the requirements process and not impede the progress of the meeting.


When developing requirements take care to capture the true requirements and not automate an inefficient business process. It's possible that requirements capture may point out opportunities for business reengineering.


Requirements must be organized. During requirements elicitation information doesn't arrive with nice neat labels on it. You must learn to separate/distinguish and categorize information as it arrives. Categories are:


Business requirements - it should be in compliance with Sarbanes-Oxley.


Project requirements - it has to be completed in 2 months.


User requirement (task need) or use case - it should display office code as well as office name.


Business rule - for example, only certain people may be allowed to make purchases through a procurement system.


Non-functional requirement (quality attribute) - no query should take longer than 4 seconds. It should be easy to use.


External interface requirement (design requirement) - it should publish an RSS feed.


Solution idea - Sometimes requirements are presented in the form of solutions. For example, "the user must enter an ID and password" is a solution to the requirement of "the user must be authenticated". It might be OK to let a customer describe a potential solution but make sure you can separate requirement from solution. (Be sure what is stated is a requirement and not a solution. If it is one possible solution, restate it as a requirement.)


Constraint - the database has to be open source.


Requirements are sometimes presented in the form of solutions. It's up to the requirements analyst to extract the true requirements from suggested solutions. It is also up to the analyst to steer the conversation to the appropriate level of abstraction--user needs and requirements. If the conversation is redirected away from discussing potential solutions the user should be assured that potential solutions will be discuss later--after requirements have been established.


Methodologies are out; best-practices are in. Rather than follow a detailed methodology (even one that has been customized to a specific project and environment) many individuals and organizations prefer to apply best practices. Best practices are more configurable and offer a variety of approaches to diverse problems. Even if you follow a specific methodology you can augment it with best practices.


Some requirements best practices:


Start with a standard requirements template.


Baseline requirements document and keep track of revisions.


Define a change control process.


Manage requirements risk.


Specify vision and scope.


Identify user classes.


Identify product champions that can speak for the users (voice of the customer)


Identify use cases.


Identify non-functional requirements (quality attributes)


Create prototypes to verify requirements and test potential architecture ideas.


Model when appropriate (For example: a context diagram shows interfaces between system and entities external to the system--users, other systems, etc. A context diagram also identifies the flow of information across system interfaces.)


During requirements analysis, analysis models are used to better understand the problem domain. There are two ways analysis models are used to better understand the problem domain:


1. The problem domain can be modeled directly.


2. Solution models may be used, not as a constraint on development, but to better understand the problem domain. Just as users sometimes present requirements in the form of solutions, sometimes it's easer to understand the problem by modeling a potential solution. For example, a prototype is a model of a proposed solution. It is used to better understand the users true requirements.


Sample Requirements Meeting Script.


The requirements engineer will most-likely direct the flow of the meeting. The customer has a need but isn't aware of the process of software development or what is needed in the form of requirements. As an analogy when you go to the bank to request a loan the loan officer usually sets the meeting agenda.


First, everyone should introduced themselves and briefly explain their role.


Second, the requirements engineer should briefly outline the purpose of the meeting and general agenda. For example, "The purpose of this meeting is to establish the requirements for your application. We need to understand the problem and the problem domain in order to provide a solution. We are interested in a high-level description initially, but to solve the problem we will also need to understand all the details. We understand it may be difficult to identify all of the details right now, but we should identify the details that are known and make a plan to identify those that aren't known. It's OK and anticipated that some of the answers today will be "I don't know" or "I haven't made up my mind about that detail yet.". We will create a requirements document and prototype which we will ask you to review and validate so we know our understanding of the requirements are correct. You understand the problem domain and we understand the technology. We can provide relative costs for different solution options and possibly recommend others you haven't considered. ومثل.


Third, ask the customer to give a general overview of the problem domain and requirements for the system being requested.


The meeting should answer the following questions. Once you think you have an answer to a question below it's a good idea to repeat what you think is the answer and ask for confirmation. Don't leave the meeting until you have answer to all of the questions below:


Who are the end users? How many classes of users are there? What are the characteristics of each class?


What is the vision and business goals for the application? It should be possible to express the vision in one or two sentences.


What are the two most important use cases or usage scenarios for the system? It would be a good idea to walk through at least these two use cases in detail. (Customers may be uncomfortable going into such detail. One reason because it may reveal their lack of knowledge regarding how certain features should work. They shouldn't be embarrassed about this; it's partially your responsibility to make them comfortable with saying "I don't know". Assure them that you don't expect every detail to be specified right away. It is good to note details that aren't specified.)


What are the priorities for the function and non-function requirements given? Are there any constraints?


Are there any systems that are similar to the system you envision? How should yours be different?


What is the scope of the system? What is included and what is excluded?


Is there any sample data we can use for initial tests/construction efforts?


During the meeting it's a good practice to repeat your understanding of what is being said. For example, "if I understand you correctly the two main goals of the system you are describing are . ومثل.


Use-Case Modeling.


Functional requirements can be captured with use cases. Non-functional requirements that relate to a specific use case can be attached to that use case. Other non-functional requirements can be specified separately in the requirements document.


Use cases cause you to focus on how the system can add value and fulfill user goals.


Prototyping.


Prototypes makes requirements more tangible for user review. A prototype is a communication tool.


For prototyping to be successful it must be possible to create versions quickly and easily.


Reasons for creating a prototype:


1. Easier for customers and users to review and provide feedback on a prototype than the requirements document. Faster and and more accurate feedback from customers. This leads to fewer down-stream changes which speeds up the later part of the software life-cycle.


2. Test design options.


3. May uncover unanticipated aspects of the system that lead to new requirements. For example, a prototype might reveal that a report is printing more information than will fit on one line causing either horizontal scrolling or unsightly line breaks.


Even when the prototype is destroyed (not evolved) it may be possible to reuse portions of the prototype such as report modules and screen formats.


Vision and scope.


Vision and scope - The requirements will never stabilize if the project stakeholders don't share a common understanding of the business needs the product will satisfy and the benefits it will provide. Vision and scope may be a separate document. It's owner is the executive sponsor.


The vision and scope may include project: vision, scope, objectives, rational, history or situation that lead to the decision to build the product, market in which the product will be competing, major features, description of business opportunity, characterization of potential customers, priorities, success factors (how will success be defined and measured), primary benefits. In short it should explain why the project is being undertaken and what the expected benefits are.


Good requirements should:


1. Allow all acceptable solutions.


2. Disallow all unacceptable solutions.


3. Direct development to desired or preferred or best solutions.

No comments:

Post a Comment