Chương 1. Mô hình trưởng thành khả năng cho phần mềm - CMM. Sau hàng thập kỷ với những thất bại trong việc cải thiện năng suất và chất lượng từ việc áp dụng các phương pháp luận và công nghệ mới trong việc sản xuất phần mềm, các doanh nghiệp phần mềm nhận ra rằng vấn đề cơ bản là việc không thể quản lý được các tiến trình làm phần mềm. Trong rất nhiều doanh nghiệp, các dự án thường rất muộn và vượt quá ngân sách cho phép, và những lợi ích của việc áp dụng các phương pháp và công cụ tiên tiến thường không được nhận thấy nếu áp dụng cho một dự án không tuân theo các quy định chặt chẽ.
Vào tháng 11 năm 1986, học viện Kỹ Nghệ Phần Mềm (SEI), với sự trợ giúp của tập đoàn Mitre, đã bắt đầu phát triển một mô hình trưởng thành tiến trình nhằm giúp cho các công ty cải thiện chất lươngh làm phần mềm. Tháng 9 năm 1987, SEI đã đưa ra một miêu tả ngắn gọn cho mô hình trưởng thành tiến trình. Hai phuơng pháp là đánh giá tiến trình phần mềm và đánh giá khả năng của phần mềm và một phương pháp đặt câu hỏi trưởng thành được phát triển để đánh giá sự trưởng thành của tiến trình phần mềm. Sau bốn năm kinh nghiệm phát triển mô hình trưởng thành tiến trình phần mềm và phiên bản khởi đầu của mô hình đặt câu hỏi trưởng thành, SEI đã kết hợp mô hình trưởng thành vào trong Mô Hình Trưởng Thành Năng Lực cho Phần Mềm (CMM).
CMM thể hiện các tập các thực tế được gợi ý trong nhiều vùng tiến trình chính (KPA) được sử dụng để cải thiện năng lực phần mềm. CMM được dựa trên kiến thức từ việc đánh giá các tiến trình phần mềm và các phản hồi rộng lớn từ cả phía các nghành công nghiệp và chính phủ. Mô hình trưởng thành năng lực cho phần mềm cung cấp các hướng dẫn cho các công ty phần mềm làm thế nào để kiểm soát được các tiến trình phát triển và bảo dưỡng phần mềm và làm sao để phát triển theo đúng hướng kỹ nghệ phần mềm và quản lý tốt của tương lai. CMM được thiết kế nhằm hướng dẫn các công ty phần mềm trong việc lựa chọn các chiến lược cải tiến quy trình bằng việc quyết định mô hình trưởng thành tiến trình hiện tại và xác định một số vấn đề quan trọng nhất cho chất lượng phần mềm và cải tiến quy trình.
z 8 Bằng việc tập trung vào một số hoạt động giới hạn và làm việc nghiêm tức để đạt được chúng, một công ty có thể dễ dàng cải tiến tiến trình làm phần mềm trong phạm vi rộng khắp cho phép sự trưởng thành liên tục của năng lực tiến trình phần mềm. Phiên bản đầu tiên của CMM, v 1.0, được đưa ra và sử dụng bởi cộng đồng phần mềm trong khoảng thời gian 1991, 1992. Một hội nghị được tổ chức vào tháng 4 năm 1992 để bản về CMM v 1.0 với sự tham gia của hơn 200 chuyên gia phần mềm. Phiên bản hiện nay của CMM, v 1.1 là kết quả của những phản hồi từ hội nghị đó và các phản hồi tiếp tục về sau này của cộng đồng phần mềm.
Tổ chức phần mềm chưa trưởng thành và trưởng thành Việc đặt ra các mục tiêu cơ bản cho cải tiến việc cải tiến quy trình đòi hỏi một mức hiểu biết về sự khác nhau giữa tổ chức phần mềm chưa trưởng thành và trưởng thành. Trong một tổ chức phần mềm chưa trưởng thành, các quy trình phần mềm nói chung được tùy biến bởi các những người thực hiện và sự quản lý của họ trong quá trình làm dự án. Thậm chí nếu một quy trình phần mềm đã được xác định, nó không được mọi người làm theo có hiệu quả. Các hoạt động trong một tổ chức phần mềm chưa trưởng thành được ví như là làm lấy lệ, và các nhà quản lý thường tập trung vào giải quyết các vấn đề tức thời (ví như dập tắt các ngọn lửa bùng phát mà không giải quyết tận gốc).
Kế hoạch và tài chính của phần mềm thì thường xuyên bị vượt quá, vì chúng không được dựa trên các ước lượng thực tế. Khi mà hạn định kết thúc cận kề, chức năng và chất lượng của sản phẩm được dàn xếp để đạt hoạch định. Trong một tổ chức phần mềm chưa trưởng thành, không có cơ sở mục tiêu cho việc điều chỉnh chất lượng sản phẩm hay cho việc giải quyết vấn đề về sản phẩm hay tiến trình. Do vậy, chất lượng sản phẩm rất khó đoán.
Các hoạt động nhằm cải tiến chất lượng như là xem xét hay kiểm thử thường bị bỏ qua hay rất hạn chế khi dự án chưa bị thúc ép. Một mặt khác, một tổ chức phần mềm trưởng thành sở hữu một khả năng rộng khắp tổ chức cho việc quản lý phát triển phần mềm và bảo trì tiến trình. Một tiến trình phần mềm thường được trao đổi một cách thường xuyên và thích hợp giữa các nhân viên hiện thời và những nhân viên mới vào và các hoạt động công việc được thực hiện theo tiến trình đã được lên kế hoạch từ trước. Tiến trình thực hiện rất có ích và phù hợp với cách mà công việc thực z 9 tế được thực hiện.
Những tiến trình đã được định nghĩa này sẽ được cập nhật khi cần thiết, và sự cải tiến được phát triển thông qua các việc kiểm thử trước có điều khiển và/hoặc các việc phân tích về lợi ích tài chính. Vai trò và trách nhiệm trong một tiến trình xác định là rất rõ ràng trong dự án và trong tổ chức. Trong một tổ chức trưởng thành, các nhà quản lý giám sát chât lượng sản phẩm và tiến trình tạo ra chúng. Có cơ sở về mục tiêu, lượng hóa cho việc điều chỉnh chất lượng sản phẩm và phân tích vấn đề với sản phẩm và tiến trình.
Lịch làm việc và ngân sách thường được dựa trên các năng lực từ quá khứ và rất thực tế; kết quả mong muốn về giá cả, khung thời gian, chức năng, và chất lượng sản phẩm thường xuyên đạt được. Nói chung, một tiến trình cơ bản được tuân theo một cách thống nhất bởi vì tất cả mọi người tham gia đều hiểu giá trị của việc làm như vậy, và tồn tại một cấu trúc hạ tầng thích hợp để hỗ trợ các tiến trình đó. Các khái niệm cơ bản trên khía cạnh trưởng thành tiến trình Một tiến trình phần mềm được định nghĩa là một tập các hành động, phương thức, các trải nghiệm thực tế và các biến đổi mà con người sử dụng để phát triển và bảo trì phần mềm và các sản phẩm liên quan (như kế hoạch dự án, tài liệu thiết kế, mã, ca kiểm thử, hướng dẫn sử dụng…) Khi một tổ chức trưởng thành, tiến trình phần mềm được xác định tốt hơn và được thực hiện chuẩn xác và nhất quán hơn xuyên suốt tổ chức đó. Khả năng tiến trình phần mềm miêu tả một dải các kết quả mong muốn có thể đạt được bằng việc tuân theo tiến trình phần mềm.
Khả năng tiến trình phần mềm của một tổ chức cung cấp một công cụ dự đoán chính xác các công việc cần làm và các kết quả sẽ đạt được của dự án tiếp theo mà tổ chức đang chuẩn bị thực hiện. Hiệu năng tiến trình phần mềm thể hiện kết quả thực tế đạt được nhờ việc tuân theo tiến trình phần mềm. Do vây, hiệu năng tiến trình phần mềm tập trung vào kết quả đạt được, trong khi khả năng tiến trình phần mềm tập trung vào kết quả mong muốn và kế hoạch dự kiến. Sự trưởng thành tiến trình phần mềm là một kết quả mà khi một tiến trình nhất định được xác định, quản lý, đo đạc, điểu khiển rõ ràng và hiệu quả.
Trưởng thành ngụ ý tiềm z 10 năng phát triển của tổ chức về mặt năng lực tổ chức và quản lý và chỉ ra cả sự đầy đủ của tiến trình phần mềm được lập kế hoạch và sự thống nhất trong việc áp dụng trong các dự án xuyên suốt tổ chức. Khi một tổ chức phần mềm đạt được sự trưởng thành trong tiến trình phần mềm, nó sẽ kết hợp tiến trình phần mềm của nó thông qua các chính sách, chuẩn mực, và cấu trúc tổ chức. Sự kết hợp này bao gồm việc xây dựng cơ sở hạ tầng và văn hóa doanh nghiệp mà hỗ trợ các phương thức, thực hành, và các thủ tục của doanh nghiệp do đó chúng tồn tại mãi mãi sau khi người thiết lập nên chúng đã ra đi. Năm mức trưởng thành tiến trình phần mềm Việc cải tiến tiến trình liên tiếp được dựa trên rất nhiều các bước nhỏ, tiến hóa hơn là một sáng tạo tiến hóa.
Cấu trúc theo từng giai đoạn của CMM được đưa ra theo nguyên tắc chất lượng sản phẩm đưa ra bởi Walter Shewart, W. Edwards Deming, Joseph Juran và Philip Crosby. CMM cung cấp một bộ khung để sắp xếp các bước tiến hóa này thành năm mức trưởng thành mà dựa trên cơ sở thành công cho việc cải tiên tiến trình liên tiếp. Năm mức trưởng thành này xác định một thước đo thứ tự để đo đạc mức độ trưởng thành của tiến trình phần mềm của tổ chức và cho việc đánh giá năng lực tiến trình phần mềm của tổ chức đó.
Các mức này cũng giúp cho một tổ chức thu xếp mức độ ưu tiên những cố gắng cải tiến của nó. Một mức trưởng thành là một trạng thái ổn định mang tính tiến hóa được định nghĩa đầy đủ hướng tới việc đạt được tiến trình phần mềm trưởng thành. Mỗi một mức trưởng thành bao gồm một tập các mục tiêu tiến trình mà khi nó được thỏa mãn, sẽ làm ổn định một thành phần quan trọng của tiến trình phần mềm. Đạt tới một mức của khung trưởng thành sẽ tạo ra các thành phần khác nhau trong tiến trình phần mềm, và kết quả là làm tăng khả năng tiến trình của tổ chức.
Việc tổ chức CMM thành năm mức được thể hiện trong hình 2.1 sắp xếp ưu tiên các hành động cải tiến cho việc tăng cường sự trưởng thành tiến trình phần mềm. Các mũi tên được gán nhãn trong hình 2.1 thể hiện kiểu khả năng tiến trình được kết hợp lại bởi tổ chức tại mỗi bước của khung trưởng thành. Đặc tính cư xử của các mức trưởng thành Các mức trưởng thành từ 2 đến 5 có thể được phân biệt thông qua các hành động thực hiện mà tổ chức đưa ra hoặc cải tiến tiến trình phần mềm, bằng các hành động thực hiện trong mỗi dự án và bằng khả năng tiến trình đạt được thông qua các dự án. Đặc tính cư xử của một mức đưa ra một cơ sở cho việc so sánh việc cải tiến tiến trình ở mức độ trưởng thành cao hơn.