JavaRush /وبلاگ جاوا /Random-FA /برنامه ریزی پروژه: دو بار اندازه گیری - یک بار برش - "پرو...
Roman Beekeeper
مرحله

برنامه ریزی پروژه: دو بار اندازه گیری - یک بار برش - "پروژه جاوا از A تا Z"

در گروه منتشر شد
با سلام خدمت همکاران امروز قصد داریم در مورد نوع کارهای آماده سازی که باید قبل از شروع برنامه نویسی وحشیانه انجام دهید صحبت کنیم. به طور خاص، در مورد برنامه ریزی و ایجاد معماری برنامه. پروژه جاوا از A تا Z. برنامه ریزی پروژه: هفت بار اندازه گیری کنید - یک بار برش دهید - 1اما از کجا شروع کنیم؟ چگونه این معماری را بسازیم؟ مانند همه چیز، شما باید از ابتدا شروع کنید. یعنی - با IDEA. ایده پروژه ما ایجاد یک ربات تلگرام مفید با قابلیت های اولیه بود. اجازه دهید دقیقاً همان چیزی را تکرار کنیم: "من به عنوان یک کاربر می‌خواهم زمانی که مقاله‌های جدیدی در آن گروه‌هایی در JavaRush منتشر می‌شوند، اعلان‌ها را دریافت کنم. با پیروی از اصل YAGNI، ما برنامه خود را خواهیم ساخت. این بدان معنی است که ما فقط آنچه را که نیاز داریم می گیریم. ما عملکردی را از قبل و در رزرو ایجاد نمی کنیم فقط به این دلیل که می خواهیم و روزی ممکن است واقعاً مفید باشد. بله، ما یک برنامه کاربردی خوانا و قابل توسعه ایجاد خواهیم کرد، اما این بدان معنا نیست که یک طرح پایگاه داده "برای رشد" ایجاد خواهیم کرد. برای اینکه از این "رشد" حمایت نکنم، تصمیم گرفتم که بهتر است آن را به کلی کنار بگذارم. این به ما کمک می کند از پشتیبانی غیر ضروری در طول توسعه و آزمایش های غیر ضروری جلوگیری کنیم. بعداً، وقتی پروژه ما به مرحله تولید برسد (باز هم یک Anglicism، از مخفف prod - production)، ما قادر خواهیم بود کارهای بیشتری انجام دهیم. وقتی در مورد یک ایده تصمیم گرفتید، باید کمی شیطنت کنید و نقاشی بکشید. چه چیزی را ترسیم کنیم؟ ما به توانایی ذخیره داده‌ها در اشتراک‌های گروه‌هایی از کاربران مختلف نیاز داریم. می دانم که می توانید از یوزر آیدی به صورت آیدی چت در تلگرام استفاده کنید. و ایده ای در مورد چگونگی انجام جستجوی مقالات جدید وجود دارد: ما در همه گروه هایی که اشتراک مقالات جدید دارند جستجو می کنیم و آنها را به چت می فرستیم. بر این اساس، به عنوان اولین تقریب، موارد زیر را دریافت می کنیم (در اینجا توسعه بدون تزئین است): پروژه جاوا از A تا Z. برنامه ریزی پروژه: هفت بار اندازه گیری - یک بار برش - 2من امیدوارم که دستخط من را درک کنید: می خواهم دقیقاً نشان دهم که توسعه چگونه و از کجا شروع می شود. مرحله اول تکمیل شده است: ما به نوعی تصمیم گرفته ایم که چه اتفاقی خواهد افتاد. مدل ها/جدول ها در پایگاه داده در بالا توضیح داده شده اند. اما این یک پیش‌نویس است: می‌توان و باید آن را جلا داد و به شکلی خواناتر آورد. در حین صیقل دادن، به یاد آوردم که می‌خواهم آماری از کار ربات به دست بیاورم. این را اضافه کرد. در این نقاشی مشخص است که چی و چگونه چیده خواهد شد. یعنی چه جداول و فیلدهایی در آنها خواهد بود، چه نام نهادی برای جداول خواهد بود. تصمیم گرفته شد که چندین مورد از آنها وجود داشته باشد:
  • کاربر - اطلاعات کاربری تلگرامی که از ربات ما استفاده خواهد کرد. همانطور که می بینید، ما فقط شناسه چت و پرچم را ذخیره می کنیم که آیا کاربر فعال است یا نه. چرا؟ زیرا هدف ما جمع آوری اطلاعات در مورد کاربران نیست، بلکه سود بردن آنهاست.
  • GroupSub - در اینجا اطلاعاتی در مورد گروهی که در آن اشتراک دارید و آخرین مقاله ای که برای مشترکین ارسال شده است وجود دارد.
  • آمار - من طرحی برای آن ایجاد نکرده ام - ما بعداً این کار را انجام خواهیم داد. این هدف اصلی در MVP پروژه نیست.
