JavaRush /مدونة جافا /Random-AR /تخطيط المشروع: القياس مرتين - القطع مرة واحدة - "مشروع جا...
Roman Beekeeper
مستوى

تخطيط المشروع: القياس مرتين - القطع مرة واحدة - "مشروع جافا من الألف إلى الياء"

نشرت في المجموعة
تحياتي لكم أيها الزملاء. سنتحدث اليوم عن نوع العمل التحضيري الذي يتعين عليك القيام به قبل البدء في البرمجة بشكل كبير. وبشكل أكثر تحديدًا، حول تخطيط وإنشاء بنية التطبيق. مشروع جافا من الألف إلى الياء. تخطيط المشروع: قياس سبع مرات - قطع مرة واحدة - 1ولكن من أين تبدأ؟ كيفية بناء هذه العمارة؟ كما هو الحال مع كل شيء، عليك أن تبدأ من البداية. وهي - مع IDEA. كانت فكرة مشروعنا هي إنشاء روبوت برقية مفيد بوظائف أساسية. دعونا نكرر ما يلي بالضبط: "أنا، كمستخدم، أريد أن أكون قادرًا على تلقي إشعارات عند نشر مقالات جديدة في تلك المجموعات على JavaRush التي تهمني." باتباع مبدأ YAGNI، سنقوم ببناء تطبيقنا. وهذا يعني أننا سوف نأخذ فقط ما نحتاجه. لن نقوم بإنشاء وظائف مسبقًا أو احتياطيًا لمجرد أننا نريد ذلك، وقد تصبح في متناول اليد يومًا ما. نعم، سنقوم بإنشاء تطبيق قابل للقراءة وقابل للتوسيع، لكن هذا لا يعني أننا سنقوم بإنشاء مخطط قاعدة بيانات "للنمو". ومن أجل عدم دعم هذا "النمو"، قررت أنه سيكون من الأفضل التخلي عنه تمامًا. سيساعدنا هذا على تجنب الدعم غير الضروري أثناء التطوير والاختبارات غير الضرورية. في وقت لاحق، عندما يدخل مشروعنا في مرحلة الإنتاج (مرة أخرى، من الاختصار حث - إنتاج)، سنكون قادرين على القيام بشيء أكثر. بمجرد اتخاذ قرار بشأن فكرة ما، عليك أن تكون شقيًا قليلاً وترسم. ماذا ترسم؟ سنحتاج إلى القدرة على حفظ بيانات الاشتراكات لمجموعات من المستخدمين المختلفين. أعلم أنه يمكنك استخدام معرف المستخدم في شكل معرف دردشة في Telegram. وهناك فكرة عن كيفية استمرار البحث عن مقالات جديدة فعليًا: سنبحث في جميع المجموعات التي لديها اشتراكات عن مقالات جديدة ونرسلها إلى الدردشات. وبناء على ذلك نحصل على ما يلي كتقريب أولي (هنا التطوير بدون تجميل): مشروع جافا من الألف إلى الياء. تخطيط المشروع: قياس سبع مرات - قطع مرة واحدة - 2لا أتمنى أن تفهم خط يدي: أريد أن أبين بالضبط كيف وأين يبدأ التطوير. لقد اكتملت المرحلة الأولى: لقد قررنا بطريقة ما ما سيحدث. تم وصف النماذج/الجداول الموجودة في قاعدة البيانات أعلاه. لكن هذه مجرد مسودة: من الممكن، بل وينبغي، صقلها وتقديمها إلى شكل أكثر قابلية للقراءة. بينما كنت أقوم بالتلميع، تذكرت أنني أردت أيضًا الحصول على إحصائيات حول عمل الروبوت. أضف هذا. في هذا الرسم يكون من الواضح ماذا وكيف سيتم ترتيبه. وهذا يعني ما هي الجداول والحقول التي ستكون فيها، وما هي أسماء الكيانات التي ستكون للجداول. تقرر أن يكون هناك العديد منهم:
  • المستخدم - معلومات حول مستخدم Telegram الذي سيستخدم الروبوت الخاص بنا. كما ترون، نقوم فقط بحفظ معرف الدردشة والإشارة إلى ما إذا كان المستخدم نشطًا أم لا. لماذا؟ لأن هدفنا ليس جمع المعلومات عن المستخدمين، بل إفادتهم؛
  • GroupSub - ستجد هنا معلومات حول المجموعة التي اشتركت فيها وآخر مقال تم إرساله إلى المشتركين؛
  • الإحصائيات - لم أقم بإنشاء مخطط لها - سنفعل ذلك لاحقًا. ليس هذا هو الهدف الرئيسي في MVP للمشروع.
