본문 바로가기
CS/SW공학

[SW공학] 익스트림 프로그래밍(XP, eXtreme Programming) - 애자일(Agile) 기법

by jangThang 2023. 4. 27.
반응형

 애자일 기법으로 유명한 익스트림 프로그래밍 개발기법에 대해서 알아보겠습니다.

 

[ Contents ]

     

     

    1. 익스트림 프로그래밍(XP, eXtreme Programming)

     고객의 참여를 극한(extreme)까지 유도하는 소프트웨어 개발기법

     

     흔히 '에자일(Agile)'기법이라고 불리며, 사용자의 요구변화에도 유연하고 신속하게 대응할 수 있는 개발방식입니다.

     작은 작업단위로 진행하며, 수시로 프로토타입을 만들어 고객에게 피드백을 받습니다. 이러한 개선을 반복하며 점진적으로 개발을 완성해갑니다. 나선형 모델과 유사한 점이 많으나, 차이점은 '고객의 참여 극대' '개발 경량화 및 편의'입니다.

     개발자들은 문서화 작업에 익숙하지 않으며, 형식적인 문서작업보다는 코드 한 줄을 더 쓰려는 경향이 있습니다. 이러한 개발자들의 성향을 반영한 기법으로, 불필요한 문서작업은 줄이고 프로토타입과 테스트를 늘려서 좀 더 고객의 니즈에 집중합니다.

     또한 빠르게 변하는 고객의 니즈에 대처하기도 유연한 개발방식입니다. 불과 1년전만 하더라도 코로나19로 '언택트 시대'가 왔다며 재택근무와 원격수업에 관한 소프트웨어가 쏟아져 나왔습니다. 하지만 지금은 소강상태죠. 이처럼 빠르게 변하는 고객의 니즈에 대처가 중요한 시대가 되었고, 가장 각광받는 기법이 된 이유이기도 합니다.

     

    2023.04.26 - [CS] - [SW공학] 프로토타이핑(프로토타입) 모델의 개념과 프로세스

     

    [SW공학] 프로토타이핑(프로토타입) 모델의 개념과 프로세스

    프로토타이핑 모델의 개념과 프로세스에 대해서 알아보겠습니다. [ Contents ] 1. 프로토타이핑(Prototyping) 모델 사용자 요구분석을 위해, 견본품(Prototype)을 만들어 의사소통 도구로 사용하는 방식

    star7sss.tistory.com

    2023.04.26 - [CS] - [SW공학] 나선형 모델(Spiral Model)의 특징과 프로세스

     

    [SW공학] 나선형 모델(Spiral Model)의 특징과 프로세스

    워터폴 방식과 프로토타이핑 방식의 장점을 취한 나선형 모델에 대해서 알아보겠습니다. [ Contents ] 1. 나선형 모델 (Spiral Model) 위험을 최소화하며 점진적으로 완성해가는 개발 프로세스 나선형

    star7sss.tistory.com

     

     

     

    2. 기본원리 및 실무관행

    - 리팩토링 (Refactoring): 가독성 및 유지보수를 위한 코드 개선
    - 소규모 릴리즈 (Small Releases)
    - 단순한 설계 (Simple design): 현재 요구사항을 만족할 정도로만 가능한 단순하게 설계
    - 계속적인 통합 (Continuous Integration): 하루 몇 번이라도 시스템 통합하여 빌드 가능
    - 공동 소유권 (Collective ownership)
    : 코드는 누구든지 언제라도 수정 가능
    - 주 40시간 (40-hour week): 주 40시간 이내로 일하며, 2주 연속으로 초과근무하지 않도록 함
    - 코드 작성규칙, 공동체의 이상 설정 (Coding standards, Metaphor)

    - 현장 고객 (On-site customer): 상주하며 전 개발과정에 참여하는 고객
    - 짝 프로그래밍 (Pair Programming): 한 명은 프로그래밍, 한 명은 모니터링
    - 테스트 주도 개발 (TDD, Test-Driven Development): 구현에 앞서 검증 및 테스트 코드부터 작성

     

     지금의 IT기업에서 쉽게 볼 수 있는 문화입니다. 협업이 중요시되면서 코드 작성규칙(코딩 컨벤션), 리팩토링 등 다른사람도 보기 편한 코드를 짜려고 노력하고 있죠. 이를 '클린 코드'하고 합니다. 다른 사람의 코드에 issue나 pull resquest를 다는 문화도 여기서 생겼죠. (Collective ownership)

     

     한편 아래 3가지는 잘 안 지켜지는 원리입니다. 지금의 애자일 문화랑 익스트림 프로그래밍 기법은 조금 차이가 있어요. 익스트림 프로그래밍 기법이 좀 더 엄격한 애자일이라고 생각하시면 되겠습니다.

     

     

     

    3. XP(eXtreme Programming) 개발 프로세스

    릴리즈 계획 수립 => 주기(Iteration) => 승인 검사(Acceptance Test) => 소규모 릴리즈

     

      짧으면 3~4일, 길면 1달 정도의 스프린트(Sprint, 전력질주)를 갖고 업무를 수행합니다. 기능별로 우선순위를 정해서 구현하며, 이러한 세부 기능을 구현하는 기간을 '스프린트'라고 합니다.

     개발 우선순위 및 스프린트 기간은 스크럼(Scrum)에서 정하며, 스크럼은 날마다 하는 15분 정도의 짧은 회의입니다. 빨리 회의를 끝내기 위해서 서서하는 경우가 많으며, 심지어 투명의자나 플랭크 자세로 한다는 괴담이 있는 회의방식입니다. 

     

     

    출처: Trello

     작업현황은 스크럼 보드(혹은 칸반 보드)에 기록하며, 이곳에서 현재 진행 중이거나 끝난 작업을 쉽게 확인할 수 있습니다. 

     

     

    star가 되고나서 Tistory

    반응형

    댓글