Chúng em cũng gửi lời cảm ơn đến các thầy cô trong khoa đã giúp chúng em trang bị những kiến thức cần thiết để chúng em có đủ khả năng để thực hiện bài tập lớn.Tuy đã cố gắng hết sức để
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======***======
BÁO CÁO BÀI TẬP LỚN THUỘC HỌC PHẦN
NHẬP MÔN CÔNG NGHỆ PHẦN MỀM
ÁP DỤNG MÔ HÌNH AGILE PHÂN TÍCH WEBSITE
ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======***======
BÁO CÁO BÀI TẬP LỚN THUỘC HỌC PHẦN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM
ÁP DỤNG MÔ HÌNH AGILE PHÂN TÍCH WEBSITE
ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Hà nội,
Trang 3LỜI NÓI ĐẦU 1
MỞ ĐẦU 2
CHƯƠNG I TỔNG QUAN MÔ HÌNH AGILE 3
1.1 GIỚI THIỆU TỔNG QUAN VỀ MÔ HÌNH AGILE 3
1.1.1 Lịch sử hình thành của mô hình Agile 3
1.1.2 Những khái niệm cơ bản 3
1.1.3 Triết lý của mô hình Agile 4
1.1.4 Nguyên tắc của mô hình Agile 6
1.1.5 Các phương pháp Agile phổ biến 6
1.1.6 Đặc trưng của mô hình Agile 9
1.2 CÁC HOẠT ĐỘNG TRONG MÔ HÌNH AGILE 10
1.2.1 Lập kế hoạch (Sprint Planning) 10
1.2.2 Phân tích yêu cầu (Requirements Analysis) 10
1.2.3 Thiết kế (Design) 10
1.2.4 Mã hóa (Coding) 11
1.2.5 Kiểm thử đơn vị (Unit Testing) 11
1.2.6 Kiểm tra chấp nhận (Acceptance Testing) 11
CHƯƠNG II GIỚI THIỆU TÀI LIỆU ĐẶC TẢ CHO WEBSITE ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI 12
2.1 Giới thiệu về tài liệu đặc tả 12
2.1.1 Mục đích của tài liệu yêu cầu cho website ĐHCNHN 12
2.1.2 Phạm vi của sản phẩm 12
2.1.3 Các định nghĩa, từ viết tắt 13
2.1.4 Các tham chiếu 14
2.2 Mô tả chung 14
2.2.1 Giới thiệu chung về website 14
2.2.2 Các chức năng của website 14
2.2.3 Đặc điểm của người sử dụng 15
2.2.4 Các ràng buộc 16
2.2.5 Giả thiết và các phụ thuộc 17
2.3 Đặc tả yêu cầu (thay bằng yêu cầu của website) 18
2.3.1 Yêu cầu chức năng 18
2.3.2 Yêu cầu phi chức năng 23
Trang 4KẾT LUẬN 25 TÀI LIỆU THAM KHẢO 26
Trang 5LỜI NÓI ĐẦU
Chúng em xin cảm ơn cô Nguyễn Thị Mỹ Bình – giảng viên đã hướng dân tận tình, chu đáo giúp nhóm chúng em có thể hoàn thành được nội dung của đề tài này Chúng em cũng gửi lời cảm ơn đến các thầy cô trong khoa đã giúp chúng em trang bị những kiến thức cần thiết để chúng em có đủ khả năng để thực hiện bài tập lớn
Tuy đã cố gắng hết sức để nghiên cứu, tìm hiểu cũng như thực hiện đề tài, nhóm chúng em không thể tránh khỏi những sai sót, mong thầy cô và các nhóm khác nhận xét, đánh giá để bài tập lớn của nhóm chúng em được hoàn thiện hơn
NHÓM 7
MỞ ĐẦU
Lý do chọn đề tài
Trang 6Website “Đại học Công nghiệp Hà Nội” là một phương tiện gần gũi, thân thuộcđối với mỗi sinh viên HAUI cũng như những quý phụ huynh, học sinh muốn tìm hiểu
về “ Khi nghiên cứu và tìm hiểu về đề tài sẽ giúp chúng em phát triển những kỹ năngmềm (giao tiếp, làm việc nhóm, sử dụng những công cụ văn phòng – Word,
Powerpoint, …) và các ứng dụng mô hình Agile để phân tích một sản phẩm phần mềm mà ở đây là website của Đại học Công nghiệp Hà Nội
Mục tiêu nghiên cứu của đề tài
Phân tích website của trường “Đại học Công nghiệp Hà Nội –HAUI về các
khía cạnh như thành phần, giao diện, cấu trúc, … Giúp người đọc có cái nhìn khái quát, chính xác về chức năng của trang web Bên cạnh đó còn giúp nhóm chúng tôi
thực hành làm việc nhóm, thuyết trình và nhiều kĩ năng khác
Đối tượng nghiên cứu của đề tài:
Website trường “Đại học Công nghiệp Hà Nội - HAUI”
Phạm vi nghiên cứu của đề tài:
Nội bên trong website “haui.edu.vn/vn”
Phương pháp nghiên cứu: Áp dụng mô hình Agile
Cấu trúc nội dung của bài báo cáo: Gồm 2 chương
Chương I: Tổng quan về mô hình Agile: đưa ra những khái niệm cơ bản, lịch
sử hình thành và phát triển của mô hình Agile, nêu ra những hoạt động cần thực hiện
và đánh giá ưu nhược điểm của mô hình
Chương II: Tài liệu đặc tả website Đại học Công nghiệp Hà Nội
Trang 7CHƯƠNG I TỔNG QUAN MÔ HÌNH AGILE 1.1 GIỚI THIỆU TỔNG QUAN VỀ MÔ HÌNH AGILE
1.1.1 Lịch sử hình thành của mô hình Agile
Những năm 1990: Các phương pháp Agile đầu tiên xuất hiện trong giai đoạnnày, bao gồm Scrum, Crystal, DSDM (Dynamic Systems Development Method) vàExtreme Programming (XP) Các phương pháp này tập trung vào tính linh hoạt vàgiảm thiểu rủi ro trong quá trình phát triển phần mềm
Năm 2001: Hội nghị Agile tại Snowbird, Utah, Mỹ là một sự kiện quan trọngtrong lịch sử Agile Tại hội nghị này, một nhóm các chuyên gia phát triển phần mềm
đã đưa ra "Tuyên bố Agile" (Agile Manifesto) Tuyên bố này ghi lại cácnguyên tắc và giá trị cốt lõi của Agile, định nghĩa rõ nét phương pháp phát triển này
và đánh dấu sự ra đời chính thức của Agile
Sau năm 2001: Agile tiếp tục phát triển và trở thành một xu hướng quản lý dự
án phổ biến trên toàn cầu Nhiều tổ chức và công ty áp dụng Agile không chỉ trongphát triển phần mềm mà còn trong các lĩnh vực khác như marketing, quản lý sảnphẩm và dịch vụ khách hàng
Hiện tại: Agile vẫn tiếp tục phát triển và thích ứng với sự biến đổi trong ngànhcông nghiệp và nhu cầu của khách hàng Các biến thể của Agile, như SAFe, LeanAgile và DevOps, đã được phát triển để đáp ứng nhu cầu phát triển phần mềm quy
mô lớn và quản lý dự án phức tạp hơn
1.1.2 Những khái niệm cơ bản
Phần mềm (Software): Theo nghĩa hẹp là 1 tập hợp các câu lệnh được viết
bằng ngôn ngữ lập trình Giải quyết bài toán
Công nghệ (Engineering): là cách sử dụng các công cụ, kỹ thuật để giải quyết
vấn đề
Công nghệ phần mềm (SE – Software Engineering): theo IEEE là việc áp
dụng cách nghiên cứu và tiếp cận có hệ thống, quy tắc, có thể xác định sốlượng để phát triển, vận hành và bảo trì phần mềm; nghĩa là áp dụng kỹ thuậtvào phần mềm
Trang 8 Agile: Agile là một triết lý quản lý dự án và phát triển phần mềm dựa trên việc
làm việc theo nhóm nhỏ, linh hoạt và tương tác liên tục với khách hàng
Scrum: Scrum là một trong những phương pháp quản lý dự án phổ biến trong
Agile Nó sử dụng một chu kỳ phát triển ngắn gọi là “Sprint” và các cuộc họphàng ngày để tăng cường sự tương tác và kiểm soát tiến độ
Sprint: Sprint là một khoảng thời gian ngắn, thường từ 1 đến 4 tuần, trong đó
nhóm phát triển thực hiện công việc và tạo ra một phiên bản có thể chạy đượccủa phần mềm
Product Owner: Product Owner là người đại diện cho khách hàng hoặc người
sử dụng cuối trong một dự án Agile Product Owner xác định và ưu tiên yêucầu, cung cấp phản hồi và quyết định về phạm vi và ưu tiên của sản phẩm
Scrum Master: Scrum Master là người đảm bảo rằng nhóm phát triển tuân thủ
quy trình Scrum Họ loại bỏ các rào cản và giúp đỡ nhóm phát triển hoạt độngmột cách hiệu quả
Đánh giá hài lòng của khách hàng (Customer Satisfaction): Trong Agile,
việc tạo ra sự hài lòng cho khách hàng được coi là mục tiêu hàng đầu Việccung cấp sản phẩm có giá trị và sử dụng phản hồi của khách hàng để cải thiệnsản phẩm là quan trọng
1.1.3 Triết lý của mô hình Agile
Giá trị Định nghĩa Ví dụ thực thi
Đảm bảo nhân viên có thểgiao tiếp và làm việc trực tiếpvới nhau, giảm bớt các rào cảngiao tiếp và khuyến khích sựtin tưởng giữa các thành viênnhóm
Trang 9Phần mềm hoạt
động hơn tài liệu
toàn diện
Tạo ra phần mềm hoạt độnghơn việc tạo tài liệu toàndiện
Thay vì tạo các tài liệu như kếhoạch kiểm thử và thông số kỹthuật chi tiết, nhóm Agile xâydựng các phiên bản phần mềm
có khả năng giới hạn để kháchhàng và người dùng kinhdoanh có thể thử nghiệm trướckhi phê duyệt
Thay vì chỉ quan tâm đến cácđiều khoản và điều kiện của
dự án, nhóm Agile tương tácthường xuyên với khách hàng
để nhận phản hồi và điềuchỉnh kế hoạch dự án theo tiếnđộ
Trong phương pháp Agile,nhóm linh hoạt và có khả năngthích ứng với các thay đổitrong dự án, thay vì bám sátmột kế hoạch đã được tạo ra
từ đầu Yêu cầu sản phẩmđược ưu tiên xác định ở đầumỗi giai đoạn, không phảiđồng ý tất cả yêu cầu sảnphẩm từ đầu dự án
1.1.4 Nguyên tắc của mô hình Agile
1 Thỏa mãn yêu cầu của khách hàng - là ưu tiên hàng đầu thông qua việc chuyển giao những sản phẩm giá trị trong thời gian sớm và liên tục
Trang 102 Sẵn sàng cho những thay đổi - thậm chí những thay đổi này xuất hiện muộn Quy trình Agile linh hoạt trong việc ứng phó với sự thay đổi từ khách hàng, giatăng tính cạnh tranh cho khách hàng.
3 Cung cấp phần mềm hoạt động được trong thời gian ngắn từ 1 vài tuần đến 1 vài tháng, với sự ưu tiên thời gian ngắn hơn
4 Cộng tác cùng làm việc: Người kinh doanh và người lập trình phải làm việc cùng nhau mỗi ngày trong suốt dự án
5 Tạo động lực làm việc: Xây dựng các dự án xung quanh cá nhân có động lực Cho họ môi trường làm việc thuận lợi và sự hỗ trợ cần thiết Hãy có niềm tin rằng họ sẽ làm tốt công việc của mình
6 Đối thoại trực tiếp mặt đối mặt là phương pháp hữu hiệu nhất trong việc truyềnđạt thông tin
7 Phần mềm chạy được là thước đo chính của tiến độ dự án
8 Phát triển bền vững và duy trì việc phát triển liên tục Các nhà tài trợ, người phát triển và người dùng nên có thể duy trì tốc độ không đổi vô thời hạn
9 Liên tục quan tâm đến kỹ thuật và thiết kế để tăng cường tính linh hoạt
10.Đơn giản - nghệ thuật tối đa hóa số lượng công việc không làm là điều cần thiết
11.Nhóm tự tổ chức Các kiến trúc, yêu cầu và thiết kế tốt nhất xuất hiện từ các nhóm tự tổ chức
12.Tự phản ánh thường xuyên Trong khoảng thời gian đều đặn, nhóm phản ánh
về cách trở nên hiệu quả hơn, sau đó điều chỉnh cho phù hợp
1.1.5 Các phương pháp Agile phổ biến
- Extreme Programming(XP)
Ý tưởng của phương pháp Extreme Programming được bắt đầu tại ChryslerMotors vào năm 1996 với 1 dự án được đặt tên là Chrysler ComprehensiveCompensation System (C3) Nhóm phát triển dự án này, được dẫn dắt bởi KentBeck, đang vật lộn làm sao để phát hành mã chất lượng cao nhanh hơn và hiệuquả hơn, và kết quả là đã biến quy trình phát triển của họ trở nên hiệu quả, tậptrung vào chất lượng
Trang 11- Scrum
Theo định nghĩa của từ điển Webster, “scrum” là 1 trận đấu bóng bầu dụctrong đó mỗi bên sẽ tập hợp thành 1 đội có liên kết chặt chẽ với nhau Bóngbầu dục không thể chiến thắng bởi chỉ một siêu sao duy nhất trong đội màphải có một nhóm đầy đủ, làm việc chặt chẽ với nhau để thành công Điềunày cũng đúng với việc phát triển Scrum Mỗi thành viên của scrum đềucực kì quan trọng và phải đóng góp nếu muốn thành công
Bất chấp sự phổ biến rộng rãi của Scrum với các công ty quyết định ápdụng phương pháp này, song vẫn có nhiều người không chắc chắn về những
gì phương pháp này đòi hỏi Nhiều người cho rằng XP tập trung nhiều vào
kĩ thuật hoặc nhà phát triển, nhưng scrum có xu hướng giải quyết nhiềuhơn các khía cạnh về quản lý dự án cũng như hợp tác trong phát triển phầnmềm
Scrum nhấn mạnh tầm quan trọng của việc tổ chức dự án thành các khoảngthời gian cụ thể, được gọi là hộp thời gian, giúp nhóm biết họ cần tập trungvào điều gì mỗi ngày và khuyến khích cảm giác cấp bách Các yêu cầu côngviệc được nhóm thành khối công việc có thể hoàn thành trong khung thờigian từ 1 đến 6 tuần được gọi là thời gian chạy nước rút Tất cả công việcthiết kế, phát triển, thử nghiệm và xác nhận khách hàng đều nằm trongSprint; mục tiêu là đến cuối Sprint, sản phẩm đã sẵn sàng để giao cho kháchhàng
- Feature-Driven Development
Được hình thành bởi Jeff De Luca vào năm 1997, trong một cố gắng cungcấp phần mềm cho khách hàng ở Châu Á bằng cách sử dụng phương pháp lặp đilặp lại và hiệu quả tiếp cận De Luca nhận thấy rằng bằng cách kết hợp các khíacạnh của quy trình pha trộn và mô hình hóa đối tượng của Peter Coad, ông có thểđạt được mục tiêu cung cấp dần dần chức năng tập trung vào người dùng Phươngpháp này được gọi là Feature-Driven Development (FDD)
- Dynamic Systems Development Metho
Trang 12RAD là một phương pháp phát triển sản phẩm tập trung vào việc tạo ra cácnguyên mẫu hoạt động hiệu quả nhất có thể bằng cách giảm thiểu chi phí và sựnghiêm ngặt của quy trình Các DSDM Consortium được thành lập ở London đểtập hợp các phương pháp hay nhất từ các học viên và nhà cung cấp với tầm nhìn
“cùng phát triển và thúc đẩy một khuôn khổ RAD độc lập.”
- Lean Software Development
Lean Software Development bắt nguồn từ thế giới sản xuất, nơi có áp dụngrộng rãi ý tưởng về sản xuất tinh gọn Sản xuất tinh gọn được xây dựng trên ýtưởng rằng tất cả các quy trình và tài nguyên phải trực tiếp góp phần tạo ra một cái
gì đó có giá trị cho khách hàng; Giá trị khách hàng được định nghĩa là bất cứ thứ
gì một khách hàng sẵn sàng mua hàng Bất cứ điều gì bên ngoài phạm vi này đượccoi là lãng phí, và mọi nỗ lực phải được thực hiện để loại bỏ sự lãng phí LeanSoftware Development đăng ký các nguyên tắc tương tự nhưng liên quan đến sựphát triển của phần mềm Các nguyên tắc tinh gọn có thể áp dụng cho môi trườngphát triển Agile
- Kaban Method
Phương pháp Kanban được phát triển bởi David J Anderson, người quantâm đến việc cung cấp phần mềm “đúng lúc” và phát triển quy trình để tạo ra mộtgiải pháp tối ưu hệ thống Từ Kanban được dịch thành “bảng hiệu” trong tiếngNhật Một bảng hiệu theo truyền thống được mô tả như một hệ thống quản lý quytrình trực quan cho các đội sản xuất cái gì, khi nào sản xuất và sản xuất bao nhiêu
1.1.6 Đặc trưng của mô hình Agile
Ưu điểm của mô hình Agile
o Khách hàng thường xuyên có cơ hội thấy và trải nghiệm thực tế sản phẩmđược chuyển giao từng giai đoạn, giúp họ có những quyết định và thay đổitrong quá trình phát triển sản phẩm
o Khách hàng có nhận thức mạnh mẽ về quyền sở hữu trong quá trình làmviệc trực tiếp với nhóm dự án
Trang 13o Với phương pháp quản lý Agile, sản phẩm có thể chuyển giao nhanh vớinhững tính năng hoàn thiện cơ bản.
o Sự phát triển tập trung vào người dùng cuối cùng hơn, vì sự tương tácthường xuyên và trực tiếp với khách hàng trong quá trình thực hiện
Nhược điểm của mô hình Agile
o Phụ thuộc vào khách hàng: Mức độ tham gia của khách hàng rất cao đôi khi
là vấn đề cho một số khách hàng – những người không thật sự hứng thú vớicách tiếp cận này
o Mô hình Agile thật sự hiệu quả khi các team member hoàn toàn tập trungvào dự án
o Ảnh hưởng tới tiến độ dự án: Giao hàng đúng tiến độ và việc thường xuyênthay đổi mức độ ưu tiên, có khả năng dẫn đến một số tính năng không đượcchuyển giao đúng thời hạn
o Phát sinh chi phí dự án: Phát sinh thêm một số sprint nếu cần thiết và ảnhhưởng đến chi phí dự án
Những dự án áp dụng được mô hình Agile
o Khi dự án có những thay đổi cần thiết phải thực hiện
o Các yêu cầu mới ít ảnh hưởng tới lịch trình dự án
o Phát triển dự án phần mềm cần có có sự linh động
1.2 CÁC HOẠT ĐỘNG TRONG MÔ HÌNH AGILE
Các phương pháp Agile chia sản phẩm thành các bản xây dựng gia tăng nhỏ.Các bản dựng này được cung cấp trong các lần lặp lại
Mỗi lần lặp lại thường kéo dài từ khoảng một đến ba tháng Mỗi lần lặp lại liênquan đến các nhóm chức năng chéo làm việc đồng thời trên các lĩnh vực khác nhaunhư sau:
1.2.1 Lập kế hoạch (Sprint Planning)
Lập kế hoạch là hoạt động quan trọng trong Agile giúp xác định các công việccần thực hiện trong sprint tiếp theo Đầu tiên, các thành viên trong nhóm phát triển sẽ
Trang 14xem lại và đánh giá kết quả của sprint trước đó, từ đó đưa ra các bài học rút ra để cảitiến trong sprint tiếp theo Sau đó, nhóm phát triển sẽ tham gia và đưa ra các ước tính
về thời gian và khối lượng công việc cần thực hiện để hoàn thành các yêu cầu đãđược đưa ra Kế hoạch sprint cũng giúp nhóm phát triển đưa ra các mục tiêu rõ ràngcho mỗi sprint
1.2.2 Phân tích yêu cầu (Requirements Analysis)
Phân tích yêu cầu là quá trình thu thập, phân tích và hiểu các yêu cầu củakhách hàng để đảm bảo rằng những yêu cầu đó được hiểu đúng và đầy đủ Các nhàphát triển sẽ phân tích và đánh giá các yêu cầu, xác định các ràng buộc và các yêucầu bổ sung để hoàn thành sản phẩm phần mềm Quá trình phân tích yêu cầu cũngcần phải đảm bảo rằng các yêu cầu đó được sắp xếp và xác định ưu tiên để phát triểnphần mềm
1.2.3 Thiết kế (Design)
Thiết kế là hoạt động tập trung vào việc thiết kế kiến trúc phần mềm để đảmbảo rằng nó đáp ứng các yêu cầu và mục tiêu được đề ra Thiết kế bao gồm nhiềukhía cạnh, bao gồm cách tổ chức mã nguồn, lựa chọn công nghệ, kiến trúc hệ thống,
và thiết kế giao diện người dùng Kế hoạch thiết kế phần mềm cũng cần đảm bảo tínhlinh hoạt, đảm bảo rằng kiến trúc có thể thay đổi khi cần thiết để phù hợp với các yêucầu mới
1.2.4 Mã hóa (Coding)
Là quá trình chuyển đổi thiết kế thành mã nguồn và triển khai phần mềm Cácnhà phát triển cần tuân thủ các tiêu chuẩn mã hóa và quy trình kiểm tra để đảm bảorằng mã nguồn được viết tốt và dễ bảo trì
1.2.5 Kiểm thử đơn vị (Unit Testing)
Là quá trình kiểm tra các thành phần của phần mềm để đảm bảo chức nănghoạt động đúng và tương thích với các thành phần khác Các nhà phát triển thực hiệnkiểm thử đơn vị như kiểm tra hàm, lớp và module để đảm bảo rằng chúng hoạt độngđúng