Yêu cầu chức năng (Functional) và phi chức năng (Non-Functional) của một sản phẩm phần mềm
Trong quá trình tìm hiểu yêu cầu từ phía khách hàng, việc phân biệt và khai thác đầy đủ các yêu cầu về chức năng (functional) và phi chức năng (non-functional) đòi hỏi một IT Business Analyst phải am hiểu sâu sắc về hai nhóm yêu cầu này.
Việc hiểu rõ về các loại yêu cầu sẽ giúp cho BA có thể đưa ra giải pháp phù hợp nhất cho khách hàng. Trong bài viết này chúng ta sẽ tìm hiểu về hai khái niệm cơ bản về yêu cầu từ khách hàng và stakeholders cho một sản phẩm phần mềm: Yêu cầu chức năng (functional) và yêu cầu phi chức năng (non-functional).
Yêu cầu chức năng và yêu cầu phi chức năng khác nhau như thế nào?
Khi làm việc với khách hàng trong giai đoạn làm rõ thông tin (Requirement Recitation), có hai loại yêu cầu chính mà BA cần làm rõ để có thể xây dựng một sản phẩm hoàn chỉnh:

- Yêu cầu chức năng (Functional Requirements): Đây là yêu cầu phản ánh trực tiếp các hành vi và tính năng mà phần mềm cần cung cấp. BA phải đảm bảo rằng tất cả các yêu cầu này đều được cụ thể hóa bằng cách trả lời câu hỏi "Phần mềm sẽ làm được gì?" Ví dụ, một yêu cầu chức năng có thể là: người dùng phải có khả năng đăng ký tài khoản, đặt hàng, hoặc quản lý thông tin cá nhân thông qua hệ thống. Những yêu cầu này thường được đánh giá dựa trên độ chính xác, khả năng thực thi và sự phù hợp với các quy trình nghiệp vụ của khách hàng.
- Yêu cầu phi chức năng (Non-functional Requirements): Những yêu cầu phi chức năng không trực tiếp liên quan đến chức năng cốt lõi của phần mềm nhưng lại là yếu tố quyết định sự thành công về lâu dài. Các yêu cầu này bao gồm hiệu suất, bảo mật, khả năng mở rộng, và tính thân thiện với người dùng. BA cần xác định rõ "Phần mềm thực hiện chức năng đó như thế nào?" Ví dụ, tốc độ xử lý phải dưới 3 giây, hệ thống phải chịu được tải từ 5.000 người dùng đồng thời, hoặc giao diện phải trực quan và dễ sử dụng.
Đọc thêm: Các mô hình (framework) hữu ích trong quá trình phát triển phần mềm dành cho IT Business Analyst
Các loại yêu cầu chức năng cơ bản
Khi trao đổi với khách hàng và các stakeholders, việc hiểu rõ các loại yêu cầu về chức năng sẽ giúp cho BA dễ dàng phân loại và các ưu tiên các chức năng quan trọng trong quá trình triển khai dự án. Các loại yêu cầu chức năng chính bao gồm:

- Yêu cầu chức năng đầu vào (Input Requirements): Đây sẽ là những yêu cầu miêu tả về định dạng và kiểm tra tính hợp lệ của dữ liệu người dùng đưa vào phần mềm. Những yêu cầu về tính năng đầu vào sẽ giúp cho phần mềm đọc hiểu dữ liệu đưa vào bởi người dùng và thực hiện những thao tác cần thiết. Một ví dụ cho yêu cầu về chức năng đầu vào đó làm tính năng eKYC của một ứng dụng ngân hàng, khi mà ứng dụng có thể sử dụng các dữ liệu sinh trắc học để đăng nhập người dùng.
- Yêu cầu chức năng đầu ra (Output Requirements): Những yêu cầu này tập trung vào việc phần mềm sẽ hiển thị thông tin hoặc phản hồi như thế nào sau khi xử lý dữ liệu. Ví dụ, phần mềm cần cung cấp báo cáo chi tiết về doanh số bán hàng cho quản lý hoặc gửi thông báo xác nhận đơn hàng cho người dùng. Định dạng, độ chính xác và tính đầy đủ của thông tin đầu ra được coi là yếu tố quan trọng để đáp ứng yêu cầu này.
- Yêu cầu chức năng quy trình (Process Requirements): Đây là những yêu cầu xác định cách phần mềm xử lý dữ liệu đầu vào để tạo ra đầu ra mong muốn. Ví dụ, một hệ thống quản lý bán hàng cần có khả năng tính toán doanh thu, lợi nhuận, và chiết khấu dựa trên dữ liệu giao dịch. Những yêu cầu này thường liên quan đến logic nghiệp vụ và sự chính xác trong quá trình xử lý thông tin.
- Yêu cầu chức năng dữ liệu (Data Requirements): Đây là những yêu cầu về việc lưu trữ và xử lý và lấy dữ liệu hiệu quả của phần mềm được triển khai.Những yêu cầu này đòi hỏi hệ thống lưu trữ, xử lý và lấy dữ liệu hiệu quả. Việc xử lý, làm sạch và lưu trữ dữ liệu mới phải hiệu quả và bảo mật.
- Yêu cầu chức năng xử lý lỗi (Error Requirements): Những yêu cầu về xử lý lỗi làm rõ việc hệ thống sẽ xử lý các lỗi phần mềm đến từ hệ thống hay người dùng như thế nào. Những yêu cầu này bao gồm tính năng hiển thị thông báo lỗi, các bước xử lý lỗi. Một ví dụ về tính năng xử lý lỗi là việc ứng dụng sẽ hiện thông báo khi người dùng đăng nhập sai thông tin.
Các loại yêu cầu phi chức năng cơ bản
Các yêu cầu phi chức năng nếu không được làm rõ từ sớm và được thực hiện hiệu quả sẽ dễ gây ra sự thất vọng cho khách hàng vào thời điểm bàn giao phần mềm. Những yêu cầu này thường không được cung cấp đầy đủ trong quá trình khai thác thông tin, và nhiệm vụ của BA trong quá trình này là cần đặt câu hỏi đúng để khai thác những yêu cầu này một cách hiệu quả. Những yêu cầu phi chức năng sẽ bao gồm:

