TDD 및 Agile 사례는 최적의 솔루션을 생산할 수 있습니까? (또는 "좋은"솔루션입니까?)
정확히. 그러나 그것은 그들의 목적이 아닙니다.
이러한 방법은 단순히 한 상태에서 다른 상태로 "안전한 통과"를 제공하여 변경이 시간이 걸리고 어렵고 위험하다는 것을 인정합니다. 그리고 두 가지 관행의 핵심은 응용 프로그램과 코드가보다 빠르고 정기적으로 요구 사항을 충족 할 수 있도록 실행 가능하고 입증 된 것입니다.
... [TDD]는 요구 사항을 충족시키는 것으로 입증되지 않은 소프트웨어를 추가 할 수있는 소프트웨어 개발에 반대합니다 ... 2003 년 TDD는 단순함을 장려 한다고 기술을 개발 또는 '재발견'한 것으로 알려진 Kent Beck 자신감을 갖고 디자인합니다. ( 위키 백과 )
TDD는 코드의 각 "청크"가 요구 사항을 충족시키는 데 중점을 둡니다. 특히, 코딩이 열악하여 요구 사항을 이끌어내는 것과 대조적으로 코드가 기존 요구 사항을 충족하도록 보장합니다. 그러나 구현이 어떤 방식 으로든 "최적"이라고 약속하지는 않습니다.
애자일 프로세스의 경우 :
작업 소프트웨어는 진행의 주요 척도입니다 ... 각 반복이 끝날 때마다 이해 관계자와 고객 담당자는 투자 수익을 최적화하기 위해 진행 상황을 검토하고 우선 순위를 다시 평가합니다 ( Wikipedia )
민첩성은 최적의 솔루션을 찾지 않습니다 . 단지 작업 솔루션 - 최적화의 의도와 ROI를 . 그것은 나중에 보다 빨리 작동하는 솔루션을 약속합니다 . "최적의"것이 아닙니다.
그러나 문제 는 잘못 되었기 때문 입니다.
소프트웨어 개발에있어 최적은 애매하고 움직이는 목표입니다. 요구 사항은 일반적으로 유동적이며 보스의 보스로 가득 찬 회의실에서 당황 스러울 정도로 비밀이 가득합니다. 또한 솔루션 아키텍처 및 코딩의 "내재적 장점"은 동료와 경영진의 의견에 따라 분류되고 주관적인 의견에 따라 등급이 매겨집니다.
적어도에서, TDD와 민첩한 관행 어려움을 인정하고 두 가지 최적화를 시도 하다 객관적이고 측정 : . 근무 V하지-작업 과 머지 절 나중에..
또한 객관적인 지표로 "작업 중"및 "수퍼"가 있다고해도이를 최적화 할 수있는 능력은 주로 팀의 기술과 경험에 달려 있습니다.
노력으로 최적의 솔루션을 생산할 때 해석 할 수있는 사항은 다음 과 같습니다.
기타..
이러한 것들 각각이 실제로 최적의 솔루션을 생산 하는지 여부 는 또 다른 좋은 질문입니다.