JavaRush /Blog Java /Random-VI /Lập kế hoạch dự án: đo hai lần - cắt một lần - "Dự án Jav...
Roman Beekeeper
Mức độ

Lập kế hoạch dự án: đo hai lần - cắt một lần - "Dự án Java từ A đến Z"

Xuất bản trong nhóm
Xin chào các đồng nghiệp. Hôm nay chúng ta sẽ nói về loại công việc chuẩn bị bạn cần làm trước khi bắt đầu viết mã điên cuồng. Cụ thể hơn là về việc lập kế hoạch và tạo ra kiến ​​trúc ứng dụng. Dự án Java từ A đến Z. Lập kế hoạch dự án: đo bảy lần - cắt một lần - 1Nhưng bắt đầu từ đâu? Làm thế nào để xây dựng kiến ​​trúc này? Như với mọi thứ, bạn cần phải bắt đầu lại từ đầu. Cụ thể - với IDEA. Ý tưởng của dự án của chúng tôi là tạo ra một bot telegram hữu ích với chức năng cơ bản. Hãy để chúng tôi nhắc lại chính xác điều gì: “Tôi, với tư cách là người dùng, muốn có thể nhận được thông báo khi các bài viết mới được xuất bản trong các nhóm đó trên JavaRush mà tôi quan tâm”. Theo nguyên tắc YAGNI, chúng tôi sẽ xây dựng ứng dụng của mình. Điều này có nghĩa là chúng tôi sẽ chỉ lấy những gì chúng tôi cần. Chúng tôi sẽ không tạo trước và dự trữ chức năng chỉ vì chúng tôi muốn và một ngày nào đó nó có thể thực sự hữu ích. Có, chúng tôi sẽ tạo một ứng dụng có thể đọc và mở rộng được, nhưng điều này không có nghĩa là chúng tôi sẽ tạo một lược đồ cơ sở dữ liệu “để phát triển”. Để không hỗ trợ cho sự “tăng trưởng” này, tôi quyết định rằng tốt hơn hết là nên từ bỏ nó hoàn toàn. Điều này sẽ giúp chúng ta tránh được những hỗ trợ không cần thiết trong quá trình phát triển và thử nghiệm không cần thiết. Sau này, khi dự án của chúng tôi đi vào sản xuất (lại là Anh giáo, từ viết tắt prod - production), chúng tôi sẽ có thể làm được nhiều điều hơn thế. Khi đã quyết định được ý tưởng, bạn cần nghịch ngợm một chút và vẽ. Vẽ gì? Chúng tôi sẽ cần khả năng lưu dữ liệu về đăng ký cho các nhóm người dùng khác nhau. Tôi biết rằng bạn có thể sử dụng ID người dùng dưới dạng ID trò chuyện trong Telegram. Và có một ý tưởng về cách thực sự tiến hành tìm kiếm các bài viết mới: chúng tôi sẽ tìm kiếm trong tất cả các nhóm có đăng ký các bài báo mới và gửi chúng đến các cuộc trò chuyện. Dựa trên điều này, chúng ta có được kết quả gần đúng đầu tiên sau đây (đây là quá trình phát triển không thêm phần tô điểm): Dự án Java từ A đến Z. Lập kế hoạch dự án: đo bảy lần - cắt một lần - 2Tôi không hy vọng rằng bạn sẽ hiểu chữ viết tay của tôi: Tôi muốn chỉ ra chính xác quá trình phát triển bắt đầu như thế nào và ở đâu. Giai đoạn đầu tiên đã hoàn thành: bằng cách nào đó chúng tôi đã quyết định được điều gì sẽ xảy ra. Các mô hình/bảng trong cơ sở dữ liệu được mô tả ở trên. Nhưng đây chỉ là bản nháp: nó có thể và cần được trau chuốt và chuyển sang dạng dễ đọc hơn. Trong khi đánh bóng, tôi nhớ rằng tôi cũng muốn lấy số liệu thống kê về công việc của bot. Đã thêm cái này. Trong bản vẽ này, rõ ràng nó sẽ được sắp xếp những gì và như thế nào. Tức là, chúng sẽ có những bảng và trường nào, tên thực thể nào cho các bảng. Người ta đã quyết định rằng sẽ có một vài trong số họ:
  • Người dùng - thông tin về người dùng điện tín sẽ sử dụng bot của chúng tôi. Như bạn có thể thấy, chúng tôi chỉ lưu ID trò chuyện và cờ cho dù người dùng có hoạt động hay không. Tại sao? Bởi vì mục tiêu của chúng tôi không phải là thu thập thông tin về người dùng mà là mang lại lợi ích cho họ;
  • GroupSub - đây sẽ là thông tin về nhóm mà bạn đăng ký và bài viết mới nhất được gửi tới người đăng ký;
  • Thống kê - Tôi chưa tạo lược đồ cho nó - chúng ta sẽ làm việc đó sau. Đây không phải là mục tiêu chính trong MVP của dự án.
