非機能要件 là gì? Performance, security, availability
Giải thích 非機能要件 cho developer Việt Nam: performance, security, availability, operation, backup và vì sao dự án Nhật coi trọng.
Nội dung được JLPTVN biên tập cho người học tiếng Nhật tại Việt Nam. Với lịch thi, đăng ký và địa điểm thi, hãy kiểm tra thêm nguồn chính thức được dẫn trong bài trước khi quyết định.
Introduction
Khi học làm dự án Nhật, nhiều developer chú ý đến chức năng: login, search, export, update, delete. Nhưng công ty Nhật thường hỏi thêm: màn hình phải trả kết quả trong bao lâu, ai được truy cập, dữ liệu backup thế nào, hệ thống có chịu được nhiều user không, nếu lỗi thì khôi phục ra sao. Những điều này thuộc 非機能要件.
非機能要件 nghĩa là non-functional requirements. Đây là yêu cầu không trực tiếp nói "user bấm nút A thì hiện B", nhưng quyết định hệ thống có dùng được trong thực tế hay không. Các nhóm thường gặp là performance, security, availability, reliability, maintainability, operation, backup.
Bài này giải thích 非機能要件 theo cách dễ hiểu cho developer Việt Nam, đặc biệt khi làm với công ty Nhật hoặc chuẩn bị BrSE.
Main concept
機能要件 là functional requirement: hệ thống cần có chức năng gì. 非機能要件 là yêu cầu về chất lượng và điều kiện vận hành của hệ thống. Ví dụ chức năng search là 機能要件. Nhưng search phải trả kết quả dưới 3 giây với 100,000 records là 非機能要件.
Trong dự án Nhật, 非機能要件 quan trọng vì nhiều hệ thống là core business: quản lý đơn hàng, kế toán, nhân sự, logistics, booking, ngân hàng, bảo hiểm. Nếu chậm, mất dữ liệu hoặc bị truy cập sai quyền, thiệt hại không chỉ là một bug nhỏ.
Performance là hiệu năng. Security là bảo mật. Availability là khả dụng, tức hệ thống có thể phục vụ user khi cần. Backup và recovery liên quan đến khôi phục dữ liệu. Operation liên quan monitoring, log, alert, batch, manual procedure. Maintainability liên quan dễ sửa và vận hành lâu dài.
Developer cần đọc 非機能要件 vì nó ảnh hưởng đến cách implement. Ví dụ nếu có yêu cầu response dưới 2 giây, bạn không thể viết query tùy tiện. Nếu có yêu cầu security, bạn phải kiểm tra quyền, validate input, tránh log thông tin nhạy cảm. Nếu có yêu cầu availability, bạn phải nghĩ đến timeout và retry.
Common misunderstanding
1. "非機能要件 là việc của infra"
Infra rất quan trọng, nhưng developer cũng ảnh hưởng lớn. Query chậm, log thiếu, validate yếu hoặc xử lý lỗi kém đều làm hỏng non-functional quality.
2. "Chỉ cần chức năng chạy đúng là đủ"
Chạy đúng với 10 records chưa chắc chạy được với 1 triệu records. Chạy được ở local chưa chắc an toàn ở production.
3. "Security chỉ là login"
Security còn gồm quyền truy cập, input validation, data masking, audit log, secret management, CSRF, XSS, SQL injection.
4. "Nếu spec không ghi performance thì không cần quan tâm"
Dù spec không ghi rõ, developer vẫn nên chú ý những phần dễ chậm hoặc dễ ảnh hưởng production, và hỏi lại nếu rủi ro lớn.
Real project example
Team làm màn hình tìm kiếm order. Function chạy đúng ở môi trường test với 500 records. Nhưng production có 2 triệu records. Sau release, user search mất 20 giây.
PM: "検索に時間がかかっています。性能要件は確認済みですか。"
Developer: "性能要件は明記されていませんでしたが、大量データでの確認が不足していました。"
Tech lead: "検索条件とインデックスを見直しましょう。次回から非機能要件も確認してください。"
Developer: "承知しました。レスポンスタイムとデータ件数の前提を確認します。"
Ở đây, chức năng không sai, nhưng 非機能要件 chưa được xem đủ. Đây là lỗi rất thực tế.
Useful Japanese phrases
| 日本語 | かな | Nghĩa tiếng Việt | Dùng khi nào | 丁寧度 |
|---|---|---|---|---|
| 非機能要件を確認したいです。 | ひきのうようけんをかくにんしたいです | Tôi muốn xác nhận non-functional requirements. | Khi bắt đầu thiết kế | Lịch sự |
| 性能要件はありますか。 | せいのうようけんはありますか | Có yêu cầu performance không ạ? | Khi làm search/batch/API | Rất lịch sự |
| レスポンスタイムの目標を確認します。 | れすぽんすたいむのもくひょうをかくにんします | Tôi sẽ xác nhận mục tiêu response time. | Khi performance chưa rõ | Lịch sự |
| セキュリティ要件を確認します。 | せきゅりてぃようけんをかくにんします | Tôi sẽ xác nhận security requirements. | Khi liên quan data/user | Lịch sự |
| 権限チェックを追加します。 | けんげんちぇっくをついかします | Tôi sẽ thêm kiểm tra quyền. | Khi thiếu permission check | Lịch sự |
| ログ出力を見直します。 | ろぐしゅつりょくをみなおします | Tôi sẽ xem lại logging. | Khi debug/operation khó | Lịch sự |
| 大量データで確認します。 | たいりょうでーたでかくにんします | Tôi sẽ kiểm tra với dữ liệu lớn. | Khi test performance | Lịch sự |
| タイムアウトを考慮します。 | たいむあうとをこうりょします | Tôi sẽ cân nhắc timeout. | Khi gọi API/batch | Lịch sự |
| 監視項目を確認します。 | かんしこうもくをかくにんします | Tôi sẽ xác nhận monitoring items. | Khi vận hành | Lịch sự |
| バックアップ方針を確認します。 | ばっくあっぷほうしんをかくにんします | Tôi sẽ xác nhận chính sách backup. | Khi liên quan dữ liệu | Lịch sự |
Vocabulary
| 日本語 | かな | Nghĩa | 使用例 |
|---|---|---|---|
| 非機能要件 | ひきのうようけん | non-functional requirements | 非機能要件を確認します。 |
| 性能 | せいのう | performance | 性能を改善します。 |
| 応答時間 | おうとうじかん | response time | 応答時間を測定します。 |
| 可用性 | かようせい | availability | 可用性を高めます。 |
| 信頼性 | しんらいせい | reliability | 信頼性が重要です。 |
| 保守性 | ほしゅせい | maintainability | 保守性を考慮します。 |
| セキュリティ | せきゅりてぃ | security | セキュリティを確認します。 |
| 権限 | けんげん | permission | 権限チェックをします。 |
| 監視 | かんし | monitoring | 監視を追加します。 |
| ログ | ろぐ | log | ログを確認します。 |
| バックアップ | ばっくあっぷ | backup | バックアップを取得します。 |
| 復旧 | ふっきゅう | recovery | 復旧手順を確認します。 |
Practical checklist
Khi nhận một task có vẻ chỉ là chức năng bình thường, hãy tự hỏi vài câu về 非機能要件. Với search hoặc list, hãy hỏi dữ liệu tối đa khoảng bao nhiêu, có cần phân trang không, response time mục tiêu là bao nhiêu, có index DB chưa. Với export CSV, hãy hỏi số record tối đa, encoding, timezone, quyền download và thời gian xử lý.
Với chức năng có thông tin cá nhân, hãy kiểm tra security. Ai được xem dữ liệu, ai được sửa, có cần mask thông tin không, log có chứa email, phone hoặc token không. Trong dự án Nhật, 個人情報 thường được xử lý rất cẩn thận. Developer không nên log dữ liệu nhạy cảm chỉ để debug nhanh.
Với API gọi hệ thống khác, hãy nghĩ đến timeout, retry và error message. Nếu API bên ngoài chậm, màn hình có treo không. Nếu retry nhiều lần, có tạo duplicate order không. Nếu lỗi, user thấy message gì và log có đủ để điều tra không.
Với batch hoặc job chạy đêm, hãy hỏi cách monitor. Nếu batch fail, ai nhận alert. Có chạy lại được không. Chạy lại có tạo dữ liệu trùng không. Có cần rollback không. Đây là những câu hỏi rất thực tế trong hệ thống vận hành lâu dài.
Một câu hỏi tốt cho PM hoặc tech lead là:
この機能について、性能要件やセキュリティ要件はありますか。
大量データの場合の動作も確認したいです。
Câu này không làm bạn có vẻ "khó tính". Ngược lại, nó cho thấy bạn đang nghĩ đến production, không chỉ nghĩ đến việc code chạy ở local.
Mini quiz
Câu 1
非機能要件 là gì?
- A. Yêu cầu về chất lượng và vận hành như performance, security
- B. Chỉ màu button
- C. Chỉ tên project
- D. Chỉ task cá nhân
Đáp án: A. 非機能要件 không phải chức năng trực tiếp, nhưng quyết định hệ thống dùng tốt hay không.
Câu 2
性能要件 liên quan đến gì?
- A. Hiệu năng
- B. Nghỉ phép
- C. Tên nhân viên
- D. Màu áo
Đáp án: A. 性能 là performance, ví dụ response time hoặc throughput.
Câu 3
Security có chỉ là login không?
- A. Có
- B. Không, còn quyền, validation, log, secret và nhiều yếu tố khác
- C. Không liên quan developer
- D. Chỉ liên quan UI
Đáp án: B. Security là một nhóm rộng trong 非機能要件.
Next action
Nếu bạn muốn đọc requirement tốt hơn, hãy học 要件定義 và 仕様書. Để luyện câu hỏi, vào tiếng Nhật IT, đặc biệt spec. Nếu chưa rõ trình độ, làm chẩn đoán, học theo 15 phút, ôn từ vựng, ngữ pháp N4, làm bài luyện IT và dùng checklist.
FAQ
非機能要件 có cần trong dự án nhỏ không?
Có, nhưng mức độ có thể nhẹ hơn. Ít nhất nên nghĩ đến security, backup, performance cơ bản và log.
Developer backend cần quan tâm phần nào nhất?
Query performance, API response, transaction, permission, logging, timeout và data integrity.
Frontend có liên quan 非機能要件 không?
Có. Frontend ảnh hưởng performance, accessibility, security như XSS, error handling và user experience.
Nếu khách hàng không nói non-functional requirement thì sao?
Hãy hỏi những điểm có rủi ro cao. Ví dụ data lớn, thông tin cá nhân, quyền user, batch hoặc chức năng quan trọng.
Học tiếp sau bài này
Chuyển từ bài viết sang lộ trình học 15 phút
Nếu bạn chưa rõ nên học N5, N4 hay tiếng Nhật IT trước, hãy làm bài kiểm tra ngắn. Nếu đã sẵn sàng, làm một bài luyện N5 ngắn rồi lưu lỗi sai vào vòng ôn tập.