هذا رواية مجانية وجيزة للغاية للكتاب الجديد لروبرت مارتن (العم بوب) "العمارة النظيفة" ، الذي صدر في عام 2018.
مقدمة
هندسة البرمجيات تشبه إلى حد ما هندسة البناء. تحتوي المباني أيضًا على هيكل كسري: تتكون المباني من حجرات ، وتتألف الغرف من غرف ، وتتكون الغرف من الجدران ، والجدران مصنوعة من الطوب. من ناحية أخرى ، تتألف البرامج من وحدات ، تتكون من حزم ، والتي تتكون من فئات ، والتي تتكون من وظائف ، إلخ. ومع ذلك ، فإن تنوع هياكل البرنامج أوسع بكثير من تنوع المباني ، لذلك يعتبر العم بوب هندسة البرمجيات "أكثر معمارية" من هندسة البناء.
بالإضافة إلى ذلك ، فإن تصميم المبنى أسهل في التصور في الرأس من البرمجيات ، لأننا نرى المباني كل يوم ، وهندسة البرامج مخفية عنا داخل الكود المصدري. هندسة البرمجيات ليست مثل أي شيء.
من ناحية أخرى ، يجب أن تتذكر بنية البرنامج أيضًا القيود المادية ، لأن البرامج تعمل على أجهزة حقيقية ذات أداء محدود ، وذاكرة ، وعرض النطاق الترددي للشبكة ، إلخ.
ما هو العمارة الجيدة؟ هذه بنية تلبي احتياجات المستخدمين وأصحاب الأعمال والمبرمجين ، ليس فقط في الوقت الحالي ،
ولكن أيضًا بمرور الوقت .
"إذا كنت تعتقد أن العمارة الجيدة باهظة الثمن ، فجرّب تجربة سيئة".
"الطريقة الوحيدة للصيام هي أن تسير على ما يرام".
مقدمة
قام العم بوب بكتابة الكود لأكثر من 50 عامًا. لقد كتب مجموعة متنوعة من البرامج: الكبيرة والصغيرة ، واجهة المستخدم الرسومية ، وحدة التحكم ، الويب ، إلخ. وخلصت إلى أن قواعد الهندسة المعمارية هي نفسها في كل مكان! وحتى أكثر من 50 عامًا ، لم يتغيروا على الرغم من الزيادة الهائلة في إنتاجية الحديد.
أصبحت لغات البرمجة أيضًا أفضل بكثير ، لكن الإنشاءات الأساسية ظلت كما هي: if ، الواجب ، الحلقات ، إلخ. إذا وضعت مبرمجًا من منتصف القرن الماضي لجهاز MacBook حديثًا ، فسيبدأ الأمر في البداية في وضع المكسرات ، ولكن سيكون من الطبيعي كتابة كود Java في Idea.
ولكن اكتسبنا خبرة تزيد عن نصف قرن ، والتي لم تكن قبل 50 عامًا. تمت صياغة القواعد ، والتي تم تخصيص هذا الكتاب لها.
مقدمة
من السهل كتابة برنامج عمل. من الصعب أن
تكتب البرنامج بشكل صحيح . وهذا يتطلب المعرفة والخبرة والمهارات ، والتي يتطلب تطويرها الكثير من الوقت والانضباط.
عندما يتم تنفيذ البرنامج بشكل صحيح ، فمن السهل الحفاظ عليه وإجراء تغييرات عليه. هناك نسبة منخفضة جدا من العيوب. لا يحتاج إلى جحافل من المبرمجين ، وأطنان من الوثائق ذات المتطلبات والمتتبعات المعقدة.
يبدو طوباويًا ، لكن العم بوب تمكن من العمل على مثل هذه المشاريع. لكن لسوء الحظ ، في معظم الحالات علينا أن نعمل في تصميم رهيب.
ما هو التصميم والهندسة المعمارية؟
لنفترض أن التصميم والهندسة المعمارية هما نفس الشيء.
الهندسة المعمارية ليست فقط المستوى العلوي ، بل هي تفاصيل المستوى العلوي والمنخفضة ككل. واحد دون الآخر غير موجود.
الهدف من هندسة البرمجيات هو
تقليل الموارد البشرية اللازمة لبناء وصيانة النظام المطلوب.
إذا كانت الجهود صغيرة
وتظل كذلك طوال الحياة ، فإن التصميم يكون جيدًا. إذا زادت الجهود مع كل إصدار ، فإن التصميم سيء.
على سبيل المثال ، يعرض العم بوب رسمًا بيانيًا لمشروع حقيقي ، حيث زاد عدد الموظفين بمقدار 50 مرة ، ولكن زاد عدد سطور التعليمات البرمجية بمقدار 2.3 مرة فقط (3M -> 7M). الرسم البياني المخيف أكثر هو زيادة في تكلفة سطر واحد من الشفرة بمقدار 40 مرة تقريبًا. أي انخفضت الإنتاجية من 100 ٪ إلى ما يقرب من الصفر. يعمل المبرمجون بجد في أفضل حالاتهم ، لكن في الأساس لا يمكن فعل شيء. والآن أسوأ شيء: إذا كان علينا في الإصدار الأول أن ندفع للموظفين عدة مئات الآلاف من الدولارات شهريًا ، فإن هذا الرقم في النهاية أصبح 20 مليون دولار شهريًا!
بعد ذلك ، يتذكر العم بوب حكاية الأرنب والسلحفاة. في ذلك ، فازت السلحفاة بالسباق لأن الأرنب كان واثقًا جدًا من نفسه ، وذهب إلى الفراش ونام خلال السباق كله.
نفس الشيء مع التطوير: يبرمج المبرمج نفسه بثقة أنه سيتمكن من طرح المنتج بسرعة واستعادة النظام لاحقًا. ومع ذلك ، فإن المشكلة تكمن في أنه بعد الإصدار يحتاج إلى القيام بالميزة التالية ، وإلا فإنه سيتخلف عن المنافسين في السوق. في النهاية ، في غضون بضعة أشهر ستنخفض إنتاجيته إلى الصفر وسيخسر.
ثم يقدم مثالاً عن تجربة أجراها جاسون جورمان ، حيث يكتب برنامجًا بسيطًا عدة مرات. واتضح أنه مع TDD ، تكون المرة الأولى أسرع من المرة الثالثة بدون TDD. هذا هو ، إذا كنت تكتب بشكل صحيح ، فإن النتيجة تكون أسرع.
يجب أن
يكون المطور
مسؤولاً عن الفوضى التي يقدمها في المشروع. يجب أن تؤخذ جودة الهندسة المعمارية على محمل الجد. ولكن لهذا تحتاج إلى معرفة ما هو العمارة الجيدة.
قصة عن قيمتين
هناك قيمتان - السلوك والهندسة المعمارية.
السلوك يعني أن البرنامج يلبي المتطلبات الوظيفية وبالتالي يجلب الأموال لأصحاب الأعمال. المشكلة هي أن العديد من المبرمجين يعتقدون أن هذا هو عملهم.
القيمة الثانية هي الجودة التي يظل بها البرنامج في حالة صيانة. وهذا هو ، فمن السهل أن تتغير. يجب أن يكون تعقيد التغييرات متناسباً مع حجم هذه التغييرات ، ولكن ليس شكلها. لا ينبغي أن تجعل الهندسة المعمارية تفضيلات لبعض النماذج على أشكال أخرى ، وإلا فإن طلبات المالكين ستكون أكثر صعوبة في كل مرة.
ما هو أكثر أهمية - السلوك أو الهندسة المعمارية؟ يعتقد المديرون أنه من المهم أن يعمل النظام. لكن على المبرمجين التفكير في عكس ذلك ، فالهندسة المعمارية أكثر أهمية.
تقول مصفوفة أيزنهاور أن الأهمية وغير العاجلة لها أولوية أعلى من الأولوية العاجلة وغير المهمة. والهندسة المعمارية مهمة دائماً على النقيض من السلوك ، لذلك فهي أكثر أولوية.
يجب أن يحارب المبرمج من أجل العمارة. مبرمج هو أيضا عضو في الأعمال التجارية. العمارة هي مسؤوليته.
أن تستمر ...