Phân tích yêu cầu phần mềm như thế nào?

Trong các ngành kỹ thuật hệ thống và công nghệ phần mềm, phân tích yêu cầu là công việc bao gồm các tác vụ xác định các yêu cầu cho một hệ thống mới hoặc được thay đổi, dựa trên cơ sở là các yêu cầu (có thể mâu thuẫn) mà những người có vai trò quan trọng đối với hệ thống, chẳng hạn người sử dụng, đưa ra. Việc phân tích yêu cầu có ý nghĩa quan trọng đối với thành công của một dự án.

Phân tích và thiết kế hệ thống có quyết định quan trọng nhất đến thành công của dự án
Phân tích và thiết kế hệ thống có quyết định quan trọng nhất đến thành công của dự án

Việc phân tích yêu cầu một cách có hệ thống còn được gọi là kỹ nghệ yêu cầu (requirements engineering). Đôi khi nó còn được gọi một cách không thật chính xác bằng những cái tên như thu thập yêu cầu (requirements gatheringrequirements capture), hoặc đặc tả yêu cầu (requirements specification). Thuật ngữ "phân tích yêu cầu" còn được áp dụng cụ thể cho công việc thuần túy phân tích (thay vì các việc khác chẳng hạn như làm rõ yêu cầu hay viết tài liệu yêu cầu).

Requirements and User Stories

Các yêu cầu phải có tính đo được, kiểm thử được, có liên quan đến các nhu cầu hoặc cơ hội doanh nghiệp đã được xác định, và các yêu cầu phải được định nghĩa ở một mức độ chi tiết đủ cho việc thiết kế hệ thống.

Producing Testable Requirements

Các kỹ thuật chính

Về khái niệm, việc phân tích yêu cầu bao gồm 3 loại hoạt động sau:

  • Làm rõ yêu cầu (Eliciting requirements): giao tiếp với khách hàng và người sử dụng để xác định các yêu cầu của họ.
  • Xem xét yêu cầu (Analyzing requirements): xác định xem các yêu cầu được đặt ra có ở tình trạng không rõ ràng, không hoàn chỉnh, đa nghĩa, hoặc mâu thuẫn hay không, và giải quyết các vấn đề đó.
  • Làm tài liệu yêu cầu (Recording requirements): các yêu cầu có thể được ghi lại theo nhiều hình thức, chẳng hạn các tài liệu ngôn ngữ tự nhiên, các tình huống sử dụng (use case), câu chuyện dẫn dắt tình huống sử dụng (user story), hoặc các đặc tả tiến trình.
     

Phân tích yêu cầu có thể là một quá trình dài và khó khăn, cần đến nhiều kĩ năng tâm lý khéo léo. Các hệ thống mới làm thay đổi môi trường và các mối quan hệ giữa con người, do đó điều quan trọng là phải xác định được tất cả những người có vai trò quan trọng, xem xét tất cả các nhu cầu của họ và đảm bảo rằng họ hiểu được các hàm ý của hệ thống mới. Các nhà phân tích có thể sử dụng một số kĩ thuật để làm rõ các yêu cầu của khách hàng. Trong lịch sử, các kỹ thuật này bao gồm các cuộc phỏng vấn, thành lập các nhóm trọng tâm (focus group) với các cuộc họp bàn về yêu cầu (requirements workshops), và tạo ra các danh sách yêu cầu. Các kỹ thuật hiện đại hơn gồm có tạo nguyên mẫu (prototyping), và tình huống sử dụng. Khi cần thiết, nhà phân tích BA sẽ kết hợp các phương pháp này để thiết lập các yêu cầu chính xác của những người có vai trò quan trọng, nhằm mục đích xây dựng một hệ thống thỏa mãn các yêu cầu doanh nghiệp.

Trong một pha phát triển đầu tiên của dự án, nếu không có sự cân bằng giữa đầu vào và đầu ra, thì dự án có nguy cơ thất bại. Người dùng mong muốn rât nhiều, cố gắng mô hình hóa một nghị định, chính sách mà chính bản thân cũng không hiểu sẻ sử dụng như thế nào khi vận hành phần mềm.
Trong một pha phát triển đầu tiên của dự án, nếu không có sự cân bằng giữa đầu vào và đầu ra, thì dự án có nguy cơ thất bại. Người dùng mong muốn rât nhiều, cố gắng mô hình hóa một nghị định, chính sách mà chính bản thân cũng không hiểu sẻ sử dụng như thế nào khi vận hành phần mềm.

Các vấn đề

Vấn đề về người dùng và khách hàng

Trong cuốn Rapid Development, Steve McConnell đã liệt kê một loạt các khả năng người dùng có thể cản trở quá trình thu thập yêu cầu:

  • Người dùng không hiểu họ muốn gì
  • Người dùng không tuân theo một bộ yêu cầu đã được tài liệu hóa
  • Người dùng nhất định đòi hỏi các yêu cầu mới sau khi chi phí và kế hoạch phát triển đã được hoạch định xong.
  • Mức độ giao tiếp với người dùng là thấp
  • Người dùng thường không tham gia các đợt thẩm định hoặc không thể tham gia.
  • Người dùng không hiểu kỹ thuật
  • Người dùng không hiểu quy trình phát triển.
Do các rào cản trong việc truyền đạt, người dùng không hiểu họ muốn gì
Do các rào cản trong việc truyền đạt, người dùng không hiểu họ muốn gì

Những điều này có thể dẫn tới tình huống khi yêu cầu người dùng liên tục thay đổi ngay cả khi việc phát triển hệ thống hay sản phẩm đã được bắt đầu.

Vấn đề về kỹ sư/nhà phát triển

Trong quá trình phân tích yêu cầu, các vấn đề sau có thể nảy sinh từ phía các kỹ sư và nhà phát triển:

  • Nhân viên kỹ thuật và người dùng cuối có thể có ngôn từ khác nhau. Kết quả là họ có thể tin rằng họ hoàn toàn đồng thuận cho đến khi sản phẩm hoàn thiện được đưa ra.
  • Các kỹ sư và nhà phát triển có thể cố lái cho các yêu cầu khớp với một hệ thống hay mô hình sẵn có, thay vì phát triển một hệ thống theo sát nhu cầu của khách hàng
  • Việc phân tích có thể do các kỹ sư hoặc lập trình viên thực hiện, thay vì các nhân viên có kỹ năng và kiến thức miền ứng dụng để có thể hiểu các nhu cầu của khách hàng một cách đúng đắn

Giải pháp đã được thực hiện

Một giải pháp đối với các vấn đề về giao tiếp là thuê các chuyên gia về doanh nghiệp hoặc chuyên gia phân tích hệ thống.

Các kỹ thuật được đưa ra trong thập kỷ 1990 như tạo nguyên mẫu (Prototyping), UML (ngôn ngữ mô hình hóa phần mềm), tình huống sử dụng. và phát triển phần mềm linh hoạt (Agile software development) cũng đã được dùng làm giải pháp cho các vấn đề trên.

Nguồn: wiki

Category