پروژه جاوا از A تا Z. برنامه ریزی پروژه: هفت بار اندازه گیری - یک بار برش - 3پس از آن، می خواستم روش جستجوی مقالات جدید را با جزئیات بیشتری نشان دهم. برای انجام این کار، من از یک نمودار BPMN استفاده کردم که آن را به تصویر تبدیل کردم و به این نتیجه رسیدم: پروژه جاوا از A تا Z. برنامه ریزی پروژه: هفت بار اندازه گیری کنید - یک بار برش دهید - 4همه چیز در اینجا قابل خواندن و درک تر است. ما طبق این طرح در جستجو کار خواهیم کرد. مدیران واقعاً این طرح را دوست دارند، زیرا نه تنها برای برنامه نویسان قابل درک است:D به طور کلی، شروعی انجام شده است.

یک مخزن برای کار ایجاد کنید

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

یک پروژه در مخزن ایجاد کنید

برای کار با پروژه، خوب است از ابزارهای GitHub مانند پروژه استفاده کنید. آن چیست؟ این مکانی است که می توانید وظایفی را ایجاد کنید، تکمیل آنها را پیگیری کنید و وضعیت کار را ذخیره کنید. تعیین کنید چه کسی آنها را اجرا خواهد کرد و بیشتر. برای انجام این کار، در پروژه ایجاد شده، دکمه Projects را پیدا می کنیم ، و در آنجا یک مورد جدید ایجاد می کنیم: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6همانطور که می بینید، در اینجا نام پروژه را مشخص کردم، آن را شرح دادم و قالبی را انتخاب کردم که روی آن کار خواهیم کرد - کانبان خودکار اکنون برای ما مهم نیست که این به چه معناست. نکته اصلی این است که ما یک تابلو با وظایف خواهیم داشت که به ستون هایی تقسیم شده است که در آن هر ستون وضعیت کار را نشان می دهد:
  1. برای انجام - تمام وظایفی که برای انجام برنامه ریزی شده است.
  2. در حال انجام - وظایفی که در حال حاضر روی آنها کار می شود.
  3. انجام شده - کارهایی که قبلاً در این پروژه تکمیل شده اند.
به این ترتیب ما از وضعیت وظایف خود مطلع خواهیم شد. کدام یک در حال انجام است، کدام یک انجام شده است. علاوه بر این، این مهم و راحت است نه تنها در مواردی که یک تیم وجود دارد، بلکه زمانی که به تنهایی کار می کنید. برای اینکه چیزی روی برد ظاهر شود، باید Issues ایجاد کنید.

ما مسائل (مسائل) را برای پروژه می نویسیم

برای درک اینکه چه وظایفی باید بنویسیم، بیایید تصمیم بگیریم که در پروژه چه خواهیم داشت. ما به برنامه ای نیاز داریم که به راحتی و سریع راه اندازی شود تا بتوانیم به پایگاه داده دسترسی داشته باشیم تا بتوانیم طرحواره پایگاه داده را مدیریت و تغییر دهیم تا بتوانیم درخواست های REST را در JavaRush برای به دست آوردن داده های مقالات انجام دهیم. بر این اساس، می توانید فناوری های زیر را انتخاب کنید:
  • SpringBoot - به عنوان چارچوبی برای برنامه ما،
  • Spring Data - برای کار با پایگاه داده،
  • Flyway - برای کار با انتقال پایگاه داده،
  • MySQL - به عنوان پایگاه داده برای پروژه،
  • Telegrambot StringBoot starter - کتابخانه ای برای کار با ربات تلگرام،
  • Unirest یک کتابخانه برای کار با درخواست های REST است.
از تمام موارد بالا، بیایید شروع به ایجاد وظایف کنیم.

الگوی ایجاد کار

ما وظایف را با استفاده از الگوی زیر ایجاد خواهیم کرد:
  1. نام کار به این شکل خواهد بود: JRTB-{IssueNumber}:{IssueDescription} ، که در آن:
    • {IssueNumber} شماره سریال شماره است. بیایید آن را یکی دیگر از مشکل آخر در نظر بگیریم.
    • {IssueDescription} - شرح مختصری از موضوع.
  2. در متن کار، شرح مفصل تری از آن خواهیم داشت (گاهی اوقات ممکن است با توضیحات در نام کار مطابقت داشته باشد).
  3. معیارهای پذیرش لیستی از الزامات است که پس از آن می توان کار را تکمیل شده در نظر گرفت. بنابراین، معیارهای پذیرش تکلیف. با استفاده از آنها، یک بازبین (از انگلیسی Reviewer - Reviewer - شخصی که به نحوه تکمیل یک کار نگاه می کند) می تواند بفهمد که آیا کار به طور کامل انجام شده است یا خیر.