مشروع جافا من الألف إلى الياء. تخطيط المشروع: قياس سبع مرات - قطع مرة واحدة - 3بعد ذلك أردت أن أوضح بمزيد من التفصيل طريقة البحث عن مقالات جديدة. للقيام بذلك، استخدمت مخطط BPMN، والذي حولته إلى صورة وحصلت على ما يلي: مشروع جافا من الألف إلى الياء. تخطيط المشروع: قياس سبع مرات - قطع مرة واحدة - 4كل شيء هنا أكثر قابلية للقراءة والفهم. سنعمل وفق هذا المخطط في البحث. المديرين يحبون هذا المخطط حقًا، لأنه مفهوم ليس فقط للمبرمجين :D بشكل عام، تم البدء.

إنشاء مستودع للعمل

أخيرًا، يمكنك إنشاء مستودع للعمل مع روبوت التليجرام.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. نقوم بملء العناصر المألوفة لدينا بالفعل - اسم المستودع ووصفه الموجز.
  2. أضف ترخيصًا - Apache 2.0 (يمكنك اختيار الترخيص حسب تقديرك).
  3. مشروعنا متاح الآن - إليك الرابط الخاص به: JavaRush Telegrambot .

إنشاء مشروع في المستودع

للعمل مع المشروع، سيكون من الجيد استخدام أدوات GitHub، مثل project. ما هو؟ هذا هو المكان الذي يمكنك من خلاله إنشاء المهام وتتبع اكتمالها وحفظ حالة المهمة. تحديد من سينفذها وأكثر من ذلك. للقيام بذلك، في المشروع الذي تم إنشاؤه سنجد زر المشاريع ، وهناك سنقوم بإنشاء زر جديد: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6كما ترون، هنا أشرت إلى اسم المشروع ووصفته واخترت القالب الذي سنعمل عليه - كانبان الآلي. بالنسبة لنا الآن ليس من المهم ما يعنيه هذا. الشيء الرئيسي هو أنه سيكون لدينا لوحة بها مهام، مقسمة إلى أعمدة، حيث سيكون كل عمود هو حالة المهمة:
  1. للقيام - جميع المهام التي تم التخطيط للقيام بها؛
  2. قيد التقدم - المهام التي يتم العمل عليها حاليًا؛
  3. تم - المهام التي تم إكمالها بالفعل ضمن هذا المشروع.
بهذه الطريقة سنتعرف على حالة مهامنا. أي منها قيد التقدم، وأي منها تم إنجازه. علاوة على ذلك، فمن المهم والمريح ليس فقط في الحالات التي يوجد فيها فريق، ولكن أيضا عندما تعمل بمفردك. لكي يظهر شيء ما على اللوحة، تحتاج إلى إنشاء مشكلات.

نكتب قضايا (قضايا) للمشروع

لفهم المهام التي يجب كتابتها، دعونا نقرر ما سيكون لدينا في المشروع. نحتاج إلى تطبيق يمكن تشغيله بسهولة وسرعة، حتى نتمكن من الوصول إلى قاعدة البيانات، حتى نتمكن من إدارة مخطط قاعدة البيانات وتغييره، حتى نتمكن من تقديم طلبات REST في JavaRush للحصول على بيانات حول المقالات. وبناءً على ذلك يمكنك اختيار التقنيات التالية:
  • SpringBoot - كإطار عمل لتطبيقنا،
  • بيانات الربيع - للعمل مع قاعدة بيانات،
  • Flyway - للعمل مع عمليات ترحيل قاعدة البيانات،
  • MySQL - كقاعدة بيانات للمشروع،
  • Telegrambot StringBoot starter - مكتبة للعمل مع روبوت برقية،
  • Unirest هي مكتبة للتعامل مع طلبات REST.
