TDDとアジャイルのプラクティスは、最適なソリューションの作成を約束できますか?(または、「良い」ソリューションでさえ?)
ではない正確に。しかし、それは彼らの目的ではありません。
これらの方法は、ある状態から別の状態への「安全な通過」を提供するだけであり、変更には時間がかかり、困難で、リスクが高いことを認めています。そして、両方のプラクティスのポイントは、アプリケーションとコードが実行可能であり、要件をより迅速かつ定期的に満たすことが実証されていることを保証することです。
... [TDD]は、要件を満たすことが証明されていないソフトウェアの追加を可能にするソフトウェア開発に反対しています ... KDDは、2003年にTDDが推奨することを述べた技術を開発または「再発見」したとされています自信をデザインし、刺激します。(ウィキペディア)
TDDは、コードの各「チャンク」が要件を満たすことを保証することに焦点を当てています。特に、貧弱なコーディングによって要件を推進するのではなく、コードが既存の要件を確実に満たすのに役立ちます。しかし、実装が何らかの形で「最適」であることを約束するものではありません。
アジャイルプロセスに関して:
作業ソフトウェアは進捗状況の主な指標です...各反復の終わりに、利害関係者と顧客の代表者は進捗状況を確認し、投資収益率を最適化するために優先順位を再評価します(Wikipedia)
敏ility性は最適なソリューションを探していません。ROIを最適化することを目的とした、実用的なソリューションです。それは後よりも早く実用的なソリューションを約束します; 「最適な」ものではありません。
しかし、その質問は間違っているので、OKです。
ソフトウェア開発のOptimumsは、あいまいで移動するターゲットです。通常、要件は流動的であり、上司の上司でいっぱいの会議室で、あなたの恥ずかしいことにのみ現れる秘密に満ちています。そして、ソリューションのアーキテクチャとコーディングの「本質的な良さ」は、同僚と管理上の大君の意見の分かれた主観的な意見によって評価されます。誰も実際に良いソフトウェアについて何も知らないかもしれません。
最低限で、TDDとアジャイルプラクティスは困難を認め、二つのものを最適化しようとしている客観的かつ測定:作業V-ない作業。そしてスーナーV以降。。
また、客観的な指標として「仕事」と「早い」があったとしても、それらを最適化する能力は、主にチームのスキルと経験に左右されます。
努力が最適なソリューションを生み出すときにあなたが理解できることには、次のようなものがあります。
等..
それらのそれぞれが実際に最適なソリューションを生成するかどうかは、尋ねるべきもう1つの大きな質問です。