JavaRush /จาวาบล็อก /Random-TH /การวางแผนโครงการ: วัดสองครั้ง - ตัดครั้งเดียว - "โครงการ ...
Roman Beekeeper
ระดับ

การวางแผนโครงการ: วัดสองครั้ง - ตัดครั้งเดียว - "โครงการ Java จาก A ถึง Z"

เผยแพร่ในกลุ่ม
สวัสดีเพื่อนร่วมงาน วันนี้เราจะมาพูดถึงงานเตรียมการที่คุณต้องทำก่อนที่จะเริ่มเขียนโค้ดอย่างจริงจัง โดยเฉพาะอย่างยิ่งเกี่ยวกับการวางแผนและการสร้างสถาปัตยกรรมแอปพลิเคชัน โครงการ Java จาก A ถึง Z การวางแผนโครงการ: วัดเจ็ดครั้ง - ตัดหนึ่งครั้ง - 1แต่จะเริ่มต้นที่ไหน? จะสร้างสถาปัตยกรรมนี้ได้อย่างไร? เช่นเดียวกับทุกสิ่ง คุณต้องเริ่มต้นจากจุดเริ่มต้น กล่าวคือ - ด้วย IDEA แนวคิดของโครงการของเราคือการสร้างบอตโทรเลขที่มีประโยชน์พร้อมฟังก์ชันพื้นฐาน ให้เราทำซ้ำอย่างชัดเจนว่า “ในฐานะผู้ใช้ ฉันต้องการที่จะรับการแจ้งเตือนเมื่อมีการเผยแพร่บทความใหม่ในกลุ่มเหล่านั้นบน JavaRush ที่ฉันสนใจ” ตามหลักการ YAGNI เราจะสร้างแอปพลิเคชันของเรา ซึ่งหมายความว่าเราจะเอาเฉพาะสิ่งที่เราต้องการเท่านั้น เราจะไม่สร้างฟังก์ชันการทำงานไว้ล่วงหน้าและสำรองไว้เพียงเพราะเราต้องการ และสักวันหนึ่งมันอาจจะมีประโยชน์จริง ๆ ใช่ เราจะสร้างแอปพลิเคชันที่สามารถอ่านและขยายได้ แต่ไม่ได้หมายความว่าเราจะสร้างสคีมาฐานข้อมูล "เพื่อการเติบโต" เพื่อไม่ให้สนับสนุน "การเติบโต" นี้ ฉันจึงตัดสินใจว่าควรละทิ้งมันไปเลยจะดีกว่า ซึ่งจะช่วยให้เราหลีกเลี่ยงการสนับสนุนที่ไม่จำเป็นในระหว่างการพัฒนาและการทดสอบที่ไม่จำเป็น ต่อมาเมื่อโครงการของเราเข้าสู่การผลิต (อีกครั้งหนึ่ง Anglicism จากตัวย่อ prod - การผลิต) เราก็จะสามารถทำอะไรบางอย่างได้มากขึ้น เมื่อคุณตัดสินใจเลือกไอเดียได้แล้ว คุณจะต้องทำตัว ซุกซน และวาดรูป เล็กน้อย จะวาดอะไร? เราจะต้องมีความสามารถในการบันทึกข้อมูลการสมัครสมาชิกไปยังกลุ่มผู้ใช้ที่แตกต่างกัน ฉันรู้ว่าคุณสามารถใช้ ID ผู้ใช้ในรูปแบบของ ID แชทใน Telegram และมีแนวคิดว่าการค้นหาบทความใหม่จะดำเนินการอย่างไร: เราจะค้นหาในทุกกลุ่มที่สมัครรับบทความใหม่และส่งไปที่แชท จากนี้ เราได้สิ่งต่อไปนี้เป็นการประมาณครั้งแรก (นี่คือการพัฒนาที่ไม่มีการปรุงแต่ง): โครงการ Java จาก A ถึง Z การวางแผนโครงการ: วัดเจ็ดครั้ง - ตัดหนึ่งครั้ง - 2ฉันไม่หวังว่าคุณจะเข้าใจลายมือของฉัน: ฉันต้องการแสดงให้เห็นว่าการพัฒนาเริ่มต้นอย่างไรและที่ไหน ขั้นตอนแรกเสร็จสิ้นแล้ว: เราได้ตัดสินใจแล้วว่าอะไรจะเกิดขึ้น โมเดล/ตารางในฐานข้อมูลอธิบายไว้ข้างต้น แต่นี่คือฉบับร่าง มันสามารถและควรได้รับการขัดเกลาและทำให้เป็นรูปแบบที่อ่านง่ายขึ้น ขณะที่ฉันกำลังขัดเกลา ฉันจำได้ว่าฉันต้องการดูสถิติการทำงานของบอทด้วย เพิ่มสิ่งนี้ ในภาพวาดนี้มีความชัดเจนว่าจะจัดเรียงอะไรและอย่างไร นั่นคือตารางและฟิลด์ใดที่จะอยู่ในตารางเหล่านั้น ชื่อเอนทิตีใดสำหรับตาราง มีตัดสินใจว่าจะมีหลายอย่าง:
  • ผู้ใช้ - ข้อมูลเกี่ยวกับผู้ใช้โทรเลขที่จะใช้บอทของเรา อย่างที่คุณเห็น เราจะบันทึกเฉพาะ ID แชทและแฟล็กไม่ว่าผู้ใช้จะใช้งานอยู่หรือไม่ก็ตาม ทำไม เพราะเป้าหมายของเราไม่ใช่การรวบรวมข้อมูลเกี่ยวกับผู้ใช้ แต่เพื่อประโยชน์ต่อพวกเขา
  • GroupSub - ที่นี่จะเป็นข้อมูลเกี่ยวกับกลุ่มที่คุณสมัครสมาชิกและบทความล่าสุดที่ส่งถึงสมาชิก
  • สถิติ - ฉันไม่ได้สร้างสคีมาสำหรับมัน - เราจะทำในภายหลัง นี่ไม่ใช่เป้าหมายหลักใน MVP ของโครงการ