Dự án Java từ A đến Z. Lập kế hoạch dự án: đo bảy lần - cắt một lần - 3Sau đó, tôi muốn trình bày chi tiết hơn về cách tìm kiếm bài viết mới. Để làm điều này, tôi đã sử dụng sơ đồ BPMN mà tôi đã chuyển đổi thành hình ảnh và nhận được điều này: Dự án Java từ A đến Z. Lập kế hoạch dự án: đo bảy lần - cắt một lần - 4Mọi thứ ở đây đều dễ đọc và dễ hiểu hơn. Chúng tôi sẽ làm việc theo sơ đồ này trong quá trình tìm kiếm. Các nhà quản lý thực sự thích kế hoạch này, bởi vì nó không chỉ dễ hiểu đối với các lập trình viên :D Nói chung, một sự khởi đầu đã được thực hiện.

Tạo kho lưu trữ cho công việc

Cuối cùng, bạn có thể tạo một kho lưu trữ để làm việc với bot telegram.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Chúng tôi điền vào các mục đã quen thuộc với chúng tôi - tên của kho lưu trữ, mô tả ngắn gọn về nó.
  2. Thêm giấy phép - Apache 2.0 (bạn có thể chọn giấy phép theo ý mình).
  3. Dự án của chúng tôi hiện đã có sẵn - đây là liên kết đến nó: JavaRush Telegrambot .

Tạo một dự án trong kho lưu trữ

Để làm việc với dự án, bạn nên sử dụng các công cụ GitHub, chẳng hạn như project. Nó là gì? Đây là nơi bạn có thể tạo nhiệm vụ, theo dõi quá trình hoàn thành và lưu trạng thái nhiệm vụ. Xác định ai sẽ thực hiện chúng và hơn thế nữa. Để thực hiện điều này, trong dự án đã tạo, chúng ta sẽ tìm thấy nút Dự án và ở đó chúng ta sẽ tạo một dự án mới: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Như bạn có thể thấy, ở đây tôi đã chỉ ra tên của dự án, mô tả nó và chọn mẫu mà chúng ta sẽ làm việc - Kanban tự động. Đối với chúng tôi bây giờ nó không quá quan trọng điều này có nghĩa là gì. Điều chính là chúng ta sẽ có một bảng nhiệm vụ, được chia thành các cột, trong đó mỗi cột sẽ là trạng thái của nhiệm vụ:
  1. Việc cần làm - tất cả các nhiệm vụ dự định thực hiện;
  2. Đang thực hiện - các nhiệm vụ hiện đang được thực hiện;
  3. Đã hoàn thành - các nhiệm vụ đã được hoàn thành trong dự án này.
Bằng cách này, chúng ta sẽ biết về trạng thái nhiệm vụ của mình. Việc nào đang tiến hành, việc nào đã hoàn thành. Hơn nữa, điều này rất quan trọng và thuận tiện không chỉ trong trường hợp có nhóm mà còn khi bạn làm việc một mình. Để một cái gì đó xuất hiện trên bảng, bạn cần tạo Vấn đề.

