truonganhhoang / int2208-8-2019 Goto Github PK
View Code? Open in Web Editor NEWMôn học CNPM
Môn học CNPM
Independent: User story độc lập với hầu hết các tính năng khác, có thể thực hiện riêng.
Negotiable: Việc đăng nhập có thể được bổ sung thêm một số hình thức như: đăng nhập trực tiếp bằng tài khoản do người dùng lập, đăng nhập thông qua mạng xã hội khác,...
Valuable: Việc thêm tính năng đăng nhập giúp người quản lý dễ dàng quản lý và phân biệt các người dùng với nhau.
Estimable: Có thể được phát triển trong 3-5 ngày và thường được làm đầu tiên.
Small: Tính năng đủ để một người làm trong thời gian 3-5 ngày với công cụ sẵn có.
Testable: Thử đăng nhập bằng tài khoản đúng, tài khoản sai hoặc chưa tồn tại.
Tìm hiểu về Python và Framework Django đặc biệt lưu ý đến phần tạo Form login (1 ngày).
Cài đặt Form login của Django để có chức năng login với giao diện sơ khai (2-3 giờ).
Thử với tài khoản đã có, tài khoản chưa có hoặc tài khoản sai.
Tạo liên kết các API để đăng nhập bằng mạng xã hội khác (1 ngày).
Thử đăng nhập bằng các mạng xã hội đã liên kết.
Tìm hiểu Html, CSS để thiết kế giao diện đẹp hơn (1 ngày).
Đánh giá dựa trên phương pháp INVEST:
Các bước thực hiện:
Demo issues:
https://www.youtube.com/watch?v=Nw9gd7uVp6U
Independent: Tạo cơ sở dữ liệu, trang đăng nhập, đăng kí, thông tin cá nhân của người dùng cơ bản độc lập với các tính năng khác.
Negotiable: Tính năng có thể đàm phán được. Nhóm phát triển có thể dựa vào yêu cầu của người dùng phát triển tính năng cho phù hợp, dễ dàng thay đổi trong tương lai.
Valuable: Có giá trị với người dùng. Với tài khoản có thông tin cá nhân của riêng biệt người dùng có thể có thông tin cá nhân của riêng mình và dễ dàng phân biệt được với các người dùng khác.
Estimable: Nhóm phát triển có thể ước lượng được khối lượng cũng như thời gian hoàn thành công việc.
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối.
Testable: Sau khi hoàn thành tính năng, nhóm phát triển có thể tự kiểm thử trước khi kết hợp với các tính năng khác.
Thu thập yêu cầu của người dùng về User Story (2 giờ)
Lên ý tưởng vẽ mô phỏng cơ sở dữ liệu người dùng (1 giờ 30 phút) Hướng dẫn tạo CSDL
Lựa chọn sử dụng database MySQL (15 phút) MySQL
Tạo cơ sở dữ liệu lưu thông tin người dùng bằng database MySQL (30 phút) Học MySQL
Lên ý tưởng giao diện đăng nhập, đăng kí cho người sử dụng (30 phút)
Tạo giao diện đăng nhập, đăng kí cho người dùng sử dụng html, css, javascript (1 giờ 30 phút) Tài liệu học
Chia nhỏ mã nguồn thành các file nhỏ hơn để quản lý (1 giờ) Tài liệu
Cải thiện giao diện bằng bootstrap 4 (1 giờ) Bootstrap
Kiểm thử lại phần giao diện đã hoàn thiện (30 phút) Kiểm thử
Lựa chọn làm backend bằng Node.js (10 phút) Node.js
Thực hiện tìm hiểu phân tích giao diện đã hoàn thiện để thiết kết backend phù hợp (1 giờ)
Thực hiện làm backend cho phần đăng kí của người dùng (1 giờ) Học Node.js
Kiểm tra lại xem khi thực hiện đăng kí tài khoản có được thêm vào database đầy đủ không (10 phút)
Thực hiện làm backend cho phần đăng nhập của người dùng (1 giờ) Học Node.js
Kiểm tra lại việc thực hiện đăng nhập với tất cả các tài khoản trong database (15 phút)
Kết hợp phần đăng nhập, đăng kí và thực hiện đăng kí rồi đăng nhập lại bằng chính tài khoản đó (30 phút)
Mã hóa mật khẩu bằng bcrypt trước khi đưa vào database MySQL (30 phút) Mã hóa bcrypt
kiểm thử lại backend đã hoàn thiện (1 giờ 30 phút) Kiểm thử
Thực hiện liên kết các trang đăng nhập, đăng kí với phần backend đã hoàn thiện (1 giờ)
Tối ưu source code, comment cẩn thận để tăng tốc độ và dễ bảo trì phát triển tính năng mới (1 giờ 30 phút) Cách tăng tốc
Thực hiện việc kiểm thử toàn bộ chương trình đã hoàn thành để tìm lỗi (2 giờ) Kiểm thử toàn bộ Web
Triển khai user story
Video demo chức năng theo user story: https://youtu.be/FbFcPiUAPEI
Mỗi nhóm chọn một ứng dụng nhỏ để thực hành xây dựng phần mềm. Ví dụ có thể chọn một module của kahoot, hay quizizz hay quizalize để làm.
Mỗi nhóm tạo một file readme.md trong thư mục "nhom-X" với X là số của nhóm mô tả
Tên ứng dụng:
Các nhóm người dùng:
Mô tả tóm tắt phần mềm (5-10 câu)
Phác thảo các màn hình chính của ứng dụng.
Trước buổi học tiếp theo, mỗi nhóm nộp bài (file readme.md) bằng pull request. Phác thảo màn hình nên tìm các (tìm công cụ có sẵn). Tốt hơn thì học và thiết kế giao diện dựa trên bootstrap luôn. Trong file readme.md có thể link đến các tài liệu khác nếu cần.
Mỗi sinh viên tự học, tìm hiểu kiến thức môn học thông qua các học liệu đã cung cấp, và đặt/ trả lời các câu hỏi ngay trên các tài liệu này. Tự học một số kiến thức cơ bản về HTML, CSS, JavaScript, Firebase/MongoDB/MySQL,.. để làm ứng dụng web trong môn học này.
https://medium.com/codingthesmartway-com-blog/the-2019-roadmap-to-fullstack-web-development-1bba67a54ae8
https://hackernoon.com/7-best-web-development-backend-frameworks-in-2018-22a5e276cdd
Theo quy tắc INVEST
Những công việc cần làm
1. INVEST
Independent: User story trên hoàn toàn độc lập, không bị phụ thuộc vào các user story khác.
Negotiable: User story không được mô tả quá chi tiết, mà sẽ được làm rõ trong quá trình triển khai.
Valuable: User story này hoàn toàn có ích với khách hàng.
Estimable: User story này có thể ước lượng để lên kế hoạch được(Khoảng một tuần).
Small: User story này đủ nhỏ.
Testable: User story kiểm thử được để xác nhận kết quả.
2. Công việc:
Làm rõ yêu cầu của User story.
Xây dựng User story dựa trên mô hình MVC.
Tạo thanh phân loại hàng với các mục: Thương hiệu, mức giá, cấu hình.(1h)
Trong mỗi mục tạo các sự lựa chọn.(2h)
Liên kết với cơ sở dữ liệu để truy xuất các sản phẩm.(2h)
Phối hợp các lựa chọn của người dùng để tìm được các kết quả phù hợp.(2h)
Trả về kết quả các sản phẩm phù hợp với lựa chọn người dùng trên giao diện.(1h)
Xây dựng các ca kiểm thử hộp trắng để bao phủ các nhánh code.(3h)
Kiểm thử hộp đen để kiểm thử giao diện, chức năng.(2h)
Analysis:
Task list:
Design login page UI
Create Customer model om database
Handle logic controller
Write unit test
Write integration test
Validate and evaluate the test
1. Đảm bảo tiêu chí INVEST:
Independent: tạo chế độ chơi cơ bản độc lập với các tính năng khác.
Negotiable: tính năng có thể đàm phán được. Nhóm phát triển có thể xây dựng nội dung trò chơi phù hợp với yêu cầu của người chơi, dễ dàng thay đổi trong tương lai.
Valuable: có giá trị với người dùng. Đây là sân chơi cơ bản để người chơi được tham gia trả lời các câu hỏi vừa để giải trí, vừa ôn luyện kiến thức.
Estimable: nhóm phát triển có thể ước lượng được khối lượng công việc.
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối. Các công việc được xác định thời gian hoàn thành khá ngắn.
Testable: tính năng có thể kiểm thử do người dùng.
2. Các công việc cần làm
Thu thập và làm rõ yêu cầu cho user story (1h) Làm rõ yêu cầu
Xác định các component cần dùng cho user story (1h)
Học cách thiết kế giao diện cơ bản bằng Bootstrap 4 (3 ngày, 2h/ngày) Bootstrap Documentation
Thiết kế giao diện trang trò chơi cơ bản bằng HTML5 (2h) Link commit
Cải thiện giao diện bằng CSS3 và Javascript (2h)
Xây dựng classic game RESTful API (3h)
Hiển thị câu hỏi lên màn hình (30 phút) Link commit
Hiển thị kết quả cuối cùng của màn chơi (30 phút) Link commit
Đánh giá tính khả kiểm thử của user story (30 phút) Tính khả kiểm thử
Kiểm thử hộp trắng, với độ bao phủ >80% thì đạt yêu cầu (1h) White Box Testing
Kiểm thử hộp đen, dựa vào giao diện, chức năng, dùng phương pháp phân vùng tương đương hoặc phân tích giá trị biên hoặc đoán lỗi viết các ca kiểm thử (1h) Black Box Testing
Đánh giá mã xấu (1h) Code Smells
Tái cấu trúc mã nguồn, cải tiến các đoạn mã nguồn chưa tối ưu (1h) Refactoring
Thêm comment vào các vị trí cần thiết để code dễ đọc và quản lí hơn (1h) Rules for commenting code
3. Video mô tả: https://youtu.be/nehOPPW_pW4
Sử dụng milestones của github để quản lý các sprints.
Tham khảo thêm: https://github.com/jvandemo/github-scrum-workflow
Sau khi thực hiện phần việc trên, trong 2 tuần tiếp theo, các thành viên nhóm nhận việc (dùng assignees của github) và giải quyết các việc (issues) đã tạo cho sprint. Khi giải quyết xong thì đóng các issues. Trong quá trình làm việc comment vào issues để trao đổi, ghi chú, thảo luận,..
Các nhóm dùng task list của github issues để mô tả các đầu việc có thể thực hiện dưới 1 giờ đồng hồ cho mỗi sprint backlog item.
hạn: 10/3/2019
Quy tắc INVEST:
Independent: user story này là một yêu cầu cụ thể và độc lập với các user story khác
Negotiable: câu chuyện này có thể thương lượng khi thêm các tính năng bổ sung từ khách hàng như giao diện hay các tính năng thêm, xóa, sửa hoặc các hình thức thanh toán
Valuable: user story này mang lại giá trị giúp người dùng có thể bán những sản phẩm mình không dùng nữa để tiết kiệm tiền
Estimable: Xác định được khoảng thời gian cần thiết để hoàn thành yêu cầu ( khoảng 1-2 tuần )
Small: Tính năng này đủ nhỏ và đơn giản để có thể nắm bắt nhanh chỉ cần có thể thêm và xóa các sản phẩm của người dùng
Testable: Có thể kiểm tra, đánh giá kết quả bằng các bài kiểm thử
Các bước thực hiện
Các tiêu chí INVEST
Independent: User story trên có thể độc lập với các user story khác, có thể thực hiện riêng biệt.
Negotiable: User Story có thể thương lượng với bên phát triển.
Valuable:User story là có giá trị (cung cấp thông tin thêm thông tin cho người dùng).
Estimable: Có thể ước lượng được lượng các công việc và các mốc thời gian hoàn thành.
Small: User story đủ nhỏ.
Testable: Có thể test được để đánh giá kết quả(thường user story này kèm theo các bài học nên rất dễ kiểm thử ).
Những công việc cần làm:
Xây dựng user story dựa trên mô hình MVC.
Phác thảo giao diện admin - ( dùng html, css, bootstrap, js).
Thiết kế cơ sở dữ liệu lưu trữ thông tin của quản trị viên.
Kết nối cơ sở dữ liệu( dùng SQL).
hiện thị các thông tin admin được lấy từ cơ sở dữ liệu( dùng SQL, PHP).
Vận hành và kiểm thử ().
Mỗi khi hoàn thành một module của khóa học, sinh viên chụp ảnh để báo cáo tiến độ, không cần thay đổi tên file.
THEO QUY TẮC INVEST
NHỮNG CÔNG VIỆC CẦN LÀM
Phân tích userstory và làm ra kê hoạch phát triển
Lựa chọn mẫu thiết kế MVC cho sản phầm và trao đổi tìm tài liệu
API
Tham khảo các trang web đã có trên mạng để tham khảo giao diện, chức năng và yêu cầu
Thiết kế khung , ý tưởng hiển thị sản phẩm mà khách hàng hướng tới
Xử lý html
Xứ lý css
Submit lên github phần giao diện cơ bản nhất
Update giao diện sau khi link với mysql
Thiết kế cơ sở dữ liệu cho danh mục sản phẩm, phần tìm và làm csdl
Cơ sở dữ liệu
Thiết kế cơ sở dữ liệu cho sản phẩm , tạo các thuộc tính về sản phẩm-hiện thị ra thành quả
Cơ sở dữ liệu
Dựa vào ID của sản phẩm , cho phép sắp xếp sản phẩm theo danh mục code
Viết code để có thể hiển thị danh mục sản phẩm
Lựa chọn và phân tích API phù hợp để triển khai vào code để tối ưu
api
Lựa chọn kiểm thử hộp đen hoặc hộp trắng để sử dụng trong quá trình
Testing
Làm sạch code, tối ưu hóa các class
Phát triển thêm cơ sở dữ liệu cho phong phú và nhiều lựa chọn
Kiểm tra lại cơ sở dữ liệu , xem xét lại từng ID cua sản phẩm cho phù hợp với danh mục sản phẩm
Cho người dùng thử nghiệm
Link youtube
Quy tắc INVEST:
Independent: User Story cụ thể và độc lập với các User Story khác
Negotiable: Tính đàm phán được giúp cho Nhóm Phát triển và Product Owner cùng nhau xây dựng nội dung chi tiết và phụ hợp hơn cho những thay đổi trong tương lai
Valuable: User Story có giá trị với khác hàng, khách hàng được hỗ trợ một cách nhanh chóng nhất
Estimable: Có thể ước lượng được lượng công việc và thời gian hoàn thành
Small: Tính năng đủ nhỏ để xây dựng trong một thời gian ngắn
Testable: Có thể kiểm thử được
Công việc cần làm:
Tạo form khung giao diện bằng html, css (email và message)
Giới hạn độ dài kí tự trong khung textarea của message
Kết nối database và table
Lấy dữ liệu post từ form
Xử lí, insert dữ liệu vào table có id của quản trị viên
Kiểm tra các text box, button
Kiểm tra các sơ đồ, bảng cơ sở dữ liệu
Quy tắc INVEST:
Independent: user story này là cụ thể và độc lập với các user story khác
Negotiable: câu chuyện này có thể thương lượng khi thêm các tính năng bổ sung
Valuable: user story này mang lại giá trị giúp người dùng xem thông tin chi tiết sản phẩm mình chọn trước khi mua.
Estimable: Xác định được khoảng thời gian cần thiết để hoàn thành yêu cầu khoảng 6-7 tiếng.
Small: Tính năng này đủ nhỏ và đơn giản để có thể nắm bắt nhanh chỉ cần hiển thị hình ảnh và thông tin(số lượng, tình trạng, màu sắc) sản phẩm.
Testable: Có thể kiểm tra, đánh giá kết quả bằng kiểm thử.
Các bước thực hiện
Làm rõ yêu cầu của user story ( đổ dữ liệu thông tin chi tiết từ cơ sở dữ liệu ra giao diện). User story
Lựa chọn mô hình thiết kế MVC .MVC
Thiết kế giao diện hiển thị thông tin chi tiết và tạo form để lựa chọn chi tiết sản phẩm ( size, màu sắc,...) Bootstrap4, Jquery , Link commit
Kết nối cơ sở dữ liệu đổ cơ sở dữ liệu ra giao diện.
Thêm tính năng xem chi tiết ảnh(phóng to ảnh). Link commit
Hiển thị chính sách mua hàng của trang web. Link commit
Thêm chức năng thêm vào giỏ hàng/mua ngay. Link commit
Áp dụng kiểm thử hộp trắng để bao phủ tối đa các nhánh code. White box testing
Tối ưu code và hoàn thành sản phẩm.
Link bài tập cá nhân demo chức năng: https://www.youtube.com/watch?v=st1_EyGOwvg
Quy tắc INVEST:
Independent: User story này độc lập với các user story khác.
Negotiable: Chức năng này có thể thương lượng hoặc điều chỉnh theo mong muốn của khách hàng.
Valuable: Khách hàng có thể hiểu được thông tin,tính chất và giá cả về sản phẩm mình dự định mua một cách rõ hơn để đưa ra quyết định.
Estimate: Xác định được khoảng thời gian cần thiết để hoàn thành yêu cầu khoảng 1 - 2 ngày.
Small: Tính năng này đủ nhỏ và đơn giản để có thể nắm bắt nhanh chỉ cần hiển thị hình ảnh và thông tin(số lượng, tình trạng, màu sắc) sản phẩm.
Testable: Có thể kiểm tra, đánh giá bằng kết quả kiểm thử
Công việc cần làm:
Link video demo: Link
Đánh giá theo quy tắc INVEST:
Các công việc cần thực hiện:
Làm rõ yêu cầu user story (chức năng tìm kiếm sản phẩm): Làm rõ yêu cầu
Học kiến thức về web: HTML, CSS, JAVASCIRIP, SQL
Thiết kế giao diện thanh tìm kiếm :form input_button ( 2 tiếng ).
Thiết kế giao diện kết quả tìm kiếm :commit ( 2 ngày ).
Liên kết cơ sở dữ liệu (sử dụng MySQL) commit ( 4 ngày ).
Xuất thông tin tìm kiếm một cách khoa hoc, rõ ràng commit ( 1 ngày )
Kiểm thử hộp đen dựa vào giao diện chức năng: Kiểm thử hộp đen (2 ngày)
Tối ưu mã nguồn ngắn gọn, dễ đọc, dễ bảo trì :Tối ưu hóa "code smell" (1 ngày)
Kiểm thử chấp thuận với khách hàng :Các loại kiểm thử (3 giờ)
Xây dựng user story
tham khảo Tạo userstory tốt
Làm rõ yêu cầu của user (Xây dựng giao diện gồm những gì, có những tính năng cần thiết nào,...)
Lựa chọn hệ quản trị dữ liệu MongoDB, cài đặt MongoDBCompass để quản lí cơ sở dữ liệu tại máy(phía local)
Tạo giao diện trang chủ.
Tài liệu: học html,css cơ bản
Tài liệu: Học JS,bootstrap
profile người dùng
Các giao diện có liên quan khác
Tài liệu: Xây dựng web động sử dụng nodejs
Tài liệu: Sử dụng mongodb cho việc quản lí dữ liệu
Tạo chức năng đăng nhập, đăng kí trên trang chủ:
phương thức GET, POST dữ liệu từ yêu cầu người dùng (Tài liệu)
Authentication là gì?-Passport là gì? Tầm quan trọng trong việc đăng nhập
Tài liệu 1: Tính năng đăng nhập- P1
Tài liệu 1: Tính năng đăng nhập- P2
Tạo chức năng thêm giỏ hàng
Link video demo: Link
Nguyên tắc INVEST:
* Task list:
Vẽ sơ đồ tương tác giữa các component User - List - Exam - Form (30p) EDX
Làm rõ yêu cầu (tạo các chức năng để quản lý các đề thi như lọc, tìm kiếm, sắp xếp, thay đổi trạng thái) EDX
Viết HTML (lợi dụng phần đã làm từ issue trước) (40p) issue
Chỉnh sửa các textbox, button, dropdown bằng CSS commit (30p)
Setup dữ liệu cho dropdown (status, subject) (30p) issue
Viết hàm thực hiện chức năng lọc, tìm kiếm (filterExams()) commit (1h)
Thêm các icon sắp xếp (sử dụng font-awesome) (30p) source
Viết hàm thực hiện chức năng sắp xếp commit (30p)
Tạo các select box, một select box chọn tất cả commit (1h)
Gọi API put để thay đổi status, special một hoặc nhiều đề thi (Hoàn đã làm và deploy lên server để cả nhóm làm chung) (1h) REST
Viết hàm gửi dữ liệu lên server commit (30p)
Viết hàm xử lý chức năng thay đổi status, special commit (1h)
Báo lỗi chung [(30p)] Tài liệu Edx
Kiểm thử (24h) Tài liệu Edx
Tài liệu tham khảo:
Bài giảng tiếng Việt
Khóa học SoftEng1x
Low level Design
Another document
Interface Segregation
Another document
Tạo UI trên App với XML
Làm rõ yêu cầu (giao diện như thế nào, sau khi đăng nhập chuyển đến trang nào, cần những dữ liệu nào mà google, facebook trả về hệ thống của mình) edx
Thẩm định yêu cầu edx
Các yêu cầu khác (giao diện di động, yêu cầu về hiệu năng ...) edx
User story được xây dựng dựa trên mô hình MVC kết hợp API edx edx edx edx edx
Tìm tài liệu đọc về google auth và faccebook auth
Google: url
Facebook: url
Tạo ứng dụng trên nền tảng facebook, google để có được facebook app id và google client id (1-2 giờ)
Google: url
Facebook: url
Xây dựng giao diện đăng nhập. gồm các input đăng nhập bằng local. các nút nhấn có biểu tượng facebook, google (2 giờ) bootstrap w3school edx | commit
Thiết kế sơ đồ tương tác ví dụ như các tiện ích bằng nút nhấn chuyển trang (ví dụ như ở trang đăng nhập thì họ sẽ có xác suất đến trang đăng ký) edx | commit
Kiểm tra dữ liệu form đăng nhập commit
Viết Service yêu cầu trả về dữ liệu người dùng của facebook, google (cần custom để lấy thêm thông tin) (2-3 giờ) commit commit
Viết service gửi thông tin người dùng cho server của hệ thống thực hiện xác minh commit
Viết API ghi nhận người dùng vào hệ thống (2-3 giờ) commit commit
Xử lý download ảnh đại diện về hệ thống của mình (1-2 giờ) commit commit
Kiểm thử hộp trắng độ bao phủ edx
Kiểm thư giao diện (reponsive, text, ...) edx
Unit Testing với Karma và Jasmine tài liệu
Cho các thành viên trong nhóm kiểm thử và dùng thử, mời 1 số người dùng trải nghiệm.
Independent: Không liên quan quá nhiều đến các câu chuyện khác trong dự án để đảm bảo tính thuận tiện, dễ quản lí khi thực hiện. đây không phải 1 việc cần làm đầu tiên trong dự án nhưng là cần thiết khi các thành phần khác hoàn thiện.
Negotiable: Có thể thương lượng được, chi tiết về giao diện, chức năng sẽ được làm rõ qua trao đổi với khách hàng
Valuable: Có giá trị lớn với người dùng, giúp người dùng tiết kiệm tối đa thời gian đăng kí (không phải điền form dữ liệu cồng kềnh nhiều khi gây ức chế cho người sử dụng).
Estimable: Nhóm phát triển có thể ước lượng được khối lượng công việc để thuận lợi cho việc đánh giá mức độ ưu tiên và lên kế hoạch.
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối (đảm bảo tính ước lượng được). có thể hoàn thành trong 5 ngày.
Testable: Có thể kiểm thử dễ dàng thông qua request đến google, facebook trả về dữ liệu không, hệ thống có ghi nhận đầy đủ thông tin người dùng hay không.
Quy tắc INVEST:
Công việc cần làm:
Lựa chọn mẫu thiết kế, giao diện và làm theo.(1h) - Tham khảo những trang bán hàng như shoppe, tiki, nike,...
Tài liệu
Hoàn thành giao diện header, body, footer,...
Sản phẩm
Tài liệu:Bootsrap3,Bootsrap4
Lưu mặc đinh thử vài tài khoản xem có đăng nhập được không.(30p)
link github, tài liệu nhờ bạn bè hộ trợ
Mã hóa mật khẩu bằng bcrypt trước khi đưa vào database MySQL (30 phút)
Tài liệu
Làm thêm, thêm hàm để người dùng có thể đăng ký(1h)
Link code tren github, tài liệu nhiều nguồn trên mạng
Kiểm thử hộp trắng khi đăng nhập như đúng, sai hay không có tài khoản,...(30p)
Testing - Kiểm thử hộp trắng, nhưng chưa toàn diện
Lựa chọn API phù hợp để tích hợp vào sản phẩm cho tối ưu và dễ sử dụng(30p)
Mã hóa mật khẩu bằng bcrypt trước khi đưa vào database MySQL (30 phút)
Mã hóa mật khẩu
Tạo thông tin lịch sử cho mỗi tài khoản. (30p)
Thiết kế thêm nút thêm, bớt xóa ở sản phẩm và trong giỏ hàng (1h)
Tạo thêm tính năng cập nhật giỏ hàng như thêm, bớt, xóa(2h)
Gửi thông điện đến server cho lưu lại thay đổi vào database(1h)
Làm sach code, fix lại nhưng lỗi khi kiểm tra, tối ưu hóa(2h)
Tài liệu
Kiểm thử hôp đen với thực tế của product owner(2h)
Testing - kiểm thử hộp đen
Làm sạch code, tối ưu hóa các class, sử dụng ajax(1h)
Tài liệu code smellsTài liệu ajax
Phát triển cơ sơ dữ liệu về người dùng cho phong phú với từng đối tượng(1h)
Cho phép triển khai với mỗi lần mua hàng .(1h)
VIDEO1 https://www.youtube.com/watch?v=p1nwB5o7FaI
VIDEO2 https://www.youtube.com/watch?v=Qs2EVruZlgM
Thu thập, phân tích yêu cầu cho user story (2 giờ)
Specifications (Đặc tả)
Lên ý tưởng giao diện cho trang chủ (1 giờ)
Website templates
Lựa chọn công cụ để thiết kế ý tưởng
Tài liệu: HTML5, CSS, JavaScript
Thiết kế khung trang chủ sử dụng HTML5 (1 giờ)
Xây dựng nội dung cho trang chủ (1 giờ)
Bổ sung thêm nội dung vào khung trang chủ (30 phút)
Lựa chọn tông màu áp dụng cho sản phẩm (30 phút)
Sử dụng CSS để xây dựng các file stylesheet dựa trên tông màu đã có (1 giờ)
Áp dụng kiểm thử hộp đen kiểm tra giao diện trang chủ (30 phút)
Black box testing (Kiểm thử hộp đen)
Lên ý tưởng về hiệu ứng cho trang chủ (30 phút)
Sử dụng JavaScript để xây dựng các hiệu ứng (1 giờ)
Áp dụng kiểm thử hộp đen kiểm tra hiệu ứng (30 phút)
Black box testing (Kiểm thử hộp đen)
Áp dụng kiểm thử hộp trắng kiểm tra mã nguồn của hiệu ứng (1 giờ)
White box testing (Kiểm thử hộp trắng)
Tối ưu hóa mã nguồn, loại bỏ mã xấu, thêm comment để mã dễ đọc hơn (1 giờ)
Code smells, Refactoring
Kiểm thử hộp đen toàn bộ trang chủ (30 phút)
Họ và tên: Nguyễn Tiến Sơn
MSV:17021002
Nhóm : 19
Trang Web: Quizy
*: As a developer, I want to store user’s information in database so that I can manage them easily .
TIÊU CHÍ INVEST
CÁC CÔNG VIỆC CẦN LÀM
Thu thập yêu cầu
Đánh giá user story
Tạo cơ sở dữ liệu ( 15’)
Tạo Model người dùng (30’)
Kết nối cơ sở dữ liệu với model người dùng (30’)
Kiểm tra database bằng cách thêm thủ công người dùng và chỉnh sửa nếu có lỗi phát sinh (30 phút)
Video mô tả : https://youtu.be/N5bMxCjCYdk
Quy tắc INVEST:
Independent: user story này hoàn toàn riêng biệt.
Negotiable: hiển thị linh hoạt dựa tìm kiếm của mỗi khách hàng.
Valuable: giúp người dùng truy cập nhanh tới các món dễ dàng nhất.
Estimable: 3 ngày
Small: tính năng dễ thực hiện vì chỉ cần so sánh dữ liệu nhập vào với dữ liệu có sẵn trong database.
Testable: kiểm thử dễ dàng.
Công việc cần làm:
tạo thanh tìm kiếm có thể nhập text. ( 15 phút)
tạo button tìm kiếm. ( 15 phút)
tạo giao diện các món ăn phù hợp. ( 1 tiếng )
kết nối giao diện với database. ( 3 tiếng)
Tìm hiểu ngôn ngữ python để tạo hàm tìm kiếm ( 2 ngày )
kiểm thử chức năng tìm kiếm
Quy tắc INVEST
Independent: User Story độc lập với các User Story khác
Negotiable: User Story có thể thương lượng với bên phát triển
Valuable: Có giá trị với khách hàng - Xác định được thời gian
Estimable: Ước lượng và có mức độ ưu tiên , không cần chia quá nhỏ
Small: User Story vừa đủ để thực hiện
Testable: Kiểm thử dễ dàng
Cách thực hiện
Xác định bố cục, vị trí đặt đồng hồ - 30 phút
Xây dựng đồng hồ - Xử dụng HTML/CSS/ JAVASCRIP - 4 giờ
Thêm các hiệu ứng cho đồng hồ(CSS) - 1 giờ
Kiểm thử - 1 giờ
Vận hành - 1 giờ
THEO QUY TẮC INVEST:
Các công việc cần làm:
Lập giao diện tìm kiếm.
Nạp dữ liệu về các sản phầm.
Làm chức năng tìm kiếm: tìm kiếm bằng chữ nhập từ bàn phím.
Hiển thị những sản phẩm được tìm.
Quy tắc INVEST:
Independent: user story này là cụ thể và độc lập với các user story khác
Negotiable: câu chuyện này có thể thương lượng, phát triển để phù hợp hơn với nhu cầu người dùng như ngoài lọc sản phẩm theo danh mục có thể thêm lọc theo giá sản phẩm,......
Valuable: user story này mang lại giá trị giúp người mua hàng dễ dàng lựa chọn được sản phẩm vừa ý mà không tốn thời gian
Estimable: có thể ước lượng được, đánh giá mức độ ưu tiên
Small: đủ nhỏ để thực hiện (khoảng 6 tiếng)
Testable: Có thể kiểm tra, đánh giá kết quả
Các bước thực hiện
Phân tích và làm rõ yêu cầu của user story(Lọc sản phẩm theo danh mục)
link tài liệu :
Lựa chọn mô hình thiết kế MVC
link tài liệu : mô hình MVC
thiết kế giao diện để hiển thị sản phẩm (2 tiếng)
- header 17020932/oop@a303cf0
- footer 17020932/oop@b11dc44
- phần hiển thị sản phẩm 17020932/oop@434c60b
- thanh tùy chọn lọc theo yêu cầu của khách hàng 17020932/oop@3f73d5a
Link tài liệu về boostrap 4: bootstrap 4
Viết mã jquery tạo hiệu ứng cho web 17020932/oop@53147d1
Link tài liệu về jquery : jquery
thực hiện liên kết cơ sở dữ liệu để hiển thị sản phẩm 17020932/oop@9df0f1c (1 tiếng)
Link tài liệu về mongoose: mongoose
Thực hiện lọc sản phẩm và trả về dữ liệu cho người dùng
Thực hiện phân trang để không hiển thị quá nhiều sản phẩm 1 lúc 17020932/oop@9551f4b (1 tiếng)
Kiểm thử giao diện dựa trên kiểm thử hộp đen(1 tiếng)
link tài liệu: Kiểm thử hộp đen
Kiểm thử dựa trên kiểm thử hộp trắng(1 tiếng)
link tài liệu: kiểm thử hộp trắng
Tối ưu hóa code và hoàn thành sản phẩm
link tài liệu:
- Mã xấu
- Cải tiến - tái cấu trúc
Video demo sản phẩm đã làm đc: https://youtu.be/4Tn6buX5I5M
Công việc cần làm:
Tìm hiểu về thư viện giọng nói, chọn lọc thư viện phù hợp
Thêm thư viện giọng nói đã tìm được
Tạo button và tính năng phát âm
Kết nối thư viện với database
Kiểm thử để xác định sai sót
Mỗi nhóm tìm hiểu và chọn một quy trình trong nhóm phương pháp linh hoạt (agile methods) để nhóm áp dụng vào dự án của nhóm. Mô tả tóm tắt kế hoạch thực hiện theo các tuần dựa trên quy trình đã chọn để áp dụng vào file readme.md của nhóm.
Independent: user story này độc lập với các user story khác.
Negotiable: chức năng phân loại có thể thương lượng hoặc thay đổi theo mong muốn của khách hàng.
Valuable: khách hàng có thể tìm kiếm, theo dõi, đặt mua một cách nhanh chóng và dễ dàng hơn.
Estimate: 2 tuần.
Small: đủ nhỏ và đơn giản vì chỉ cần phân loại sản phẩm theo chức năng như giá cả, đặc điểm, tình trạng …
Testable: user story này chỉ cần phân loại, do vậy dễ dàng kiểm tra được sản phẩm đã được phân loại theo đúng yêu cầu hay chưa.
1. Phân tích và thiết kế.
2. Xây dựng chức năng.
3. Kiểm thử và cập nhật.
Quy tắc :
Independent: User story trên là độc lập.
Negotiable: User story này có thể thương lượng được khi xây dựng tính năng.
Valuable: User story là có giá trị (thêm thông tin cho người thuê phòng).
Estimable: Có thể ước lượng được lượng công việc và thời gian hoàn thành.
Small: User story đủ nhỏ.
Testable: Có thể test được để đánh giá kết quả.
Những công việc cần làm:
Phác thảo giao diện xem phòng.
Hoàn thiện dần các phần mà ở đó hiển thị thông tin cho người xem.
Kết nối với cơ sở dữ liệu
Vận hành và kiểm thử.
1. Đánh giá theo quy tắc INVEST:
Independent: User story trên là độc lập so với các chức năng khác như lọc,
Negotiable: Chức năng đánh giá có thể thương lượng được khi xây dựng
Valuable: User story là có giá trị với người cần mua giày theo yêu cầu uy tín và tin cậy với cửa hàng
Estimable: Có thể ước lượng được công việc và thời gian hoàn thành(1 ngày)
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối
Testable: tính năng có thể kiểm thử để kiểm tra
2. Các công việc cần làm
Phân tích user story theo mẫu(30p)
user story
Lựa chọn mẫu thiết kế giao diện, mockup của trang web(1h)
Sử dụng Node.js để làm backend (3h)
Node.js
Lấy dữ liệu người dùng sử dụng mongooes( 1h )
Mongooes
Sản phẩm
Đọc data người dùng đã đăng ký sử dụng phần mềm Robo 3T
Robo 3T
Tạo form đăng ký cho người đùng để tránh trùng lặp và dễ sử dụng(1h)
Đăng ký
Tạo form đăng nhập cho người đùng để tránh trùng lặp và dễ sử dụng(1h)
Đăng nhập
Tạo form reset password(1h)
Resetpassword
Sử dụng css để giao diện đăng nhập đăng ký nhìn đẹp hơn(1h)
CSS
Có chức năng lấy lại mật khẩu bằng email đã đăng ký khi quên mật khẩu sử dụng Nodemailer(1h)
Nodemailer
Sản phẩm
Tạo các điều kiện khi đăng ký tài khoản người dùng sử dụng Nodejs và Ajax(5h)
Node.js
Sản phẩm Nodejs
Sản phẩm Ajax
Hiển thị thông báo khi tài khoản và mật khẩu để trống sử dụng 5h)
Kết nối các phần đăng ký, đăng nhập,quên mật khẩu lại sử dụng router(5h)
Sản phẩm
Kiểm tra lại việc thực hiện đăng nhập với tất cả các tài khoản trong database (15 phút)
Kết hợp phần đăng nhập, đăng kí và thực hiện đăng kí rồi đăng nhập lại bằng chính tài khoản đó (30 phút)
Thực hiện liên kết các trang đăng nhập, đăng kí với phần backend đã hoàn thiện (1 giờ)
Lựa chọn phương pháp kiểm thử hộp trắng và hộp đen(10p)
testing
Kiểm thử hộp trắng bằng cách các thành viên trong nhóm tự hộ trợ nhau(30p)
Kiểm thử hộp đen bằng các cho các bạn dùng và trải nhiệm thử(1h)
testing-kiểm thử hộp đen
Triển khai user story
Sản phẩm đăng nhập
Link demo youtube
Mỗi người tạo một issue ở repo này với tiêu đề là nội dung của user story, gồm ba vế
As <1>, I want to <2>, so that <3> (<tác giả - ghi tên của sv>).
Trong nội dung của issue phân tích và giải thích quy tắc INVEST cho user story trên.
Liệt kê các công việc cần làm và thời gian cần để hoàn thành công việc đó dưới dạng Task List của Github.
Thực hiện công việc và cập nhật vào issue đó.
1.Quy tắc INVEST
Independent: Chức năng độc lập với chức năng khác.
Negotiable: Chức năng có thể thương lượng để thay đổi phù hợp với người dùng trong tương lai.
Valuable: Giúp người dùng cảm thấy thoải mái khi sử dụng.
Estimable: Có thể ước lượng được thời gian hoàn thành công việc.
Small: Chức năng đủ nhỏ để xây dựng trong thời gian ngắn (2 -> 3 ngày).
Testable: Có thể kiểm thử dễ dàng.
Phân tích kỹ yêu cầu của người dùng (giao diện cần gì, đặt ô comment ở đâu ...) (1h)
Làm rõ yêu cầu
Xác định các component cần dùng cho user story. (1h)
Học cách thiết kế giao diện cơ bản bằng HTML, CSS, Bootstrap. (2h)
Tài liệu cơ bản
Chọn mẫu thiết kế (design pattern) MVP : MVP
Tạo thanh comment. (2h)
Tính toán số lượng giới hạn ký tự cho phần comment.
Triển khai code.
Kiểm thử giao diện trên nhiều màn hình (2h)
Kiểm thử hộp trắng
Lưu vào cơ sở dữ liệu.(1h)
Tái cấu trúc mã nguồn, cải tiến các đoạn mã nguồn chưa tối ưu.(1h)
Refactoring
Độc lập: Không phụ thuộc vào các userstory khác, có chức năng riêng là hiển thị danh sách
Có thể thương lượng: Có thể bàn bạc về phương án triển khai cụ thể, mô tả ở mức độ vừa đủ
Có giá trị với khách hàng: Có giá trị về mặt yêu cầu mà khách hàng hiểu được và mong muốn. Có thể nói chuyện với khách hàng hoặc ghi xuống.
Ước lượng được: Có thể hiểu được mức độ ưu tiên, ước lượng được công việc vì khá cụ thể. Đây là việc làm cần làm đầu tiên.
Đủ nhỏ: Không quá lớn, có thể thực hiện trong khoảng thời gian vừa phải (5 ngày)
Có thể kiểm thử: Có thể dùng các test case để kiểm thử, kiểm thử theo yêu cầu người dùng và các chuẩn mực quy định. Kiểm thử giao diện, các button, dropdown, responsive,...
Làm rõ yêu cầu (thêm - sửa) (1h). edx
Các yêu cầu khác. edx
Tìm hiểu mô hình MVC. Mô hình MVC
Viết html form hiển thị (sử dụng modal) (1h) commit
Gọi API POST phía backend (Hoàn đã làm và deloy lên server để cả nhóm làm chung) REST
Hiển thị dữ liệu khi mở form từ list (khi thêm và khi sửa) (15p) commit
Tạo form data, validate dữ liệu (30p) commit
Chức năng lựa chọn giờ thi - sử dụng date-picker (30p) commit
Chức năng nhập số câu và đáp án (1h) commit
Xử lý khi click button Submit (1h) commit
View list sau khi báo thêm (sửa) thành công (2h)commit
Test giao diện, chức năng. edx
Triển khai ứng dụng.
Demo issue : https://www.youtube.com/watch?v=SSHt6mW1eN0
Đánh giá user story theo quy tắc INVEST (1h)
Thu thập yêu cầu và làm rõ yêu cầu (1h)
Tạo cơ sở dữ liệu (3h)
Tìm hiểu thư viện Sequelize kết nối với MySQL (3h): http://docs.sequelizejs.com
Tạo model câu hỏi (30')
Kết nối Cơ sở dữ liệu với model (30')
Kiểm tra database bằng cách thêm thủ công câu hỏi và chỉnh sửa nếu có lỗi phát sinh (30 phút)
Kiểm thử hộp trắng, nếu độ bảo phủ đạt 80% thì đạt yêu cầu (20 phút)
Tái cấu trúc mã nguồn tối ưu và sạch sẽ hơn (30 phút)
1. Đảm bảo tiêu chí INVEST:
Independent: User story trên là độc lập
Negotiable: User story này có thể thương lượng được khi xây dựng tính năng tùy bộ lọc nhiều hay ít phụ thuộc vào số lượng sản phẩm
Valuable: User story là có giá trị với người cần mua giày theo yêu cầu nhanh chóng, tiện ích
Estimable: Có thể ước lượng được công việc và thời gian hoàn thành
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối(12h)
Testable: tính năng có thể kiểm thử để kiểm tra
2. Các công việc cần làm
Tìm hiểu những yêu cầu lọc (10p)
Liệt kê các yêu cầu lọc (10p)
Thiết kế giao diện lọc bằng html, css, bootstrap (4h)
Thêm các tính năng (2h)
Xử lý việc tìm dữ liệu trên cơ sở dữ liệu (10p)
Tối ưu hóa code (1h)
Nhập và xuất cơ sở dữ liệu(10p)
Hiện thị bộ lọc và kiểm thử (15p)
Sửa và hoàn thiện(1h)
Quy tắc INVEST:
Công việc cần làm:
Phân tích yêu cầu người dùng: trang web có chức năng hiển thị danh sách món ăn theo nguyên liệu.
Cập nhật lại giao diện chính.
commit
Tìm kiếm công thức theo thành phần, nguyên liệu ( thừa kế từ giao diện chính)
commit
Tạo thêm bảng nguyên liệu trong database: chứa id và tên nguyên liệu để trỏ đến bảng công thức món ăn
Bảng món ăn thêm foreign key là id của bảng nguyên liệu (tài liệu)
Kết nối full text search: elasticsearch với flask-sqlalchemy.
commit
Viết phương thức truy cập giao diện món ăn theo nguyên liệu và kết nối database
commit
Viết lệnh truy vấn trả về danh sách món ăn theo nguyên liệu gợi ý cho người dùng.
commit
Các tiêu chí INVEST
Independent: User story trên hoàn toàn độc lập với các user story khác, có thể thực hiện riêng biệt.
Negotiable: Có thể thương lượng về mức độ bị xếp vào diện không đủ tiêu chuẩn của người bán.
Valuable: Thêm tính năng này giúp nâng cao trải nghiệm sử dụng của khách hàng và tạo nên một môi trường mua bán trung thực.
Estimable: Có thể làm trong vòng 2-3 ngày.
Small: đủ nhỏ để có thể nhanh chóng hoàn thành.
Testable: có thể kiểm thử
Công việc cần làm
Thảo luận về mức độ không đủ tiêu chuẩn của người bán
Lấy dữ liệu từ databases
Lọc để tìm ra người phù hợp
Loại bỏ khỏi hệ thống
Independent: user story này là cụ thể và độc lập với các user story khác
Negotiable: có thể thương lượng khi thêm các tính năng bổ sung hoặc chỉnh sửa nội dung
Valuable: giúp người học nấu ăn dễ dàng làm theo công thức với các video chi tiết, cụ thể
Estimable: cần nguồn video, chỉnh sửa giao diện phần xem công thức nấu ăn của từng món (khoảng 15h)
Small: dễ chỉnh sửa, bổ sung, tuy nhiên việc thu thập video phụ thuộc vào số lượng công thức món ăn
Testable: có thể dễ dàng kiểm thử để cập nhật đúng theo hướng mà người dùng mong muốn
Xác định tính chất của yêu cầu: đầy đủ, nhất quán, chính xác và xúc tích
Thẩm định yêu cầu: Đo lường khi nào thì chức năng hoàn thành được đánh giá là đạt yêu cầu
Tạo user story theo quy trình Scrum
Đánh giá user story theo nguyên tắc INVEST
Tìm hiểu về Python và Framework Flask đặc biệt lưu ý đến phần nhúng video: Ba
Flask-embed-video
Xây dựng APIs giúp gửi dữ liệu lên server
Tài liệu thiết kế API
Commit code
Thu thập dữ liệu: Tạo kho dữ liệu gồm ảnh, nguyên liệu, công thức, link nhúng video hướng dẫn nấu ăn theo từng món đã có trong danh sách món ăn của trang web (10h)
Thiết kế Database tối ưu nhất Tài liệu
Đưa dữ liệu về công thức, hình ảnh, video của món ăn vào database sử dụng Xampp
Thiết kế sơ đồ giao diện mới cho giao diện xem công thức nấu ăn, thêm sắp xếp lại các phần cho hợp lí:
Tài liệu về sơ đồ
Sơ đồ giao diện mới
Sử dụng HTML và CSS để thiết kế giao diện đẹp hơn
Commit code
Tạo phương thức tìm kiếm cho giao diện món ăn.
Commit code
Xây dựng các ca kiểm thử hộp trắng để bao phủ các nhánh code (1-2 giờ):
Kiểm thử bằng kiểm thử hộp đen để viết các ca kiểm thử, kiểm tra giao diện, chức năng tìm kiếm,... (1-2 giờ)
Loại bỏ các loại mã xấu (1-2 giờ).
Independent: không liên quan quá nhiều đến các câu chuyện khác trong dự án như làm bài thi, đọc tin tức,...
Negotiable: tính năng có thể đàm phán được. Xây dựng giao diện xem danh sách môn học thông qua trao đổi đàm phán với khách hàng (màu sắc, khung hình, cỡ chữ như thế nào?, có những chức năng gì?).
Valuable: có giá trị với người dùng. Đây là khung danh sách để người quản lí có thể biết được hệ thống của mình có những môn học nào.
Estimable: Có thể hiểu được mức độ ưu tiên, ước lượng được công việc vì khá cụ thể và tương minh vì số lượng môn học có hạn.
Small: Tính năng đủ nhỏ để có thể xây dựng trong thời gian tương đối, khoảng 1 - 2 tuần.
Testable: tính năng có thể kiểm thử, người dùng có thể kiểm thử được để biết nhóm phát triển xây dựng giao diện xem đáp án đã đúng yêu cầu hay đáp ứng được yêu cầu hay chưa. các chức năng thêm sửa xóa hoạt động thế nào.
Phân tích rõ yêu cầu khách hàng về giao diện và chức năng( 2h ) (cụ thể)
Tìm hiểu câu chuyện người dùng (tài liệu tham khảo)
Tìm hiểu và lựa chọn mô hình MVC (2h) (tài liệu tham khảo)
Tìm hiểu nguyên lí chia nhỏ giao diện (Tài liệu tham khảo)
Tìm hiểu mẫu thiết kế trạng thái (design patterns: state) (tài liệu tham khảo)
Tìm hiểu về API (2h) (tài liệu tham khảo)
Thiết kế khung hình giao diện gồm check box , table content, button, dropdown ( 4h )
Gọi API trả về dữ liệu danh sách môn học( 2h) (commit: lần 1)
Gọi API thay đổi trạng thái một môn học( 1h) (commit: lần 1)
Gọi API thay đổi trạng thái nhiều môn học (1h) (commit: lần 1, lần 2)
Gọi API để xóa một môn học (1h) (commit: lần 1)
Gọi API để thêm, sửa một môn học (1h) (commit: lần 1)
Xử lí thông báo thành công hoặc không thành công khi thêm hoặc sửa môn học (1h) (commit: lần 1)
Lọc danh sách môn theo tùy chọn (theo trạng thái hoặc tìm kiếm môn học) (1h)
(commit: lần 1)
Sắp xếp môn học theo các tính chất khác nhau (1h) (commit: lần 1)
Phân trang (1h) (commit: lần 1)
Ghi chú, cải thiện mã nguồn (clean code) (tài liệu tham khảo) (commit: lần 1)
Kiểm thử hộp trắng, dựa vào code, tính độ bao phủ, nếu > 70% thì đạt yêu cầu(3h) (tài liệu tham khảo)
Kiểm thử hộp đen, dựa vào giao diện, chức năng, dùng phương pháp phân vùng tương đương và phân tích giá trị biên viết các ca kiểm thử ( 4h ) (tài liệu tham khảo)
Cho các thành viên trong nhóm kiểm thử và dùng thử, mời 1 số người dùng trải nghiệm.
Triển khai ứng dụng (link ứng dụng)
Independent: User story trên là độc lập với các user story khác khi tính năng tìm kiếm là riêng biệt với các tính năng khác.
Negotiable: User story này có thể thương lượng được khi xây dựng tính năng.
Valuable: User story có giá trị đối với việc tìm kiếm của người dùng.
Estimable: Có thể ước lượng được lượng công việc và thời gian hoàn thành khi các công việc cần làm là nhỏ.
Small: Các công việc cần làm là nhỏ.
Testable: Có thể test được riêng từng phần của tính năng để đánh giá kết quả.
Làm rõ yêu cầu của user story (chức năng tìm kiếm phòng trọ bằng bộ lọc) (1 giờ) Phân rã câu chuyện người dùng
Liệt kê các nội dung cần có trong bộ lọc tìm kiếm (1 giờ)
Lựa chọn thiết kế theo mô hình MVC Mẫu thiết kế MVC
Thiết kế cơ sở dữ liệu lưu các thông tin của phòng trọ (1 giờ) Commit
Thêm giao diện cho bộ lọc và hiển thị kết quả tìm kiếm bằng html (2 giờ) Commit
Chỉnh sửa hiển thị trang web theo các loại màn hình(2 giờ) Cải thiện thiết kế Commit
Sử dụng CSS và javascript để giao diện hiển thị đẹp và dễ sử dụng hơn (3 giờ) Commit
Xử lý việc nhập sai dữ liệu từ người dùng (1.5 giờ) Commit
Lấy dữ liệu người dùng nhập vào (1.5 giờ) Commit
Từ dữ liệu đã nhập và lấy ra dữ liệu phù hợp trên cơ sở dữ liệu (2 giờ) Commit
Hiển thị các căn phòng phù hợp với tìm kiếm của người dùng (2 giờ) Commit
Kiểm thử hộp đen dựa vào giao diện chức năng (3 giờ) Kiểm thử hộp đen
Tối ưu mã nguồn ngắn gọn, dễ đọc, dễ bảo trì (1 giờ) Code smells
Kiểm thử chấp nhận của người dùng (3 giờ) Kiểm thử chấp thuận
Video user story https://youtu.be/DbOC8O1skPk
Quy tắc INVEST:
Công việc cần làm:
1. INVEST
Independent: Tính năng này là độc lập, không phụ thuộc vào bất kì tính năng nào
Negotiable: Có sự linh hoạt,có thể chỉnh sửa, viết lại, bổ sung thêm (Vd: có thể cập nhật thêm nhiều thông tin hơn,...)
Valuable: Mang lại giá trị cho người dùng (những mẹo vặt bổ ích )
Estimable: Có thể định lượng được,có thể ước lượng được cần bao lâu để hoàn thành xong yêu cầu
Small: Đủ nhỏ và đơn giản (chỉ gồm các mẹo vặt)
Testable: Có thể kiểm tra và đánh giá được kết quả (kiểm tra giao diện,...)
2. CÁC CÔNG VIỆC CẦN LÀM
Thu thập và phân tích yêu cầu, phân chia yêu cầu thành 2 nhóm: yêu cầu chức năng và yêu cầu phi chức năng (2h)
Phân tích làm rõ yêu cầu
Xây dựng product backlog với các user story áp dụng mô hình MVC (30p - 1h)
Mẫu thiết kế MVC
Đặc tả yêu cầu (1h)
Lý thuyết đặc tả yêu cầu
Thẩm định yêu cầu: đánh giá các yêu cầu đã phù hợp với người dùng chưa (2h)
Lý thuyết thẩm định yêu cầu
Thiết kế sơ đồ tương tác và giao diện (2h)
Xây dựng giao diện sơ khai của mục mẹo vặt bằng HTML, CSS (1h - 2h)
Tài liệu học
Chỉnh sửa lại giao diện bằng Bootstrap (2h)
Thu thập cơ sở dữ liệu và thiết kế mô hình quan hệ của kho dữ liệu (5h-6h)
Cơ sở dữ liệu
Tạo cơ sở dữ liệu sử dụng MySQL ( 3h - 4h)
Kết nối cơ sở dữ liệu với giao diện sử dụng ngôn ngữ Python (2h)
commit code kết nối database
Kiểm thử hộp đen (kiểm thử giao diện: cuộn đến vị trí nào thì sẽ hết trang, ...) (3h)
Kiểm thử hộp đen
Kiểm thử hộp trắng( kiểm tra mã nguồn,tính độ bao phủ, nếu độ bao phủ >70% thì đạt yêu cầu) (2h)
Kiểm thử hộp trắng
Phân tích tĩnh sử dụng Pylint để đưa ra các cảnh báo và đưa ra các nguy cơ tiềm ẩn
Phân tích tĩnh
Tối ưu mã nguồn sạch, gọn, dễ hiểu
Thu thập feedback và update( nếu cần)
Link demo chức năng: https://www.youtube.com/watch?v=Do65rzt4vAo&t=9s
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.