린 소프트웨어 개발방법론
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
- Description
- 소프트웨어 개발 방법론(Agile의 일종)
Table of Contents
린 소프트웨어 개발 방법론 #
린 소프트웨어 개발 방법론(Lean Software Development)이란? #
린 소프트웨어 개발 방법론(이하 린 개발 방법론)이란 애자일 방법론의 일종으로 도요타의 TPS(Toyota Production System)을 S/W 개발에 적용한 방법론을 말한다. 기존의 개발 방법론과는 다르게 생산 시스템을 프로그램 개발 방법론에 적용한 기법이다. 낭비(Waste)에 포커스를 두어 프로그램을 개발하는데 발생할 수 있는 모든 낭비를 최소화하고 결과를 측정, 성과를 분석하여 소프트웨어 가치를 최대화하고자 하는 것을 목표로 둔다.
그림 1. 린 개발 방법 개념도 (출처)
린 개발 방법론의 특징 #
- 결함 제거 : 7가지 개발 원칙에 준수하여 낭비를 제거하고자 하며, S/W 개발의 가장 큰 낭비는 결함이라고 생각. 결함 제거 개념이 Agile에 속함
- 품질 기법 : 생산 시스템을 위해 사용하는 린 공학 품질 기법을 SW 개발에 적용
린 개발 방법론의 대표적인 낭비 요소 #
- 이동/이관(Handoff) : 업무의 이관은 암묵지가 전수되지 못할 수 있음. 이관할 때마다 지식이 누락
- 미완성 작업(Partial Done Work) : 배포되지 않은 코드, 코드로 옮기지 않은 문서, 테스트하지 않은 코드
- 작업 전환(Task Switching) : 작업 진행 도중 다른 작업으로의 전환은 시간을 소모 시키므로 전환 시간 낭비 최소화
- 대기, 지연(Delay) : 필요 인원이 가용 가능할 때까지 기다림. 정기적인 피드백이 있는 Iteration은 지연을 극적으로 줄일 수 있음
- 가외기능(Extra Feature) : 고객이 필요로 하지 않는 기능을 추가하여 낭비 발생. 커뮤니케이션을 통한 feedback
- 재학습(Relearning) : 사람들을 개발 과정에 끌어들이지 못해 작업 공간에 제공할 수 있는 지식을 놓여 재학습하는 활동
- 결함/재작업(Defects/Rework) : 테스트에 결함 유입을 걸러주는 실수 방지 테스트를 포함
린 개발 방법론의 7가지 원칙 #
- 낭비 제거(Eliminate waste) : 불필요한 코드/기능, 불분명한 요구사항(요구사항 혼란) 등 상품의 가치에 영향을 미치지 않는 모든 것을 제거
- 배움 증폭(Amplify Learning) : 개발 과정 진행 중 참여자(기획자, 개발자, 고객 등) 학습의 필요성 존재
- 늦은 결정(Defer Commitment) : 돌이키기 힘든 주요 문제에 대한 의사결정을 최대한 연기함으로써 요구사항변경에 적극적으로 대응
- 빠른 납품(Deliver Fast) : 결과물을 가능한 한 빨리 제공하는 것이 도움이 됨. 사용자의 불확실성이 감소하고, 개발자에게는 결함발견의 기회가 주어짐
- 팀에 권한 위임(Empower the Team) : 팀원들의 동기부여 및 자기 의사 결정권으로 잠재력 극대화
- 통합성 구축(Build Integrity in) : 개발 초기부터 지속적인 통합(TDD)으로 품질 향상. 소규모 개발 단계에서 오류를 수정하여 낭비를 제거
- 전체 최적화(Optimize the whole) : 사용자 요구사항수집부터 S/W 배포까지 모든 프로세스 최적화
애자일 방법론과의 차이점 #
- 애자일 방법론 : 개인별 또는 팀 간에 고객과 협업하고 빠른 개발을 수행(고객과 협업)
- 린 개발 방법론 : 고객 관점에서 전체 프로세스상에서 낭비를 제거하여 고객 가치를 높이는 것에 우선순위(전적으로 고객 관점)