3. Những Khó Khăn Thƣờng Gặp Trong Phát Triển Phần Mềm [4]
3.2. Khó khăn mức Lặp Lại
Vƣợt qua các khó khăn mức trên, qui trình của tổ chức có một sức mạnh quan trọng mà trƣớc đó nó không có: Nó cung cấp sự kiểm soát toàn bộ cách thức tổ chức thiết lập các kế hoạch và cam kết của nó . Sự kiểm soát này cung cấp một sự cải tiến hơn so với trƣớc ở chỗ con ngƣời trong tổ chức có xu hƣớng đã hiểu rõ vấn đề của phần mềm. Họ đã đạt đƣợc một mức độ kiểm soát theo thống kê qua việc học để thực hiện và đạt đƣợc các kế hoạch và ƣớc tính. Sức mạnh này, tuy nhiên, có nguồn gốc từ kinh nghiệm trƣớc của họ khi làm những công việc giống nhau. Các tổ chức ở mức có qui trình có thể lặp lại đƣợc vì vậy đối mặt với các rủi ro nguy hiểm khi họ gặp phải các thách thức mới.
Ví dụ các cơ hội có thể dẫn đển rủi ro cao ở mức độ này là:
Nếu không đƣợc đƣa ra với sự cẩn thận lớn, các công cụ mới và phƣơng pháp mới sẽ ảnh hƣởng đến qui trình, vì vậy phá huỷ sự thích hợp của các nền tảng mang tính lịch sử trực quan mà tổ chức dựa vào. Nếu không có một khung làm việc về qui trình đã đƣợc định nghĩa ở đó để xử lý các rủi ro này, một công nghệ mới có thể thậm chí sẽ gây hại hơn là làm lợi.
Khi tổ chức phải phát triển một loại sản phẩm mới, qui trình sẽ đi vào phạm vi mới. Ví dụ, một nhóm phần mềm có kinh nghiệm phát triển các bộ dịch (compilers) sẽ có thể có các vấn đề về thiết kế, lập lịch, và ƣớc tính khi đƣợc giao nhiệm vụ viết một chƣơng trình điều khiển thời gian thực. Tƣơng tự một nhóm đã phát triển các chƣơng trình nhỏ sẽ không hiểu các vấn đề giao diện và tích hợp dính líu trong các dự án qui mô lớn. Những thay đổi này một lần nữa phá huỷ sự thích hợp của các nền tảng mang tính lịch sử trực quan của qui trình của tổ chức.
Các thay đổi mang tính tổ chức quan trọng cũng có thể phá vỡ ở mức độ cao. ở mức qui trình có thể lặp lại, một ngƣời quản lý mới không có tài liệu để hiểu các hoạt động của tổ chức, và những thành viên một đội mới phải học các tình hình điều kiện qua các lời nói miệng.
Các hoạt động chủ chốt để tiến lên bậc tiếp theo, qui trình đƣợc định nghĩa, là thiết lập một đội qui trình, thiết lập một kiến trúc qui trình phát triển, và đƣa ra một loạt các phƣơng pháp kỹ nghệ phần mềm và kỹ thuật.
Thiết lập một nhóm qui trình. Một nhóm qui trình là một tài nguyên kỹ thuật tập trung riêng biệt vào việc cải tiến qui trình phần mềm. Trong các tổ chức phần mềm tại các mức độ trƣởng thành trƣớc, tất cả mọi ngƣời đƣợc dành cho công việc phát triển sản phẩm. Cho đến khi một vài ngƣời đƣợc giao nhiệm vụ làm cả ngày trên qui trình, một chút tiến bộ theo thứ tự có thể đƣợc thực hiện để cải tiến qui trình.
Các trách nhiệm của các nhóm qui trình bao gồm định nghĩa qui trình phát triển, xác định các nhu cầu kỹ thuật và các cơ hội, góp ý các dự án, và dẫn dắt các buổi xem lại việc quản lý hàng quí về tình trạng của qui trình và hiệu suất của qui trình. Trong khi không có dữ liệu nào đƣợc công bố tại điểm này, kinh nghiệm chỉ ra rằng
hiệu quả hoàn toàn. Các tổ chức nhỏ thiếu nền tảng kinh nghiệm để thành lập một nhóm qui trình nên xử lý những vấn đề này bằng cách sử dụng các uỷ ban đã đƣợc thiết lập một cách đặc biệt bao gồm các chuyên gia có kinh nghiệm hay bằng cách thuê các nhà tƣ vấn.
Câu hỏi thƣờng gặp liên quan đến trách nhiệm tƣơng đối của các nhóm qui trình và bảo đảm chất lƣợng. Điều này đƣợc thảo luận chi tiết ở các phần sau, nhóm bảo đảm chất lƣợng tập trung vào việc áp dụng qui trình hiện tại, trong khi đó nhóm qui trình lại đƣợc hƣớng dẫn để cải tiến qui trình. Có nghĩa là, chúng hầu nhƣ đối nghịch: bảo đảm bao gồm kiểm tra và sự tuân theo, và nhóm qui trình xử lý việc hỗ trợ và thay đổi.
Thiết lập một kiến trúc qui trình phát triển phần mềm, hoặc vòng đời phát triển, mà mô tả các hoạt động quản lý và kỹ thuật để chạy đúng qui trình phát triển. Qui
trình này phải đƣợc làm cho hoà hợp với các nhu cầu cụ thể của tổ chức, và nó sẽ biến đổi theo kích cỡ và tầm quan trọng của dự án cũng nhƣ tự thân bản chất kỹ thuật của công việc. Kiến trúc này là sự phân rã cấu trúc của vòng phát triển thành những nhiệm vụ, mỗi nhiệm vụ có một bộ đƣợc định nghĩa các điều kiện tiên quyết, các mô tả chức năng, các thủ tục thẩm tra, và các đặc tả sự hoàn thành nhiệm vụ. Sự phân rã tiếp tục đến khi mỗi nhiệm vụ đã đƣợc định nghĩa đƣợc thực hiện bởi một cá nhân hay một đơn vị quản lý đơn.
Nếu chúng đã sẵn sàng, đƣa ra một loạt các phƣơng pháp kỹ nghệ phần mềm và kỹ thuật. Chúng bao gồm các soi mã và thiết kế, các phƣơng pháp thiết kế chính thức, các hệ thống điều khiển thƣ viện, và các phƣơng pháp kiểm thử tổng hợp. Việc làm bản mẫu cũng nên đƣợc xem xét, cùng với sự chấp nhận của các ngôn ngữ lập trình hiện đại.