Chương 1: Giới thiệu tổng quan đề tài - Giới thiệu khái quát về lý do lựa chọn đề tài, mục tiêu, ý nghĩa, đối tượng và phạm vi nghiên cứu, cũng như các phương pháp sẽ áp dụng để hiện thực hóa đề tài. Chương 2: Cơ sở lý thuyết – Cung cấp kiến thức tổng quan về lợi ích của đo lường phần mềm, chuẩn ISO 9126 dùng trong đánh giá chất lượng phần mềm và các kiến thức cơ bản về phát triển phần mềm linh hoạt. Chương 3: Xây dựng mô hình đo lường phần mềm – Đề xuất và nghiên cứu phương thức GQM trong việc xây dựng mô hình đo lường Chương 4: Mô hình đo lường chất lượng phần mềm trong môi trường Agile – Xây dựng mô hình đánh giá chất lượng phần mềm dựa trên phương thức đã nghiên cứu Chương 5: Ứng dụng mô hình đo lường vào dự án thực tế Chương 6: Kết quả đạt được và hướng phát triển 16 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Lợi ích của đo lường phần mềm Sự đo lường được giới thiệu bởi các tổ chức công nghệ thông tin để hiểu rõ hơn, đánh giá, kiểm soát và dự đoán việc ra quyết định và quy trình phần mềm. Có nhiều công dụng thiết thực của thang đo phần mềm.
Bốn trong số chúng gồm: Dự toán dự án và theo dõi tiến độ: Hiện tại, có rất nhiều công việc dự toán, với thành công hạn chế. Ngày nay, ngành công nghiệp phần mềm nhận biết rằng có rất nhiều khía cạnh của phát triển phần mềm ảnh hưởng đến sự dự toán. Nhấn mạnh về cải tiến quy trình cho chúng ta một số điểm cần quan tâm ở đây, các ước lượng không chính xác là kết quả của thời gian chu trình phát triển dài và sự biến đổi của quy trình. Điều đó không bất thường đối với các dự án yêu cầu phải thay đổi sau khi ra đời.
Các nhà quản lý phải có trách nhiệm đặt hệ thống thích hợp đúng nơi để đo lường tiến độ dự án. Họ cần phải sử dụng dữ liệu từ các dự án trước đó để ước lượng dự án và hiệu quả xử lý một cách tiến độ quá trình và yêu cầu thay đổi. Đánh giá hoạt động của sản phẩm: Phân tích code là vùng lớn nhất của nghiên cứu số liệu phần mềm. Mọi sự phát triển phần mềm kết quả cuối cùng có bước tiến của code.
Code được thể hiện bằng một ngôn ngữ chuẩn trong lập trình có thể được xử lý tự động. Mỗi ngôn ngữ cũng được xác định, và code là hình thức hoàn toàn của các kết quả mong muốn. Điều này làm cho các sản phẩm cuối cùng - code - một phương tiện thuận lợi để áp dụng số liệu phần mềm. Quá trình cải thiện thông qua phân tích chất lượng phần mềm: Chất lượng phần mềm là một trong những hứa hẹn và mở rộng nhất trong quá trình phát triển phần mềm ngày nay.
Phân tích defect, theo dõi và loại bỏ cung cấp một tiềm năng lớn cho các công ty phải cắt giảm chi phí phát triển và chi phí bảo trì của họ. Chất lượng phần mềm bao gồm một loạt các thuộc tính: tính toàn vẹn, tính 17 tương hợp, linh hoạt, bảo trì, tính di động, tính mở rộng, tái sử dụng, khả năng đàn hồi và khả năng sử dụng. Những thuộc tính này nên được lưu ý khi thiết kế và thực hiện các quy trình phát triển phần mềm. Sau đó, thành tích đạt được có thể được xác nhận sử dụng số liệu phân tích lỗi và kiểm tra đảm bảo chất lượng.
Xác nhận kinh nghiệm của các mẫu tốt nhất trong phát triển phần mềm Công nghệ phần mềm là một lĩnh vực thay đổi nhanh chóng. Điều đó rất quan trọng cho các công ty để tiếp tục sử dụng số liệu đo lường để kiểm tra các yêu cầu đôi khi không thực tế được thực hiện cho các phương pháp phát triển phần mềm mới và các công cụ trong công nghệ phần mềm.2 Tổng quan ISO 9126 Mô hình chất lượng ISO-9126 [10] trên thực tế được mô tả là một phương pháp phân loại và chia nhỏ những thuộc tính chất lượng, nhằm tạo nên những đại lượng đo đếm được dùng để kiểm định chất lượng của sản phẩm phần mềm. Ở mô hình chất lượng trong và chất lượng ngoài của sản phẩm trong ISO/IEC 9126 Tại mỗi đặc tính chất lượng, đặc tính chất lượng con của phần mềm đều được định nghĩa. Với mỗi đặc tính và các đặc tính con, khả năng của phần mềm được xác định bằng tập các thuộc tính trong có thể đo đạc được.
Các đặc tính và các đặc tính con cũng có thể đo lường trong phạm vi khả năng của hệ thống chứa phần mềm. Tính chức năng: Khả năng của phần mềm cung cấp các chức năng đáp ứng được nhu cầu sử dụng khi phần mềm làm việc trong điều kiện cụ thể. Sự phù hợp: là khả năng của một phần mềm có thể cung cấp một tập các chức năng thích hợp cho công việc cụ thể phục vụ mục đích của người sử dụng. Độ chính xác: là khả năng của phần mềm có thể cung cấp các kết quả hay hiệu quả đúng đắn hoặc chấp nhận được với độ chính xác cần thiết.
Khả năng tương tác: với một hoặc một vài hệ thống cụ thể của phần mềm. 18 Tính an toàn: khả năng bảo vệ thông tin và dữ liệu của sản phẩm phần mềm,sao cho những người, hệ thống không được phép thì không thể truy cập, đọc hay chỉnh sửa chúng. Tính tuân thủ chức năng: các phần mềm theo các chuẩn, quy ước, quy định. Tính tin cậy: Là khả năng của phần mềm có thể hoạt động ổn định trong những điều kiện cụ thể.
Tính chính xác: khả năng tránh các kết quả sai Khả năng chịu lỗi: khả năng của phần mềm hoạt động ổn định tại một mức độ cả trong trường hợp có lỗi xảy ra ở phần mềm hoặc có những vi phạm trong giao diện. Khả năng phục hồi: khả năng của phần mềm có thể tái thiết lại hoạt động tại một mức xác định và khôi phục lại những dữ liệu có liên quan trực tiếp đến lỗi. Tính tuân thủ tin cậy: phần mềm thoả mãn các chuẩn, quy ước, quy định. Tính khả dụng: Là khả năng của phần mềm có thể hiểu được, học được, sử dụng được và hấp dẫn người sử dụng trong từng trường hợp sử dụng cụ thể.
Có thể hiểu được: người sử dụng có thể hiểu được xem phần mềm có hợp với họ không và và sử dụng chúng thế nào cho những công việc cụ thể. Có thể học được: người sử dụng có thể học các ứng dụng của phần mềm Có thể sử dụng được: khả năng của phần mềm cho phép người sử dụng sử dụng và điều khiển nó. Tính hấp dẫn: khả năng hấp dẫn người sử dụng của phần mềm Tính tuân thủ khả dụng: phần mềm thoả mãn các chuẩn, quy ước, quy định Tính hiệu quả: Khả năng của phần mềm có thể hoạt động một cách hợp lý, tương ứng với lượng tài nguyên nó sử dụng, trong điều kiện cụ thể. Đáp ứng thời gian: khả năng của phần mềm có thể đưa ra trả lời, thời gian xử lý và một tốc độ thông lượng hợp lý khi thực hiện công việc của mình, dưới điều kiện làm việc xác định.
19 Tận dụng tài nguyên: khả năng của phần mềm có thể sử dụng một số lượng, một loại tài nguyên hợp lý để thực hiện công việc trong những điều kiện cụ thể. Tính tuân thủ hiệu quả: thoả mãn các chuẩn, quy ước, quy định. Khả năng bảo hành, bảo trì: Khả năng của phần mềm có thể chỉnh sửa. Việc chỉnh sửa bao gồm: sửa lại cho đúng, cải tiến và làm phần mềm thích nghi được với những thay đổi của môi trường, của yêu cầu và của chức năng xác định.
Có thể phân tích được: phần mềm có thể được chẩn đoán để tìm những thiếu sót hay những nguyên nhân gây lỗi hoặc để xác định những phần cần sửa. Có thể thay đổi được: phần mềm có thể chấp nhận một số thay đổi cụ thể trong quá trình triển khai. Tính bền vững: khả năng tránh những tác động không mong muốn khi chỉnh sửa phần mềm. Có thể kiểm tra được: khả năng cho phép phần mềm chỉnh sửa có thể được đánh giá.
Khả năng tuân thủ bảo trì: thoả mãn các chuẩn, quy ước, quy định Tính khả chuyển: Là khả năng của phần mềm cho phép nó có thể được chuyển từ môi trường này sang môi trường khác. Khả năng thích nghi: khả năng của phần mềm có thể thích nghi với nhiều môi trường khác nhau mà không cần phải thay đổi. Có thể cài đặt được: phần mềm có thể cài đặt được trên những môi trường cụ thể. Khả năng cùng tồn tại: phần mềm có thể cùng tồn tại với những phần mềm độc lập khác trong một môi trường chung, cùng chia sẻ những tài nguyên chung.
Khả năng thay thế: phần mềm có thể dùng thay thế cho một phần mềm khác,với cùng mục đích và trong cùng môi trường. Tính tuân thủ khả chuyển: thoả mãn các chuẩn, quy ước, quy định 20 Mỗi chất lượng phụ đặc trưng (như khả năng thích ứng) có thể được chia thành các thuộc tính sản phẩm cụ thể hơn. Thuộc tính là một tài sản có thể được xác định hay đo lường trong các sản phẩm phần mềm. Các thuộc tính không được định nghĩa trong tiêu chuẩnvì có sự khác nhau lớn giữa các sản phẩm phần mềm.
Thách thức đối với đo lường phần mềm là để mô tả các thuộc tính chất lượng của tiêu chuẩn ISO 9126 với các thang đo dùng cho phần mềm.3 Tổng quan Agile và Scrum 2.Tổng quan Agile Agile là một nhóm các phương pháp và phương pháp luận phát triển phần mềm dựa trên các nguyên tắc phát triển phân đoạn lặp và tăng trưởng, theo đó nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng. Agile thường sử dụng cách lập kế hoạch thích ứng, việc phát triển và chuyển giao theo hướng tiến hóa; sử dụng các khung thời gian ngắn và linh hoạt để dễ dàng phản hồi lại với các thay đổi trong quá trình phát triển. Nhờ tính linh hoạt, đa dạng và hiệu quả cao, các phương pháp Agile ngày càng trở thành sự lựa chọn hàng đầu của các khách hàng, nhà phát triển, các công ty phát triển phần mềm. Theo khảo sát của hãng nghiên cứu thị trường Forrester, mức độ phổ biến của Agile hiện đang ở mức cao nhất, và gấp nhiều lần so với các phương pháp truyền thống như thác nước hay CMMI.