من كل ما سبق، لنبدأ في إنشاء المهام.

قالب إنشاء المهام

سنقوم بإنشاء المهام باستخدام القالب التالي:
  1. سيبدو اسم المهمة كما يلي: JRTB-{IssueNumber}:{IssueDescription} ، حيث:
    • {IssueNumber} هو الرقم التسلسلي للمشكلة. لنأخذها مرة أخرى من المشكلة الأخيرة؛
    • {IssueDescription} - وصف مختصر للمشكلة.
  2. في نص المهمة، سنقدم وصفًا أكثر تفصيلاً لها (في بعض الأحيان قد يتطابق مع الوصف الموجود في اسم المهمة).
  3. معايير القبول هي قائمة المتطلبات، وبعدها يمكن اعتبار المهمة مكتملة. إذا جاز التعبير، معايير قبول المهمة. وباستخدامها يستطيع المراجع (من المراجع الإنجليزي - المراجع - الشخص الذي ينظر في كيفية إكمال المهمة) فهم ما إذا كانت المهمة قد اكتملت بالكامل أم لا.
باستخدام هذا القالب، سنقوم بإنشاء مهمتنا الأولى: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7ومن الجدير بالذكر أيضًا أنه عند إنشائه، قمت على الفور بتحديد المشروع الذي كانت هذه المهمة مناسبة له، ومن سينفذها (المكلف به) وما هي التسمية (التسمية) التي تنتمي إليها هذه المهمة. بعد ذلك، سأعرض ببساطة أسماء المهام مع وصف صغير وروابط لها. كلهم هنا . سنقوم بتنفيذ المهام بنفس الترتيب الموضح هنا تقريبًا:
  1. [ميزة] JRTB-0: إنشاء مشروع تمهيد Skeleton Spring - كل شيء واضح هنا: عليك القيام بالجزء الأول مما فعلناه في المقالة السابقة.
  2. [ميزة] JRTB-2: أضف روبوت برقية إلى المشروع - أضف روبوتًا فارغًا سيستجيب ببساطة ويقول إنه على قيد الحياة وبصحة جيدة.
  3. [ميزة] JRTB-3: تنفيذ نمط الأوامر لبرنامج telegrambot - فلنقم بإعداد النهج الصحيح للتعامل مع الأوامر في روبوت telegram. حتى الآن لعدة فرق.
  4. [ميزة] JRTB-1: إضافة طبقة مستودع - هذه واحدة من أكبر المهام - فهي تجمع كل ما يلزم القيام به للعمل مع قاعدة البيانات.
  5. [ميزة] JRTB-5: كمستخدم، أريد إضافة المجموعة إلى الاشتراك - هذه هي بالفعل قصة المستخدم الأولى في فهم Agile. ستكون هذه فائدة حقيقية لمستخدمينا: سيكون من الممكن إضافة اشتراكات جماعية إلى الروبوت.
  6. [ميزة] JRTB-12: تنفيذ الجدولة لإرسال إشعار حول المقالات الجديدة - هنا سيتم تنفيذ البحث عن المقالات الجديدة إذا تم نشرها لكل مجموعة وإرسالها إلى جميع المستخدمين المشتركين في المجموعات.
  7. [ميزة] JRTB-6: كمستخدم، أريد أن أرى قائمة باشتراكات مجموعتي - كل شيء بسيط هنا: نضيف أمرًا يعرض قائمة بجميع المجموعات التي اشترك فيها المستخدم.
  8. [ميزة] JRTB-7: كمستخدم، أريد إزالة اشتراك المجموعة من اشتراكاتي - هنا تحتاج إلى إزالة اشتراك المستخدم في التحديثات في المجموعة.
  9. [الميزة] JRTB-8: بصفتي مستخدمًا، أريد تعيين برنامج غير نشط باستخدام الروبوت - قم بتنفيذ إيقاف الروبوت. أي كل ما يجب القيام به في نظامنا حتى يتوقف العمل. أضف الأمر /stop إلى المعالجة.
  10. [ميزة] JRTB-9: كمستخدم، أريد أن أبدأ العمل مع الروبوت أو أن أقوم بتنشيطه إذا استخدمته من قبل - أضف معالجة الأمر /start. بالضبط بالطريقة التي نريدها.
  11. [ميزة] JRTB-10: كمسؤول، أريد رؤية إحصائيات الروبوت - إنشاء مجموعة من إحصائيات الروبوت. إضافة قدرات المسؤول.
  12. [ميزة] JRTB-11: كمستخدم، أريد أن أرى الوثائق الخاصة ببوت التلغراف هذا - كتابة الوثائق. نعم، نعم، أيها الأصدقاء، لا يمكنك العيش بدونها، وكلما تعلمت القيام بذلك، كلما كان ذلك أفضل بالنسبة لك))