Viết các vấn đề (issues) cho dự án

Để hiểu những nhiệm vụ cần viết, hãy quyết định những gì chúng ta sẽ có trong dự án. Chúng ta cần một ứng dụng có thể khởi chạy dễ dàng và nhanh chóng để có thể truy cập cơ sở dữ liệu, để có thể quản lý và thay đổi lược đồ cơ sở dữ liệu, để có thể thực hiện các yêu cầu REST trong JavaRush nhằm lấy dữ liệu trên các bài viết. Dựa trên điều này, bạn có thể chọn các công nghệ sau:
  • SpringBoot - làm khung cho ứng dụng của chúng tôi,
  • Dữ liệu mùa xuân - để làm việc với cơ sở dữ liệu,
  • Flyway - để làm việc với việc di chuyển cơ sở dữ liệu,
  • MySQL - làm cơ sở dữ liệu cho dự án,
  • Telegrambot StringBoot khởi động - một thư viện để làm việc với bot telegram,
  • Unirest là một thư viện để làm việc với các yêu cầu REST.
Từ tất cả những điều trên, hãy bắt đầu tạo nhiệm vụ.

Mẫu tạo nhiệm vụ

Chúng tôi sẽ tạo các nhiệm vụ bằng cách sử dụng mẫu sau:
  1. Tên tác vụ sẽ có dạng như sau: JRTB-{IssueNumber}:{IssueDescription} , trong đó:
    • {IssueNumber} là số sê-ri của vấn đề. Hãy lấy nó thêm một lần nữa từ vấn đề cuối cùng;
    • {IssueDescription} - mô tả ngắn gọn về sự cố.
  2. Trong phần nội dung của nhiệm vụ, chúng ta sẽ mô tả chi tiết hơn về nó (đôi khi nó có thể trùng với mô tả trong tên nhiệm vụ).
  3. Tiêu chí chấp nhận là danh sách các yêu cầu, sau đó nhiệm vụ có thể được coi là hoàn thành. Có thể nói, tiêu chí để nhận nhiệm vụ. Sử dụng chúng, người đánh giá (từ tiếng Anh reviewer - reviewer - người xem xét cách hoàn thành một nhiệm vụ) có thể hiểu được nhiệm vụ đó đã hoàn thành hoàn thành hay chưa.
