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

لقد حاولنا تقليل استخدام الخدمات المدفوعة باستخدام رمز مصدر مغلق ، مما أثر بشكل إيجابي على تكلفة الملكية. جميع الخدمات تقريبًا مفتوحة المصدر وتعمل على Linux.
تم تصميم العملية بحيث نحقق أقصى استفادة من كل عضو في فريق التطوير ، ويزيل التوحيد والأتمتة التعقيد والروتين غير الضروريين.
التصميم (خدمات تصميم التطبيقات)
من أهم المراحل في بداية المشروع تصميم حل مستقبلي قائم على تحليل المتطلبات. تتمثل المهمة الرئيسية في وصف بنية الحل المستقبلي بأكبر قدر ممكن من الوضوح والغموض والسرعة ، من حيث المفهوم لكل من المطور / المهندس والاستشاري. وصف البيانات الوصفية وخوارزميات عمليات الأعمال المنفذة. في الوقت نفسه ، أردت زيادة استخدام قوالب جاهزة وقابلة للتخصيص بسرعة لظروف معينة يمكن تكييفها مع بيانات الإدخال والحصول على وثائق المشروع عند الإخراج.
لقد قمنا بتنفيذ تكوين "1C: DSS" كواجهة واحدة لتصميم الحلول التطبيقية ، وأعدنا صياغة مفهوم وصف العمليات والوظائف التجارية بشكل كبير ، بالإضافة إلى تصميم TP (FDR). كما قاموا بأتمتة عمليات توليد الوثائق من خلال التكامل مع وظيفة 1C: DO والخدمات الصغيرة لتوليد المستندات بتنسيق docx.
"1C: DPR". تحرير معلومات المشروع:

"1C: DPR". تقرير العملية:

"1C: DPR". تحرير بيانات تعريف الكائن:

"1C: DPR". تحرير مخطط عملية الأعمال:

بالمناسبة ، يمكننا تصور العلاقة بين العمليات التجارية والكائنات في النظام ، وإنشاء قائمة بالتحسينات بناءً على المتطلبات المسجلة والحصول على وثائق المشروع تلقائيًا ، مما يبسط عملية إدارة التغيير. لذا ، للتخطيط لعملية التطوير بالتفصيل ، لمعرفة التعقيد ، وترابط المهام ، لتحديد توقيت وإجراءات تنفيذها بشكل أكثر دقة.
بالطبع ، لا يمكن القول أن عملية التصميم تغيرت بشكل كبير ، ولكن توحيد النهج التنظيمية وأتمتة العديد من الوظائف تسهم بالفعل في جودة المشاريع.
التطوير (خدمات التكامل والتفتيش والاختبار المستمر)
حاولنا التركيز على إمكانية مراقبة الجودة الشاملة والمستمرة والآلية للشفرة المطورة لضمان الامتثال للمعايير الموضوعة في CROC. علاوة على ذلك ، حتى لو قمنا بإشراك فرق تطوير تابعة لطرف ثالث ، فقد تختلف الأساليب والأدوات ومعايير التطوير بشكل كبير عن تلك التي اعتمدناها.
في الحامل ، يبدأ كل مطور التزامًا تلقائيًا بإجراء تحليل التكوين في الدليل وبنية الملف من خلال خدمة Gitsync. تتم فهرسة التغييرات الناتجة ووضعها في مستودع Git. في حالتنا ، هذه هي خدمة Gitlab. يتم إنشاء رسالة الالتزام تلقائيًا من نص التعليق الذي تم إدخاله عندما يتم نشر التغييرات في مستودع التكوين ، ويتم تعيين مؤلف الالتزام في نظام التحكم في الإصدار إلى مستخدم مستودع التكوين. أثناء التحليل اللغوي من نص التعليق ، يمكننا الحصول على معلومات حول مهمة التطوير وتكاليف العمالة ، ونقلها إلى نظام تتبع المهام ، على سبيل المثال ، Jira. هذا يعطي صورة شاملة لتاريخ التنمية. على سبيل المثال ، يمكننا العثور على المؤلف من خلال سطر التعليمات البرمجية ، وتسمح لك التعليقات الذكية على عمليات التنفيذ بالتحكم تلقائيًا في حالة المهام وتقييم الشفرة فيما يتعلق بالمهام مباشرةً في المهام نفسها.
جيتلاب الآن من الممكن التعليق على أي سطر من التعليمات البرمجية التي وضعها الالتزام:

جيتلاب إجراء "مراجعة التعليمات البرمجية" مع تسليط الضوء على بناء الجملة:

جيتلاب احصل على صورة واضحة لتغييرات التعليمات البرمجية في الالتزام الجديد:

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

يقوم كل فحص بتحديث معلومات مقاييس جودة قاعدة التعليمات البرمجية المتتبعة ، مثل:
- الدين الفني - إجمالي العمالة المطلوبة لتصحيح الأخطاء المحددة ؛
- عتبة الجودة - الحد الأقصى المسموح به من المؤشرات للأخطاء ونقاط الضعف وأوجه القصور الأخرى في التعليمات البرمجية ، عند الوصول إليها ، يعتبر إصدار الإصدار مستحيلًا ؛
- تكرار التعليمات البرمجية - عدد أسطر التعليمات البرمجية التي تتكرر عدة مرات في إطار التكوين المطور ؛
- التعقيد المعرفي والدوري - خوارزميات تحتوي على عدد كبير من الفروع التي تعقد دعم وتنقيح الشفرة.
المقاييس التي تم جمعها نتيجة للتحقق تعطي تمثيلًا مرئيًا للحالة الحالية لقاعدة التعليمات البرمجية للمشروع ، وتسمح بتقييم الجودة ، وتحديد المخاطر ، وتصحيح الأخطاء بسرعة.
يمكن توسيع ملف تعريف الجودة من خلال مجموعات القواعد الخاصة به من خلال XPath ، وأيضًا بسبب إصدار قواعد جديدة كجزء من تنفيذها الخاص للمكون الإضافي 1C. يسمح لك هذا بإدارة متطلبات الجودة بمرونة ، استنادًا إلى حقائق حل معين.
البدء التلقائي لعمليات تحليل التكوين ، وفحص الكود ، والاختبار الآلي ، إلخ. تطلق خدمة التكامل المستمر (خدمة جينكينز). يمكن تغيير عدد وطبيعة خطوط التجميع وفقًا لخصائص المشروع.
على الرغم من التعقيد النسبي للعملية الموصوفة ، يتم إخفاء جميع آليات الناقل التي تؤدي الروتين في الخدمة السحابية. ويتعامل المطور مع الواجهة المألوفة للمكون ، ويمكنه أيضًا تطوير مهاراته باستخدام أدوات أكثر تقدمًا. على سبيل المثال ، git ، مستودع للآليات الخارجية بالاشتراك مع برامج تحرير التعليمات البرمجية التابعة لجهات خارجية و SonarLint ، SourceTree ، إلخ.

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

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


ReportPortal. تشغيل اختبار فاشل:

ReportPortal. أنواع العيوب:

ReportPortal. تحرير أنواع العيوب:

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