애자일의 일부로 문서 디자인


25

직장에서는 "애자일"이 너무 자주 "모호한 요구 사항, 잘못된 수용 기준, 행운을 의미"한다는 의미에서 어려움에 직면합니다. 우리는 일반적인 개선 노력으로이를 해결하려고 노력하고 있습니다.

따라서 그 중 일부로서 사용자 스토리 수준 이상으로 시스템 내에서 주어진 기능의 영향에 대한 예비 조사 결과를 정확하게 반영하고 우리가 가진 질문에 대한 답변을 포함하는 디자인 문서를 생성 할 것을 제안합니다 사업을 물었다.

이에 대한 효과적인 표준이 있습니까?

우리는 현재 새로운 기능이 "큰 진흙 투구" 시스템 여러 영역에 영향을 미칠 수있는 상황에 직면 해 있으며 이러한 기술적 부채로 인해 추정치가 상승하기 시작했습니다. 더 사려 깊은 디자인 프로세스가 도움이 될 수 있기를 바랍니다.


4
이에 대한 민첩성의 해결책은 커뮤니케이션입니다. WHAT를 아는 책임이있는 사람은 개발자가 항상 상담 할 수 있어야합니다. 또한 "진흙의 큰 공"을 점검하기 위해 단위 테스트와 빈번한 리팩토링이 필요합니다.
Euphoric

3
나는 우리가 알고 있어야 그 일이있다. 우리는하지 않습니다. 나는 우리가 거기에 도착하도록 돕기 위해 노력하고 있으며, 신뢰할 수 있고 반복 가능한 커뮤니케이션 프레임 워크를 구축하려고합니다 (문서 커뮤니케이션입니다). 문제는, 지금 당장 우리는 "지금 끝내라!" 우리 는 사용자 사후에 발생하는 기능에 대한 실제 정보에 대한 참조가 없기 때문에 지식 사일로를 가져 오는 특별한 의사 소통에 의존합니다 .
asthasr

4
애자일은 문서에 위배되지 않으며 쓸모없는 문서에 위배됩니다. 더 많은 문서를 필요한만큼 작성하십시오. 특히, 문서는 귀하 (팀)가 머리 속에 가지고있는 정신 모델에 대한 참조 일뿐입니다. 후자는 정말 중요한 부분이지만 문서를 완전히 문서화 할 수는 없습니다. 대신, 많은 통신을 통해 동기화 상태를 유지하고 모델이 장기적으로 일관성을 유지하도록 충분한 참조 만 기록하십시오.
Péter Török

나는 이것과는 다른 질문을해야한다고 생각합니다. 이런 종류의 질문에 대해서는 일반적인 "문서가 올 바르면 .."이면 일반적인 도움을받을 수 있습니다. 문제에 대한 해결책이 옳은지 물어보고 가능한 다른 해결책에 대해 문의하십시오.
Euphoric

4
"애자일은 문서에 위배되지 않습니다. 쓸모없는 문서에 위배됩니다.": 모든 개발 프로세스는 쓸모없는 문서 (유용하고 쓸모없는 정의에 따라)에 위배됩니다.
Giorgio

답변:


18

"모호한 요구 사항, 잘못된 승인 기준, 행운을 빈다!"

,, 이것은 당신이 그들을 쓰려고하더라도 당신이 얻는 것과 같은 종류의 요구 사항입니다! (예를 들어, 정부 고객이 4 년이 걸렸던 10,000 개의 요구 사항 문서는 여전히 불일치, 모호함 및 심지어 내부적으로 모순되는 진술로 가득 차있었습니다. 모호하지 않은 것을 얻을 수 있다고 생각하십니까?)

그래서 ... 민첩한 방법은이 문제가 발생한다는 것을 이해하고 그에 대항하려고 노력하기보다는 그와 함께 일하기 위해 고안되었습니다.

"무엇을 원하십니까"를 물어 보면 고객이 "이와 비슷한 것"으로 응답합니다. 몇 가지 작업을 수행 한 다음 고객에게 돌아가서 "이것이 원하는 것입니까?"라고 말하고 고객은 일반적으로 "그렇지만 ..."이라고 말합니다.

결국 고객은 그것이 무엇인지 모르더라도 고객이 원하는 것을 정확하게 얻습니다! (지옥, 그들은 결코 그들이 원하는 것을 알지, 정확히).


정부 설계 문서 일화가 흥미 롭습니다. 출처가 있습니까? 아니면 직접 경험 한 것입니까?
user145400

내가 :-( 경험 @ user145400 뭔가
gbjbaanb

13

우리 팀은 민첩한 이후 실제로 필요한 문서의 양을 좁히고 이해하려고 노력했습니다. 지금까지 배운 내용을 알려 드릴 수 있습니다.

무엇보다 먼저 애자일 / 린 문서 에서이 기사 를 읽으십시오 . 아주 잘 읽었습니다.

둘째, 스토리에 대한 예비 작업을 마친 후 디자인 문서 제작을 재고 할 것을 강력히 권합니다. 우리는 전에 그것을 시도했고 그것은 낭비 인 것으로 판명되었습니다. 마지막 릴리스 중간에 스토리의 코드가 제공된 후에 만 ​​디자인 문서를 업데이트하기로 결정했습니다. 그리고 지금은 너무 빠르다고 생각합니다.

코딩하기 전에 왜 디자인 문서를 만들고 싶은지 스스로에게 물어봐야합니다. 우리에게는 이것이 이유였습니다.

  1. 우리 팀은 스토리가 디자인에 어떤 영향을 미치는지 이해해야합니다.
  2. 새로운 (또는 임시) 멤버가 팀에 합류하거나 1 년 이상 아무도 작업하지 않은 코드로 돌아올 때 디자인 문서가 유용하다는 것이 입증되었습니다. 따라서 코드가 작동하는 방식을 이해하는 데 도움이되는 조직 메모리에 유용합니다.
  3. 디자인 문서는 릴리스 후 코드 문제를 해결해야하는 유지 관리 엔지니어에게 유용합니다.

(1)을 만족시키기 위해 실제 디자인 문서를 작성할 필요는 없습니다. 팀은 코딩하기 전에 디자인 단계를 수행해야하지만 화이트 보드 나 냅킨 앞에서 15 분의 세션만큼 간단 할 수 있습니다. 설계 변경 사항을 논의하기 위해 작성하는 데 몇 시간 (몇 일이 아닌 경우)이 걸리는 실제 문서를 작성할 필요는 없습니다.

(2) 또는 (3)은 현재 스토리를 개발하는 동안 필요하지 않으며 이후의 여러 반복에 필요하지 않을 가능성이 높습니다.

또한 팀 구성원이 디자인 문서를 작성 / 업데이트 할 때마다 코드가 작성되지 않는 시간입니다. 실제 코드 전에 문서를 작성할 때는 코딩을 시작하면 디자인이 항상 변경되기 때문에 업데이트해야 할 확률이 거의 100 %에 이릅니다. 코드를 작성한 후에도 디자인 문서를 작성하더라도 팀에서 배운대로 후속 스토리를 리팩토링하면 디자인이 변경됩니다.

그래서 내가 추천하는 것 :

  1. 코딩하기 전에 팀이 지능적인 대화를 할 수 있도록 초기에 임시 디자인 / 모델을 제작하십시오. 이것들을 지키지 말고 공식화하는 데 시간을 낭비하지 마십시오.
  2. 누군가가 필요할 경우에만 공식 설계 문서를 작성하십시오 (예 : 팀에 조직 메모리가 실제로 필요함)
  3. 안정화 된 코드에 대해서만 설계 문서를 작성하십시오. 반복 할 때마다 계속 변경되는 모듈을 문서화하려고 시도 할 필요는 없습니다.
  4. 모듈 (또는 제품의 일부)을 완전히 설명하는 설계 문서를 작성하십시오. 과거에는 변경 사항을 문서화 한 디자인 문서를 작성했습니다. 해당 문서는 릴리스가 완료 되 자마자 완전히 쓸모가 없었습니다.
  5. 문서를 매우 높은 수준으로 유지하십시오. 아키텍처와 매우 높은 수준의 디자인을 다루는 20 페이지를 작성하는 경우 해당 문서는 a) 실제로 다른 사람이 읽고 b) 사람들이 일반적인 코드 레이아웃에 익숙해 지도록 도와줍니다. 자세한 내용은 사람들이 직접 코드로 들어갈 수 있습니다. 자세한 사양의 700 페이지를 작성하면 거의 항상 실제와 일치하지 않을 것입니다. 누구나 읽을 수 없을만큼 많아 향후 변경 될 때마다 20 페이지 대신 700 페이지를 유지 관리하고 업데이트해야합니다.

당신이 말하는 것은 내가 도달하려는 것과 비슷합니다. 우리는 복잡한 진흙 공을 가지고 있으며, a) 특정 기능의 비즈니스 의도를 전달하는 간단한 문서를 원합니다 (예 : 질문이있는 정교한 사용자 스토리). b) 코드 및 기존 API의 어느 부분이 영향을 받는지 지적하십시오. 그리고 c) 모든 새로운 기능으로 영원히 업데이트되어야하는 것이 아니라 일회성 인공물로 취급된다. 20 페이지가 "높은 수준"이라고 말하는 것이 흥미 롭습니다. :)
asthasr

@ 시리 온 : 방금 말한 것을 바탕으로, 모든 단일 스토리를 자세히 문서화하고 "디자인 갭"문서를 생성하는 것처럼 들립니다 (즉, 오늘 코드에 포함 된 내용과 코드에 포함 된 내용의 차이를 정의). 이야기가 끝났습니다). 그러한 문서에 대한 독자가 있습니까? 내 경험으로는 아무도 실제로 읽지 않을 것으로 예상하고 있습니다. 이 기사를 작성하는 개발자는 이미 변경해야 할 사항을 알고 있습니다 (문서를 작성했거나 초기 토론의 일부 임). 그리고 당신이 이야기를 변경하려고하는 모든 세부 사항을 포착하려고하면 ...
DXM

... 실제로 코딩하는 것보다 문서를 작성하는 데 더 많은 시간이 소요됩니다. 그리고 이야기가 완료되면, 당신이 말한 것처럼 이것은 일회성 인공물입니다. 그렇다면 왜 처음부터 생산해야합니까?
DXM

현재 지식 사일로가있는 환경이 있기 때문입니다. 우리는 서브 시스템 A를 썼기 때문에 그것을 아는 사람들이 있고, B는 마지막으로 폭발했을 때이를 지원하는 데 도움을 주었으므로 C와 D를 건드리지 않았기 때문에 다시 쓰여졌습니다. 초보자 및 오프 사이트 계약자는 루프에 들어가거나 유지하기가 어렵습니다.
asthasr

@ 시리 온 : 우리와 같은 요구가있는 것처럼 들립니다. 그러나 일회성 유물로 취급되는 간단한 문서를 원한다고 말하면 당황합니다. DB와 대화하는 레이어와 해당 레이어를 변경해야하는 6 개의 스토리가 있다고 가정하겠습니다. 각 스토리와 함께 6 개의 서로 다른 문서를 제작할 계획입니까? 아니면 DB 레이어에 대해 하나의 단일 설계 사양을 원하십니까? 그러나 단일 사양은 DB 계층에 닿는 모든 기능으로 업데이트해야합니다.
DXM

3

애자일 "만트라"는 문서화 없이는 할 수 없습니다.

애자일 만트라는 " 포괄적 인 문서보다 작업 소프트웨어 "를 선호합니다 . 그러나 선언문의 맨 아래에있는 비트에 유의하십시오.

즉, 오른쪽에있는 항목에는 가치가 있지만 왼쪽에있는 항목은 더 중요하게 생각합니다. "

Bob 아저씨는 문서화에 대한 좋은 정책을 가지고 있습니다

즉각적이고 중요하지 않은 한 문서를 작성 하지 마십시오 .

어떤 사람들은 문서를 작성하지 않은 것에 대한 변명으로 애자일을 사용하는 것이 맞습니다. 그러나 그것은 나쁜 애자일입니다. 위의 따옴표에서 강조 표시된 비트는 무시합니다.

"현재 우리는 새로운 기능이"큰 진흙 투구 "시스템의 여러 영역에 영향을 줄 수있는 상황에 처해있다"고 말할 때 애자일이 되려면 이와 관련하여 무언가를해야합니다.

설명서가 있으면이를 사용하여 코드를 모듈화하십시오. 이렇게하면 문서에 대한 장기적인 필요성을 제거하여 문서를 유지 관리해야 할 장기적인 필요성을 제거 할 수 있습니다.

즉. 즉각적이고 중요한 필요성을 확인하십시오.


이 답변은 "올바른"것이지만 실제로는 그 이상으로 생각하지 않습니다. 예를 들어 아키텍처 디자인은 어떻습니까? 개발자 / 비즈니스 매출은 어떻습니까? 이것은 많은 품질 단위 테스트에 의해 어떻게 처리됩니까?
Paul

@Paul : 신입생을 위해 매우 가벼운 코딩 표준과 함께 매우 높은 수준의 아키텍처 다이어그램을 갖는 것이 좋습니다. 문서를 최신 상태로 유지하는 좋은 방법은 위키에 문서를 보관하고 각 이민자에게 문서가있는 곳을 업데이트하도록하는 것입니다. 그러나이 질문은 특히 선행 설계 문서에 관한 것이 었습니다.
pdr

나는 아직도 내가 말하는 것을지지합니다. 비즈니스가 원하는대로 아키텍처를 변경하고 단위 테스트를 회귀 테스트 (자동화?)로 변경하면 적용됩니다.
Paul

@Paul : 죄송합니다. 팔로우하지 않습니다. 내가 제안한 가치있는 문서가 나쁘다고 생각하십니까?
pdr

0

민첩한 점은 문서화 노력이 실제로 스크럼 팀에 의해 추진되어야한다는 것입니다. 개발자가 외부 문서만으로는 충분하지 않다고 느끼면 사용자 스토리가 끝날 때까지 차단됩니다. 비즈니스에서 개발자가 적절한 문서를 작성하지 못한다고 생각하면 제품 소유자는 해당 문서를 승인 기준의 일부로 만들어야합니다. 이 때문에 스크럼으로 이동 한 이후로 문서가 더 집중되고 효과적이라는 것을 알았습니다.

우리는 VersionOne 을 사용 하여 사용자 스토리를 추적하지만, 우리의 방법이 다른 시스템에 적용될 것이라고 확신합니다. 사용자 스토리에 파일을 첨부 할 수 있습니다. 우리는 디자인 문서를 넣을 때 매우 유용한 곳이라는 것을 알았습니다.

우리에게 정말 효과가 좋은 예를 들어, 프로토 타입을 제작 한 후 가능한 빨리 새로운 회로 보드 설계를 테스트해야했습니다. 테스트가 필요한 모든 것에 대해 두 가지 사용자 스토리를 만들었습니다. 하나는 테스트를 디자인하고 다른 하나는 테스트를 실행하는 것입니다. 디자인 스토리에 대한 수용 기준 중 하나는 테스트 절차가 실행 스토리에 완전히 문서화되어 있다는 것입니다.

우리가 테스트 부분에 도착했을 때, 그것은 내가 본 것보다 더 부드럽게 진행되었습니다. 방금 사용자 스토리를 열고 단계별 절차를 수행했습니다. 문서는 우리가 이야기를 완성하는 데 필요한 것이 었습니다.

우리는 백 로그에 다른 팀이 자신의 제품을 위해 쉽게 선택할 수 있도록 사용하는 칩의 문서를 개선하기위한 또 다른 이야기를 가지고 있습니다.

요약하자면, 문서가 어려움을 겪고 있다고 생각되면 솔루션은 별도의 사용자 스토리를 작성하거나 승인 기준의 일부로 만드는 것만 큼 쉽습니다.


0

열악한 요구 사항에 대해 말할 때 가장 먼저 떠오르는 것은 테스트 기준이 있는지 확인하는 것입니다. 가능하면 시스템의 기존 부분에 대해 재사용 가능한 자동화 테스트 사례를 작성하십시오. 모든 사람들이 그것에 익숙해지면 코드를 작성하기 전에 테스트 사례 작성으로 이동하십시오. 좋은 테스트 사례는 시스템의 동작을 문서화하는 데 많은 도움이 될 수 있습니다.

다른 사람들이 이미 언급했듯이 사용할 특정 디자인 문서에 대해서는 팀의 요구와 그들이 수행 할 다음 작업에 크게 의존합니다. 가능하면 사용할 코드를 사용하여 문서를 생성하거나 문서에서 코드를 생성 할 수있는 도구를 사용하십시오. 문서 관리는 비용이 많이들 수 있으므로 디자인 문서를 유지할 때는 현명하게 선택하십시오.

개인적으로 저는 코드 및 fitnesse 테스트 사례에서 생성 된 클래스 다이어그램을 성공적으로 사용했습니다. 팀은 몇 가지 클래스 다이어그램을 인쇄하고 제품 소유자와 마크 업 세션을 수행 한 다음 견적을 작성합니다. fitnesse가 진행되는 한, 스프레드 시트에서 원하는 것을 표현하는 데 능숙한 두 명의 제품 소유자와 함께 일한 후 fitnesse를 위해 테이블로 변환하는 것이 행운입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.