2009-12-01 7 views
9

민첩한 원칙을 개발 프로세스, 특히 스크럼 원칙과 XP 유사 사용자 스토리에 적용하려고 시도했지만 우리는 아키텍처에 관한 문제에 직면했습니다.민첩 아키텍처 용 시스템 스토리

우리는 여전히 아키텍처 중심 개발과 관련이 너무 많지만 민첩한 모델링 원칙과 함께 강력한 구성 요소 기반 개발을 유지하려고 노력하고 있습니다. 우리의 목표는 개발 중에 앞선 작은 디자인을 발전 시켜서 진화하는 것입니다.

내가 찾고있는 것은 내 아키텍처와 내부의 구성 요소에 대한 내 백 로그 이야기에 배치 할 수있는 무언가입니다. 사용 사례뿐 아니라 개발 이야기. 시스템 스토리는 비즈니스 가치와 관련이없는 것을 말하는 사용자 스토리와는 다른 종류 일 수 있지만 시스템의 아키텍처 및 품질 문제와 관련이 있습니다.

편집 : 나는 "개발자 이야기"에 대해 알 보그 대학의 this research을 발견 .

경험, 아이디어 또는 반대가 있습니까?

미리 감사드립니다. (이것은 내 첫 번째 질문입니다! : D)

답변

11

이 IMO 백 로그가 하지 개발자를 포함해야한다 "등 도메인 모델은로드 밸런싱에서 다른 데이터 센터에서 실행해야한다"와 같은 우리가 일반적으로, 백 로그 비 기능 요구 사항을 넣어하는 방법이다 이야기. 제품 소유자가 비즈니스 기능과 함께 현명한 우선 순위를 설정할 수있는 방법은 없습니다. 제품 소유자가 중요하지 않다고 판단하여 백 로그에서 빼내면 어떻게됩니까? 그런 다음 팀이 스토리 유지를 주장하면 백로 그스의 소유권이 명확하지 않은 상황에 처해 있습니다.

그러나 팀에서 프로젝트 초기에 아키텍처를 구축해야한다고 생각합니다. 우리 프로젝트의 한 가지 문제점은 처음 몇 번의 스프린트에서 기능에 너무 집중했기 때문입니다.

인프라 및 아키텍처 구축에 소요되는 시간으로 "건축 부채"(기술 부채와 유사)에 대해 생각해 봅시다. 기술 채무 (0에서 시작하여 팀이 적절한 리팩토링없이 기능을 생성함에 따라 구축 됨)과 달리 팀 은 건축 부채로으로 시작하여이를 축소해야합니다. 건축 부채를 줄이는데 소비 된 시간은 기능을 생산하는데 소비되는 시간이 적다는 것을 의미합니다.팀 속도가 낮아지고 스프린트 출력이 감소합니다. 이러한 방식으로 건축 부채는 기술적 부채와 유사합니다. 현재 아키텍처에 맞지 않는 요구 사항이 발생하면 아키텍처 부채 수준이 증가합니다.

팀은 제품 소유자에게 시간을 보내는 방법을 결정해야합니다 (그리고 제품 소유자에게 정당화 할 수 있음). 따라서 기능, 기술 부채 및 건축 부채간에 자신들의 노력을 분열시킬 수 있습니다.

아키텍처 작업은 여전히 ​​기능에 의해 주도되어야합니다. 즉, 팀은 특정 사용자 스토리를 지원하고 활성화 할 수있는 인프라를 구축해야합니다. 뿐만 아니라 미래에 유용하다고 생각하기 때문 만은 아닙니다. The YAGNI principle이 그러한 접근 방식에 적용됩니다.

+0

낙천적 인 코멘트! 고맙습니다! 너는 내 마음을 정말로 지웠다. :). 나는 수색을했고 기술적 인 빚에 대한 정의를 가진 흥미로운 기사를 발견했다. (http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx - http : // codeartisan .blogspot.com/2008/08/cracking-down-on-technical-debt.html). 나는 약간의 디자인을 우선적으로 섞은 통제 부채를 지키는 것이 우리에게 옳은 선택 일 것이라고 생각한다. –

2

내 대답 here이 적용됩니다.

아키텍처 작업과 더 많은 기능 관련 작업 간에는 매우 어려운 균형이 있습니다. 기술적으로 두 가지 모두 유효한 접근 방식과 작동 방식이지만 사용 가능한 제품 (스프린트 결과)이 길어질수록 올바른 제품 (사용자 요구 사항, 성능 요구 사항 등)을 구축하지 않는다는 위험이 커집니다. 가능한 한 빨리 시스템 레벨 테스트를 수행하여 제품 작동을 증명할 수있는 시점에 도달하고 지분 소유자와 함께 제품의 가치와 방향을 보여줄 수 있습니다.

+1

저는 이것이 실제로 발생할 수있는 병목 현상 및 기술적 문제를 파악하고 실제로 개발을 시작하기 전에 테스트를 거치게되는 'Sprint 0'접근 방식과 관련이 있다고 생각합니다. 이것은 위험을 제로는 아니지만 그것을 상당히 최소화 할 것입니다. –

1

매우 간단합니다. 회원 구성 요소가 다른 모든 구성 요소와 연결되지 않았는지 테스트 할 수 있는지 확인하십시오. '사용자 스토리', 시스템 및 개발 스토리가 sync'ed되어 있어야합니다. 이러한 구현에 대한 제품 소유자의 요구와

1

개발자 이야기를하는 데 유용한 하나의 렌즈는 주어진 이야기의 "사용자"가 누구인지 생각하는 것입니다. 회사 외부 사람들이 볼 수있는 기능을 쓰지 않는다고해서 그것이 해당 작업에 대한 사용자가 없다는 것을 의미하지는 않습니다. 복도에있는 팀의 코드를 작성한 것일 수 있습니다. 어떤 경우에는 사용자가 자신입니다. 이는 개발자의 이야기에 종종 해당됩니다. "개발자로서 새로운 기능을 쉽게 추가 할 수 있도록 확장 가능한 아키텍처가 있습니다." 특정 사용자를 호출함으로써 제품 소유자는 스토리의 가치를 누가 볼 수 있는지 알 수 있습니다. 그리고 "왜"를 지적하면 스토리가 달성하고자하는 이익을 전하는 데에도 도움이됩니다. 다른 사람들이 언급했듯이, 백 로그 관리는 제품 소유자와 팀 간의 협상으로 이어집니다. 그리고 언제나처럼, 프로세스 도그마에 상관없이 팀에 가장 적합한 것을 고안해야합니다. 모든 팀마다 상황이 다르며 한 팀에서 잘 작동하는 아이디어가 항상 다른 팀으로 번역되는 것은 아닙니다.

1

우리 팀에서는 "IT 카드"라고 부르며 "개발자로서 저는 xyz 구성 요소를 리팩토링하지 않아도됩니다. 유지 관리 비용을 줄이고 유연성을 높이기 위해"라고 말했습니다.

팀 구성원은 우선 순위가 설정된 백 로그에서 "기능 카드"를 표시하는 대신 중요하다고 판단되는 IT 카드를 자유롭게 선택할 수 있습니다.

이 접근법은 기술적 부채를 허용 가능한 수준으로 유지하고 건전한 혁신 속도를 유지하기 위해 합리적으로 잘 작동하는 것으로 나타났습니다.

시스템을 다시 설계하는 수단으로 다소 부족한 것으로 나타났습니다. 기능을 생성하는 기능에서 오랜 시간 동안 출발하는 것을 정당화하는 것은 어렵습니다.

필자는이 기사를 쓰면서 아키텍처에 접근 할 수 있다고 생각합니다. 주제에 중점을 두어 서사시가있는 구조적 목표를 파악하십시오.