반응형
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 이중화 지원, 자체 결함으로 인한 장애 발생 가능성, 안정적인 트랜잭션 처리 등등
- 성능 : 대규모 트랜잭션 처리 성능, 가비지 컬렉션의 다양한 옵션
- 기술 지원 : 위와 동일
- 구축 비용 : 위와 동일
반응형
'IT > 정보처리기사' 카테고리의 다른 글
소프트웨어 설계 - 소프트웨어 생명주기 모형, Scrum 요점정리 (0) | 2021.02.01 |
---|