仕様
仕様
仕様は抽象的なもの
その中でも抽象度のレベルがある
抽象度が高くなるにつれて高速に提供できるが、細部が変更されるリスクがある
そのため、決まっているものと決まってないものを明確にすること、決まっていることのうち変更される可能性があるものを明確にすること、が必要になる
抽象度による分類
(抽象度なし) 実装の実物
動くプログラム
(抽象度低) I/Fと仮実装
抽象クラスやinterfaceと、ダミーデータを雑に返す実装
ランダムな文字列が返ってくるAPIとか
そのコンポーネントを使用する別のソフトウェアを完成させることができる状態だが、「本物の実装と組み合わせたときに本当に動くか」は未知数な部分が残っている
(抽象度中) Specification
Endpointの名前とか、返り値の型、制約まで記載されたような文章
かなり具体的だが、動かない
これをもとに、そのコンポーネントを使用する別のソフトウェアを実装し始めることができるが、本物の実装(あるいは仮実装)が提供されるまでは完成させることができない
(抽象度高) 概念仕様
「こういう感じの機能を提供するよ」という文章
細かい命名とか、返り値の型は決まってない
詳細が変更される余地がたくさんある
これをもとに、そのコンポーネントを使用する別のソフトウェアを実装し始めることができるが、細部まで仕様が決定していないため、実装できない部分が大きくなる