반응형

XP(eXtreme Programming)

  • 수시로 발생하는 고객의 요구사항에 유연하게 대처하기 위해 고객의 참여와 개발 과정 반복 극대화
  • 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 빠르게 개발하는것을 목적으로 함
  • 릴리즈의 기간을 짧게 반복하면서 고객 요구사항 반영에 대한 가시성을 높임
  • 비교적 소규모 인원의 개발 프로젝트에 효과적
  • XP의 5가지 핵심 가치 : 의사소통, 단순성, 용기, 존중, 피드백

XP 개발 프로세스

  • 사용자 스토리(User Story) 도출
    - 고객의 요구사항을 간단한 시나리오로 표현한 것
    - 내용은 기능 단위로 구성하며 필요할 경우, 간단한 테스트 케이스를 기재
  • 릴리즈 계획 수립(Release Planning)
  • 스파이크(Spike)
    - 요구사항의 신뢰성을 높이고, 기술 문제에 대한 위험을 감소시키기 위해 별도로 만드는 간단한 프로그램
    - 처리할 문제 외의 조건은 모두 무시하고 작성
  • 이터레이션(Iteration)
    - 하나의 릴리즈를 더 세분화 한 단위
    - 일반적으로 1~3주 정도 기간 진행
    - 새로운 스토리가 작성될 수 있으며, 작성된 스토리는 현재 혹은 다음 이터레이션에 포함 가능
  • 승인 검사(Acceptance Test)
    - 하나의 이터레이션 안에서 부분 완료 제품이 구현되면 수행되는 테스트
    - 스토리 작성 시 함께 기재한 테스트 사항에 대해 고객이 직접 수행
    - 발견된 오류 사항은 다음 이터레이션에 반영
    - 테스트가 완료되면 다음 이터레이션 진행
  • 소규모 릴리즈(Small Release)
    - 릴리즈를 소규모로 하여 기능 별로 고객의 반응을 확인하고 요구사항에 좀 더 유연하게 대응
    - 이터레이션이 모두 완료되면 고객에 의한 최종 테스트 수행 후 최종 릴리즈를 전달
    - 최종 완제품이 아닌 경우 다음 릴리즈 일정에 맞게 개발을 계속 진행

XP 주요 실천 방법

  • Pair Programming(짝 프로그래밍) : 다른 사람과 함께 프로그래밍을 수행하여 책임을 공동으로 가지는 환경 조성
  • Collective Ownership(공동 코드 소유) : 개발 코드에 대한 권한과 책임을 공동으로 소유
  • TDD(Test Driven Development): 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성, 자동화 된 테스트 프레임워크 사용
  • Whole Team : 모든 구성원은 각자 자신의 역할에 책임을 가짐
  • Continuous Integration(지속적 통합) : 모듈 단위로 나눠서 개발된 코드들은 마무리될 때 마다 지속적으로 통합
  • Design Improvement, Refactoring : 프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통해 시스템 재구성
  • Small Release : 릴리즈 기간을 짧게 반복하여 고객의 요구 변화에 신속히 대응

 

현행 시스템 파악 절차

  • 1단계
    - 시스템 구성 파악 : 현행 시스템의 구성은 조직의 주요 업무를 담당하는 기간 업무와 이를 지원하는 지원 업무로 구분하여 기술, 각 업무에 속하는 단위 업무 정보시스템들의 명칭, 주요 기능들을 명시
    - 시스템 기능 파악 : 현재 제공하고 있는 기능들을 주요 기능과 하위 기능, 세부 기능으로 구분하여 계층형으로 표시
    - 시스템 인터페이스 파악 : 단위 업무 시스템 간에 주고 받는 데이터의 종류, 형식, 프로토콜, 연계 유형, 주기등을 명시
    ex) 통신규약, 데이터 형식, 연계 유형
  • 2단계
    - 아키텍처 구성 파악 : 어떠한 기술 요소들이 사용되는지 최상위 수준에서 계층별로 표현한 아키텍처 구성도로 작성
    - 소프트웨어 구성 파악 : 단위 업무 시스템별로 업무 처리를 위해 설치되어 있는 소프트웨어들의 제품명, 용도, 라이선스 적용 방식, 라이선스 수 등을 명시
  • 3단계
    - 하드웨어 구성 파악 : 단위 업무 시스템들이 운용되는 서버의 주요 사양과 수량, 그리고 이중화의 적용 여부 명시
    - 네트워크 구성 파악 : 업무 시스템들의 네트워크 구성을 파악할 수 있도록 서버의 위치, 서버 간의 네트워크 연결 방식을 네트워크 구성도 작성, 물리적인 관계 표현, 장애 발생 시 복구에 도움

 

개발 기술 환경 파악

  • 개발하고자 하는 소프트웨어와 관련된 운영체제, DBMS, 미들웨어 등을 선정할 때 고려해야 할 사항 기술, 오픈 소스 사용 시 주의해야 할 내용을 제시
  • 운영체제(OS) 고려사항
    - 가용성 : 장시간 운영으로 인해 발생할 수 있는 고유의 장애 발생 가능성, 메모리 누수, 보안 허점, 운영체제 결함 등등
    - 성능 : 대규모 동시 사용자 요청에 대한 처리, 지원 가능한 메모리 크기 등등
    - 기술 지원 : 제작 업체의 안정적인 기술 지원, 오픈 소스 여부(Linux)
    - 주변 기기 : 설치 가능한 하드웨어, 주변 기기 지원 여부
    - 구축 비용 : 지원 가능한 하드웨어 비용, 라이선스 정책 및 비용, 유지관리 비용, 총 소유 비용(TCO) 등등
  • DBMS 고려사항
    - DBMS란 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템
    - 가용성 : 장시간 운영으로 인해 발생할 수 있는 고유 장애, 백업과 복구 편의성, DBMS 이중화 및 복제 지원 등등
    - 성능 : 대규모 데이터 처리 성능(분할 테이블 지원 여부), 대용량 트랜잭션 처리 성능, 질의 최적화 지원 여부
    - 기술 지원 : 제작업체의 안정적인 기술지원, 오픈 소스 여부 등등
    - 상호 호환성 : 설치 가능한 OS의 종류, JDBC, ODBC와의 호환 여부 등등
    - 구축 비용 : 라이선스 정책 및 비용, 유지관리 비용, TCO
  • 웹 애플리케이션 서버(WAS) 고려사항
    - WAS는 정적인 콘텐츠 처리를 하는 웹 서버와 달리 사용자의 요청에 따라 변하는 동적인 컨텐츠를 처리하기 위해 사용되는 미들웨어
    - 가용성 : WAS 이중화 지원, 자체 결함으로 인한 장애 발생 가능성, 안정적인 트랜잭션 처리 등등
    - 성능 : 대규모 트랜잭션 처리 성능, 가비지 컬렉션의 다양한 옵션
    - 기술 지원 : 위와 동일
    - 구축 비용 : 위와 동일

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,