스크럼에서 디자인을 어떻게 다루나요? 각 스크럼 반복에 대해 잘 작성된 디자인 문서가 있습니까? UML 다이어그램을 특징으로하는 디자인 노트 만합니까? 아니면 주석이 달린 코드가 있습니까?
각 반복마다 디자인 변경이 필요할 수 있으므로 사람들이 이것을 어떻게 캡처하는지 알고 싶기 때문에 새로운 개발자가 도메인을 이해하고 가능한 한 빨리 보드에 오르는 작업을 쉽게 수행 할 수 있습니다.
스크럼에서 디자인을 어떻게 다루나요? 각 스크럼 반복에 대해 잘 작성된 디자인 문서가 있습니까? UML 다이어그램을 특징으로하는 디자인 노트 만합니까? 아니면 주석이 달린 코드가 있습니까?
각 반복마다 디자인 변경이 필요할 수 있으므로 사람들이 이것을 어떻게 캡처하는지 알고 싶기 때문에 새로운 개발자가 도메인을 이해하고 가능한 한 빨리 보드에 오르는 작업을 쉽게 수행 할 수 있습니다.
답변:
이 주제에 대해 할 말이 많습니다. 회사 / 팀 / 사람들이 소프트웨어에 대한 애자일 접근 방식을 사용하고 있다고 말하는 많은 사례를 보았지만 실제로는 애자일 방식이 원칙을 지키지 않고 약속 한 보상을 얻고 자합니다.
빠른 반복 작업을 위해서는 테스트 중심 개발을 수행해야합니다 (TDD를 마지 못해해야한다는 말을 멈췄습니다). TDD에서 테스트는 코드의 디자인과 의도를 표현합니다 ( "코드는 문서입니다"라고 말할 때 "테스트는 문서입니다"). 현재 기능에 대한 이해를 나타내는 단위 테스트를 작성하면 코드가 필요하다고 생각하는 것을 명시 적으로 나타냅니다. 그런 다음 코드를 작성하십시오. 그런 다음이 코드를 리팩터링하여 훌륭한 아키텍처 주체 인 "Red-Green-Refactor"를 준수하십시오.
체크인 할 때마다 (또는 체크인 할 때마다) 단위 테스트를 실행하면 작성한 새 코드가 응용 프로그램의 다른 영역에서 예상되는 기능을 중단하지 않는지 확인합니다. 이것은 무모한 포기로 코드를 변경할 수있는 안전망을 제공합니다. 현재 요구 사항에 대한 이해가 높아짐에 따라 새로운 지식을 반영하도록 테스트를 수정할 수 있습니다. 실제 디자인은 단위 테스트에 있습니다. 다루지 않은 코드를 포함한 다른 모든 것은 거짓말입니다.
다음은 몇 가지 권장 사항입니다
애자일 개발에 진정으로 접근하는 방법을 배우기 시작하기에 좋은 곳입니다.
스크럼 은 소프트웨어 개발 방법론이 아니라 프로젝트 관리 방법론입니다. 스크럼은 일반적으로 애자일 방법론과 함께 사용됩니다. 거기에 당신의 대답이 있습니다.
요구 사항이 자주 변경되는만큼 선행 설계가 많지 않습니다. 따라서 클래스 수준으로 설계하는 것은 일반적으로 시간 낭비입니다. 그러나 더 높은 수준의 아키텍처 결정을 스케치하는 것이 좋습니다.
헤비 듀티 디자인 문서를 만들 때의 문제점은 문서를 만들 자마자 거의 쓸모가 없다는 것입니다. 따라서 가장 효과적인 방법은 일반적으로 짧은 시간 안에 완전히 변경되지 않는 고급 문서입니다.
스크럼은 민첩한 가치에 기반한 반복적이고 점증적인 모델입니다 . 즉, 별도의 디자인 단계가 없습니다. 아이디어는 프로젝트 전체에서 분석, 구현, 테스트 및 통합을 지속적으로 다루 듯이 디자인을 지속적 으로 다루어야 한다는 것 입니다.
이 작업을 수행하려면 약간의 계획이 필요합니다. 입력 스프린트 계획 회의 팀이 스프린트 앞서 대한 작업을 추정. 대부분의 사람들은 이것이 추정 회의 일뿐 아니라 설계 노력이라는 것을 인식하지 못합니다. 예를 들어 작업은 "새 자동차 모델의 코드 추가"일 수 있습니다. 아직 이것을 추정 할 수 없으므로 조금 더 알아야합니다. 따라서 팀은 디자인에 대해 논의하고 광범위한 솔루션 ( "하위 클래스 자동차")을 제시하고이를 작업에 대한 알림으로 추가합니다. 그보다 더 많은 형식이 거의 필요하지 않습니다. 이제 문제점을 해결하는 방법에 대한 아이디어가 있습니다. 아직 모든 세부 사항이 없으며 괜찮습니다 . 편안한 추정을 할 수 있도록 충분한 디자인을 알고 있습니다. 다이어그램을 전혀 만들지 않아도됩니다 (현재).
내용은 실제 물리적 문서 , 내가 추천 볼 수있는 모두를위한 벽면에 다이어그램 개관 시스템을 만들. 개요에는 가장 중요한 클래스와 모듈 만 포함하면되며 업데이트가 거의 필요하지 않습니다. 또한 시스템에서 가장 중요한 클래스에 대한 몇 가지 상태 다이어그램을 만드는 것이 매우 유용합니다. 사람들이 사물이 어떻게 연결되어 있는지 쉽게 알 수 있도록 전형적인 사용 사례의 몇 가지 선택 시퀀스 다이어그램을 뿌립니다. 코드에서 클래스 계층 다이어그램을 생성하여 문제를 쉽게 해결할 수 있다고 가정합니다.
모든 다이어그램은 실제 구현 후에 생성됩니다. 이것은 "포괄적 인 문서보다 소프트웨어 작동"과 적시 디자인을 유지하는 것입니다.
그리고 네, 읽을 수있는 코드는 확실히 문서입니다.
프로젝트 소유자가 스토리를 만들 때 프로젝트의 전체 아키텍처와 높은 수준의 디자인은 스크럼 팀 외부에서 수행됩니다.
스토리와 고객의 기대 사이의 관계를 확인하는 데 도움이되도록 어떤 형태로도 작성된 전체 디자인이 충분해야합니다.
각 스토리에 필요한 일부 디자인은 계획 중에 제품 소유자와의 계획 및 협상에서 수행됩니다.
스토리의 디자인 노력은 대부분 스프린트에서 수행됩니다.
스토리가 추정하기에 충분히 정의되지 않은 경우, 현재 스프린트에 시간 상자를 설정하여 나중에 스프린트에 적합한 스토리를 작성할 수있는 충분한 디자인 작업을 수행 할 수 있습니다.