با استفاده از این الگو، ما اولین وظیفه خود را ایجاد خواهیم کرد: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7همچنین شایان ذکر است که هنگام ایجاد آن، من بلافاصله تعیین کردم که این کار برای کدام پروژه مناسب است، چه کسی آن را انجام می دهد (تخصیص دهنده) و این کار متعلق به کدام برچسب (برچسب) است. در مرحله بعد، من به سادگی نام وظایف را با توضیحات کوچک و پیوندهایی به آنها نشان خواهم داد. همه آنها اینجا هستند . ما وظایف را تقریباً به همان ترتیبی که در اینجا نشان داده شده انجام خواهیم داد:
  1. [ویژگی] JRTB-0: پروژه بوت Skeleton Spring را ایجاد کنید - همه چیز در اینجا واضح است: شما باید قسمت اول کاری را که در مقاله قبلی انجام دادیم انجام دهید.
  2. [ویژگی] JRTB-2: ربات تلگرام را به پروژه اضافه کنید - یک ربات خالی اضافه کنید که به سادگی پاسخ دهد و بگوید که زنده و سالم است.
  3. [ویژگی] JRTB-3: اجرای الگوی فرمان برای ربات تلگرام - بیایید روش صحیح کار با دستورات را در ربات تلگرام تنظیم کنیم. تا الان برای چند تیم.
  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 . خواندن آن را به شدت توصیه می کنم. برای ما مهم است که نسخه‌سازی واضح داشته باشیم، درک روشنی از کاری که انجام می‌دهیم. بنابراین، من یک فایل RELEASE_NOTES اضافه کردم که در آن تغییرات پروژه ما ثبت می شود. به عنوان مثال، می‌توانید به RELEASE_NOTES پروژه من نگاه کنید (بله، چرا انرژی و خلاقیتم را در چه چیزی به کار می‌برم) نشان ندهم. تغییرات هر نسخه جدید در آنجا توضیح داده شده است. من همچنین قالب هایی برای ایجاد وظایف جدید اضافه کردم که دارای 4 گزینه هستند:
  • گزارش اشکال کاری است که توسط کاربران/تست‌کننده‌هایی ایجاد می‌شود که اشکالی را در کار خود پیدا می‌کنند. این یک چیز بسیار مهم است: به مدیریت رفع اشکال کمک می کند.
  • درخواست ویژگی وظیفه ای برای افزودن عملکرد جدید است. همه اولین وظایف در پروژه، وظایف درخواست ویژگی هستند.
  • درخواست بهبود - وظیفه ای برای بهبود عملکرد برنامه. به عنوان مثال، برای تغییر پاسخ های تست هنگام کار با یک ربات. من یک نویسنده فنی نیستم و می توانم به پاسخ های نه کاملاً صحیح برسم. پس اگر میل و توانایی داری پیشنهاد بده :)
  • سوال یک سوال برای توسعه دهندگان در مورد عملکرد برنامه است. یک چیز بسیار مفید فرض کنید درکی از کار وجود ندارد یا در مورد سؤالی شک و شبهه وجود دارد - می توانید از این طریق یک سؤال بپرسید و از دست اول پاسخ بگیرید.
اگر به GitHub نگاه کنید، دقیقاً به این شکل است: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8ما همچنین در حال حاضر سندی در مورد کار با JavaRush API برای کار با گروه ها داریم.

بعدش چی؟

خوب، همه این مراحل را انجام می دهیم و چه، پروژه بسته می شود؟ نه اصلا. این پروژه به حیات خود ادامه خواهد داد. این برنامه توسط من و همه دانشجویان/فارغ التحصیلان JavaRush که می خواهند در آن شرکت کنند، توسعه داده خواهد شد. برنامه های شما برای آینده چیست؟ بسیاری از آنها را. اولین طرح ایجاد یک کلاینت جاوا برای JavaRush API است. توسعه دهندگان قول داده اند که Swagger خود را باز کنند. ما همچنین به این خواهیم پرداخت که سوگند چیست. چیز جالب و بسیار مفید در ادامه سایت JavaRush را با یک ربات تلگرام ادغام خواهیم کرد. بیایید کاربر را برای همگام سازی اشتراک ها به ربات متصل کنیم. بیایید آماری از اتمام دوره ایجاد کنیم. و هر چیزی که به عنوان یک انجمن JavaRush می خواهید.

نتیجه گیری

امروز در مورد پشت صحنه کار قبل از ایجاد پروژه صحبت کردیم. یا به طور دقیق تر، در مورد چگونگی ایجاد یک برنامه کاری، که بدون آن می توانید انرژی زیادی را هدر دهید. تکرار می کنم، شروع پروژه قبلاً در اینجا در دسترس عموم قرار گرفته است . طبق معمول، من به شما پیشنهاد می کنم در حساب کاربری من در Github مشترک شوید. به این ترتیب می توانید تغییرات پروژه را قبل از انتشار مقاله دریافت کنید. من قبلاً فرض می کنم که همه طرف های علاقه مند در Github ثبت نام کرده اند. بله، پروژه به آن سرعتی که ما می خواهیم پیش نمی رود. با این حال، درست مانند پروژه های واقعی در محل کار. در مقاله بعدی اضافه کردن اولین وظایف را شرح خواهم داد. از همه برای خواندن متشکرم و به زودی شما را می بینم!

فهرستی از تمام مواد این مجموعه در ابتدای این مقاله است.

نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION