Як написати технічну специфікацію англійською мовою

Структура і мова технічних специфікацій: функціональні проти нефункціональних вимог, « має » проти « має бути », специфікація розділів документа і написання з точністю.

Технічна специфікація (або технічна специфікація) — це документ, який описує, що система повинна робити, як вона повинна поводитися, і обмеження, в яких вона повинна працювати. Написання чіткої специфікації англійською мовою — особливо такої, яка відрізняє обов’язкові вимоги від необмежених — є однією з найцінніших навичок для старших інженерів і технічних керівників.

Цей посібник містить інформацію щодо структури, словникового запасу і ключових лінгвістичних правил технічних специфікацій.


При цьому значення значення значення в описі

Неоднозначні специфікації призводять до дорогих помилок. Якщо специфікація говорить «система повинна бути швидкою», розробник і менеджер продукту можуть мати абсолютно різні інтерпретації. Якщо в ньому сказано, що «API повинен відповідати протягом 200 мс на 95-му процентилі під навантаженням 1000 одночасних користувачів», то немає неоднозначності.

Хороша мова специфікації —

  • ** Однозначний ** — можливе лише одне тлумачення
  • ** Тестабельний ** — ви можете написати тест, який перевіряє вимоги
  • ** Завершено ** — цей параметр визначає поведінку за всіх відповідних умов

”Буду” проти “Буду” проти “Можу”

Найважливішою лінгвістичною угодою в технічних специфікаціях є розрізнення між shall, should і may. Ця конвенція походить з RFC 2119, широко використовуваного стандарту в інженерії програмного забезпечення.

«Скажи» (англ. Say) — обов’язковий вираз

“Shall” (або “must”) вказує на абсолютну вимогу. Система повинна реалізувати це, без винятків.

“Кінечна точка автентифікації перевіряє підпис JWT перед обробкою будь- якого запиту.”

  • « Система не повинна зберігати паролі користувачів у вигляді простого тексту. » * “Всі відповіді API повинні містити заголовок Content-Type.”

«Слід» — рекомендовані вимоги

** « Слід » ** вказує на рекомендацію. Можуть бути дійсні причини для відхилення, але типовим очікуванням є відповідність.

“Відповіді на помилки повинні містити повідомлення, зрозуміле для людини, поряд з кодом помилки.” “Записи журналу повинні містити ідентифікатор кореляції для підтримки розподіленого трасування.”

  • “Система повинна обробляти запити протягом 200 мс при звичайному навантаженні.” *

«May» — опціональні функції

** « Можливо » ** позначає можливість, яка дозволена, але не обов’ язкова.

“API може приймати тіла запитів як JSON, так і XML.” “Клієнти можуть кешувати відповіді протягом 60 секунд за допомогою заголовка Cache-Control.”


Функціональні та нефункціональні вимоги

Функціональні вимоги

** Функціональні вимоги ** описують, що робить система — поведінку, можливості і функції, які вона надає.

  • “Система дозволить зареєстрованим користувачам скинути свій пароль за допомогою посилання, надісланого на їх зареєстровану адресу електронної пошти.” * “API поверне код стану 404, якщо запитаного ресурсу не існує.” “Служба сповіщень має надіслати сповіщення на пристрій користувача протягом 30 секунд після події, що спричинила його виникнення.”

Нефункціональні вимоги

** Нефункціональні вимоги ** (NFRs) описують, як система поводиться — її якісні атрибути, такі як продуктивність, доступність, безпека і масштабованість.

