ISO 12207

**T****iêu chuẩn ISO 12207** *Hệ thống và kỹ thuật phần mềm – quy trình vòng đời phần mềm* là một tiêu chuẩn quốc tế cho quy trình phát triển phần mềm. Tiêu chuẩn này nhằm mục đích định nghĩa tất cả các nhiệm vụ cần thiết cho việc phát triển và duy trì phần mềm.

Tiêu chuẩn ISO 12207 thiết lập một quy trình cho vòng đời một phần mềm, bao gồm cả quá trình và các hoạt động áp dụng trong việc giành được và định dạng cấu trúc của các dịch vụ trong hệ thống. Mỗi quy trình có một nhóm kết quả liên quan với nó. Có 23 quy trình, 95 hoạt động, 325 nhiệm vụ và 224 kết quả (Tiêu chuẩn ISO 12207:2008 mới - "hệ thống và kỹ thuật phần mềm – Quy trình vòng đời phần mềm" xác định 43 hệ thống và quy trình phần mềm).

Mục tiêu chính của các tiêu chuẩn là để cung cấp một cấu trúc chung để mà các người mua, các nhà cung cấp, người phát triển, bảo trì, điều hành, các nhà quản lý và kỹ thuật viên tham gia với phần mềm có thể một ngôn ngữ chung. Bộ ngôn ngữ chung này được thành lập ở định nghĩa quy trình chuẩn. Cấu trúc của các tiêu chuẩn được thiết kế để được hiểu một cách linh hoạt, chia thành mô-đun để thích nghi với những nhu cầu của bất cứ ai sử dụng nó. Các tiêu chuẩn dựa vào hai nguyên tắc cơ bản: mô-đun và trách nhiệm. Mô-đun có nghĩa là quy trình với tối thiểu khớp nối và tối đa gắn kết. Trách nhiệm là phải thiết lập một trách nhiệm cho mỗi quy trình, tạo điều kiện để ứng dụng các tiêu chuẩn vào các dự án có nhiều người tham gia.

Nhóm các quy trình, hoạt động và nhiệm vụ có thể được sử dụng tuỳ theo dự án phần mềm. Các quy trình này được phân loại thành 3 kiểu: kiểu cơ bản, kiểu hỗ trợ và kiểu tổ chức. Các quy trình kiểu hỗ trợ và kiểu tổ chức phải tồn tại độc lập với bất kì tổ chức hoặc dự án. Quy trình kiểu cơ bản được ứng dụng tuỳ theo tình hình.

## Quy trình vòng đời chính
Quy trình vòng đời chính chứa các quy trình cốt lõi cần thực hiện để tạo ra sản phẩm phần mềm. Các quy trình này được chia thành sáu quy trình khác nhau:
* Chuẩn bị
* Cung cấp
* Phát triển
* Hoạt động
* Duy trì
* Tiêu huỷ
Bởi vì quy trình vòng đời chính là một lĩnh vực lớn. Bài viết này giải thích tất cả các quy trình vòng đời chính nhưng sẽ giải thích quy trình Chuẩn bị và Phát triển chi tiết hơn.

## Các hoạt động
Mỗi giai đoạn trong quy trình vòng đời chính có thể được chia thành các hoạt động khác nhau. Chương này giải thích các hoạt động khác nhau đối với mỗi quy trình vòng đời chính.

### Chuẩn bị
Chuẩn bị bao gồm cả các hoạt động để bắt đầu một dự án.
Giai đoạn chuẩn bị này có thể được chia thành các hoạt động và kết quả hoàn thành theo thứ tự thời gian.
* Khởi động:
** Trước hết, cần mô tả tại sao chúng ta phải có được, phải phát triển hoặc cải tiến một sản phẩm;
** Định nghĩa yêu cầu hệ thống và xác định tính khả thi;
** Toàn bộ yêu cầu phần mềm cần được xác định;
** Đánh giá của những lựa chọn khác, như một mua sản phẩm phát triển bởi bên thứ 3 hoặc cải tiến một sản phẩm có sẵn;
** Nếu một sản phẩm được phát triển bởi bên thứ 3, yêu cầu phần mềm áp dụng cho sản phẩm này cần phải được phân tích;
** Một kế hoạch khởi động được phát triển, kế hoạch này sẽ được sử dụng tiếp trong giai đoạn khởi động;
** Xác định rõ tiêu chí thành công.
* Chuẩn bị bản đề xuất:
** Định nghĩa các yêu cầu khởi động, ví dụ yêu cầu hệ thống và giới hạn kỹ thuật như môi trường mục tiêu;
** Quy trình ISO 12207 cho dự án cần được cho vào và có thể thay đổi cho phù hợp;
** Các mốc quan trọng trong hợp đồng để xác thực và định nghĩa quá trình kiểm định của nhà cung cấp.
* Chuẩn bị hợp đồng:
** Đề ra quy trình lựa chọn nhà cung cấp;
** Các nhà cung cấp, dựa trên quy trình đề ra, được lựa chọn;
** Tiêu chuẩn ISO 12207 phải được cho vào có thể thay đổi cho phù hợp;
* Đàm phán các thay đổi:
** Đàm phán được tổ chức với các nhà cung cấp được lựa chọn,
* Cập nhật bản hợp đồng:
** Hợp đồng được cập nhật với các kết quả từ các cuộc đàm phán trước đó.
* Giám sát nhà cung cấp:
** Các hoạt động của các nhà cung cấp theo thỏa thuận được theo dõi, giám sát;
** Nếu cần, làm việc cùng với các nhà cung cấp để đảm bảo thời gian bàn giao kết quả.
* Chấp nhận và hoàn thành:
** Tạo ra biên bản kiểm tra bàn giao và các thủ tục;
** Tiến hành thực hiện kiểm tra bàn giao trên sản phẩm nhận được;
** Hướng dẫn quản lý cấu hình trên sản phẩm được bàn giao.

