التدقيق الشامل وإعادة صياغة الكود البرمجي لإحدى منصات الرعاية الصحية عن بُعد
العميل
شركة أميركية لخدمات التطبيب عن بُعد توفر بدائل للرعاية الصحية التقليدية القائمة على التأمين. وتقدم شركة العميل خدمات الرعاية الصحية عن بُعد بطريقة الاشتراك التي توفر الرعاية العاجلة الافتراضية على مدار الساعة وطوال أيام الأسبوع في جميع أنحاء البلاد على أيدي مجموعة كبيرة من الأطباء ومقدمي الرعاية الصحية.
الحاجة إلى كفاءات إضافية لإطلاق المنصة في الوقت المحدد
كان العميل يمتلك منصة للرعاية الصحية عن بُعد شبه جاهزة للإطلاق، لكن تتطلب تدقيقًا شاملًا قبل دخول السوق. ولإتمام المشروع وفقًا للجداول الزمنية الصارمة، احتاج العميل إلى تعزيز فريق التطوير الداخلي لدبه بكفاءات إضافية. كان على الخبراء الخارجيين مراجعة الكود البرمجي للمنصة بدقة، وتحسين الكود المصدري، ومعالجة الأخطاء، وتحقيق استقرار أداء الميزات البرمجية. لذا، بدأت رحلة العميل للبحث عن شريك تقني موثوق في خدمات التعاقد الخارجي لتقنية المعلومات يتمتع بثقافة تعاونية قوية لدمج فريقه بسلاسة في الفريق الحالي، وتقديم إصدار جاهزة للسوق من المنصة في الوقت المحدد.
تشكيل فريق تقييم برمجيات الرعاية الصحية عن بُعد
منح العميل ثقته لساينس سوفت لخبرتها الممتدة لأكثر من 8 أعوام في تطوير برمجيات التطبيب عن بُعد حسب الطلب، ولسجلها الحافل بالإنجازات على مدار 18 عامًا في تطوير بوابات الويب الإلكترونية وتطبيقات الجوال.
شكلت ساينس سوفت فريقًا مكونًا من 6 خبراء متخصصين لتنفيذ المشروع، وهم: مدير المشروع، ومحلل أعمال، ومهندس ضمان الجودة، ومطور .NET، ومطور Xamarin، ومطور الواجهة الأمامية. وكان الهدف الرئيسي للمشروع مراجعة وتحسين الكود المصدري لحل الرعاية الصحية عن بُعد الذي يتكون من بوابة إلكترونية (بما في ذلك واجهة المستخدم النهائي وواجهة الإدارة)، وتطبيقات الجوال (iOS وأندرويد) التي تشترك جميعًا في واجهة خلفية واحدة.
عمليات التدقيق تكشف عن عيوب في الكود البرمجي، وغياب الامتثال لقانون HIPAA
استمرت مرحلة تدقيق منصة الرعاية الصحية عن بُعد شهرًا. وقد أجرى فريقنا تدقيقًا شاملًا للجوانب التالية:
- قابلية توسع البنية البرمجية ومرونتها.
- تغطية اختبارات الوحدة للكود المصدري.
- جودة الكود المصدري.
- الثغرات الأمنية المحتملة في الكود البرمجي.
كشف التدقيق الذي أجرته ساينس سوفت عن العديد من المشكلات بالغة الأهمية. تحديدًا، كشفت عمليات التدقيق عن رداءة جودة الكود البرمجي التي من شأنها أن تعيق قابلية التوسع والدعم والترقية المستقبلية للحل البرمجي. كما كشف خبراؤنا أيضًا عن حالات تتضمن عدم الامتثال لمتطلبات قانون التأمين الصحي لقابلية النقل والمحاسبة (HIPAA).
في تقرير مراجعة الكود المصدري، وضع خبراؤنا قائمتين للتوصيات: قائمة بتوصيات لازمة التنفيذ وأخرى تتضمن توصيات يفضل تنفيذها، وذلك لكل مكون من مكونات منصة التطبيب عن بُعد. ونصح خبراؤنا فريق العميل بتنفيذ التغييرات الموجودة في قائمة التوصيات لازمة التنفيذ قبل إجراء أي أنشطة إضافية للتطوير أو تحقيق استقرار أداء الحل البرمجي لتجنب وجود أي اختلافات وتناقضات في الكود البرمجي. كما قدم خبراؤنا تقريرًا يتضمن تقديرات للمدة الزمنية والميزانية اللازمة لتنفيذ هذه التغييرات.
البوابة الإلكترونية: نتائج وتوصيات التدقيق
في أثناء مراجعة الواجهة الأمامية للبوابة الإلكترونية، اكتشف فريق ساينس سوفت أن بنية الملفات تعيق تفسير الكود البرمجي وتوسعه وتحديثه. كما رصدنا كذلك عيوبًا شديدة الخطورة في أثناء إجراء اختبار الوحدة. لتحسين جودة الكود المصدري للبوابة الإلكترونية، أوصى خبراؤنا بإعادة صياغة الكود البرمجي.
بناء على المشكلات المكتشفة في جانب الخادم وواجهة الإدارة، أوصى فريقنا بمجموعة من التحسينات، وهي كالتالي:
- إزالة المعلومات الحساسة المكتوبة مباشرة في الكود البرمجي.
- التغطية الكاملة للكود المصدري باختبارات الوحدات.
- تحديث الإصدارات الحالية لمكونات NuGet.
- تحديث إطار العمل ASP.NET Core 2.2 إلى الإصدار 3.1، إذ لم تعد النسخة القديمة تتلقى تحديثات أمنية أو إصلاحات للمشكلات البرمجية أو ميزات جديدة، ما يجعلها ثغرة أمنية محتملة.
لتعزيز أمان الحل البرمجي وزيادة قابليته للتوسع، أوصى خبراء ساينس سوفت بإنشاء تطبيقات منفصلة لخادم الهوية تتواصل عبر واجهة برمجة تطبيقات مكشوفة. بالإضافة إلى ذلك، اقترح فريقنا ترحيل قواعد البيانات وفصلها، واستخدام السجلات لتبسيط الأقلمة والتصحيحات البرمجية، واستخدام أسلوب برمجة متسق، وإزالة الكود البرمجي المحتوي على تعليقات، والتخلي عن الطريقة المطولة.
تطبيقات الجوال: نتائج وتوصيات التدقيق
في مراجعتنا لتطبيقات الجوال التي تعمل بنظامي التشغيل iOS وأندرويد، ركزنا على الجوانب التالية:
البنية وإعدادات التطوير
قيّم فريقنا طريقة تقسيم بنية الحل إلى طبقات ومستويات وملفات متعددة، وتأكدوا أنها اتبعت أنماط ملائمة للتصميم والبرمجة. كما راجعنا إعدادات ترجمة الكود البرمجي للتطبيقات وتجميعه، بما في ذلك جوانب مثل: المنصة المستهدفة، والمكتبات، والتبعيات المطلوبة لتنفيذ التطبيق بنجاح.
اكتشف خبراؤنا وجود خيارات غير محسنة في بعض التكوينات، وإصدارات قديمة قليلة تدعم نظام التشغيل، ومراجع غير نشطة للمكونات، وتسميات غير متسقة للمصادر. وفي الوقت نفسه، وجدنا أن البنية البرمجية للحل تتوافق تمامًا مع إطار Xamarin.Forms ومتطلبات نمط View-ViewModel (MVVM). كما لاحظنا أن الكود البرمجي اتبع أنماطًا وتقنيات شائعة للبرمجة، لكنه لم يستخدم أحدث إصدار من لغة البرمجة C#. وبرغم الاستخدام الملحوظ لمبادئ البرمجة الشيئية (OOP) وأنماط البرمجة التفاعلية، استخدمت بعض الفئات متغيرات عامة بدلًا من الخصائص.
جودة الكود البرمجي:
أجرت ساينس سوفت تقييمًا لطريقة صياغة الكود البرمجي، واستخدام القيم الثابتة المباشرة، والثوابت، والأرقام السحرية، وتجميع القيم المماثلة بنمط سردي، وتعليقات الكود، وتعليمات if-else. كما شمل التقييم استخدام خصائص أطر العمل والكود المُخصص.
اكتشف فريقنا أن البنية البرمجية للحل لا تتوافق مع السياسات المخصصة لصياغة الكود، كما اكتشف بعض المخالفات في السياسات الافتراضية لصياغة الكود وطريقة التسمية. كان الكود البرمجي يحتوي على العديد من المكونات غير المحلية المكتوبة مباشرة في الكود البرمجي، مثل: مفاتيح القاموس، وقيم للأسطر البرمجية، وأرقام سحرية، والعديد من المكونات التي تحتوي على تعليقات، وتعدادات مفقودة. لم تُستخدم ميزات # C بالكامل. ومع ذلك، كان الكود البرمجي خالٍ من الاستخدام المفرط أو غير الصحيح لكتل التفريع الشرطي للكود البرمجي.
قابلية الصيانة
عند تقييم قابلية صيانة المنصة، تحقق الفريق من العناصر التالية:
- إمكانية قراءة الكود البرمجي (باستخدام أسماء ملائمة للمتغيرات والفئات والوظائف).
- قابلية الاختبار (مدى سهولة اختبار الكود البرمجي، ومدى تغطية اختبارات الوحدة).
- قابلية تصحيح الأخطاء البرمجية (باستخدام السجلات للعثور على السبب الجذري للمشكلات).
- قابلية التهيئة (الحفاظ على القيم القابلة للتهيئة في مكان واحد حتى لا تكون هناك حاجة إلى تغييرات في الكود البرمجي للتهيئة).
صنف خبراؤنا قابلية قراءة الكود البرمجي بدرجة «فوق المتوسط». كما وجدوا أن الكود البرمجي غير مُغطى باختبارات الوحدة، وكانت السجلات ذات جودة رديئة، كما لم تكن هناك ملفات تهيئة.
الأمان
تحقق خبراؤنا من آليات المصادقة، والتفويض، وتشفير البيانات الحساسة، وآليات التحقق من البيانات المدخلة. كما اكتشفنا تكوينات تحتوي على بيانات حساسة مكتوبة مباشرة في الكود البرمجي للاتصال بالخدمات الخارجية، وحالات للتخزين غير الآمن لكلمات مرور المستخدمين المشفرة في التفضيلات المشتركة، واستخدام قاعدة بيانات SQL غير مشفرة، كل ذلك يعد خرقًا للامتثال لمتطلبات نظام HIPAA.
الموثوقية
أجرى فريقنا تقييمًا لمعالجة الاستثناءات وتنظيف الموارد. بالنسبة لتطبيق iOS، لم يكتشف خبراؤنا أي تسربات في الذاكرة، ووجدوا أن معظم الاستثناءات تنفذ على نحو صحيح. أما تطبيق أندرويد، فقد رصد خبراؤنا تسريبات للذاكرة في نماذج العرض، وكتل "catch" فارغة أو سجلات الاستثناءات فقط لمعظم الاستثناءات، بالإضافة إلى العديد من المشكلات في الاستثناءات المتعلقة بطلبات بروتوكول HTTP.
قابلية إعادة الاستخدام
تحقق فريقنا من التزام الكود البرمجي بمبدأ تقليل التكرار (Don’t Repeat Yourself). كما تم تحديد أجزاء صغيرة مكررة من الكود في فئات الإضافات، واحتوت بعض نماذج العرض على أجزاء متكررة من الكود. مع ذلك، كان مبدأ تقليل التكرار (DRY) مستخدم إلى حدٍ ملحوظ للغاية.
قابلية التوسع
تحققت ساينس سوفت من سهولة إضافة تحسينات بأقل قدر من التغييرات في الكود الحالي، كما تأكدت أن التطبيقات تتمتع بقابلية جيدة للتوسع.
الأداء
أجرى فريقنا تحليلًا وتقييمًا لكفاءة وسرعة تشغيل التطبيقات. ولم يجد خبراؤنا أي مشكلات في تطبيق iOS، لكننا وجدنا أن تطبيق أندرويد لم يستخدم عمليات ترجمة الكود البرمجي Startup Tracing أو AOT، ما أدى إلى انخفاض كبير في سرعة التحميل.
تغطية الاختبارات
راجع خبراؤنا نطاق تغطية الاختبارات لأجزاء الكود البرمجي. ولم يعثر فريقنا على اختبارات الوحدة.
الأخطاء
في تطبيق أندرويد، اكتشفنا خطأ في وقت تحويل الكود متعلق بتهيئة الإصدار لمحرر الارتباط، وخطأ آخر في وقت التشغيل المرتبط بمسار المصادر غير الصحيحة.
توصيات تحسين تطبيقات الجوال
قدمنا للعميل توصيات عامة وأخرى خاصة بأنظمة التشغيل لتحسين التطبيقات. وتضمنت هذه التوصيات ما يلي:
- تحسين خيارات جميع إعدادات البنية.
- الترقية من إصدار iOS 10 إلى iOS 13.
- تمكين مكونات مرجع المكونات (Package Reference) ومكونات NuGet الخارجية.
- إعادة تسمية المصادر وفقًا لاتفاقية التسمية.
- تحديث إصدار C# 8.0 إلى إصدار 10.0.
- استخدام إصدار إطار العمل NET Standard 2.1 بدلًا من 2.0.
- تغليف المتغيرات.
- إصلاح طريقة صياغة الكود وفقًا للسياسات الافتراضية للبرمجة.
- استخراج مفاتيح القاموس في ملف منفصل في صورة ثوابت.
- وضع النصوص البرمجية في ملفات خارجية.
- استخراج وتحويل الأرقام السحرية إلى ثوابت مع وضع أسماء توضيحية لها.
- استخراج القيم المكتوبة مباشرة في الكود ووضعها في ملف منفصل للتعداد.
- إزالة الأسطر البرمجية القديمة التي تحتوي على تعليقات.
- إنشاء مكتبة لإعداد السجلات، وإعداد مستويات السجلات، وإضافة السجلات المفقودة.
- نقل الكود المشترك إلى طريقة منفصلة، وغير ذلك الكثير.
فيما يتعلق بقاعدة بيانات (SQL) للتطبيقات، أوصينا بمراجعة البيانات المخزنة، وفي حالة وجود بيانات حساسة، أوصينا باستخدام قاعدة بيانات مشفرة (مثل SQLCipher أو LiteDB) للتجنب عدم الامتثال لمتطلبات قانون HIPAA.
إعادة صياغة الكود البرمجي ومعالجة الأخطاء وتحقيق استقرار أداء الميزات البرمجية
بعد الانتهاء من مرحلة التدقيق، بدأ مطورو ساينس سوفت في تحسين الكود البرمجي للحل. وفقًا لنتائج التدقيق، شمل النطاق الكامل للتغييرات المطلوبة إعادة صياغة الكود البرمجي وإصلاح الأخطاء البرمجية وتحقيق الاستقرار في أداء الوظائف الحالية. وبناءً على تقديراتنا، ستستغرق جميع الإجراءات 9 أشهر.
ونظرًا لقصر المدة الزمنية المقررة لتنفيذ المشروع، طلب العميل من ساينس سوفت تنفيذ منتج الحد الأدنى في غضون شهرين. بدلًا من إصلاح الكود البرمجي بالكامل، ركزنا على إعادة صياغته. أجرى فريقنا إعادة صياغة للكود البرمجي المستهدف لتعزيز إمكانية قراءته وصيانته وقابليته للتوسع. وتضمن ذلك إجراء تغييرات على تنظيم الأسطر البرمجية وأنماط التصميم، مثل مبدأ المسؤوليّة الواحدة وحقن التبعية. وإلى جانب هذه التحسينات، عالجنا العيوب ذات الأولوية العالية التي تم الكشف عنها. في أثناء التدقيق نجح فريقنا في تحقيق استقرار أداء أهم الميزات وترقيتها لتلبية متطلبات الامتثال لمتطلبات قانون HIPAA. أتم فريقنا المشروع في ثلاث مراحل، استمرت كلًا منها 3 أسابيع، للالتزام بالجداول الزمنية التي حددها العميل.
التنفيذ الناجح لمنصة الرعاية الصحية عن بُعد
في 3 أشهر فقط، ساعد خبراء ساينس سوفت العميل على مراجعة الكود البرمجي وتحسين الكود المصدري وتنفيذ منتج الحد الأدنى بجودة فائقة وجاهز لدخول السوق لمنتج التطبيب عن بُعد المتوافق مع متطلبات قانون HIPAA. وفي أثناء تعاوننا، أعاد العميل تقييم مهارات فريق التطوير الداخلي، ما أدى إلى تخصيص الموارد على نحو أكثر فعالية.
التقنيات والأدوات
.NET, Xamarin, C#, JavaScript, Vue.js.
نتواصل معكم على الفور