• 0
نور الإسلام

تقدير البرمجيات (3)

سؤال

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

تقدير البرمجيات والتحكم في المشروع

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

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

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

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

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

ولهذا عملياً فعندما يتم تسليم مشروع ما بـالرقم التقريبي لعدد أعضاء الفريق وبالرقم التقريبي للمدة الزمنية والبرقم التقريبي للميزانية فإننا نقول أن المشروع قد وافق التقدير على الرغم من الشوائب والأحداث المتلاحقة التي حدثت داخل المشروع كما أسلفنا.

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

ولهذا فعلينا التحدث باستفاضة عن الدور الأساسي والصحيح للتقدير.

الدور الأساسي والصحيح لتقدير البرمجيات

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

لذا تعالوا لنضرب مثالاً:

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

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

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

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

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

2. ليس المطلوب أن يكون التقدير دقيق 100% ولكن المطلوب أن يكون التقدير مفيداً. فعندما نمتلك تقديراً جيداً، وإدارة حكيمة للمشروع، وتحديد جيد للأهداف. يمكنك أن تصل بالمشروع لبر الأمان ويمكننا حينها القول أننا حققنا ما تم تقديره من قبل.

في المرة القادمة سأختبرك لتعرف هل أنت تستطيع تقدير البرمجيات بطريقة جيدة أم لا؟! .. ابقوا معنا

المصدر مدونتي

تم تعديل بواسطه نـــور
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

جزاك الله خير وافي انتظار الاختبار :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وإياك أخي الحبيب :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يبارك فيــك ويزيدك من علمه ..

احي احمد لو اردت ان اتعمق في مجال هندسة البرمجيات اكثر ماهي الكتب التي تنصحني بها ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يبارك فيــك ويزيدك من علمه ..

احي احمد لو اردت ان اتعمق في مجال هندسة البرمجيات اكثر ماهي الكتب التي تنصحني بها ؟

وفيك بارك :)

كتب هندسة البرمجيات كثيرة .. منها ما هو عام جداً .. ومنها ما هو متخصص جداً.

وعلوم هندسة البرمجيات كثيرة جداً أيضاً .. فلا يمكن حصرها في كتاب أو في زاوية.

ولكن سأعطيك مجموعة من أسماء الكتب ومؤلفيها التي قد تفيدك في معظم مجالات هندسة البرمجيات وتخير منها ما شئت. شخصياً أنصحك دائماً بقراءة كتب Steve McConnelll فلن تندم عندما تقرأ له أي كتاب. ومن أشهر كتبه في هذا المجال Code Complete

بالمناسبة هذه القائمة منقولة من أحد المواقع الأجنبية:

1 Steve McConnell

Code Complete: A Practical Handbook of Software Construction

2 Elisabeth Freeman, etc.

Head First Design Patterns

3 Steve McConnell

Rapid Development

4 Erich Gamma

Design Patterns: Elements of Reusable Object-Oriented Software

5 Bruce Schneier

Applied Cryptography: Protocols, Algorithms, and Source Code (2nd Edition)

6 Robert C. Martin

Agile Software Development: Principles, Patterns and Practices

7 Joel Spolsky

Joel on Software

8 Tom DeMarco, Timothy Lister

Peopleware: Productive Projects and Teams (2nd Edition)

9 Frederick P. Brooks

The Mythical Man-Month, Anniversary Edition (2nd Edition)

10 Martin Fowler

Refactoring: Improving the Design of Existing Code

11 Mike Cohn

Agile Estimating and Planning

12 Alistair Cockburn

Writing Effective Use Cases

13 Bertrand Meyer

Object-Oriented Software Construction (2nd Edition)

14 Steve McConnell

Software Estimation: Demystifying the Black Art

15 Mike Cohn

User Stories Applied: For Agile Software Development

16 Donald E. Knuth

The Art of Computer Programming, The, Volumes 1-3 Boxed Set (2nd Edition)

17 Martin Fowler

Patterns of Enterprise Application Architecture

18 Jeffrey Friedl

Mastering Regular Expressions

19 Andrew Hunt, David Thomas

The Pragmatic Programmer: From Journeyman to Master

20 Karl E. Wiegers

Software Requirements (2nd Edition)

21 Craig Larman