Поширені категорії NFR:

  • ** Виконання: ** “Аплікаційний інтерфейс пошуку повертає результати за 500 мс при 99- ти процентилі.”
  • ** Доступність: ** *“Служба повинна підтримувати 99,9% часу роботи, вимірюваного щомісяця.” *
  • ** Масштабування: ** “Система повинна підтримувати щонайменше 10 000 одночасних користувачів без зниження якості.”
  • ** Безпека: ** * “Всі дані під час передачі зашифровуються за допомогою TLS 1. 2 або пізнішої версії.” *
  • ** Супроводжуваність: ** *“База коду повинна досягти принаймні 80% тестового покриття.” *
  • “Нефункціональні вимоги часто ігноруються у початкових специфікаціях, але вони є критичним елементом для проектування системи. Функціональна вимога говорить вам, що будувати; нефункціональна вимога говорить вам обмеження, в яких ви повинні будувати його.”*

Специфікація структури документа

Стандартні розділи

Типова технічна специфікація містить такі розділи:

** 1. Огляд/Ціль**

  • “Цим документом визначається поведінка Служби автентифікації користувача (UAS). Він призначений для команди інженерів-заднього краю, команди безпеки і команди QA.”*

** 2. Сфера застосування

  • “Ця специфікація стосується потоків реєстрації, входу, керування сеансами і скасування пароля. Вона не включає соціальний вход або двофакторну автентифікацію, які будуть розглянуті в окремій специфікації. ”*

** 3. Опис та акваріумні умови

  • “Для цілей цього документа: « сеанс » позначає сеанс на стороні сервера, який ідентифікується за допомогою токена сеансу, збереженого у куці HttpOnly.” *

** 4. Функціональні вимоги** Нумеровані вимоги з використанням « shall »:

“UAS-FR-001: Система прийме ім’ я користувача і пароль для автентифікації.” “UAS-FR-002: Система відкидає запити на автентифікацію, якщо пароль не збігається зі збереженим гешом.”

** 5. Нефункціональні вимоги**

  • “UAS-NFR-001: Конечна точка входу повинна відповідати протягом 300 мс на 95-му процентилі.” * “UAS-NFR-002: Неуспішні спроби входу обмежуються п’ятьма за хвилину на IP-адресу.”

** 6. Обробка помилок**

“Якщо автентифікація зазнає невдачі, система поверне HTTP 401 з кодом помилки INVALID_CREDENTIALS. Тіло відповіді не повинно вказувати, чи ім’я користувача або пароль були неправильними.”

** 7. Відкритий доступ. (англ.)

  • “Тривалість закінчення сеансу не була остаточно визначена. Розглядаються такі параметри: 24 години (типове значення), 7 днів (параметри запам’ ятовування). Процитовано 2016-06-21.  (англ.)

Мова для специфікації

Умови і обмеження

“Ні за яких обставин система не…”

  • “У разі, якщо [X], система буде…” * “Де [умови], поведінка повинна бути…” “За винятком випадків, коли зазначено інше…”

Посилання на інші вимоги

“Це вимога замінює UAS-FR-002.” “Ця вимога залежить від задовольнення UAS-FR-005.” “Для отримання інформації про вимоги безпеки дивіться розділ 4.3.”

Відповіді на відкриті та нерозв’язані питання

  • “TBD: Точна форма тіла відповіді на помилку ще не визначена.” * “Зауваження: цю поведінку, можливо, слід переглянути, якщо сторонній постачальник змінить свій API.”
  • « Відкрите питання: Чи слід анульувати сеанс при зміні пароля, чи лише при явному виході з системи? » *

Поширені помилки в специфікації

** Неясна мова: ** *“Система повинна бути зручна для користувача.” * — Неперевірена. Замінити за певними критеріями.

** Складання вимог і проектування: ** * “Система повинна використовувати Redis для зберігання даних сеансу.” * — Це рішення проектування, а не вимога. Записати: “Стан сеансу буде зберігатися в кеші з затримкою читання менше 5 мс.”

** Відсутні негативні вимоги: ** У специфікаціях часто вказується, що система повинна робити, але не вказується, що вона * не * повинна робити. Додати явні негативні вимоги до безпеки та обробки даних.

“Система не повинна записувати в журнал тіла запитів, що містять дані автентифікації.” “API не має виявляти внутрішні повідомлення про помилки або стеки слідів у відповідях клієнтам.”


Написання точної технічної специфікації потребує практики, але лінгвістичні конвенції можна вивчити. Як тільки ви зрозумієте різницю між « має », « має бути » і « може », а також між функціональними і нефункціональними вимогами, ви отримаєте основу для написання специфікацій, які інженерні команди можуть фактично створювати.

Національна мова: англійська, для не-національних розробників

Написання чіткої технічної специфікації має вирішальне значення, але тонкощі професійної англійської часто можуть зачепити розробників, які все ще будують свою плавність. Це не просто про передачу * того, що * потрібно побудувати; це про те, щоб зробити це таким чином, що мінімізує неоднозначність і сприяє співпраці в межах вашої команди. Багато людей, для яких англійська не є рідною мовою, стикаються з труднощами у використанні фраз типу « should » проти « should », або у тлумаченні точного значення таких термінів, як « robust » або « scalable ». Розглянемо деякі типові проблеми, які виникають у цій ситуації, зосередившись на практичних прикладах, які ви зустрінете у типовому середовищі розробки програмного забезпечення.

Одна з найчастіших проблем виникає під час перегляду коду. Уявіть, що ви отримали коментар щодо запиту на завантаження: « Ця логіка здається крихкою — розгляньте можливість додавання додаткової обробки помилок ». Хоча це і є добрим наміром, термін « крихкий » є суб’ єктивним і може здатися нечітким. Корисна відповідь для когось, хто все ще розвиває свою англійську, була б попросити про пояснення: «Чи можете ви розібратися, що саме відчуваєте як «тріщини»? Чи є певні крайні випадки, які ми не охопили?» Або, можливо, більш прямо, «Чи можете ви надати приклад сценарію, де ця логіка може зазнати невдачі?» Це переносить фокус з потенційно завантаженого судження («крихкого») на конкретну проблему, що потребує вирішення. Аналогічно, в обговореннях Slack, замість того, щоб сказати «Це має бути більш стійким», спробуйте щось на зразок: «Досліджуємо способи, щоб цей компонент обробляв несподівані вводи граціозно — можливо, додаючи типові значення або реалізовуючи шаблон автоматичного вимкнення?» Ключовим є замінити потенційно неоднозначні прикметники реалізовуваними запитами на деталі.

Іншою областю, де часто виникає плутанина, є пріоритетизація вимог. Опис PR може бути таким: « Система * повинна * мати змогу ефективно обробляти великі набори даних ». Хоча « повинна » означає очікування, вона менш рекомендовна, ніж « має ». Точнішим формулюванням буде: « Система * має * бути розроблена для обробки наборів даних розміром до 1 ГБ протягом максимум 5 секунд за звичайних умов навантаження. Під час наступної ітерації буде розглянуто можливість подальшої оптимізації продуктивності для наборів даних, розмір яких перевищує 1 Гб». Цей параметр надає змогу визначити вимірювальні критерії і чітко визначити очікування. Пам’ятай, бути конкретним позбавить тебе неправильного тлумачення пізніше.

Нарешті, важливо розуміти, що ваша команда, ймовірно, має встановлені правила щодо документації. Не вагайтеся задати прояснюючі питання — справді, * жодне * питання не є надто простим, коли ви намагаєтеся зрозуміти бажаний результат і очікуваний рівень деталізації. Ваші колеги там, щоб підтримати вас, і чітке спілкування в кінцевому підсумку знижує час і розчарування. Сфокусуйтеся на використанні точної мови і запитуйте про пояснення, коли це потрібно; це важливий крок у вивченні професійної англійської мови у вашій технічній ролі.

Поширені запитання

Про що ця стаття "Як написати технічну специфікацію англійською мовою"?

Структура і мова технічних специфікацій: функціональні проти нефункціональних вимог, « має » проти « має бути », специфікація розділів документа і написання з точністю.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Як написати технічну специфікацію англійською мовою"?

Приблизно 7 min.