بدأ الفصل الدراسي الثاني واقترب موعد تسليم مشروع التخرج , قمنا باستغلال فترة الإجازة ما بين الفصيل الدراسيين الاول والثاني في الاستمتاع بالحياة 😅 لانه نعرف قدامنا مشوار طويل وصعب.

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

ما قبل البرمجة

قبل البرمحة لازم تعرف ايش احتياجاتك للمشروع , وبناء عليها تخطط ايش لغة البرمجة اللي لازم تستعملها وايش هي الطرق اللي راح تنظم فيها المشروع ومصارده وكيف تقسم العمل بين الفريق.

نبدأ بايش لغة البرمجة , اذا مشروعنا تطبيق جوال فبالتالي نحتاج لغة برمجة مخصصة للجوالات , اذا بحثت بجووجل راح تلاقي لغات برمجة مثل Swift و Java و C# و Kotlin وغيرها وبنفس الوقت راح تلاقي اطر عمل Frameworks كثيرة جدا , ورح تدخل بدوامة هل التطبيق لازم يكون Native ولا Hybrid ولا Cross-platform.

خبرتنا في لغات البرمحة الخاصة في تطبيقات الجوالات تساوي صفر 😗 يعني لازم نتعلم من الصفر , وبناء على البحوث اللي عملناها والخبرة السابقة اخترنا بغة برمجة اسمها Dart باطار عمل اسمه Flutter. لعدة اسباب اهمها كذا كذا لازم نتعلم لغة برمجة 😂 ولازم نختار لغة برمجة تشتغل ع iOS و Android ولازم يكون سريع بسبب طبيعة التطبيق.

مصدر الصورة Unsplash

ندخل الان بالمشكلة الاكبر وهي تقسيم العمل وتنظيمه بين الفريق. لازم تعرف كونك قائد الفريق ايش نقاط القوى ونقاط الضعف عند كل شخص في الفريق.

 الفريق مكون من شخصين , شخص مبرمج (أنا) وزميلي (تخصص شبكات) بكذا عرفنا انه مهام البرمجة لازم تكون علي أنا , والمهام التي تتطلب مهارة في التنظيم والتوثيق تكون على زميلي.

ندخل الان على القسم الثالث ما قبل البرمجة , تنظيم العمل , عشان تقدر تنظم مشروع التخرج وتعمله بشكل تقدر ترجع لأي نقطة خلال فترة عملك ويكون كل شيء وموثق.

في شيء درسناه في الجامعة بس ما ركزو عليه هو مفهوم ادارة المشاريع ( Project Management ) في كثير طرق لادارة المشاريع تناسب مشاريع تقنية المعلومات منها Waterfall و Agile و Hybrid و Scrum وغيرها الكثير.

الطريقة التي كانت مناسبة لنا في مشروع التخرج هذا هي Scrum , ويختلف كل مشروع ايش المناسب له , ما رح اتكلم عنها كثير بس مفهومها بسيط بحيث انك تقسم مهام المشروع الى شيء اسمه Sprint كل سبرنت له مدة انت تحددها بالعادة اسبوع او اثنين , تعمل فيها الشغل وتتاكد انه شغال تمام وتعمل التست وتسلمه للعميل.

القسم الرابع هو التصميم , مفهوم التصميم لا يقتصر على تصميم الواجهات , بل يشمل تصميم الخطة و السيناريو و قواعد البيانات والواجهات وغيرها.

استعملنا برنامج xmind لرسم الخرائط الذهنية. واستعملنا برنامج draw.io لرسم السيناريو و ال  flowchart وال use case , واستعملنا برنامج Adobe XD لرسم الواجهات .

البرمجة

مصدر الصورة Unsplash

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

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

بدأنا بالاسهل , تطبيق الويب لادارة الجامعة , استعملنا لغة PHP مع اطار عمل Laravel . وربطناها مع قاعدة بيانات MySQL.

اثناء العمل على تطبيق الويب , اكتشفنا انه لازم نتشارك العمل مع بعض بطريقة معينة بحيث اذا عملت تعديل للكود زميلي في المشروع لازم يشوفه ويعرف وين وصلنا فا استعملنا Github لمشاركة المشروع بيننا.

يفيد Github بعدة امور اهمها حفظ نسخة من المشروع في الكلاود وتقدر تسحبها باي وقت اذا خربت الكود 😅 او اذا لا سمح الله خرب اللاب توب.

بعد ما خلصنا من تطبيق الويب وتاكدنا ان كل شي تمام , انتقلنا لتطبيق الجوال , هنا بدأت المشاكل , تعلم لغة جديدة , كيف اخلي التطبيق يقرأ من قاعدة البيانات ؟ وكيف يرسل البيانات للسيرفر ؟ وغيرها من الاسئلة .

تعلم لغة برمجة جديدة كان موضوع بسيط لا هو سهل ولا هو صعب , المفاهيم هي نفسها ولكن فقط تغيير في طريق كتابتها , استعملنا YouTube و موقع Pluralsight واي مشكلة كانت تواجهنا Google و موقع StackOverflow كان المرجع الاساسي.

لربط تطبيق الجوال بتطبيق الويب استعملنا مفهوم API بحيث نرسل البيانات عن طريق JSON الى السيرفر ويرجع لنا بيانات بنفس الطريقة.

الصعوبة كانت في شغلتين الاول هي ال authentication ( تسجيل الدخول وتسجيل مستخدم جديد ) , استعملنا مفهوم JWT بحيث نعمل Token ونرسلها عن طريق API بحيث تتاكد هل البيانات صحيحة او لأ وتعطينا رد.

الصعوبة الثانية كانت في Real time chat بحيث لما الطالب يرسل رسالة المفترض تطلع بشكل مباشر بدون ما يعمل تحديث للصفحة في جميع الاجهزة وبنفس الوقت تتخزن في قاعدة البيانات.

ببحث بسيط اكتشفنا مفهوم اسمه WebSocket والي يسمح بنقل البينات بشكل لحظي بين المستخدين. الويب سوكت هي عبارة عن قناة اتصال مفتوحة بين الجهاز والسيرفر , والجهاز ينتظر اي تحديث من السيرفر ويحدثه مباشرة. وبنفس الشكل بين السيرفير والجهاز.

وبكذا صار المشروع ثلاثة اجزاء , جزء تطبيق ويب Web App وجزء تطبيق جوال Mobile App وجزء Chat Server .

خلال فترة البرمجة تعلمت وحسنت معرفتي في الاشياء التالية.

Flutter, Dart, Restful API, Node.js, Express, Postman, Laravel, PHP, HTML, CSS, JavaScript, Bootstrap, Moment.js, WebSocket, Socket.IO, Git, Github, Select2.js, VS Code, Android Studio, WAMP, SQL, PHPMyAdmin, PHP Composer, NPM.

هذا كله بالاضافة الى الصبر , تحدي الذات , ادارة المشاريع , وتنظيم الوقت , العمل مع فريق , وغيرها الكثير.

الواجب

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

السؤال كان ( اذكر المفاهيم التي استعملتها )

  • عرف المفهوم الذي استعملته لتطوير المشروع ( Waterfall او Agile او غيرها)
  • ماهي الميزات والعيوب في المفهوم الذي اخترته
  • ما هي البرامج والادوات التي استعملتها في تطوير المشروع.

السؤال الثاني كان ( نشاطات المشروع )

  • اذكر واشرح المراحل التي اتبعتها في المفهوم الذي اتبعته في ادارة المشروع.
  • ما هي التعديلات التي قمت بها من لما قدمت Proposal الخاص بمشروع التخرج , واذكر لماذا قمت بها.
  • اعرض واشرح النتائج الحالية ووين وصلت في المشروع.

السؤال الثالث هو المراجع و غيرها.

التقرير

التقرير كان اصعب من البرمجة 😅 لازم تكتب كل شي , وتشرح كل شي كتبته وتحط مراجع وترتب الكلام وتنسقه  وتحط فهرس , وترجع تناقشه مع غيرك عشان تتاكد الكلام مفهوم او لا. بس رح بسط الفكرة  واذكر بالتفصيل البسيط ايش اللي لازم تكتب.

مصدر الصورة Unsplash
  • ملخص
  • الشكر
  • جدول الصور
  • فهرس المحتوى
  • الفصل الاول : مقدمة
  • الفصل الثاني : الانظمة المشابهة ومقارنة تحليلة
  • الفصل الثالث : المتطلبات وتحليلها
  • الفصل الرابع : التصميم , البرمجة , والاختبارات.
  • الفصل الخامس : النتائج والنقاش
  • الفصل السادس : الخاتمة
  • المراجع
  • المرفقات

في المقالة السابقة ذكرت الفصل الاول والثاني والثالث وايش لازم تكتب فيهم.

في الفصل الرابع , التصميم و البرمجة والاختبارت. اكتب مقدمة بسيطة واتبعها بايش هو مفهوم ادارة المشروع اللي اتبعته وفصل فيه المعلومات واشرح .

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

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

ثم كتبنا طريقة ربط الكل مع بعض , وبعدها عملنا مقارنة مع حلول بديلة اخرى كان ممكن نستعملها بدل اللي احنا حاليا استعملناها.

ثم كتبنا ايش انواع الاختبارات اللي عملناها عشان نتاكد ان الكود شغال صح وخلال كل فترة ايش مرحلة ايش هي الاختبارات اللي عملناها.

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

اكتب ايضا تصور عن هل المستخدم رح يستخدم تطبيقك او لا , واذكر الاسباب.

اكتب في نهاية الفصل عن خطتك للمستقبل في مشروع التخرج , اذكر له وين رح تنتقل وهل النظام حاليا يعتبر اكتمل ام ممكن تظيف عليه ميزات , وغيرها.

الفصل السادس خاتمة بسيطة تختم فيها التقرير.

المناقشة

المناقشة هي لما توقف قدام دكتورك و 2 آخرين وتناقشهم في المشروع , بسبب كورونا كانت المناقشة اونلاين .

بس ما قبل المناقشة في نقطة مهمة وهي ملف البرسنتيشن , حضر ملف البوربوينت ليكون بالشكل التالي:

  • اسم المشروع
  • ما هو المشروع
  • شرح المشكلة
  • الحل المقترح
  • المنافسين
  • القيمة المضافة
  • الديمو وشرح الكود
  • الخاتمة

في المناقشة حاول تكون ملم جدا في المشروع وناقش كل شي مع فريق العمل , المفترض كلكم تعرفون كل شي من الفكرة الى اي كود.

توقع انه رح يسألك الدكتور عن اي شيء بخصوص مشروع التخرج ممكن يرجع يناقشك بالفكرة ويطلب منك ترجع تشرحها وممكن يطلب منك تشرح له جزء من الكود كيف اشتغل وممكن يسألك عن قواعد البيانات وجداولها.

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

الزبدة

مشروع التخرج ان شيء ممتع جدًا , رغم المشاكل اللي واجهناها في مراحله بس طورنا علاقة مميزة بين فريق العمل , وتعلمنا اشياء جميلة اكيد رح تضيف لنا خبرة كبيرة في حياتنا المهنية.

اذا ما عرفت شيء اسأل مو عيب ولا فيها شي , في ناس كثير تساعدك أولهم أنا بس الدكتور طبعًا لا 😂 . واتمنى لكم التوفيق

مصدر الصورة Unsplash