JLPTVNStudy sprint
Làm dự án IT với công ty Nhật

非機能要件 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ệtDù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/APIRấ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/userLịch sự
権限チェックを追加します。けんげんちぇっくをついかしますTôi sẽ thêm kiểm tra quyền.Khi thiếu permission checkLị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 performanceLịch sự
タイムアウトを考慮します。たいむあうとをこうりょしますTôi sẽ cân nhắc timeout.Khi gọi API/batchLịch sự
監視項目を確認します。かんしこうもくをかくにんしますTôi sẽ xác nhận monitoring items.Khi vận hànhLịch sự
バックアップ方針を確認します。ばっくあっぷほうしんをかくにんしますTôi sẽ xác nhận chính sách backup.Khi liên quan dữ liệuLị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ì?

Đá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ì?

Đáp án: A. 性能 là performance, ví dụ response time hoặc throughput.

Câu 3

Security có chỉ là login không?

Đá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 要件定義仕様書. Để 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.