SW 품질 강화 노력
Page content
어딘가 보고 정리한 글인데 출처를 기억하지 못하겠다….
SW 품질 개선 노력의 대상
SW 품질을 높이는데 Tool, System, People 그리고 Management중에 어떤 면을 개선하는 경우 효과가 높을까?
- Tool : 2 배
- System : 10배
- People : 30배
- Management : 60배 이상
그렇지만 대개의 관리자는 개선효과를 반대로 알고 있다.
사람은 변화해야 할 때 변화한다(더 이상 저항하지 못할 때) 그러나 위기는 갑자기 오지 않는다. 다만 위기에 대한 인지를 갑자기 할 뿐이다.
변화는 성능 저하를 유발한다. 그 성능 저하를 감수하고, 계속 변화해가야 변화가 주는 효과를 얻을 수 있다.
고객 가치 중심
- Agile은 가치가 높은 것을 가장 먼저 개발하여 SW의 가치를 초기부터 높이려고 노력한다.
- Action과 Result사이에 시간차가 크면 학습효과가 낮다. SW에서는 설계 내용이 Coding을 거쳐 Test하는 시점이 설계 시점과 멀면 멀 수록 학습효과가 낮아진다(잘못된 설계를 다른 기능 설계시에도 반영할 가능성이 높아진다) Agile에서는 설계/구현/Test의 간극을 줄여 학습효과를 높인다. 이를 위해 기능을 User story로 나누고, 1개 혹은 몇 개의 user story를 기준으로 빌드하여 User story를 추가해 나간다. 이때 user story는 사용자 입장에서의 사용 패턴이다.
- 하나의 Story는 여러개의 task로 나뉘어진다. Story가 사용자 측면의 기능이라면 task는 개발자 입장에서의 업무이다.
- 예) “xx 카드 승인 기능"이 story라면 해당 story를 구현하기 위해 필요한 기능들 “DB 설계”, “UI 구현"등등이 task다.
Collaboration
- 한 사람이 1시간 동안 핵심적인 버그를 발견할 확률이 0.1이라고 하면, 총 7명이 있을 때
- 모든 사람이 버그를 발견할 확률은? 0.1^7 = 0.0000001
- 한 사람이라도 버그를 발견할 확률은? 1 - 0.9^7 = 0.53
예측
- Task는 세분화할 수록 소요시간 예측력이 높아진다.
- 상벌은 개개인별이 아니라 팀단위로 이루어져야 효과가 높다. 동시에 팀웍 강화 노력도 필요.
- 개발자들은 절대시간으로 표현해야 하는 절대 시간 추정 능력은 떨어지지만, Story끼리의 상대적인 시간 소요를 비교할 때 필요한 상대 시간 추정 능력은 뛰어나다.