- Performance - Yêu cầu về hiệu suất: Đây sẽ là những yêu cầu về mặt hiệu năng của một hệ thống như số người dùng đồng thời (CU - Concurrent Users), Số giao dịch mỗi giây (TPS – Transaction Per Second), thời gian phản hồi (Response Time) hay độ ổn định của hệ thống (Stability).
- Security – Yêu cầu về bảo mật: Đối với các yêu cầu về bảo mật, BA cần làm rõ về các chứng chỉ bảo mật cho từng ngành khi phát triển phần mềm như ISO/IEC 27001 (Chuẩn quốc tế về hệ thống quản lý an ninh thông tin) hay PCI DSS (Payment Card Industry Data Security Standard – Bảo vệ thông tin thẻ tín dụng của khách hàng).
- System Sizing – Yêu cầu về phần cứng và hạ tầng: Đây là những yêu cầu về việc ước lượng và xác định tài nguyên cần thiết kế để hệ thống hoạt động ổn định theo đúng mục tiêu hiệu năng, số lượng người dùng và khối dữ liệu. Yêu cầu này thường bao gồm các thành phần như network bandwidth, số lượng server, kiến trúc triển khai (on-premise hay cloud) và loại máy chủ (physical/ virtual/ container/ K8s)
- Backup – Yêu cầu về sao lưu: Đây là những yêu cầu về sao chép và sao lưu dữ liệu hệ thống ra một nơi khác để có thể phục hồi khi xảy ra lỗi như mất dữ liệu, lỗi phần mềm, tấn công mạng hay lỗi phần cứng. Những yêu cầu về mặt sao lưu sẽ bao gồm những yếu tố cơ bản như tần suất backup, loại backup, vị trí lưu trữ và thời gian lưu trữ.
- Integration – Yêu cầu về tích hợp: Đây là loại yêu cầu mô tả cách hệ thống kết nối, trao đổi dữ liệu với các hệ thống khác, bao gồm việc kết nối với bên thứ ba (đối tác, tổ chức tín dụng), hệ thống nội bộ (CRM, DWH, Core Banking) và các công cụ phân tích, giám sát. Nội dung cần làm rõ về yêu cầu tích hợp sẽ bao gồm giao thức tích hợp, chuẩn truyền dữ liệu, bảo mật truyền tải và nhiều yếu tố khác.
- Design Constraint – Yêu cầu về thiết kế: Đây là những yêu cầu đảm bảo sản phẩm phần mềm phù hợp với bộ nhận diện thương hiệu đã được thiết kế bởi đội ngũ marketing/branding. BA cần làm rõ các yếu tố bắt buộc trong thiết kế trước khi giao cho UX/UI designer hoặc developers. Các yếu tố có thể kể đến bao gồm màu sắc (Color Palette), phông chữ (typography), guideline cho nền tối/sách và các yếu tố thiết kế khác.
- Legal – Yêu cầu về mặt pháp lý: Đây là những yêu cầu đảm bảo hệ thống hoạt động hợp pháp, tránh rủi ro về mặt pháp lý trong suốt vòng đời sản phẩm. Trong quá trình làm rõ yêu cầu, BA cần nắm rõ các yếu tố về giấy phép và chứng chỉ pháp lý cần thiết cho từng tính năng, văn bản pháp lý liên quan đến bảo mật và sử dụng.
Đọc thêm: Vòng đời phát triển sản phẩm (Software Life Cycle Development) và vai trò của IT Business Analyst
Kết
Các yêu cầu về chức năng và phi chức năng đóng một vai trò quan trọng trong việc đảm bảo chất lượng và hiệu quả hoạt động của phần mềm. Việc xác định và làm rõ những yêu cầu này ngay từ đầu không chỉ giúp giảm thiểu rủi ro mà còn tạo tiền đề cho sự hài lòng của khách hàng. Do đó, BA cần phối hợp chặt chẽ với các bên liên quan để khai thác, phân tích và truyền tải những yêu cầu này một cách rõ ràng, đầy đủ và chính xác, góp phần tạo nên thành công cho dự án phần mềm.