Sử dụng mẫu này, chúng ta sẽ tạo nhiệm vụ đầu tiên: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Điều đáng chú ý là khi tạo nó, tôi xác định ngay nhiệm vụ này phù hợp với dự án nào, ai sẽ thực hiện nó (người được giao) và nhiệm vụ này thuộc về nhãn (nhãn) nào. Tiếp theo, tôi sẽ chỉ hiển thị tên của các nhiệm vụ kèm theo một mô tả nhỏ và các liên kết đến chúng. Tất cả họ đều ở đây . Chúng tôi sẽ thực hiện các nhiệm vụ theo thứ tự gần giống như được chỉ ra ở đây:
  1. [TÍNH NĂNG] JRTB-0: tạo dự án khởi động Skeleton Spring - mọi thứ đều rõ ràng ở đây: bạn cần thực hiện phần đầu tiên của những gì chúng tôi đã làm trong bài viết trước.
  2. [TÍNH NĂNG] JRTB-2: thêm bot telegram vào dự án - thêm một bot trống sẽ chỉ phản hồi và nói rằng nó vẫn hoạt động tốt.
  3. [TÍNH NĂNG] JRTB-3: Triển khai mẫu lệnh cho telegrambot - hãy thiết lập cách tiếp cận chính xác để làm việc với các lệnh trong bot telegram. Cho đến nay đối với một số đội.
  4. [TÍNH NĂNG] JRTB-1: Thêm lớp kho lưu trữ - đây là một trong những nhiệm vụ lớn nhất - nó kết hợp mọi thứ cần phải làm để làm việc với cơ sở dữ liệu.
  5. [TÍNH NĂNG] JRTB-5: Với tư cách là người dùng, tôi muốn thêm nhóm vào đăng ký - đây đã là Câu chuyện người dùng đầu tiên theo cách hiểu Agile. Đây sẽ là một lợi ích thực sự cho người dùng của chúng tôi: có thể thêm đăng ký nhóm vào bot.
  6. [TÍNH NĂNG] JRTB-12: Thực hiện lập lịch gửi thông báo về các bài viết mới - đây sẽ là thực hiện tìm kiếm các bài viết mới nếu chúng được xuất bản cho từng nhóm và gửi đến tất cả người dùng đã đăng ký vào nhóm.
  7. [TÍNH NĂNG] JRTB-6: Với tư cách là người dùng, tôi muốn xem danh sách đăng ký nhóm của mình - mọi thứ ở đây đều đơn giản: chúng tôi thêm lệnh hiển thị danh sách tất cả các nhóm mà người dùng đã đăng ký.
  8. [TÍNH NĂNG] JRTB-7: Với tư cách là Người dùng, tôi muốn xóa đăng ký nhóm khỏi đăng ký của mình - tại đây bạn cần xóa đăng ký của người dùng để nhận các bản cập nhật trong nhóm.
  9. [TÍNH NĂNG] JRTB-8: Với tư cách là Người dùng, tôi muốn đặt bot không hoạt động - thực hiện dừng bot. Tức là mọi thứ cần phải được thực hiện trong hệ thống của chúng tôi để công việc dừng lại. Thêm lệnh /stop để xử lý.
  10. [TÍNH NĂNG] JRTB-9: Với tư cách là Người dùng, tôi muốn bắt đầu làm việc với bot HOẶC đặt kích hoạt nếu tôi đã sử dụng nó trước đây - thêm xử lý lệnh /start. Chính xác theo cách chúng tôi muốn nó.
  11. [TÍNH NĂNG] JRTB-10: Với tư cách là quản trị viên, tôi muốn xem số liệu thống kê về bot - tạo bộ sưu tập số liệu thống kê về bot. Thêm khả năng của quản trị viên.
  12. [TÍNH NĂNG] JRTB-11: Với tư cách là người dùng, tôi muốn xem tài liệu về bot telegram này - tài liệu viết. Vâng, vâng, các bạn ơi, bạn không thể sống thiếu nó, và bạn học cách làm điều này càng sớm thì càng tốt cho bạn))
Điều này đã giống như sự khởi đầu của dự án. Có thể nói, chúng tôi làm việc với tư cách là kiến ​​trúc sư dự án và nhà phân tích kinh doanh.

Điền vào kho lưu trữ