โครงการ Java จาก A ถึง Z การวางแผนโครงการ: วัดเจ็ดครั้ง - ตัดหนึ่งครั้ง - 3หลังจากนั้นฉันต้องการแสดงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีค้นหาบทความใหม่ ในการทำเช่นนี้ ฉันใช้แผนภาพ BPMN ซึ่งฉันแปลงเป็นรูปภาพและได้รับสิ่งนี้: โครงการ Java จาก A ถึง Z การวางแผนโครงการ: วัดเจ็ดครั้ง - ตัดหนึ่งครั้ง - 4ทุกสิ่งที่นี่สามารถอ่านและเข้าใจได้มากขึ้น เราจะทำงานตามรูปแบบนี้ในการค้นหา ผู้จัดการชอบโครงร่างนี้มาก เพราะไม่เพียงแต่โปรแกรมเมอร์จะเข้าใจได้เท่านั้น :D โดยทั่วไปแล้ว ได้มีการเริ่มต้นแล้ว

สร้างพื้นที่เก็บข้อมูลสำหรับการทำงาน

สุดท้ายนี้ คุณสามารถสร้างพื้นที่เก็บข้อมูลสำหรับการทำงานกับบอตโทรเลขได้Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. เรากรอกรายการที่เราคุ้นเคยอยู่แล้ว - ชื่อของที่เก็บคำอธิบายสั้น ๆ
  2. เพิ่มใบอนุญาต - Apache 2.0 (คุณสามารถเลือกใบอนุญาตได้ตามดุลยพินิจของคุณ)
  3. โครงการ ของเราพร้อมใช้งานแล้ว - นี่คือลิงค์ไป: JavaRush Telegrambot

สร้างโปรเจ็กต์ในพื้นที่เก็บข้อมูล

หากต้องการทำงานกับโปรเจ็กต์ จะเป็นการดีหากใช้เครื่องมือ GitHub เช่น โปรเจ็กต์ มันคืออะไร? นี่คือที่ที่คุณสามารถสร้างงาน ติดตามความสำเร็จ และบันทึกสถานะของงานได้ กำหนดว่าใครจะเป็นผู้ดำเนินการและอื่น ๆ อีกมากมาย ในการทำเช่นนี้ในโครงการที่สร้างขึ้นเราจะพบ ปุ่ม โครงการและเราจะสร้างโครงการใหม่ที่นั่นJava-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6อย่างที่คุณเห็นฉันระบุชื่อโครงการที่นี่อธิบายและเลือกเทมเพลตที่เราจะใช้ทำงาน - คัมบังอัตโนมัติ สำหรับเราตอนนี้มันไม่สำคัญนักว่าสิ่งนี้หมายถึงอะไร สิ่งสำคัญคือเราจะมีกระดานที่มีงานแบ่งออกเป็นคอลัมน์โดยแต่ละคอลัมน์จะเป็นสถานะของงาน:
  1. สิ่งที่ต้องทำ - งานทั้งหมดที่วางแผนไว้ว่าจะทำ;
  2. อยู่ระหว่างดำเนินการ - งานที่กำลังดำเนินการอยู่
  3. เสร็จสิ้น - งานที่เสร็จสิ้นภายในโครงการนี้แล้ว
ด้วยวิธีนี้เราจะทราบสถานะของงานของเรา อันไหนกำลังดำเนินการ อันไหนเสร็จแล้ว ยิ่งไปกว่านั้น นี่เป็นสิ่งสำคัญและสะดวกไม่เพียงแต่ในกรณีที่มีทีมเท่านั้น แต่ยังรวมถึงเมื่อคุณทำงานด้วยตัวเองด้วย เพื่อให้บางสิ่งปรากฏบนกระดาน คุณต้องสร้างประเด็นขึ้นมา

การเขียนประเด็น (ประเด็น) สำหรับโครงการ

เพื่อให้เข้าใจถึงงานที่ต้องเขียน เรามาตัดสินใจว่าเราจะมีอะไรบ้างในโครงการ เราต้องการแอปพลิเคชันที่สามารถเปิดใช้งานได้ง่ายและรวดเร็ว เพื่อให้เราสามารถเข้าถึงฐานข้อมูล เพื่อที่เราจะสามารถจัดการและเปลี่ยนแปลงสคีมาฐานข้อมูล เพื่อให้เราสามารถส่งคำขอ REST ใน JavaRush เพื่อรับข้อมูลเกี่ยวกับบทความได้ จากข้อมูลนี้ คุณสามารถเลือกเทคโนโลยีต่อไปนี้:
  • SpringBoot - เป็นเฟรมเวิร์กสำหรับแอปพลิเคชันของเรา
  • Spring Data - สำหรับการทำงานกับฐานข้อมูล
  • 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: ใช้รูปแบบคำสั่งสำหรับเทเลแกรมบอต - มาตั้งค่าแนวทางที่ถูกต้องในการทำงานกับคำสั่งในบอตโทรเลขกันดีกว่า จนถึงขณะนี้หลายทีม
  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

ข้อสรุป

วันนี้เราพูดถึงเบื้องหลังการทำงานก่อนการจัดทำโปรเจ็กต์ หรือเจาะจงกว่านั้นคือการสร้างแผนงานโดยที่ไม่ต้องเปลืองพลังงานมากนัก ฉันขอย้ำอีกครั้งว่าจุด เริ่มต้นของโครงการได้เปิดเผยต่อสาธารณะแล้วที่นี่ ตามปกติ ฉันขอแนะนำให้คุณสมัครรับบัญชีของฉันบน Github วิธีนี้จะทำให้คุณสามารถรับการเปลี่ยนแปลงในโครงการก่อนที่บทความจะเผยแพร่ ฉันสันนิษฐานแล้วว่าผู้มีส่วนได้เสียทั้งหมดได้ลงทะเบียนบน Github แล้ว ใช่ โครงการไม่ได้ดำเนินไปเร็วเท่าที่เราต้องการ อย่างไรก็ตาม เช่นเดียวกับโครงการจริงในที่ทำงาน ในบทความถัดไป ผมจะอธิบายการเพิ่มงานแรก ขอบคุณทุกคนที่อ่านและพบกันเร็ว ๆ นี้!

รายการเนื้อหาทั้งหมดในซีรีส์นี้อยู่ที่ตอนต้นของบทความนี้

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION