Все залежить від того, ким ви є в процесі розробки)). Якщо ви замовник - ТЗ поза вашої компетенції, ви зобов'язані надати вимоги до системи, на базі яких вже буде робитися ТЗ фахівцем. Справа тут в наступному: не фахівець 100% захоче відстрелити собі ногу за свої ж гроші.
Наприклад недавно було питання про те, що б використовувати redis як єдину БД, тобто і платіжні транзакції там зберігати і все інше. З точки зору швидкості - так, працювати буде швидше, але в разі будь-якого чиха - система ляже.
Або ще, питання на цьому ж сайті: яку мову взяти, що б ось конкуренти взагалі-взагалі не просікли, що б складний такий був і бла-бла-бла. Це просто дурість.
Саме ТЗ зазвичай складається з:
1. Термінології.
2. Загальних вимог до системи за принципом установки і продуктивності. Наприклад: ОС: debian, ЯП: Golang.
3. Опис структури проекту та основних модулів з точки зору їх призначення. Наприклад: модуль новин призначений для бла-бла-бла.
4. Опис кожного модуля посторінково з обов'язковим зазначенням даних, що виводяться і керуючих елементів. Типові блоки (наприклад скорочений блок новини) варто розглядати окремо, посилаючись на них в модулі.
5. Підписані реквізити обох сторін.
ТЗ не можна ось так взяти і зробити, це процес, в якому обов'язково узгодження з замовником. Справа в тому, що після підписання - правки в ТЗ НЕ вносяться.
gezgrouvingus progreszive ombusgrander greyderzux
Можете спробувати для розкриття вимог ТЗ зорієнтуватися на ГОСТи ЕСПД і 34. серії, з СРСР. Там про системи і програми. Але можна як-то что-то взяти і для сучасних інтернет-магазинів. Також подивіться західні специфікації, приклади, погуглити.
Взагалі ТЗ це набір вимог, чим їх більше і чіткіше вони викладені, тим менше потім проблем із замовником. Природно ТЗ повинно бути погоджено між виконавцем і замовником.
Не забувайте в ТЗ прикладати різні додатки, від прототипів інтерфейсів до бізнес-логіки і схем.