Những gì khác cần phải được thực hiện TRƯỚC KHI chúng ta bắt đầu viết mã? - Tác giả, bạn thêm được bao nhiêu đoạn văn này, bạn có kéo chúng ra khỏi vực thẳm không?? — Không, chất lượng công việc được thể hiện qua từng chi tiết. Và họ là những người có ý nghĩa. Vì vậy, hãy thêm một chi tiết nữa. Để dự án trở nên phổ biến và dễ hiểu đối với các nhà phát triển khác, nó cần phải được điền đầy đủ. Tôi nên thêm gì? Tôi đã mô tả danh sách đầy đủ những gì có thể thực hiện trong bài viết Tối ưu hóa công việc với các dự án của bạn trên GitHub: tìm hiểu Kho lưu trữ mẫu Github . Tôi rất khuyên bạn nên đọc nó. Điều quan trọng là chúng tôi phải có phiên bản rõ ràng, hiểu rõ về những gì chúng tôi đang làm. Do đó, tôi đã thêm tệp RELEASE_NOTES trong đó các thay đổi đối với dự án của chúng tôi sẽ được ghi lại. Ví dụ: bạn có thể xem RELEASE_NOTES từ dự án của tôi (vâng, tại sao không hiển thị những gì tôi đã dồn sức lực và sự sáng tạo của mình vào). Những thay đổi cho mỗi phiên bản mới được mô tả ở đó. Tôi cũng đã thêm các mẫu để tạo tác vụ mới, có 4 tùy chọn:
  • Báo cáo lỗi là một nhiệm vụ được tạo bởi người dùng/người kiểm tra để tìm ra lỗi trong công việc của họ. Đây là một điều rất quan trọng: nó giúp quản lý việc sửa lỗi;
  • Yêu cầu tính năng là một nhiệm vụ để thêm chức năng mới. Tất cả các nhiệm vụ đầu tiên trong dự án đều là nhiệm vụ yêu cầu tính năng;
  • Yêu cầu cải tiến - một nhiệm vụ để cải thiện hoạt động của ứng dụng. Ví dụ: để thay đổi câu trả lời của bài kiểm tra khi làm việc với bot. Tôi không phải là người viết kỹ thuật và tôi có thể đưa ra những câu trả lời không hoàn toàn chính xác. Vì vậy nếu bạn có mong muốn và khả năng thì hãy cống hiến nhé :)
  • Câu hỏi là một câu hỏi dành cho các nhà phát triển về hoạt động của ứng dụng. Một điều rất hữu ích. Giả sử bạn không hiểu công việc hoặc có nghi ngờ về một số câu hỏi - bạn có thể đặt câu hỏi theo cách này và nhận được câu trả lời trực tiếp.
Nếu bạn nhìn vào GitHub, nó sẽ trông giống hệt như thế này: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Hiện tại chúng tôi cũng có một tài liệu về cách làm việc với API JavaRush để làm việc với các nhóm.

Cái gì tiếp theo?

Chà, chúng ta đã hoàn thành tất cả các bước này và dự án sẽ bị đóng cửa sao? Không hoàn toàn không. Dự án này sẽ tiếp tục tồn tại. Nó sẽ được phát triển bởi tôi và tất cả những sinh viên/sinh viên tốt nghiệp JavaRush muốn tham gia. Kế hoạch tương lai của bạn là gì? Rất nhiều trong số họ. Kế hoạch đầu tiên là tạo một ứng dụng khách Java cho API JavaRush. Các nhà phát triển đã hứa sẽ cung cấp quyền truy cập mở cho Swagger của họ. Chúng ta cũng sẽ xem vênh vang là gì. Điều tuyệt vời và rất hữu ích. Tiếp theo, chúng tôi sẽ tích hợp trang JavaRush với bot điện tín. Hãy kết nối người dùng với bot để đồng bộ hóa đăng ký. Hãy tạo số liệu thống kê về việc hoàn thành khóa học. Và mọi thứ bạn muốn với tư cách là Cộng đồng JavaRush.

kết luận

Hôm nay chúng ta đã nói về công việc hậu trường trước khi tạo ra dự án. Hay chính xác hơn là về cách lập một kế hoạch làm việc mà nếu không có nó thì bạn có thể lãng phí rất nhiều năng lượng. Tôi nhắc lại, phần đầu của dự án đã được công bố rộng rãi ở đây . Như thường lệ, tôi khuyên bạn nên đăng ký tài khoản của tôi trên Github. Bằng cách này bạn có thể nhận được những thay đổi đối với dự án TRƯỚC KHI bài viết được xuất bản. Tôi đã cho rằng tất cả các bên quan tâm đã đăng ký trên Github. Đúng, dự án không tiến triển nhanh như chúng ta mong muốn. Tuy nhiên, cũng giống như các dự án thực tế tại nơi làm việc. Trong bài viết tiếp theo tôi sẽ mô tả việc thêm các nhiệm vụ đầu tiên. Cảm ơn mọi người đã đọc và hẹn gặp lại!

Danh sách tất cả các tài liệu trong loạt bài này nằm ở đầu bài viết này.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION