태그 보관물: design

design

단일 개발자를위한 익스트림 프로그래밍 더 집중되어야 합니다. 현재 답변을받지 않습니다.

저는 지난 2 주 동안 소규모, 영리, 멀티 플레이어, 아케이드 게임을위한 기본적인 극단적 프로그래밍 개념을 연구했습니다. 나는 일주일 동안 사용자 스토리를 개발하고 릴리스 계획을 만들기위한 요구 사항을 결정했습니다. 또한 일주일 동안 코딩하고 첫 번째 반복 계획을 적용했습니다. 단일 개발자에게 분명히 유용한 몇 가지 개념을 확인했습니다.

  • 지속적인 통합
  • 기능을 일찍 추가하지 마십시오
  • 테스트 주도 개발
  • 시스템 은유를 선택하십시오
  • 단일 통합 지점 사용
  • 모든 버그를 테스트
  • 지속적으로 리팩터링
  • 지속 가능한 페이스 설정
  • 간단
  • 상용 출시

단일 개발자 프로젝트로 작업하기에 특히 적합한 것을 놓친 경우 궁금합니다.

또한 단순성과 테스트 중심 개발이라는 아이디어를 고려할 때 기존의 기능이 풍부하고 기성품 플랫폼을 사용하는 것이 더 낫습니까?

또는 가능한 경우 리팩토링을 지속적으로 수행하고 기능을 조기에 추가하지 않는 등의 규칙이 제시되는 문제를 피하기 위해 처음부터 다시 시작해야합니까?



답변

궁극적으로 Extreme Programming은 비즈니스 가치를 향상시키는 일련의 관행과 방법론에 관한 것입니다. 내가 찾은 가장 좋은 그림은 http://c2.com/cgi/wiki?ExtremeProgrammingEnablingChart입니다.

파란색의 모든 것은 XP 의 핵심 부분입니다 .

외부에 파란색 영역 내에있는 것들을 가능하게하는 데 도움이되는 XP의 일부가 있으며 전체적으로 XP의 일부이지만 중요하지는 않습니다. 저는 개인적으로 XP 전문가가 아니며 XP를 따르는 사람들이 XP가 아니라고 말하면서 “거의”사람들에 대한 상당한 비판을 읽었습니다. XP의 교리에 대한 측면을 약간 제쳐두고 우리가 가진 것을 살펴 보겠습니다.

가장 중요한 것 중 하나는 고객의 프로세스에 대한 약속을 갖는 것입니다. XP의 핵심 구성 요소는 고객 참여입니다. 이는 릴리스 계획, 소규모 릴리스, 오프 사이트 고객 평가와 같은 여러 지점에 나타납니다. XP에서 솔로 개발자로 성공하려면 고객이 가입해야하는 것들입니다. 디자인과 개발 기간, 테스트 등을 요구하면 더 나아가 겠다는 약속이 없습니다.

XP가 계획이 없다는 의미는 아닙니다. 여기에는 계획이 계획의 일부인 우선 순위 지정, 사용자 스토리 추정, 반복 계획 및 작업 정의와 같은 몇 가지 사항이 있습니다. 이것에 대해 한 명의 개발자이지만, 고객과 함께 제공해야하는 것들입니다.

코드 및 페어 프로그래밍의 공동 소유권과 같은 요점은 둘 이상의 관련이 있습니다. 코딩 표준과 같은 것을 결정하는 것이 훨씬 쉽지만 반드시 따라야하는 것은 아닙니다. 집단적 코드 소유권은 여전히 ​​소유권입니다. 소유권은 다음 개발자이기도합니다. 귀하와 귀하만을위한 코드는 작성하지 마십시오. 이것은 쌍 프로그래밍에 의해 활성화되는 ‘코드가 모든 의도를 드러냄’과 어느 정도 충돌하는 점에 유의하십시오. 유지 관리 가능한 코드를 작성하고 있는지 확인하는 사람이 없으므로 코드 문서화도 중요합니다.

이러한 경고 외에도 많은 XP 디자인 원칙이 여전히 적용됩니다. 테스트 첫 번째 디자인, 지속적인 통합, 고객과의 만남, 리팩토링, YAGNI, 스파이크 솔루션과 같은 것들-이러한 통화는 단독으로 수행 할 수 있습니다.

솔로 XP는 일반 XP보다 더 많은 훈련을 받는다는 것을 인식하십시오. XP는 사람들이 구현하려는 모범 사례를 엄격하게 준수해야한다는 점에서 종종 높은 규율 방법론 으로 간주됩니다 . 필요한 훈련을 지원할 코치 나 다른 사람들이 없을 때, XP와 닮은 관행에 빠질 수 있습니다.

관련 독서 :

c2 링크의 첫 번째 인용문을 꺼내고 싶습니다.

Perl Language의 명예와 미친 과학자 인 Damian Conway는 Extreme Programming은 실제로 잘못된 이름이라고 생각합니다. 프로그래머가 가르치는 많은 훌륭한 프로그래밍 관행을 구현하지만 거의 확실하게 무시하기 때문에 실제로는 매우 보수적 인 프로그래밍이라고 불렀습니다.


답변