Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
Mô hình xoắn ốc (tiếng Anh: spiral model) là quy trình phát triển định hướng rủi ro cho các dự án phần mềm. Kết hợp của thế mạnh của các mô hình khác và giải quyết khó khăn của các mô hình trước còn tồn tại. Dựa trên các mô hình rủi ro riêng biệt của mỗi dự án, mô hình xoắn ốc đưa ra cách áp dụng các yếu tố của một hoặc nhiều mô hình xử lý, chẳng hạn như mô hình gia tốc, mô hình thác nước hoặc mô hình tạo mẫu tiến hóa.
Mô hình này lần đầu được Barry Boehm đưa ra trong bài báo năm 1968 với tựa đề "A Spiral Model of Software Development and Enhance[1]". Vào năm 1988, Boehm đã xuất bản một bài báo tương tự cho nhóm đối tượng độc giả rộng hơn. Những bài báo giới thiệu về sơ đồ được tái bản trong nhiều ấn phẩm tiếp theo nhằm thảo luận về mô hình xoắn ốc. Boehm đã đề xuất một mô hình xoắn ốc cung cấp một cách tiếp cận "định hướng rủi ro" để phát triển phần mềm. Mỗi cấp độ trong xoắn ốc liên quan đến việc lập kế hoạch, phân tích, phát hiện rủi ro, hoàn thiện hệ thống và tạo mẫu thêm. Về bản chất, nó mô tả sự phát triển của phần mềm qua các giai đoạn tiến hóa, mỗi giai đoạn được coi như một mô hình thác đổ, được bắt đầu từ những cái khái quát nhất rồi đi dần đến chi tiết.
Dựa trên rủi ro của một dự án từ đó đưa ra một mô hình thích hợp cho việc thực hiện dự án. Như vậy, cộng dồn, thác nước, tạo mẫu, và các mô hình quá trình khác là trường hợp đặc biệt của mô hình xoắn ốc nó phù hợp với các mô hình rủi ro của dự án nhất định.
Boehm cũng xác định một số quan niệm sai lầm phát sinh từ sự đơn giản hóa trong mô hình xoắn ốc ban đầu. Ông cho biết những quan niệm sai lầm rất nguy hiểm:
Những quan điểm trên có thể phù hợp với một số dự án, tuy nhiên, hầu hết chúng không phù hợp với các dự án phát triển phần mềm hiện nay. Boehm liệt kê một số đặc điểm chung bất biến cho các ứng dụng của mô hình xoắn ốc.
Trong mỗi chu kỳ của mô hình xoắn ốc bắt buộc phải xảy ra bốn hoạt động cơ bản này:
Đối với bất cứ dự án nào (ví dụ như phân tích các nhu cầu, thiết kế, tạo bản mẫu, thử nghiệm), nhóm dự án phải xác định được cần bao nhiêu nguồn lực là đủ. Trong chu kỳ của quy trình xoắn ốc thực tế, những quyết định này được thực hiện bằng cách giảm thiểu tối đa rủi ro tổng thể.
Ví dụ, việc tăng thêm thời gian thử nghiệm một sản phẩm phần mềm sẽ làm giảm đi rủi ro từ việc thị trường từ chối một sản phẩm kém chất lượng. Tuy nhiên, việc tăng thêm thời gian thử nghiệm này lại dẫn đến một rủi ro khác đó là sự gia nhập của các đối thủ cạnh tranh. Từ góc độ mô hình xoắn ốc, các thử nghiệm cần được thực hiện cho đến khi các rủi ro được giảm thiểu đến mức thấp nhất và không phát sinh trong tương lai.
Xem xét các yêu cầu đặc điểm kỹ thuật cũng là một ví dụ, các dự án chính xác nên xác định những tính năng làm giảm thiểu rủi ro thông qua các thông số chính xác (ví dụ, giao diện giữa phần cứng và phần mềm, giao diện giữa nhà thầu chính và nhà thầu phụ).
Phạm vi của rủi ro này bao gồm các quá trình tiến hóa mà bỏ qua rủi ro từ các vấn đề về khả năng mở rộng, cũng như việc tăng cường đầu tư vào một quá trình kiến trúc kỹ thuật phải được thiết kế lại hoặc thay thế để phù hợp với sự phát triển sản phẩm trong tương lai.
Quy trình được chia thành nhiều bước lặp lại, mỗi bước bắt đầu bằng việc lập kế hoạch, phân tích rủi ro, tạo bản mẫu, hoàn thiện và phát triển hệ thống, kiểm định lại và trình tự cứ tiếp tục như vậy. Nội dung của 4 hoạt động chính:
Xác định mục tiêu, các ràng buộc và những giải pháp khác nhau để đặt được mục tiêu. Ở bước này ta cần trả lời các câu hỏi:
Phân tích những rủi ro và khả năng giải quyết (thường là xây dựng bản mẫu). Để xác định rủi ro của mỗi giai đoạn trong mỗi xoắn ốc, Boehm sử dụng mẫu "Spiral Model Template[2]"
Dựa trên việc lập kế hoạch và phân tích rủi ro để từ đó phát triển hệ thống đồng thời phải kiểm tra lại. Giai đoạn này ta nên sử dụng mô hình thác nước để phát triển dự án
Chúng ta xem xét tiến độ và đánh giá thông qua các thông số đã đưa ra ở bước lập kế hoạch. Từ đó, tiếp tục triển khai giải quyết các vấn đề còn lại với quy trình được lặp lại tương tự
|first=
thiếu |last=
(trợ giúp)
|chương=
(trợ giúp)