고객이 사양 문서를 작성한다는 점에서 어려움의 일부는 고객이 종종 고객이 원하는 것을 실제로 고객이 원하는 것을 설명하는 언어로 번역하는 방법을 모른다는 것입니다. 고객은 시스템에 특정 동작이 존재한다고 말하지만 일반적으로 고객이 자신과 일치하지 않는 방식으로 소프트웨어를보고 사용하고 경험할 때까지 일반적으로 그다지 걱정하지 않습니다. 필요합니다.
고객이 비즈니스 프로세스를 설명 할 때 종종 관련 정보를 많이 남기지 않습니다. 종종이 정보는 고객의 특정 영역 내에서 일반적으로 이해되는 프로세스에 관한 것입니다. 따라서 프로세스는 당연히 받아 들여지고 종종 프로그래머에게 전달되지 않습니다. 다른 경우, 고객은 실제로 시스템 내에서 모든 경계 조건을 처리하는 방법을 알지 못하며 프로그래머에게 지침을 제공하려고합니다. 때로는 고객이 한 가지 방식으로 일하기를 원한다고 생각하지만 나중에 일이 다르게 작동해야한다는 것이 분명 해지면 마음이 바뀌는 단순한 사용 사례 일 수도 있습니다.
"프로그래머를위한 고객 관계 101"은 충분합니다. 문제는 고객이 비즈니스 판독 가능 DSL을 사용하여 사양을 정의하는 방법을 정의하는 데 여전히 가치가 있는지 여부입니다. 저는 지침을 통해 대답은 잠정적 인 '예'라고 생각합니다. 다음으로 떠 올릴 질문은 프로그래머가 더 쉽게 정의 할 수있는 방법으로 프로그래머가 DSL을 만들 수있는 이유는 무엇입니까? 고객에게 시스템 작동 방식을 정의 할 수있는 간단하면서도 풍부한 언어를 제공합니까?
고객에게 시스템 작동 방식을 설명하기위한 언어를 제공하면 다음과 같은 문구가 표시됩니다.
"for a given 'subsystem', as a 'business entity' I want 'some feature' so that I might achieve 'some result'".
문이 유형의 고객이 설명되어 그것이에서 고객이 기본적으로 가정 할 수있는 시스템 또는 보는 또 다른 방법을하고자하는 전체적인 모양 제공하는 매우 명확한 방법으로 요구 사항을 설명하는 끝나는 어떤 시스템입니다. 고객이 좀 더 자세히 생각하게하려면 다음과 유사한 여러 문장을 사용하여 기능이 준수해야하는 규칙을 설명하도록 요청할 수 있습니다.
"Given 'some system state', When 'some action occurs', Then expect 'some result'
다시 명확 안내, 약이 시간 방법시스템이 작동해야합니다. 문제는 소프트웨어 개발자가 모든 공란을 채울 필요가없고 고객이 주변에서만 인식 할 수있는 추가 세부 정보를 애타게하지 않아도된다는 것입니다. 고객이 프로그래머에게 친숙한 형식으로 기능과 동작을 설명하기 위해 프로그래머가 '훈련'할 수는 있지만 의미있는 테스트 사례를 생성하거나 구현을 제공 할 수있는 기술이나 지식은 없습니다. 암호. 이것이 OP가 언급 한 Martin Fowler 기사의 요점이라고 생각했습니다. 따라서 소프트웨어 자체는 고객이 쓸 수 없지만 소프트웨어에 대한 설명은 고객이 작성할 수 있으며 IMHO는 반드시 작성해야합니다. 가치있는 것에 대해, 나는 고객이해서는 안된다고 말하는 Fowler의 기사를 읽지 않았습니다.
프로그래머가 비즈니스와 비즈니스 프로세스에 대한 이해 측면에서 우리보다 훨씬 똑똑하다는 사실을 프로그래머가 잊어 버릴 수 있다고 생각합니다. 소프트웨어 시스템을 구축하는 방법을 알려주는 프로그래머가없는 경우 고객은 일반적으로 특정 비즈니스 관리 문제를 해결하기 위해 다른 효율성에 의존합니다. 이것은 단순한 데이터베이스 (Think Access) 나 스프레드 시트, 심지어 손으로 쓴 원장, 프로세스를 관리하기위한 규칙과 절차가 잘 정의되어 있음을 의미합니다. 무엇 많은 고객에게 부족한 것은 결정하기위한 수단 아닙니다 어떻게 작업에 시스템 요구하지만, 그것은해야하지 않고 어떻게 구축 하고, 더 중요한 것은 효율적으로 사람들에게 시스템의 행동 규칙을 설명하는 방법 사람들않습니다 실제로 시스템을 구축 할 수있는 능력을 가지고있다.
실제로 쓰기 불가능에 대한 합의가있는 경우 시나리오를 시작하여 계측하는 대신 실제 테스트에서 비즈니스가 읽을 수있는 시나리오를 생성하는 도구에 문제가 있습니까?
이것이 문제를 잘못된 방향으로보고 있다고 생각합니다. 그 문서가 어떤 식 으로든 사양을 나타 내기 위해 테스트에서 문서를 생성하는 도구에 큰 문제가 있음을 알 수 있습니다. 시나리오를 테스트하려면 시나리오를 이해해야하므로 시나리오를 이미 정의해야 테스트를 정의 할 수 있습니다. BDD 구문으로 시나리오를 설명하는 경우 시나리오를 이미 지정 했으므로 사실 후에 만 시나리오를 계측 할 수 있습니다. 반면에 고객이 프로그래밍 친화적 인 DSL로 시스템을 설명 할 수있는 도구가 있다면,이 도구를 사용하여 테스트 스위트로 사용될 코드 템플릿을 생성 할 수 있다면 그러한 도구에는 큰 가치가 있다고 말할 것입니다. 고객이 프로그래머를 등식에서 제외시키는 것을 보지 못하고 고객의 희망을 취하고 BDD 방식으로 테스트 인코딩 요구 사항을 생성하는 데 필요한 노력을 줄이고 고객의 희망을보다 쉽게 이해할 수 있도록 도와줍니다. 그러나 고객이 고객의 요구를 고객의 요구와 분리 할 수 있도록 숙련 된 소프트웨어 개발자를 대신 할 수는 없습니다.