XP nhân mạnh mối quan hệ làm việc chặt chẽ prữa nhóm phát triển, khách hàng và các bên liên quan, với trọng tâm là phát triển và triển khai nhanh chóng, lặp đi lặp lại.. CAC GIA TRI COT
Trang 1
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYEN THONG VIET HAN Khoa Khoa Hoc May Tinh
VKU
BAO CAO CONG NGHE PHAN MEM
DE TAI: EXTREME PROGRAMMING
Sinh viên thực hiện: Nguyễn Minh Phi 21TT098
Nguyễn Đăng Thịnh 21IT516
Huỳnh Ngọc Huy 211T490 Quach Hai Nam 2IIT155
Phan Tan Tin 211T385
Giảng viên hướng dan: ThS V6 Van Luong
Da Nang, 04 thang 09 nam 2023
Trang 2
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYEN THONG VIET HAN
Khoa Khoa Hoc May Tinh
VKL
ww 1 Gap
_—_————~"—=
BAO CAO CONG NGHE PHAN MEM
DE TAI: EXTREME PROGRAMMING
Sinh vién: Nguyễn Minh Phi 211T098
Nguyễn Đăng Thịnh 211T516
Huỳnh Ngọc Huy 2111490 Quách Hải Nam 2IITI155
Phan Tan Tin 211T385
Giảng viên hướng dan: ThS V6 Van Luong
Da Nang, 04 thang 09 nam 2023
Trang 3NHẬN XÉT GIẢNG VIÊN HƯỚNG DẪN
Ngày 26 tháng 07 năm 2023
Giảng viên hướng dẫn ThS Võ Văn Luong
Trang 4LỜI CẢM ƠN
Chúng em sẽ không thê hoàn thành báo cáo này nếu không có sự hướng dẫn và
chi bao tan tinh cua ThS V6 Van Luong Em xin chan thanh cam on sy chi bao của thay
Em xin trân trọng cảm ơn quý thầy cô trong Trường Đại Học Công nghệ thông tin và Truyền thông Việt-Hàn Đại học Đà Nẵng đã tận tình giảng dạy, truyền đạt những kiến thức quý báo và tạo điều kiện cho em thực hiện dé an này
Xin chân thành cảm ơn sự giúp đỡ của các bạn cũng như các anh chị đi trước trong quá trình thực hiện báo cáo
Mặc dù đã cố gắng nỗ lực hết mình, song báo cáo chắc chắn còn nhiều thiếu sót
Em rất mong nhận được sự thông cảm và chỉ báo tận tình của quý thầy cô và các bạn
Trang 5MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU
1.1 Tổng quan
1.2 Cấu trúc báo cáo
CHƯƠNG 2 CÁC GIA TRI COT LOI
2.1 Giao tiép (Communication)
2.2 Đơn giản (Simplicity)
2.3 Phản hồi (Feedback)
2.4 Can dam (Courage)
2.5 Respect (T6n trong)
CHUONG 3 CAC NGUYEN TAC
3.1 Phan héi nhanh(Rapid Feedback):
3.2 Gia dinh Don gian(Assume Simplicity):
3.3 Thay đối tiệm tiến(Incremental Change):
3.4 Sống chung với Thay d6i(Embracing Change):
3.5 Công việc chất lượng cao(Quality Work):
CHƯƠNG 4 CÁC KĨ THUẬT THỰC HÀNH
4.1 Nhóm 1: Feedback (Phan héi)
4.2 Nhom 2: Continual Process (Qua trinh lién tuc)
4.3 Nhóm 3: Code Understanding (Hiểu mã nguồn)
4.4 Nhom 4: Work Conditions (Điều kiện làm việc)
CHƯƠNG 5 QUY TRÌNH CỦA EXTREME PROGRAMMING
5.1 Giai doan Kham pha (Exploration Phase)
5.2 Giai doan Lap ké hoach (Planning Phase)
5.3 Giai doan Lap lai dén Phat hanh (Iterations to Release Phase)
5.4 Giai doan Dua vao San xuat (Productionizing Phase)
Trang 65.5 Giai đoạn Bảo trì (Maintenance Phase)
5,6 Giai đoạn Kết thúc (Death Phase)
Trang 7CHUONG 1 GIỚI THIỆU
1.1 Tổng quan
Extreme Programming (XP) la mét phuong phap phat trién phan mém Agile tap trung vào việc cung cấp phần mềm chất lượng cao thông qua phản hồi, cộng tác và thích ứng thường xuyên và liên tục XP nhân mạnh mối quan hệ làm việc chặt chẽ prữa nhóm phát triển, khách hàng và các bên liên quan, với trọng tâm là phát triển và triển khai
nhanh chóng, lặp đi lặp lại
XP tập trung vào việc cải thiện hiệu suất của đội phát triển, làm việc củng khách hàng
và tập trung vào chất lượng phần mềm Điều nảy được thực hiện thông qua việc kết hợp các nguyên tắc, thực tiễn và kỹ thuật:
Extreme Programming (XP) là một phương pháp phát triên phần mém ma Kent Beck
da tao ra Kent Beck là một nhà phát triển phan mém va tac giả nỗi tiếng, ông đã đóng
gop quan trọng trong việc xây dựng phong cách phát triển phần mềm Agile và Extreme Programming Ông cũng là tác giả của cuốn sách "Extreme Programming Explained: Embrace Change", một tác phẩm quan trọng giúp định hình cơ bản và nguyên tắc của phương pháp này
1.2 Cấu trúc báo cáo
Báo cáo được trình bài trong 5 chương, cụ thê như sau:
Chương 1 “Giới thiệu”
Chương 2 “Các giá trị cốt lõi”
Chương 3 “Các nguyên tắc”
Chương 4: “Các kĩ thuật thực hành”
Chương 5: “Chu trinh của dự án eXtreme Programming”
Trang 8CHƯƠNG 2 CAC GIA TRI COT LOI
2.1 Giao tiếp (Communication)
XP đặt một sự tập trung đặc biệt vào giao tiếp hiệu quả giữa các thành viên trong nhóm phát triển phần mềm Việc liên tục trao đổi thông tin, ý kiến và thông tin về tiễn
độ giúp tạo ra sự hiểu biết rõ ràng và tránh hiểu nhằm
2.2 Don gian (Simplicity)
XP khuyến khích việc tạo ra các giải pháp đơn giản và hiệu quả nhất Điều này
giúp giảm thiểu sự phức tạp không cần thiết, làm cho mã nguồn dễ đọc vả hiểu, và
giảm nguy cơ lỗi
2.3 Phản hồi (Feedback)
XP thúc đây việc lấy phản hồi thường xuyên từ khách hàng và người dùng cuối Điều này giúp đảm bảo rằng dự án đang được phát triển theo hướng đúng, và cho phép thay đổi linh hoạt khi có yêu cầu mới
2.4 Can dam (Courage)
XP khuyén khich cac thanh vién trong nhóm phát triển phần mềm không ngần
ngại đối mặt với những thách thức và rủi ro Điều nay bao gồm việc đám nói lên khi có
vấn đề, dám thử nghiệm và áp dụng các biện pháp mới
2.5 Respect (Tôn trọng)
XP để cao việc tôn trọng giữa các thành viên trong nhóm phát triển phần mềm Điều này bao gồm tôn trọng quan điểm và ý kiến của nhau, tôn trọng sự đóng góp và
sự chịu trách nhiệm của mỗi người
Trang 9CHUONG 3 CAC NGUYEN TAC 3.1 Phan hoi nhanh(Rapid Feedback):
Luôn lăng nghe phản hồi từ nhiều phía, lấy được phản hồi một cách nhanh nhất,
tìm hiểu chúng và đưa những hiểu biết đó vào trong hệ thống nhanh nhất có thê
Các nhà phát triên thiết kế, triển khai vả thử nghiệm các chức năng Do đó, phản
hồi được chia sẻ ngay lập tức và được áp dụng không chậm trễ
Ngoài ra, mã cũng được hệ thống xem xét và phản hồi sẽ được chia sẻ ngay lập tức
3.2 Giả định Don gian(Assume Simplicity):
Mã đã phát triển sẽ đễ dàng cấu trúc lại (tái sử dụng sau một số sửa đôi) để thực hiện các thử nghiệm bỗ sung bằng cách thực hiện các thử nghiệm đơn v1
Cé gắng giữ mã đơn giản vả tuân theo quy tắc “you are not going to need it” co nghia 1a néu bay gid chung ta không cần thì không nên giữ
“Do not repeat yourself”, các dev tuân theo nguyên tắc này, nó có nghĩa là bạn
không nên giữ nhiều bản sao của cùng một document, code, task hoặc bắt cứ thứ gì
3.3 Thay đỗi tiệm tiến(Incremental Change):
Không thay đổi cả “lỗ”, mà chỉ thay đôi một ít trong thiết kế, chức năng, kế hoạch 3.4 Sống chung với Thay déi(Embracing Change):
Chiến thuật tốt nhất là tôn trọng tat cả các khả năng trong khi giải quyết các vấn đề
áp lực nhất, nguyên tắc này nói về:
- - Khả năng chấp nhận những thay đôi trong công việc hiện tại của bạn
- Điều chỉnh những thay đổi đó mà không làm tôn hại đến công việc của bạn
- Cung cap hiệu suất tương tự khi thực hiện những thay đôi đó
3.5 Công việc chất lượng cao(Quality Work):
Phải luôn đầu tư đề có được chất lượng công việc cao nhất, đến mức “hoàn hảo”
- Lam việc có tỉnh thần tập thé
- Lam tét nhiém vu duoc giao
- _ Giúp đỡ, hỗ trợ lẫn nhau
Trang 10- Giữu thái độ tích cực và tập trung vào việc cung cấp một sản phẩm chất lượng
CHƯƠNG 4 CÁC KĨ THUẬT THỰC HÀNH 4.1 Nhóm 1: Feedback (Phản hồi)
- Test-Driven Development (Phat triển dựa trên kiểm thử): Thực hành này yêu cầu viết các bài kiểm tra trước khi viết mã nguồn Mục tiêu là đảm bảo mã nguồn được viết đúng và có tính đáng tin cậy cao Bất kỳ mã nguồn nào cũng phải vượt qua bài kiểm tra trước khi được chấp nhận
- The Planning Game (Trò chơi lập kế hoạch): Trong cuộc họp này, nhóm phát triển và
khách hàng cùng nhau xác định và ưu tiên các tính năng cần phát triển Điều này đảm
bảo sự hiểu biết rõ rang về mục tiêu và ưu tiên của dự án
- On-site Customer (Khach hang co mat tai chỗ): Thực hành này đòi hỏi sự tham gia chặt chẽ của khách hàng trong suốt quá trình phát triên Khách hàng phải san sang tra lời câu hỏi, ưu tiên tính năng và giải quyết xung đột khi cần thiết
- Pair Programming (Lap trình theo cặp): Hai lập trình viên làm việc củng nhau trên cùng một mã nguồn Một người viết mã, trong khi người kia kiểm tra mã và đề xuất cải tiến Thực hành này giúp đảm bảo chất lượng và sự chia sẻ kiến thức trong nhóm 4.2 Nhóm 2: Continual Process (Qua trinh lién tuc)
- Continuous Integration (Tich hop lién tuc): Ma nguén duoc tich hop thuong xuyên
để phát hiện lỗi sớm và đảm bảo rằng các thành viên của nhóm đang làm việc trên
phiên bản mới nhất của mã nguồn
- Code Refactoring (Tai cầu trúc mã nguồn): Thực hành này liên quan đến việc liên tục cải thiện mã nguồn, loại bỏ sự trùng lặp, tăng tính nhất quán và giảm độ phụ thuộc
giữa các phân tử
Trang 11- Small Releases (Phát hành nhỏ): Sản phâm được phát hành một cách thường xuyên
trong hình dạng các phiên bản nhỏ Điều nảy giúp đảm bảo tính liên tục và đánh giá
hiệu suât của sản phâm trong môi trường thực tê
4.3 Nhóm 3: Code Understanding (Hiểu mã nguồn)
Simple Design (Thiết kế đơn giản): Mục tiêu là tạo ra thiết kế phần mềm đơn giản
và hiệu quả, với ít mã lặp lại, và dễ bảo trì trong tương lai
Coding Standards (Tiêu chuẩn viết mã): Thực hành này đảm bảo rằng tất cả các thành viên trong nhóm tuân thủ các quy tắc và chuẩn mực cu thé khi viết mã
- Collective Code Ownership (So hitu ma nguén chung): Tất cả các thành viên trong nhóm có trách nhiệm chia sẻ và cải thiện mã nguồn Không có "chủ sở hữu" duy nhất của mã
System Metaphor (Thé nhớt hệ thống): Đây là việc tạo ra một biểu đồ hoặc mô hình tổng thể cho hệ thống, giúp tất cả mọi người hiểu cách hệ thống hoạt động và tương tác
4.4 Nhóm 4: Work Conditions (Điều kiện làm việc)
40-Hour Week (Làm việc 40 giờ/tuần):Thực hành này đảm bảo rằng các thành viên trong nhóm duy trì sức khỏe và hiệu suất tốt bằng cách giới hạn số giờ làm việc
trong tuần
Trang 12CHƯƠNG 5 QUY TRINH CUA EXTREME PROGRAMMING
5.1 Giai doan Kham pha (Exploration Phase)
Trong giai đoạn này, khách hàng viết các thẻ câu chuyén ma ho muén bao gồm trong phiên bản đầu tiên
Đồng thời, nhóm dự án làm quen với các công cụ, công nghệ và thực hành mà họ
sé su dung trong dy an
Thời gian thực hiện giai đoạn này thay đổi tùy thuộc vào sự quen thuộc của các lập trình viên với công nghệ, thường mất từ vài tuần đến vài tháng
5.2 Giai đoạn Lập kế hoạch (Planning Phase)
Trong giai đoạn này, nhóm phát triển cùng với khách hàng và các bên liên quan xác định mục tiêu phát triển, ưu tiên hóa các câu chuyện người dùng, lập kế hoạch cho
các lặp lại, lên lịch làm việc, phân bổ tài nguyên và định nghĩa kế hoạch làm việc chi tiết
5.3 Giai đoạn Lặp lại đến Phát hành (Iterations to Release Phase)
Giai đoạn này bao gồm một số lần lặp lại của hệ thống trước khi phát hành đầu tiên
Mỗi lần lặp lại thường mắt từ một đến bốn tuần đề thực hiện
Lần lặp lại đầu tiên tập trung vào xây dựng kiến trúc của hệ thống, chọn các câu chuyện øiúp xây đựng cấu trúc tông thể
Khách hàng quyết định câu chuyện nào được chọn cho mỗi lần lặp lại
Hệ thống sẵn sàng cho việc sản xuất vào cuối lần lặp cuỗi cùng
5.4 Giai đoạn Đưa vào Sản xuất (Productionizing Phase)
Giai đoạn này liên quan đến kiểm tra thêm và kiểm tra hiệu suất trước khi phát
hành hệ thống cho khách hàng
Có thể vẫn phát hiện các thay đổi mới và phải quyết định liệu có nên bao gồm chúng trong bản phát hành hiện tại hay không
Các lần lặp lại có thể cần được nhanh chóng từ ba tuần xuống còn một tuần Mọi ý tưởng và đề xuất trì hoãn được tải liệu để triển khai sau này trong giai đoạn bảo trì
Trang 135.5 Giai doan Bao tri (Maintenance Phase)
Sau khi phát hành đầu tiên, dự án XP phải duy trì hệ thống trong sản xuất đồng thời tiếp tục sản xuất các lần lặp lại mới
Giai đoạn này bao gồm các công việc liên quan đến hỗ trợ khách hàng
Tốc độ phát triển có thế giảm sau khi hệ thống đã hoạt động trong sản xuất
Có thế cần tích hợp thêm những thành viên mới vào nhóm và điều chỉnh cấu trúc
nhóm đề đáp ứng nhu cầu tiến triển
5.6 Giai đoạn Kết thúc (Death Phase)
Giai đoạn kết thúc xảy ra khi đáp ứng các điều kiện cụ thể
Các điều kiện này có thể bao gồm khi khách hàng không còn câu chuyện hoặc yêu cầu cụ thể nào đề triển khai
Hệ thông đáp ứng nhu cầu của khách hàng, bao gồm hiệu suất va đáng tin cậy
Việc viết tài liệu cần thiết về hệ thống được hoàn thiện, vì không còn sự thay đôi nào về kiến trúc, thiết kế hoặc mã nguồn được dự kiến
Trong một số trường hợp, dự án có thế vào giai đoạn kết thúc nếu nó không thế cung cấp các kết quả mong muốn hoặc trở nên quá đắt đỏ đề tiếp tục phát triển