يبدو هذا بالفعل بمثابة بداية المشروع. إذا جاز التعبير، فقد عملنا كمهندس مشروع ومحلل أعمال.

ملء المستودع

ما الذي يجب علينا فعله قبل أن نبدأ بالبرمجة؟ - أيها الكاتب، كم من هذه الفقرات يمكنك إضافتها، هل تخرجها من الهاوية؟؟ — لا، جودة العمل تظهر في التفاصيل. وهم الذين لهم معنى. لذلك دعونا نضيف تفاصيل أخرى. لكي يصبح المشروع شائعًا ومفهومًا للمطورين الآخرين، يجب ملؤه. ماذا يجب أن أضيف؟ لقد وصفت قائمة كاملة بما يمكن القيام به في المقالة تحسين العمل مع مشاريعك على GitHub: التعرف على Github Template Repository . أنا أوصي قراءته. من المهم بالنسبة لنا أن يكون لدينا إصدار واضح، وفهم واضح لما نقوم به. ولذلك، أضفت ملف RELEASE_NOTES الذي سيتم فيه تسجيل التغييرات في مشروعنا. على سبيل المثال، يمكنك إلقاء نظرة على RELEASE_NOTES من مشروعي (نعم، لماذا لا تظهر ما أضع فيه طاقتي وإبداعي). يتم وصف التغييرات لكل إصدار جديد هناك. أضفت أيضًا قوالب لإنشاء مهام جديدة، والتي تحتوي على 4 خيارات:
  • تقرير الأخطاء هو مهمة أنشأها المستخدمون/المختبرون الذين وجدوا خطأً في عملهم. وهذا شيء مهم للغاية: فهو يساعد في إدارة إصلاحات الأخطاء؛
  • طلب الميزة هو مهمة لإضافة وظائف جديدة. جميع المهام الأولى في المشروع هي مهام طلب ميزات؛
  • طلب التحسين - مهمة لتحسين تشغيل التطبيق. على سبيل المثال، لتغيير إجابات الاختبار عند العمل مع الروبوت. أنا لست كاتبًا تقنيًا ولا يمكنني التوصل إلى إجابات صحيحة تمامًا. فإذا كان لديك الرغبة والقدرة، اعرضها :)
  • السؤال هو سؤال للمطورين حول تشغيل التطبيق. شيء مفيد جدا. لنفترض أنه لا يوجد فهم للعمل أو أن هناك شكوكًا حول بعض الأسئلة - يمكنك طرح سؤال بهذه الطريقة والحصول على إجابة مباشرة.
إذا نظرت إلى GitHub، فسوف يبدو تمامًا كما يلي: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8لدينا حاليًا أيضًا مستند حول العمل مع JavaRush API للعمل مع المجموعات.

ماذا بعد؟

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

الاستنتاجات

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

توجد قائمة بجميع المواد الموجودة في السلسلة في بداية هذه المقالة.

تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION