Phương pháp vòng đời phát triển phần mềm SDLC cung cấp một khung quản lý có hệ thống với các sản phẩm cụ thể ở mọi giai đoạn của quy trình phát triển phần mềm.. Trong giai đoạn SDLC thứh
Trang 1KHOA KỸ THUẬT ĐIỆN TỬ 1
BÁO CÁO BÀI TẬP LỚN MÔN THIẾT KẾ ĐIÊN TỬ TIÊN TIẾN
ĐỀ TÀI QUY TRÌNH THIẾT KẾ HỆ THÔNG (SDLC)
Giảng viên: Lương Công Duẩn Nhóm thực hiện: 10
Thành Viên Nhóm: Đinh Văn Bắc-B10DCDT019
Đinh Tiến Danh-B19DCDT027 Nguyễn Trọng Dũng-B19DCDT031Đoàn Quyết Thắng-B19DCDT227 Nguyễn Bá Minh -B19DCDT143
Trang 2
Chương I Tìm hiểu về quy trình thiết kế hệ thống (SDLC) 4
1.Tìm hiểu về SDLC 4
1.1.KHÁI NIỆM 4
1.2.LỢI ÍCH CỦA SDLC 4
1.3.CÁC GIAI ĐOẠN SDLC 4
2.Các phương pháp SDLC 8
2.1.MÔ HÌNH THÁC NƯỚC (WATERFALL) 8
2.2.PHƯƠNG PHÁP AGILE 8
2.3.PHƯƠNG PHÁP LẶP LẠI (ITERATIVE) 8
2.4.PHƯƠNG PHÁP HÌNH CHỮ V (V-SHAPED) 9
2.5.PHƯƠNG PHÁP XOẮN ỐC (SPIRAL) 9
2.6.PHƯƠNG PHÁP BIG BANG 9
2.7.PHƯƠNG PHÁP DEVOPS 9
Chương II Tìm hiểu về phương pháp Agile 10
1.Khái niệm 10
2.Tổng quan về Agile 10
3.Bốn tôn chỉ cần tuân thủ trong phương pháp Agile 11
4.Nguyên tắc quan trọng trong Agile 11
5.Đặc trưng của Agile 12
6.Mô hình SDLC Agile với Truyền thống 13
7.Mô hình Agile - Ưu và nhược điểm 13
7.1.NHỮNG ƯU ĐIỂM CỦA MÔ HÌNH AGILE: 13
7.2.NHỮNG NHƯỢC ĐIỂM CỦA MÔ HÌNH AGILE: 14
8.Một quy trình Agile hoàn chỉnh 14
8.1.AGILE PHÙ HỢP VỚI DỰ ÁN NHƯ THẾ NÀO? 15
8.2.THÁCH THỨC KHI ÁP DỤNG AGILE: 15
8.3.CÁC MẸO QUẢN LÝ DỰ ÁN DỄ DÀNG HƠN VỚI MÔ HÌNH AGILE 16
9.Kết luận. 18
Chương III.Áp dụng Agile vào thực tế 18
1.Lập bảng kế hoach 18
2.Thiết kế 20
3.Kiểm tra và đánh giá 22
4.Triển khai sản phẩm 24
5.Bảo trì 25
6.Một số hình ảnh liên quan đến dự án 26
Trang 3LỜI MỞ ĐẦU
Systems development life cycle-Vòng đời phát triển phần mềm (SDLC) là quy trìnhhiệu quả về chi phí và thời gian mà các nhóm phát triển sử dụng để thiết kế và xâydựng phần mềm chất lượng cao Mục tiêu của SDLC là giảm thiểu rủi ro dự án thôngqua việc lập kế hoạch trước để phần mềm đáp ứng mong đợi của khách hàng trong giaiđoạn sản xuất và hơn thế nữa Phương pháp này vạch ra một loạt các bước chia quytrình phát triển phần mềm thành các nhiệm vụ mà bạn có thể chỉ định, hoàn thành và
đo lường Việc phát triển phần mềm có thể gặp khó khăn trong việc quản lý do thayđổi yêu cầu, nâng cấp công nghệ và cộng tác liên chức năng Phương pháp vòng đời phát triển phần mềm (SDLC) cung cấp một khung quản lý có hệ thống với các sản phẩm cụ thể ở mọi giai đoạn của quy trình phát triển phần mềm Do vậy, tất cả các bênliên quan đồng ý trước về mục tiêu và yêu cầu phát triển phần mềm, đồng thời cũng có
kế hoạch để đạt được những mục tiêu đó
Trang 4Chương I Tìm hiểu về quy trình thiết kế hệ thống (SDLC)1.Tìm hiểu về SDLC
1.1.Khái niệm
SDLC là từ viết tắt của Software Development Life Cycle (vòng đời pháttriển phần mềm) SDLC là một quy trình phát triển phần mềm với chất lượngcao nhất và chi phí thấp nhất trong thời gian ngắn nhất có thể
1.2.Lợi ích của SDLC
SDLC cung cấp một cái nhìn tổng thể về toàn bộ hệ thống, tài nguyên, dòngthời gian và mục tiêu của một dự án phầm mềm Các nhà phát triển phần mềmhiểu họ nên xây dựng những gì và tại sao Các lý do chính tại sao SDLC là cầnthiết để phát triển một hệ thống phần mềm:
Đo lường sự tăng trưởng và chi phí của hệ thống đã phát triển
Tăng cường kiểm soát và giám sát các dự án quan trọng hoặc phức tạp
Đảm bảo độ tin cậy và chất lượng của giải pháp đã phát triển
Cung cấp tài liệu mở rộng về hệ thống
Nếu một thành viên chính của dự án rời đi, một thành viên mới có thểtiếp tục nơi họ đã dừng lại
Đảm bảo bàn giao phần mềm chính xác và kịp thời cho khách hàng
Cải thiện tốc độ phát triển phần mềm1.3.Các giai đoạn SDLC
1.3.1 Thu thập và phân tích thông tin (Requirement Analysis)Giai đoại đầu tiên của SDLC là về việc quyết định những gì bạn sẽ phát triển Có thểnói giai đoạn này là quan trọng bật nhất của cả quy trình SDLC Nếu bạn đang pháttriển cho khách hàng, giai đoạn này có thể sẽ bao gồm các cuộc họp để thảo luận vềnhu cầu, mục tiêu và kỳ vọng của họ Nếu bạn đang phát triển một phần mềm nội bộ,các việc có thể bao gồm phân tích thị trường hoặc phân tích đối thủ cạnh tranh, phỏngvấn khách hàng và kiểm tra các mục tiêu của công ty bạn Ở cấp cao, bạn cần biếtnhững vấn đề bạn đang cố gắng giải quyết và cách giải quyết
Kết quả của giai đoạn này là tài liệu đặc tả yêu cầu phần mềm (Software RequirementsSpecification hay SRS), đóng vai trò là điểm khởi đầu cho giai đoạn phát triển tiếptheo Điều quan trọng cần lưu ý là giai đoạn đặc tả và phân tích yêu cầu chỉ tập trungvào những gì hệ thống phần mềm nên làm chứ không phải vào cách nó nên được thựchiện Nghĩa là các chi tiết triển khai không được phép ảnh hưởng đến giai đoạnnày Yêu cầu phần mềm có thể được phân thành hai loại: yêu cầu chức năng và yêucầu phi chức năng, và SRS cần bao gồm cả hai loại yêu cầu này
1.3.2 Lập kế hoạch (Planning hay Defining)Giai đoạn này là đi tìm câu trả lời cho câu hỏi “Chúng ta muốn gì?”
Trang 5Thông thường, bạn thực hiện quá trình lập kế hoạch sau khi phân tích yêu cầu sau khi bạn đã có đầy đủ dữ liệu và chọn những gì cần phát triển Trong giai đoạn SDLC thứhai này chúng ta cần xác định một số yếu tố:
Ai sẽ lãnh đạo dự án
Kết quả đầu ra hoặc triển khai dự kiến
Số lượng các developer cần thiết cho dự án
Dự án sẽ mất khoảng bao nhiêu thời gian
Ngân sách cần thiết cho dự án
Mọi cân nhắc về dự án cụ thể khácKết quả đầu ra của giai đoạn lập kế hoạch bao gồm: kế hoạch dự án, thời gian thựchiện chi tiết, ước tính chi phí và các yêu cầu mua sắm Các tài liệu trong giai đoạn nàythường bao gồm:
Project Management Plan
Project Charter (điều lệ) document
1.3.3 Thiết kế (Designing)Giai đoạn này chúng ta đi tìm câu trả lời cho câu hỏi “Làm thế nào chúng xâyđược những gì chúng ta muốn?”
Giai đoạn thứ ba của SDLC tập trung vào việc thiết kế phần mềm mà bạn sẽ phát triển, bao gồm:
Kiến trúc:
Bạn sử dụng ngôn ngữ lập trình nào để xây dựng sản phẩm của mình? Các phương pháp tốt nhất trong ngành mà bạn đang xây dựng là gì? Cũng bao gồm các câu hỏiliên quan đến việc sử dụng các mẫu
Giao diện người dùng:
Bạn mong đợi người dùng tiềm năng sẽ tương tác với sản phẩm như thế nào? Làmthế nào bạn sẽ làm cho điều đó dễ dàng hơn cho họ?
Nền tảng:
Sản phẩm của bạn sẽ chạy trên nền tảng gì? Trong giai đoạn này, một nhà phát triểntrò chơi sẽ tự hỏi họ sẽ xuất bản bảng điều khiển nào, trong khi một nhà phát triểnthiết bị di động sẽ quyết định xem họ sẽ tạo ứng dụng cho Apple, Android hay cảhai
Lập trình:
Bạn đã tìm ra ngôn ngữ lập trình, nhưng bây giờ bạn sẽ làm thế nào để vượt quanhững thách thức lập trình trong quá trình phát triển?
Trang 6Liên kết:
Sản phẩm của bạn sẽ phải giao tiếp với những nội dung nào? Một máy chủ trungtâm? Các ứng dụng khác? Làm thế nào điều này sẽ xảy ra?
Bảo mật:
Bạn sẽ bảo vệ sản phẩm của mình như thế nào trước những nguy cơ tiềm ẩn? Bạn
có phải tuân theo các yêu cầu bảo mật nhất định không? Bạn có được truy cập vàothông tin người dùng nhạy cảm cần được bảo vệ không? Việc thiết kế này gần giốngnhư việc tổng hợp các phương án kiến trúc và thiết kế nội thất của một ngôi nhàmới trước khi bạn xây dựng nó
Kết quả của giai đoạn thiết kế:
Vào cuối giai đoạn này, tài liệu thiết kế (Software Design Document – SDD) đượchoàn thành SDD sẽ được xem xét bởi tất cả các bên liên quan (stackholders) và dựatrên các thông số khác nhau như đánh giá rủi ro, tính lâu dài của phầm mềm, cácmô-đun thiết kế, hạn chế về ngân sách và thời gian, phương pháp thiết kế tốt nhấtđược lựa chọn cho sản phẩm…
1.3.4 Phát triển (Development)
Là giai đoạn “Tạo ra những gì chúng ta muốn”
Giai đoạn phát triển là giai đoạn mà các developer thực sự viết code và xây dựng ứngdụng theo các tài liệu thiết kế và các thông số kỹ thuật đã vạch ra, sử dụng ngôn ngữlập trình và framework đã được chọn Các developer sẽ tuân theo mọi nguyên tắc viếtcode của công ty và sử dụng các công cụ khác nhau như trình biên dịch, trình gỡ lỗi vàtrình thông dịch Các nhiệm vụ được chia thành các đơn vị hoặc mô-đun và được phân
bổ cho các nhà phát triển cụ thể
Kết quả của giai đoạn phát triển: Các chức năng của phần mềm mà chúng ta cần xâydựng, đạt được mục tiêu và kế hoạch đã đề ra
1.3.5 Kiểm thử (Testing)Giai đoạn này tập trung vào việc kiểm tra phần mềm để đảm bảo tính hoàn thiện, chấtlượng và tính ổn định của phần mềm Nó bao gồm kiểm thử chức năng, kiểm thử hệthống và kiểm thử chấp nhận từ khách hàng
Khi code hoàn tất, quá trình kiểm tra bắt đầu và các mô-đun được đánh giá và kiểm tra
để tránh bất kỳ lỗi nào Phần mềm đã xây dựng được xem xét toàn diện trong quá trìnhnày và bất kỳ vấn đề nào được tìm thấy đều được giao cho các developers sửa chữa,thay đổi
Kiểm tra lại và kiểm tra hồi quy được tiến hành cho đến khi phần mềm đúng như kếhoạch của người sử dụng Tester thường tham khảo tài liệu SRS để đảm bảo phần
Trang 7Kết quả của giai đoạn kiểm thử:
Sản phẩm hoàn thiện hơn sau các lỗi được chỉnh sửa hoặc các yêu cầu còn thiếu được phát triển
Testing report
User Acceptant Test…
1.3.6 Triển khai (Deployment)Giai đoạn này tập trung vào việc triển khai phần mềm đã hoàn thành vào môitrường thực tế Nó bao gồm việc cài đặt phần mềm, đào tạo người dùng và hỗ trợ choviệc triển khai phần mềm
Ở giai đoạn này, mục tiêu là triển khai phần mềm tới môi trường production để ngườidùng có thể bắt đầu sử dụng Tuy nhiên, nhiều công ty chọn triển khai phần mềm quacác môi trường triển khai khác nhau như môi trường thử nghiệm (testing) hoặc môitrường dàn dựng (staging)
Điều này cho phép bất kỳ bên liên quan nào có thể trải nghiệm phần mềm một cách antoàn trước khi đưa ra sử dụng chính thức Bên cạnh đó, điều này cho phép mọi sai sótcuối cùng được phát hiện và chỉnh sửa trước khi phát hành
Kết quả của giai đoạn triển khai:
Giai đoạn triển khai hoàn thành khi phần mềm đã được đưa vào hoạt động thành công
và thỏa mãn tất cả các yêu cầu kinh doanh và kỹ thuật thông qua việc xem xét và kýtên của các bên liên quan trong Implementation Report (báo cáo triển khai), vàMaintenance Manual (Sổ tay Bảo trì) đã được giao cho mhóm bảo trì phần mềm,Training Manual (tài liệu đào tạo) đã được chuyển cho trainer/user và Tài liệu hướngdẫn sử dụng đã được chuyển đến người sử dụng
1.3.7 Bảo trìGiai đoạn này tập trung vào việc bảo trì và nâng cấp phần mềm để đảm bảo tính ổnđịnh và tính bảo mật của phần mềm Nó bao gồm việc sửa lỗi, cập nhật tính năng vàtối ưu hóa hiệu suất của phần mềm
Diễn ra sau khi triển khai một sản phẩm trên một môi trường production Bất kỳ vấn
đề nào xuất hiện cần được khắc phục hoặc cải tiến sẽ được đánh giá và triển khai.Tóm lại, các giai đoạn của SDLC đóng vai trò quan trọng trong quá trình phát triển phần mềm Quy trình SDLC giúp đảm bảo rằng phần mềm được phát triển đáp ứngcác yêu cầu kỹ thuật và kinh doanh, đảm bảo chất lượng và tính ổn định của phần
Trang 82.Các phương pháp SDLC2.1.Mô hình thác nước (Waterfall)
Mô hình thác nước là một mô hình phát triển phần mềm theo hướng tuần tự,trong đó các hoạt động của quá trình phát triển phần mềm được thực hiện theo mộttrình tự cụ thể, từ giai đoạn này sang giai đoạn khác mà không quay lại giai đoạntrước đó Mô hình này được gọi là "thác nước" vì dữ liệu và hoạt động chảy tuần tự
từ trên xuống dưới, giống như nước chảy trong một dãy thác
Là mô hình lâu đời nhất trong các phương pháp SDLC Nó tuyến tính và đơn giản,yêu cầu phải hoàn thành một giai đoạn của dự án trước khi chuyển sang giai đoạntiếp theo Mỗi giai đoạn có một kế hoạch dự án riêng biệt và lấy thông tin từ giaiđoạn trước để tránh các vấn đề tương tự
Nhược điểm là dễ bị trì hoãn bởi các chi tiết nhỏ chưa được hoàn thiện trong mộtgiai đoạn nào đó
2.2.Phương pháp Agile
Mô hình Agile là một phương pháp phát triển phần mềm linh hoạt và nhạy cảm với sựthay đổi, dựa trên việc làm việc đội nhóm liên tục, tương tác với khách hàng hoặcngười dùng cuối, và học hỏi từ kinh nghiệm để cải thiện liên tục Agile có các nguồngốc từ "Tuyên bố Agile" (Agile Manifesto), là một bản tuyên bố định hướng phát triển phần mềm linh hoạt, được công bố vào năm 2001 bởi một nhóm các chuyên gia pháttriển phần mềm
Mô hình Agile tập trung vào việc tạo ra giá trị cho khách hàng hoặc người dùng cuối,đáp ứng nhanh chóng với sự thay đổi của yêu cầu, thường xuyên kiểm tra và đánh giákết quả, và tích cực hợp tác giữa các thành viên trong đội nhóm Mô hình Agile đượcthực hiện dưới dạng các chu kỳ ngắn gọi là "Sprint" hoặc "Iteration", trong đó các hoạtđộng phát triển phần mềm được thực hiện theo một lộ trình linh hoạt, đánh giá liên tục
và điều chỉnh theo phản hồi từ khách hàng hoặc người dùng
Hạn chế: Quá chú trọng vào tương tác với khách hàng có thể dẫn dự án đi sai hướngtrong một số trường hợp
2.3.Phương pháp lặp lại (Iterative)Phương pháp lặp đi lặp lại liên quan đến việc nhanh chóng tạo ra một phiên bản của phần mềm và sau đó cải tiến nó lặp đi lặp lại trong các phiên bản tiếp theo Bạn có thể phát triển nhiều phiên bản trước khi bạn nhận được sản phẩm hoàn thiện Điều đó làmcho phương pháp này hơi khó để vạch ra trong SDLC, nhưng nó vẫn là một lựa chọn
ưu tiên cho các nhóm nhỏ, phát triển nhanh.Phương pháp này có vẻ tương tự nhưAgile, nhưng nó có một vài điểm khác biệt Đầu tiên, phương pháp lặp lại không liênquan đến khách hàng bên ngoài trong các giai đoạn khác nhau Ngoài ra, phạm vi củamỗi lần lặp lại là cố định, tương tự như các yêu cầu trong mô hình thác nước
Trang 92.4.Phương pháp hình chữ V (V-shaped)Phương pháp luận này tương tự như mô hình thác nước; nó thể hiện sự phụ thuộccủa từng giai đoạn trong SDLC của bạn Sự khác biệt chính là chúng được biểudiễn dưới dạng hình chữ V chứ không phải là mô hình tuyến tính Mọi giai đoạndẫn đến việc triển khai – thực hiện – sản phẩm phần mềm mà bạn đang làm việcdẫn đến nhánh đầu tiên của V Triển khai là một giai đoạn phẳng ngắn ở phía dưới,trước khi dẫn đến kiểm tra, xác minh và bảo trì liên tục trên nhánh bên kia của chữV.Phương pháp luận này hoạt động tốt cho các dự án đòi hỏi nhiều sự kiểm soát và
có các yêu cầu được xác định rõ ràng và không thay đổi
2.5.Phương pháp xoắn ốc (spiral)Phương pháp tiếp cận Xoắn ốc (spiral) có thể là phương pháp phức tạp nhất trong
số các phương pháp SDLC nhưng cũng là phương pháp linh hoạt nhất Hãy tưởngtượng một hình xoắn ốc lặp lại trong đó mỗi vòng lặp đại diện cho một giai đoạncủa dự án của bạn Trong phương pháp xoắn ốc, không phải mọi dự án đều có sốvòng lặp giống nhau Khi bắt đầu mỗi vòng lặp hoặc giai đoạn, nhóm phải xem xétlại các mục tiêu và rủi ro của dự án, phát triển phiên bản tiếp theo của sản phẩm,sau đó xem xét và lập kế hoạch cho giai đoạn tiếp theo Phương pháp xoắn ốc thậmchí có thể xác định rằng cách tiếp cận Waterfall hoặc Agile là cần thiết cho cácvòng lặp cụ thể
Bởi vì nó rất năng động và linh hoạt, việc kết hợp Spiral vào một SDLC có thể làmột thách thức Bạn cần phải biết rõ ai phụ trách từng dự án, cách xác định sốlượng vòng lặp và giai đoạn nào cần được lặp lại
2.6.Phương pháp Big Bang
Mô hình Big Bang cực kỳ linh hoạt và không tuân theo một quy trình hoặc thủ tụcnghiêm ngặt Nó thậm chí còn không có kế hoạch chi tiết Big Bang yếu được sử dụng
để phát triển các ý tưởng rộng khi khách hàng hoặc khách hàng không chắc chắnnhững gì họ muốn.Đầu ra của phương pháp này có thể gần hơn hoặc xa so với những
gì khách hàng mong muốn Mô hình này chỉ được sử dụng cho các dự án nhỏ Không
có đội thử nghiệm và không có thử nghiệm chính thức nào được thực hiện, và đây cóthể là một nguyên nhân dẫn đến sự thất bại của dự án
2.7.Phương pháp DevOpsDevOps là phương pháp mới nhất DevOps mang đến sự kết hợp giữa phát triển (Dev)
và vận hành (Ops) ở tất cả các giai đoạn của quy trình SDLC Sự hợp tác và chia sẻtrách nhiệm này giúp đảm bảo rằng sản phẩm được phát triển vận hành tốt trong quátrình phát triển.Trong mô hình DevOps, các nhóm Nhà phát triển và Vận hành làmviệc cùng nhau chặt chẽ để đẩy nhanh sự đổi mới và triển khai các chức năng và sản phẩm phần mềm chất lượng cao hơn, đáng tin cậy hơn Cập nhật cho các sản phẩm là
Trang 10nhỏ nhưng thường xuyên Kỷ luật, phản hồi liên tục và cải tiến quy trình cũng như tựđộng hóa các quy trình phát triển thủ công là tất cả các điểm nổi bật của mô hìnhDevOps.
Chương II.Tìm hiểu về phương pháp Agile
1.Khái niệmAgile (viết tắt của Agile Software Development) có nghĩa là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tiêu
là đưa sản phẩm đến tay người dùng càng nhanh càng tốt
2.Tổng quan về Agile
Mô hình SDLC Agile là sự kết hợp của các mô hình quy trình Interative và gia tăng,tập trung vào khả năng thích ứng của quy trình và sự hài lòng của khách hàng bằngcách cung cấp nhanh chóng sản phẩm phần mềm đang hoạt động Phương pháp Agilechia sản phẩm thành các bản dựng nhỏ gia tăng Các bản dựng này được cung cấptrong 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 tuần Mỗilần lặp lại liên quan đế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ựckhác nhau như:
Trang 11Quá trình suy nghĩ Agile đã bắt đầu sớm trong quá trình phát triển phần mềm và bắtđầu trở nên phổ biến theo thời gian do tính linh hoạt và khả năng thích ứng của nó.Các phương pháp Agile phổ biến nhất bao gồm Rational Unified Process (1994),Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive SoftwareDevelopment, Feature Driven Development và Dynamic Systems DevelopmentMethod (DSDM) (1995) Chúng hiện được gọi chung là Phương pháp Agile, sau khiTuyên ngôn Agile được xuất bản năm 2001.
3.Bốn tôn chỉ cần tuân thủ trong phương pháp Agile
Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ: Trọng tâm đặt lêncon người, xây dựng tương tác và hỗ trợ giữa các thành viên trong nhóm Nhữngthành viên có năng lực, chịu tương trợ nhau trong công việc sẽ mang đến thànhcông cho dự án
Sản phẩm dùng được tốt hơn tài liệu đầy đủ: Tập trung thời gian để làm ra phầnmềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách hàng
Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng: Hiểu được kháchhàng cần gì để tư vấn và điều chỉnh sản phẩm thay vì chỉ dựa vào các điều khoảntrong hợp đồng
Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khích thích nghi với
sự thay đổi, đó có thể là thay đổi về công nghệ, nhân sự, deadline,
4.Nguyên tắc quan trọng trong Agile
Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm có giá trị
Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong quá trình phát triển
Giao phần mềm chạy được cho khách hàng một cách thường xuyên
Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhau trong suốt dựán
Xây dựng dự án xung quanh các cá nhân có động lực Cung cấp sự hỗ trợ cầnthiết, môi trường làm việc và niềm tin để hoàn thành công việc
Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất
Thước đo chính của tiến độ là phần mềm chạy tốt
Phát triển liên tục và bền vững
Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế
Nghệ thuật tối đa hóa lượng công việc chưa xong - Sự đơn giản là cần thiết
Nhóm tự tổ chức
Thích ứng thường xuyên với những thay đổi
Trang 125.Đặc trưng của Agile
Tính lặp (Iterative): Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại(Iteration hoặc Sprint), thường có khung thời gian ngắn (từ 1-4 tuần) Trong mỗi phân đoạn, nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kếhoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử để cho ra các phần nhỏcủa sản phẩm
Tính tăng trưởng và tiến hóa (Incremental & Evolutionary): Cuối các phânđoạn, nhóm cho ra các phần nhỏ của sản phẩm cuối cùng, thường là đầy đủ, cókhả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ được tích lũy,lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn
Tính thích nghi (adaptive): Do các phân đoạn chỉ kéo dài trong một khoảng thờigian ngắn và việc lập kế hoạch cũng được điều chỉnh liên tục, nên các thay đổitrong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi địnhhướng về mục tiêu v.v.) đều có thể được đáp ứng theo cách thích hợp
Nhóm tự tổ chức và liên chức năng: Các cấu trúc nhóm này tự phân công côngviệc mà không dựa trên các mô tả cứng về chức danh hay làm việc dựa trên một
sự phân cấp rõ ràng trong tổ chức Nhóm tự tổ chức đã đủ các kĩ năng cần thiết
để có thể được trao quyền tự ra quyết định, tự quản lí và tổ chức lấy công việccủa chính mình để đạt được hiệu quả cao nhất
Quản lý tiến trình thực nghiệm (Empirical Process Control): Các nhóm Agile racác quyết định dựa trên các dữ liệu thực tiễn thay vì tính toán lý thuyết hay cáctiền giả định Agile rút ngắn vòng đời phản hồi để dễ dàng thích nghi và gia tăngtính linh hoạt nhờ đó có thể kiểm soát được tiến trình, và nâng cao năng suất laođộng
Giao tiếp trực diện (face-to-face communication): Agile không phản đối việc tàiliệu hóa, nhưng đánh giá cao hơn việc giao tiếp trực diện thay vì thông qua giấy
tờ Agile khuyến khích nhóm phát triển trực tiếp nói chuyện để hiểu rõ hơn vềcái khách hàng thực sự cần Trong giao tiếp giữa nội bộ nhóm, Agile khuyếnkhích trực tiếp trao đổi và thống nhất với nhau về thiết kế của hệ thống và cùngnhau triển khai thành các chức năng theo yêu cầu
Phát triển dựa trên giá trị (value-based development): Một trong các nguyên tắc
cơ bản của agile là “sản phẩm chạy tốt chính là thước đo của tiến độ” NhómAgile thường cộng tác trực tiếp và thường xuyên với khách hàng để biết yêu cầunào có độ ưu tiên cao hơn, mang lại giá trị hơn sớm nhất có thể cho dự án
Trang 136.Mô hình SDLC Agile với Truyền thốngAgile dựa trên các phương pháp phát triển phần mềm thích ứng, trong khi các mô hìnhSDLC truyền thống như mô hình thác nước dựa trên phương pháp dự đoán Các nhóm
dự đoán trong các mô hình SDLC truyền thống thường làm việc với kế hoạch chi tiết
và có dự báo đầy đủ về các nhiệm vụ và tính năng chính xác sẽ được phân phối trongvài tháng tới hoặc trong vòng đời sản phẩm
Các phương pháp dự đoán hoàn toàn phụ thuộc vào việc phân tích yêu cầu và lập kếhoạch được thực hiện vào đầu chu kỳ Bất kỳ thay đổi nào được kết hợp đều trải quaquá trình quản lý và ưu tiên kiểm soát thay đổi nghiêm ngặt
Agile sử dụng cách tiếp cận thích ứng khi không có kế hoạch chi tiết và chỉ có sự rõràng về các nhiệm vụ trong tương lai đối với những tính năng cần được phát triển Có
sự phát triển theo định hướng tính năng và nhóm thích ứng linh hoạt với các yêu cầuthay đổi của sản phẩm Sản phẩm được thử nghiệm rất thường xuyên, thông qua cáclần lặp lại phát hành, giảm thiểu rủi ro xảy ra bất kỳ lỗi nghiêm trọng nào trong tươnglai
Tương tác với khách hàng là xương sống của phương pháp Agile này và giao tiếp cởi
mở với tài liệu tối thiểu là những đặc điểm tiêu biểu của môi trường phát triểnAgile Các nhóm nhanh nhẹn hợp tác chặt chẽ với nhau và thường ở cùng một vị tríđịa lý
7.Mô hình Agile - Ưu và nhược điểmGần đây, các phương pháp Agile đang được chấp nhận rộng rãi trong thế giới phầnmềm Tuy nhiên, phương pháp này có thể không phải lúc nào cũng phù hợp với tất cảcác sản phẩm Dưới đây là một số ưu và nhược điểm của mô hình Agile
7.1 Những ưu điểm của mô hình Agile:
Thực hiện thay đổi dễ dàng: Bởi vì dự án được chia thành các phần nhỏ, riêng biệt, không phụ thuộc lẫn nhau, nên những thay đổi được thực hiện rất dễ dàng,
ở bất kỳ giai đoạn nào của dự án
Không cần phải nắm mọi thông tin ngay từ đầu: Phù hợp với những dự án chưaxác định được mục tiêu cuối cùng rõ ràng, vì việc này không quá cần thiết tronggiai đoạn đầu
Bàn giao nhanh hơn: Việc chia nhỏ dự án cho phép đội ngũ có thể tiến hànhkiểm tra theo từng phần, xác định và sửa chữa vấn đề nhanh hơn, nhờ đó việc bàn giao công việc sẽ nhất quán và thành công hơn
Chú ý đến phản hồi của khách hàng và người dùng: Cả khách hàng và ngườidùng cuối đều có cơ hội để đóng góp các ý kiến và phản hồi, từ đó họ sẽ có ảnhhưởng một cách mạnh mẽ và tích cực tới sản phẩm cuối cùng
Trang 14 Cải tiến liên tục: Agile khuyến khích thành viên trong đội ngũ làm việc vàkhách hàng cung cấp phản hồi của mình, khi đó các giai đoạn khác nhau của sản phẩm cuối có thể được kiểm tra và cải thiện lại nhiều lần nếu cần.
7.2 Những nhược điểm của mô hình Agile:
Khó lên kế hoạch dự án: Khá là khó để xác định rõ ràng thời gian bàn giao sản phẩm cuối cùng, vì dự án được chia nhỏ thành các phần khác nhau và mỗi phầnlại có thời gian bàn giao riêng biệt
Bắt buộc phải hướng dẫn và đào tạo chi tiết: Phương pháp Agile phức tạp hơnnhiều so với phương pháp truyền thống Họ sẽ cần phải trải qua đào tạo, hướngdẫn thì mới có thể nắm được phương pháp một cách rõ ràng, đặc biệt là thời gianđầu
Ít tài liệu hướng dẫn: Vì Agile thay đổi rất nhiều nên các tài liệu thích hợp cũngthường bị bỏ qua, vì không xác định rõ được kỳ vọng và thành phẩm ngay từđầu Mặc dù tài liệu không phải là yếu tố quan trọng nhất, nhưng chúng vẫn rấtcần thiết
Bắt buộc phải hợp tác để dự án thành công: Điều này đòi hỏi một sự cam kết vềthời gian từ cả hai bên trong suốt thời gian của dự án mà các cấu trúc quản lý dự
án khác không luôn yêu cầu Phải có sự tham gia tích cực của người dùng và tiếptục cộng tác để nó hoạt động
Chi phí cao: Chi phí thực hiện theo phương pháp Agile thường hơn một chút sovới các phương pháp phát triển khác
8 Một quy trình Agile hoàn chỉnh