Applying UML and Patterns (3rd Edition)

22 Alistair Cockburn

Agile Software Development: The Cooperative Game (2nd Edition)

23 Gary McGraw

Software Security: Building Security In

24 Gregor Hohpe, Bobby Woolf

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

25 Tom DeMarco

The Deadline: A Novel About Project Management

26 Craig Larman

Agile and Iterative Development: A Manager's Guide

27 Eric A. Marks, Michael Bell

Service-Oriented Architecture: A Planning and Implementation Guide for Business and Technology

28 Thomas H. Cormen, etc.

Introduction to Algorithms, Second Edition

29 Thomas Erl

Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services

30 Martin Fowler

UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)

31 Kent Beck

Extreme Programming Explained: Embrace Change (2nd Edition)

32 Alan Shalloway, James Trott

Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)

33 Grady Booch, etc.

Object-Oriented Analysis and Design with Applications (3rd Edition)

34 Jim Highsmith

Agile Project Management: Creating Innovative Products

35 Scott Berkun

Making Things Happen: Mastering Project Management

36 Jon Bentley

Programming Pearls (2nd Edition)

37 Paul Duvall, etc.

Continuous Integration: Improving Software Quality and Reducing Risk

38 Andrew Stellman, Jennifer Greene

Applied Software Project Management

39 Clemens Szyperski

Component Software: Beyond Object-Oriented Programming

40 Arthur J. Riel

Object-Oriented Design Heuristics

41 Thomas Erl

SOA Principles of Service Design

42 Mary Poppendieck, Tom Poppendieck

Lean Software Development: An Agile Toolkit

43 Ken Schwaber

Agile Project Management with Scrum

44 Ken Schwaber, Mike Beedle

Agile Software Development with Scrum

45 Joshua Kerievsky

Refactoring to Patterns

46 Alistair Cockburn

Crystal Clear: A Human-Powered Methodology for Small Teams

47 Steve McConnell

Software Project Survival Guide

48 Tom DeMarco, Timothy Lister

Waltzing With Bears: Managing Risk on Software Projects

49 Venkat Subramaniam, Andy Hunt

Practices of an Agile Developer: Working in the Real World

50 Kathy Schwalbe

Information Technology Project Management

51 Randall Hyde

Write Great Code: Volume 1: Understanding the Machine

52 Scott Rosenberg

Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software

53 Cem Kaner, etc.

Lessons Learned in Software Testing

54 Andy Oram, Greg Wilson

Beautiful Code: Leading Programmers Explain How They Think

55 Luke Hohmann

Beyond Software Architecture: Creating and Sustaining Winning Solutions

56 Grady Booch

Unified Modeling Language User Guide, The (2nd Edition)

57 Karl Fogel

Producing Open Source Software: How to Run a Successful Free Software Project

58 Michael Feathers

Working Effectively with Legacy Code

59 Kent Beck

Test Driven Development: By Example

60 Per Kroll, Philippe Kruchten

The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP

61 Thomas Erl

Service-Oriented Architecture: Concepts, Technology, and Design

62 Cem Kaner, etc.

Testing Computer Software (2nd Edition)

63 Frank Buschmann, etc.

Pattern-Oriented Software Architecture Volume 1: A System of Patterns

64 Harold Abelson, Gerald Jay Sussman

Structure and Interpretation of Computer Programs - 2nd Edition

65 Dan Pilone

UML 2.0 in a Nutshell

66 Brett D. McLaughlin, etc.

Head First Object-Oriented Analysis and Design

67 Johanna Rothman

Manage It!: Your Guide to Modern, Pragmatic Project Management

68 James Shore, Shane Warden

The Art of Agile Development

69 Brian W. Kernighan, Rob Pike

The Practice of Programming

70 Ron Jeffries, etc.

Extreme Programming Installed

71 Scott W. Ambler, Pramodkumar J. Sadalage

Refactoring Databases: Evolutionary Database Design

72 Jared Richardson, William Gwaltney

Ship it! A Practical Guide to Successful Software Projects

73 Greg Hoglund, Gary McGraw

Exploiting Software: How to Break Code

74 Michael Nygard

Release It!: Design and Deploy Production-Ready Software

75 Edward Yourdon

Death March (2nd Edition)

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .