버그는 기술 부채의 일부입니까?


44

Scrum Master는 버그를 기술 부채라고 부릅니다. 그가 맞습니까? 버그는 Agile 세계에서 기술적 부채로 간주됩니까?


기술 부채인지 아닌지를 결정하는 것이 왜 중요합니까? 스크럼 보드의 버그를 나타내는 방법에 영향을 주거나 수정 계획에 영향을 미칩니 까?
Bryan Oakley

@BryanOakley 일부 버그로 인해 더 많은 기술 부채가 발생하여 문제를 해결할 수 있습니다. 이 버그는 수정하기에는 너무 비쌀 수 있습니다
BЈовић

4
@BryanOkley-기술 부채는 구현을 개선하는 데 필요하지만 현재는 시간 / 예산 제약으로 인해 불가능한 디자인이나 리팩토링이라고 생각했습니다. 올바른 용어를 사용하는 것이 중요하다고 생각합니다. 내가 틀렸을 수도 있고 틀렸을 수도 있기 때문에 질문을했습니다.
user86834

나는 이해. 기술 부채라고 부르는 것이 왜 중요합니까? "기술 부채"로 분류하면 해당 버그를 다른 버그와 다르게 취급 할 것입니다.
Bryan Oakley

1
엄청난 양의 기술 부서가 있고 단일 버그가 없을 수 있습니다. 기술 부서는 잘 작성되고 잘 설계된 코드와 반대입니다. 잘 작성된 코드는 유지 관리, 테스트 및 추가가 쉽습니다. 기술 부서는 개발 속도를 늦추고 버그를 추적하기 어렵게하며 새로운 코드가 버그를 도입 할 가능성을 높입니다.
Luis Perez

답변:


35

여기에 대한 대답은 매우 간단하다고 생각합니다. 기술적 부채의 주요 특징은 우리가 선택함으로써 발생하는 것입니다.

우리는 특정 목표를 더 빨리 달성하기 위해 나중에 문제를 일으킬 것으로 예상되는 건축, 설계 또는 구현 결정을 내리기로 선택합니다.

버그는 코드에서 우리가 선택한 것이 아니기 때문에 사실상 기술적 부채가 아닙니다.

물론 발견 후 발견에 대한 선택에 관한 모든 종류의 흥미로운 (그리고 아마도 유효한) 주장을 할 수는 있지만 근본적으로 (특히 문제의 맥락에서) 아닙니다. 버그는 기술적 부채가 아닙니다. 버즈 워드 빙고를 남용하는 것처럼 들립니다.


포스트 스크립트로서-나는 기술 부채가 주어진 선택의 본질에 대해 많은 가정을 할 정도로 버그로 이어질 것이라는 주장에 동의하지 않습니다. 예를 들어, 조기 제공을 위해 구조적 손상을 야기하는 잘 작성되고 체계적으로 테스트 된 코드 적용 코드를 가질 수 있습니다. 마찬가지로 배포 프로세스를 자동화하지 않고 버그를 유발하지는 않지만 많은 스트레스와 고통을 초래할 수 있습니다. 물론 부채가 당신이 SOLID (또는 무엇이든)가 아닌 코드를 작성했다는 것이라면 그렇습니다 ... 그러나 항상 그런 것은 아닙니다.


1
+1. 나는 BЈовић의 대답이 옳다고 생각하지만, 당신의 대답은 실제로 머리에 못을 박았습니다. (나는 조금 용어의 사용에 의해 혼란 스러워요 사실상 . 난 당신이 그 말을 할 수 있다고 생각하지 않습니다하지만, 법률 상 , 버그가 있습니다 기술적 부채는?)
ruakh

언어 사용은 정말 재밌습니다. 다음을 시도해보십시오 : en.wikipedia.org/wiki/De_facto- 내 의도와 충분히 비슷한 "모든 의도와 목적을 위해"로 읽어보십시오
Murph

"여기서 대답은 매우 간단하다고 생각합니다. 기술 부채의 주요 특징은 우리가 선택할 때 발생하는 것입니다." 이 정의를 어디에서 가져 왔습니까? 나는 그것이 옳다고 생각하지 않습니다. 그것은 기술적 부채의 한 부분이며, 다른 부분은 암시 적이며 대개 무지와 나쁜 관행 때문입니다.
gphilip

드 쥬르 뒤 쥬르. 내일은 사실상입니다. QED.
radarbob 2016 년

1
Martin Fowler의 Technical Debt Quadrant에 따르면 버그와 나쁜 코드를 "무심코 부주의 한"부채로 식별 할 수 있습니다 : martinfowler.com/bliki/TechnicalDebtQuadrant.html . 요점은 민감한 버그를 부채로 표시하면 비용이 얼마나 들며, 그것을 제거해야하는지 여부를 이해할 수 있다는 것입니다. 이 부채에 대한이자 지급은 매우 매우 작기 때문에 그대로 당신은 아마 그것을 유지해야한다 - 예, 당신은 일 년에 한 번만 변경되고 그것을 다시 작성 주가 걸릴 것이라고 실수 작성 모듈이있다
shershen

20

예.

기술 부채 (디자인 부채 또는 코드 부채라고도 함)는 코드베이스 내에서 열악한 소프트웨어 아키텍처 및 소프트웨어 개발의 결과에 대한 신학 적 은유입니다.

출처 : Wikipedia

더 나은 작업 흐름 (예 : 코딩으로 이동하기 전에 아키텍처를 올바르게 수행, TDD 등), 더 나은 코딩 방법 등을 통해 기술 부채를 피할 수있는 것으로 읽습니다.

추가 검토 또는보다 공식적인 방법을 사용하면 대부분의 버그를 피할 수있었습니다. 처음에는 버그를 갖지 않기 위해 할 수있는 모든 것을하지 않음으로써 프로젝트의 즉각적 / 단기 비용을 낮추고 기술 부채를 증가시킵니다.


BЈовић의 답변을 읽은 후에 생각보다 쉽지 않을 수 있습니다.

  • 예를 들어 버그는 기술 부채의 일부입니까? 기사는 당신이 알고 있지만 수정하지 않기로 결정한 버그는 기술 부채의 일부라고 주장합니다.

  • 또 다른 예로, 기술 부채에 대한 Christopher의 생각은 버그가 아닌 기술 부채 의 결과 로 버그를 검증 합니다. "새 기능 구현 비용"과 같은 나열된 결과 중 많은 수는 버그 수의 영향을받습니다.

  • 마지막으로 ABCDE-T 기술 부채 모델을 만들 때 버그를 6 가지 요소 중 하나로 포함 시켰지만 다르게 고려됩니다. 버그 자체가 아니라 버그의 수집, 우선 순위 결정 및 해결 방법에 중점을 둡니다. 버그 자체는 기술 부채의 결과로 표시되지만 (이전 예와 같이) 기술적 부채의 요소로 표시되지는 않습니다.

이 말은 여전히 버그 (모든 버그)가 기술적 부채의 일부라고 대답하고있다.

첫 번째 주장 :

Jeff Atwood의 인용문을 읽으면 대부분의 버그는 다음과 같습니다.

빠르고 더러운 설계 선택으로 인해 향후 개발에서해야 할 추가 노력

비즈니스 응용 프로그램에서 거의 모든 버그는 빠르고 더러운 설계 선택 또는 나쁜 관행 (테스트 부족, 개발자가 알지 못하는 기술 사용, 통신 부족, 도메인 이해 부족, 이는 "빠르고 더러운 디자인을 더 나은 디자인으로 리팩토링하고" 더 나은 사례를 적용함으로써 대부분의 버그를 해결할 수 있음을 의미합니다.

두 번째 주장 :

회사를 다른 회사에 매각 할 때 고려해야하는 회사의 일반 부채와 프로젝트를 다른 회사에 매각하거나 부여 할 때 고려해야하는 기술 부채 사이에서 유사성을 만드는 경우 다른 팀에게는 버그가 기술 부채의 일부라는 것을 쉽게 알 수 있습니다.

  • 새로운 기능을 만들기 전에 이러한 버그를 해결해야합니다 (Joel Test의 포인트 5 : 새 코드를 작성하기 전에 버그를 수정 하시겠습니까?)

  • 또는 버그를 유지하면서 기술 부채를 유지 / 증가시킵니다.


1
나는이 답변에 제시된 주장이 건전하지만 결함을 기술 부채라고 생각하지 않지만 a) 기술 부채 IMO를 어떻게 정의하는지는 중요하지 않으며 b) 이것은 잘 쓰여진 대답입니다. 어쨌든 투표. +1!
Bryan Oakley

13

Jeff Atwood는 자신 의 기술 부채 지불 에 대한 기술 부채가 무엇인지에 대한 훌륭한 답변을 제공합니다.

기술 부채는이자 지불을 초래하는데, 이는 빠르고 더러운 설계 선택으로 인해 향후 개발에서해야 할 추가 노력의 형태로 발생합니다. 우리는 계속해서이자를 지불하도록 선택할 수도 있고, 빠르고 더러운 디자인을 더 나은 디자인으로 리팩토링하여 교장을 지불 할 수도 있습니다. 교장을 상환하는 데는 비용이 들지만, 향후이자 지급을 줄이면 얻을 수 있습니다.

엄밀히 말하면, 버그는 추가 소프트웨어 개발 속도를 늦추지 않으면 (기술 변경, 새로운 기능 추가 등) 기술적 부채의 일부가 아닙니다. 소프트웨어 결함입니다.

그러나 버그를 수정하기에는 비용이 너무 비싸거나 문제를 해결해야하고 (기술적 부채가 더 많이 발생할 경우) 기술적 부채의 일부가됩니다.


1
실제로는 버그가 없기 때문에 버그 없이는 필요하지 않은 새로운 기능에 대한 추가 해결 방법이있을 수 있습니다. 고객이 스크립트를 작성했거나 버그가있는 행동에 의존하는 어떤 것이 든 "버그가 아닙니다. 기능이 아닙니다"라는 버그로 인해 코드가 잘못된 방향 (기술적 부채 증가)으로 발전하는 것을 보았습니다.
Marjan Venema 2013 년

@MarjanVenema 좋은 지적입니다. 나는 그것을 생각하지 못했습니다.
BЈовић

이 인용문은 Jeff Atwood가 아니며 Martin Fowler의 게시물 에서 가져온 것입니다 . Jeff는 블로그 게시물에서도이 내용을 인용합니다.
Uooo

6

버그는 기술 부채가 아닙니다. 기술 부채는 품질의 부재가 아니라 품질에있어 크게 위축되고 있습니다. 소프트웨어에 버그가있는 상태로 제공해서는 안됩니다. 알다시피, 전체적인 소프트웨어가 포괄적 인 문서화에 관한 것입니다.

기술 부채의 가장 큰 범죄자는 "임시 버그 수정"입니다. 테스트를 통과하고 이야기를 받아 들일 수있는 것들을 알고 있습니다. 이러한 임시 수정, 패치 및 기타 사항이 누적됨에 따라 코드가 불필요하게 복잡해지고 업데이트 및 테스트하기가 어려워지며 일반적으로 악몽이지만 여전히 작동합니다.

이 의견을 뒷받침하기 위해 나는 출처 Cwardham으로 바로 갔다. 이것에 관해서, Ward는 Capers Jones와 잠시 동안 좋은 인터뷰를했습니다. 시계 가치가 있습니다.

Ward Cunningham & Capers Jones와의 기술 부채 토론