### Phát triển
Trong giai đoạn phát triển, sản phẩm phần mềm được thiết kế, xây dựng và thử nghiệm. Kết quả sẽ là một sản phẩm phần mềm sẵn sàng được bàn giao cho khách hàng. Qua thời gian, nhiều phương thức phát triển phần mềm được xây dựng. Việc lựa chọn các phương thức phát triển thường tuỳ thuộc vào tình hình thực tê. Phương thức phát triển được sử dụng trong nhiều dự án là V-model.
Kỹ thuật có thể được sử dụng là UML cho thiết kế và TMap cho kiểm thử.
Mục này chứa hầu hết các bước quan trọng của V-model.
* Xác định các yêu cầu chức năng:
** Thu thập các yêu cầu chức năng, hoặc nhu cầu cho các sản phẩm đó là để được tạo ra.
* Tạo thiết kế tổng quan: 
** Bố trí cơ bản của các phần của sản phẩm là được tạo ra. Nghĩa là cần thiết lập các mô-đun và cách để các mô-đun giao tiếp với nhau. Thiết kế này không chứa nhiều thông tin chi tiết về các mô-đun.
* Tạo thiết kế mô-đun
** Các mô-đun khác nhau trong thiết kế tổng quan được thiết kế riêng biệt. Các mô-đun được thiết kế càng chi tiết càng tốt.
* Lập trình
** Mã lập trình được viết theo thiết kế tổng quan và thiết kế chi tiết mô-đun.
* Thực hiện kiểm thử mô-đun
** Các mô-đun khác nhau sẽ được kiểm tra để hoạt động chính xác. Nếu đúng, dự án có thể được chuyển qua bước tiếp theo. Nếu không, dự án cần quay lại bước thiết kế để sửa tất cả các lỗi xảy ra.
* Thực hiện kiểm thử ráp nối
** Việc trao đổi giữa các mô-đun sẽ được kiểm tra để hoạt động chính xác. Nếu đúng, dự án có thể được chuyển qua bước tiếp theo. Nếu không, dự án cần quay lại bước thiết kế bậc cao để sửa tất cả các lỗi xảy ra.
* Thực hiện kiểm thử hệ thống
** Việc kiểm thử này sẽ kiểm tra tất cả các yêu cầu chức năng cần có trong sản phẩm. Nếu đúng, sản phẩm được hoàn thành và sẵn sàng để chuyển giao cho khách hàng. Nếu không, dự án cần trở lại với hoạt động xác định yêu cầu phần mềm và các yêu cầu chức năng phải được điều chỉnh.

## Kết quả bàn giao
Các kết quả bàn giao khác nhau cho hoạt động nêu trên được giải thích trong chương này.

### Chuẩn bị
Chuẩn bị bao gồm các hoạt động từ khi bắt đầu một dự án.
Giai đoạn chuẩn bị có thể được chia thành các hoạt động và phân phôi đó được hoàn thành thứ tự thời gian.
* Giới thiệu tổng quan:
** Tài liệu tổng quan;
* Chuẩn bị Bản đề xuất:
** Bản đề xuất;
* Chuẩn bị Hợp đồng:
** Hợp đồng: biên bản thỏa thuận tạm thời giữa công ty và các nhà cung cấp, viết ra bởi công ty đó;
* Thương lượng thay đổi:
** Ý kiến từ các nhà cung cấp: các nhà cung cấp có thể phản hồi về bản hợp đồng nháp đưa ra bởi công ty đó, các phản hồi này sẽ là ý kiến từ các nhà cung cấp;
* Cập nhật Hợp đồng:
** Bản thảo Hợp Đồng cuối cùng;
* Giám sát nhà cung cấp:
** Báo cáo tình hình nhà cung cấp: báo cáo này bao gồm tiến độ của các nhà cung cấp dựa trên các mốc sự kiện quan trọng;
* Chấp nhận và hoàn thành:
** Biên bản bàn giao: báo cáo này tổng kết việc chấp nhận và hoàn thành giai đoạn chuẩn bị.

### Phát triển
Trong giai đoạn phát triển, sản phẩm phần mềm được thiết kế, xây dựng và thử nghiệm. Kết quả là một sản phẩm phần mềm đã sẵn sàng để được bán cho các khách hàng.
* Định nghĩa các yêu cầu phần mềm:
** Yêu cầu phần mềm: đây là một danh sách các yêu cầu chức năng;
* Thiết kế tổng quan:
** Thiết kế tổng quan;
* Thiết kế mô-đun:
** Thiết kế mô-đun;
* Lập trình:
** Mã nguồn;
* Kết quả kiểm thử mô-đun:
** Báo cáo kết quả kiểm thử mô-đun bao gồm kết quả kiểm thử cho từng mô-đun của phần mềm. Dựa trên báo cáo này đội dự án có thể quyết định các hoạt động tiếp theo;
* Kết quả kiểm thử ráp nối:
** Báo cáo kết quả kiểm thử ráp nối bao gồm kết quả kiểm thử ráp nối trong phần mềm. Dựa trên báo cáo này, đội dự án có thể quyết định các hoạt động tiếp theo;
* Kiểm thử hệ thống:
** Báo cáo kết quả kiểm thử toàn bộ hệ thống.

## Tham khảo

* IEEE 12207
* Software development process
* Software release life cycle
* ISO/IEC 15288
* ISO/IEC 15504
* Meta-modeling technique
* V model
* Unified Modeling Language
* Build management
* Release management
* Application Lifecycle Framework
* ISO/IEC JTC 1/SC 7

## Tham khảo
* 
*