Nhập môn công nghệ phần mềm - Nguyễn Thị Minh Tuyền - Phát triển phần mềm linh hoạt
Nội dung
! Các phương pháp linh hoạt
! Phát triển hoạch định sẵn và linh hoạt
! Extreme programming
! Quản trịdựán linh hoạt
! Mởrộng quy mô các phương pháp linh
hoạt
2 Nguyễn Thị Minh Tuyền Nhập môn CNPM Mô tả test case cho Dose checking Input: 1. A number in mg representing a single dose of the drug. 2. A number representing the number of single doses per day. Tests: 1. Test for inputs where the single dose is correct but the frequency is too high. 2. Test for inputs where the single dose is too high and too low. 3. Test for inputs where the single dose * frequency is too high and too low. 4. Test for inputs where single dose * frequency is in the permitted range. Output: OK or error message indicating that the dose is outside the safe range. Test 4: Dose checking 33 Nguyễn Thị Minh Tuyền Nhập môn CNPM Test tự động v Test tự động nghĩa là các test được viết dưới dạng các component chạy được trước khi tác vụ được cài đặt § Các component này nên đứng độc lập, mô phỏng đầu vào được test và nên kiểm tra rằng đầu ra thỏa mãn đặc tả. Một framework tự động (JUnit) là một hệ thống làm cho việc viết các test chạy được dễ dàng hơn. v Vì test tự động nên các test được thực thi dễ dàng và nhanh chóng § Mỗi khi một chức năng được thêm vào hệ thống, các test phải được chạy và vấn đề xảy ra thường là do mã nguồn mới gây ra. 34 Nguyễn Thị Minh Tuyền Nhập môn CNPM Khó khăn của kiểm thử trong XP v Người lập trình thích lập trình hơn là kiểm thử § Do đó thường đi tắt trong việc viết test § Ví dụ, nó có thể viết các test không hoàn chỉnh hoặc không kiểm tra tất cả các ngoại lệ. v Một số test khó có thể viết theo kiểu tăng dần. § Ví dụ, trong một giao diện người dùng phức tạp, thường khó viết các unit test cho mã nguồn để cài đặt ‘display logic’ và các luồng chuyển tiếp giữa các màn hình. v Khó đánh giá được tính đầy đủ của bộ test § Bộ test cũng không thể bao phủ hết được tất cả. 35 Nguyễn Thị Minh Tuyền Nhập môn CNPM Lập trình cặp v Trong XP, người lập trình làm việc theo cặp, ngồi cùng nhau tại một nơi để phát triển mã nguồn. § Điều này giúp cho việc phát triển mã nguồn chung và mở rộng kiến thức của cả đội. § Được dùng như là một quy trình duyệt không hình thức vì mỗi dòng mã nguồn được xem xét bởi nhiều hơn 1 người. v Khuyến khích cải tiến vì toàn bộ nhóm có thể hưởng lợi từ việc này. v Việc đo đạt cho thấy năng suất của việc lập trình cặp tương đương với năng suất của hai người làm việc độc lập. 36 Nguyễn Thị Minh Tuyền Nhập môn CNPM Lập trình cặp v Các cặp được tạo ra một cách linh động sao cho tất cả các thành viên đều có thể làm việc với nhau trong suốt quy trình phát triển. v Việc chia sẻ kiến thức xảy ra khi làm việc cặp là quan trọng vì nó giảm đi các nguy cơ cho dự án khi có thành viên rời khỏi nhóm. 37 Nguyễn Thị Minh Tuyền Nhập môn CNPM Lợi ích của lập trình cặp v Nó hỗ trợ ý tưởng sở hữu nhóm và trách nhiệm chung đối với hệ thống. § Các cá nhân không phải chịu trách nhiệm cho các vấn đề về mã nguồn. Thay vào đó, cả nhóm chịu trách nhiệm giải quyết các vấn đề này. v Nó hoạt động như một quy trình review không chính thức vì mỗi dòng lệnh được xem xét bởi ít nhất 2 người. v Hỗ trợ cải tiến mã nguồn § Khi áp dụng lập trình cặp và sở hữu tập thể, những người khác có lợi trực tiếp từ việc cải tiến vì vậy họ sẽ dễ hỗ trợ quá trình này. 38 Nguyễn Thị Minh Tuyền Nhập môn CNPM Nội dung v Các phương pháp linh hoạt v Phát triển hoạch định sẵn và linh hoạt v Extreme programming v Quản trị dự án linh hoạt v Mở rộng quy mô các phương pháp linh hoạt 39 Nguyễn Thị Minh Tuyền Nhập môn CNPM Scrum v Là phương pháp tổng quát. v Tập trung vào quản lý việc phát triển vòng lặp hơn là các nguyên lý về phương pháp linh hoạt. 40 Nguyễn Thị Minh Tuyền Nhập môn CNPM Quy trình Scrum Outline planning and architectural design Project closure Assess Select Review Develop Sprint cycle 41 Nguyễn Thị Minh Tuyền Nhập môn CNPM Chu trình Sprint v Độ dài Sprint cố định, thường từ 2-4 tuần. § Tương ứng với sự phát triển của một bản release của hệ thống. v Điểm bắt đầu cho kế hoạch là product backlog, là danh sách các công việc phải làm trong dự án. v Pha chọn gồm cả nhóm phát triển dự án làm việc với khách hàng để chọn ra các đặc tính và chức năng được cài đặt trong sprint. 42 Nguyễn Thị Minh Tuyền Nhập môn CNPM Chu trình Sprint v Một khi các chức năng được lựa chọn, nhóm tự tổ chức để phát triển phần mềm. § Trong suốt giai đoạn này, người khách hàng bị tách ra khỏi nhóm và tất cả các liên lạc đều thông qua ‘Scrum master’. v Vai trò của Scrum master là để bảo vệ nhóm phát triển khỏi sự phân tán bên ngoài. v Vào cuối sprint, công việc đã thực hiện được duyệt lại và giới thiệu cho stakeholder. Chu trình sprint tiếp theo lại bắt đầu. 43 Nguyễn Thị Minh Tuyền Nhập môn CNPM Nhóm làm việc trong Scrum v ‘Scrum master’ là người tổ chức họp hàng ngày, theo dõi tiến độ công việc, giao tiếp với khách hàng và quản lý bên ngoài nhóm. v Toàn đội tham dự một cuộc họp ngắn hàng ngày trong đó các thành viên chia sẻ thông tin, mô tả tiến độ của họ, các vấn đề phát sinh và lên kế hoạch cho ngày tiếp theo. § Nghĩa là mọi người biết cái gì đang diễn ra, vấn đề phát sinh và lên kế hoạch ngắn hạn để đáp ứng sự thay đổi. 44 Nguyễn Thị Minh Tuyền Nhập môn CNPM Lợi ích của Scrum v Sản phẩm được chia thành cách phần nhỏ dễ hiểu và dễ quản lý. v Các yêu cầu không ổn định sẽ không làm chậm trễ tiến độ. v Toàn đội thấy được mọi thứ và vì vậy giao tiếp nhóm được cải thiện. v Khách hàng nhận từng phần đúng hạn và gởi phản hồi về sản phẩm. v Niềm tin giữa khách hàng và đội phát triển tăng lên và một văn hóa tích cực được tạo ra trong đó mỗi người đều mong muốn dự án thành công. 45 Nguyễn Thị Minh Tuyền Nhập môn CNPM Nội dung v Các phương pháp linh hoạt v Phát triển hoạch định sẵn và linh hoạt v Extreme programming v Quản trị dự án linh hoạt v Mở rộng quy mô các phương pháp linh hoạt 46 Nguyễn Thị Minh Tuyền Nhập môn CNPM Mở rộng quy mô v Các phương pháp linh hoạt được chứng minh là một phương pháp thành công cho các dự án vừa và nhỏ được phát triển bởi nhóm nhỏ làm việc tại cùng một nơi. v Sự thành công của các phương pháp này do việc cải thiện giao tiếp giữa các thành viên khi mọi người làm việc cùng nhau. v Việc mở rộng quy mô các phương pháp linh hoạt gồm § thay đổi các phương pháp này để phù hợp với những dự án lớn hơn, § các tổ chức lớn sử dụng phương pháp này để phát triển ứng dụng. 47 Nguyễn Thị Minh Tuyền Nhập môn CNPM Việc phát triển các hệ thống lớn v Các hệ thống lớn thường là tập hợp các hệ thống rời rạc, tương tác với nhau. v Có các nhóm phát triển riêng cho từng hệ thống con. Các nhóm này thường được phân tán ở nhiều địa điểm khác nhau. v Các hệ thống lớn này thường là ‘brownfield systems’ § Gồm có một số các hệ thống con đang tồn tại và tương tác với các hệ thống này. § Nhiều yêu cầu hệ thống liên quan đến tương tác và vì vậy không thật sự cần tính linh động và phát triển tăng dần. v Vài hệ thống con được tích hợp để tạo ra một hệ thống lớn, do đó việc phát triển liên quan nhiều đến cấu hình hệ thống hơn là phát triển mã nguồn mới. 48 Nguyễn Thị Minh Tuyền Nhập môn CNPM Việc phát triển các hệ thống lớn v Các hệ thống lớn và quy trình phát triển của chúng thường ràng buộc bởi các yếu tố và quy định bên ngoài làm hạn chế cách chúng được phát triển. v Các hệ thống lớn có thời gian phát triển và sử dụng dài. § Khó có thể duy trì các nhóm phát triển trong một thời gian dài vì tất nhiên các thành viên có thể thay đổi công việc và dự án. v Các hệ thống lớn thường có một tập đa dạng các stakeholder. Sẽ không thực tế nếu đưa tất cả các stakeholder này vào trong quy trình phát triển. 49 Nguyễn Thị Minh Tuyền Nhập môn CNPM Scaling out và scaling up v ‘Scaling up’ liên quan đến việc sử dụng các phương pháp linh hoạt để phát triển các hệ thống phần mềm lớn mà nó không thể được phát triển bởi các nhóm nhỏ. v ‘Scaling out’ liên quan đến cách các phương pháp linh hoạt được giới thiệu đến các tổ chức đã có nhiều năm kinh nghiệm về sản xuất phần mềm. v Khi mở rộng quy mô các phương pháp linh hoạt cần giữ lại các nền tảng linh hoạt § Kế hoạch linh động, các bản release ra thường xuyên, tích hợp liên tục, phát triển theo hướng kiểm thử và giao tiếp nhóm tốt. 50 Nguyễn Thị Minh Tuyền Nhập môn CNPM Scaling up cho các hệ thống lớn v Đối với việc phát triển các hệ thống lớn, không thể chỉ tập trung vào mã nguồn của hệ thống. Ta cần thêm nhiều thiết kế và tài liệu hệ thống. v Cơ chế giao tiếp giữa các nhóm phải được thiết kế và sử dụng. § Có thể sử dụng liên lạc qua điện thoại hoặc video conference thường xuyên giữa các nhóm và các cuộc họp “điện tử” ngắn, thường xuyên trong đó các nhóm cập nhật tiến độ của mình. v Tích hợp thường xuyên, trong đó toàn bộ hệ thống được build lại mỗi khi người phát triển kiểm tra một thay đổi, trên thực tế thì khó thực hiện. § Tuy nhiên, việc build hệ thống thường xuyên và tạo ra các bản release thường xuyên là cần thiết. 51 Nguyễn Thị Minh Tuyền Nhập môn CNPM Scaling out cho các công ty lớn v Người quản trị dự án không có kinh nghiệm với phương pháp linh hoạt có thể sẽ miễn cưỡng chấp nhận phương pháp mới. v Các tổ chức lớn thường có các thủ tục và chuẩn về chất lượng cần phải tuân theo. Vì bản chất này, các tổ chức thường khó tương thích với các phương pháp linh hoạt. v Các phương pháp linh hoạt được xem là hiệu quả khi các thành viên có kỹ năng tương đối cao. Tuy nhiên, trong các tổ chức lớn, kỹ năng và khả năng thường không đồng đều. v Có thể văn hóa của công ty sẽ cản trở việc sử dụng phương pháp linh hoạt, đặc biệt là những tổ chức có một thời gian dài sử dụng các quy trình công nghệ truyền thống. 52
File đính kèm:
- Nhập môn công nghệ phần mềm - Nguyễn Thị Minh Tuyền - Phát triển phần mềm linh hoạt.pdf