OS Sivelkiriya: عملية تطوير البرمجيات

مرحبا يا هابر.

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

عملية تطوير البرمجيات


تختلف عملية تطوير البرامج في Sivelkiriya عن تلك الموجودة في أنظمة تشغيل أخرى (Windows و Linux و Android ، وما إلى ذلك) ، حيث يقوم المطورون في جميع الحالات بإعداد مكونات مشتركة ، وحالة الاستخدام المحددة غير معروفة في وقت التطوير. بمعنى آخر ، يتم التطوير كما لو كانت المكتبات في جميع الحالات قد تم تطويرها ولم يتم تطبيقها أبداً.

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

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

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

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

تنظيم تفاعل المطورين


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

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

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

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

لسوء الحظ ، هذا الإخفاء لرقم الإصدار الفعلي غير ممكن دائمًا. على سبيل المثال ، إذا كانت واجهة "اللحن" في الإصدار 1.0 تصف العمل على أنه نتيجة ، وفي الإصدار 2.0 كتسجيل صوتي ، فلا توجد مراسلات فردية بينهما: يمكن تشغيل اللحن نفسه على أدوات مختلفة ، بينما يمكن التسجيل تحتوي على أصوات لا يمكن التعبير عنها على ورقة موسيقية. وبالمثل ، إذا تم تصميم واجهة Note أصلاً للمحتوى النصي ، ثم تم تكييفها للكتابة اليدوية ، فسيكون من الصعب ترجمة واحدة إلى أخرى: قد تحتوي ملاحظة مكتوبة بخط اليد على صور ، بينما الأحرف المخفية (على سبيل المثال ، soft التحويلات). وأخيرًا ، يتم رسم خرائط المدن بشكل تقليدي في بعدين ،ومع ذلك ، بالنسبة للمدن العملاقة ذات التبادل متعدد المستويات ، يصبح هذا غير كافٍ بشكل متزايد ؛ إذا تم في المستقبل الانتقال من بطاقات ثنائية الأبعاد إلى ثلاثية الأبعاد ، فلن يكون الانتقال من واحدة إلى أخرى بهذه السهولة.

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

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

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

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

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

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

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

All Articles