읽을 가치가있는 또 다른 기사는 Martin Fowler의 글입니다.

기술 부채에 대한 마틴 파울러

Martin의 기사에서 OOPSLA92에서 Ward Cunningham의 기술 부채에 대한 원래 언급에 대한 링크를 찾으십시오.

WyCash 포트폴리오 관리 시스템

위 기사에서 인용 한 내용 :

미성숙 한 코드는 잘 작동하고 고객이 완전히 수용 할 수 있지만 초과 수량은 프로그램을 마스터 할 수 없게하여 프로그래머를 극도로 전문화하고 결국에는 유연성이없는 제품을 만듭니다. 최초 코드 선적은 빚을지는 것과 같습니다.

결국 기술 부채는 일부 사람들에게 버그를 포함하게되었을 수도 있습니다. 나는 그것이 원래 의도라고 생각하지 않습니다.


"처음에는 버그가있는 소프트웨어를 제공해서는 안됩니다." 가장 간단한 프로그램을 제외한 모든 소프트웨어에는 버그가 포함되어 있습니다. 이 막대를 너무 높게 설정했습니다.
bhspencer

2

엄밀히 말하면, 귀하의 질문에 대한 대답은 아니오입니다.

기술 부채 (그리고 아마도 것) 버그로 이어질하지만, 어떤 버그가 기술 부채의 결과가 두 가지 사실 사이의 해석을 가하고 있다고 판단 할 수 있습니다 버그가있다기술 채무있다 (사실로 결론 지을 수있는 가정이).

스크럼 마스터가 버그가 기술 부채의 결과라는 이론으로 '이론적'이라고 말하면 모서리를 깎고 있습니다. 그가 계속 다시 나타나는 특정 버그에 대해이 말을한다면 그는 옳을지도 모릅니다. 여기서 코드 품질을 볼 수는 없습니다 ;-)

그는 또한 기술 부채에 대해 사람들이 자신의 말을 듣지 않아서 모든 버그를 기술 부채라고 표시하는 것에 대해 지속적으로 불만을 제기 할 수 있지만 지금은 추측하고 있습니다.


2

제 생각에는 버그가 기술 부채의 일부인지 아닌지는 중요하지 않습니다.

일반 사실은 기존의 버그가 추가 작업을 나타낼 것입니다 수 있습니다 그들을하거나 해결하려면를 수정하거나, 미래에 수행해야합니다.

(라벨은 일반적으로 사용되는) 기술 부채는 추가 작업 나타낸다 수 있습니다 미래 ... 하나의 방식 으로든 수행해야합니다.

따라서 알려진 버그 (또는 알려지지 않은) 버그가 기술 부채라고하는지 여부는 실제로 정의의 문제입니다. "기술 부채"에 대한 권위있는 정의 1 이 없기 때문에 전체 토론은 무의미합니다.

Lewis Carroll이 쓴 것처럼 :

험티 덤프 티 (Humpty Dumpty)는 끔찍한 말로 '단어를 사용할 때 내가 선택한 단어를 의미하는 것, 즉 더 많거나 적지 않다'고 말했다. .

실제로 자연어가 작동하는 방식입니다. 단어는 사람들이 생각하는 것을 의미합니다. 사전 정의 등 은 단어가 사용되는 방식을 문서화 할 뿐 정확한 문서 일 필요는 없습니다. 만약 당신의 스크럼 마스터가 알려진 버그를 기술 부채라고 언급하고 싶다면, 누가 자신이 "잘못되었다"고 말해야합니까?


1-Ward Cummingham 및 Caper Jones와 같은 인용문도 도움이되지 않습니다. 기껏해야이 구절을 사용 (사용) 할 때의 의미 (또는 의미)를 알려줍니다. 그들은 문구를 "소유"하지 않습니다. 의심 할 여지없이 이러한 문제에 대한 권위자이지만, 이것은 여전히 ​​그들의 의견 일뿐입니다.

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