코딩일기/자격증

[정보처리기사] 익스트림 프로그래밍(Extreme Programming, XP)| 리팩토링(Refactoring) | 정보처리기사 기출문제

jhy_2023 2024. 6. 25. 16:58
728x90
반응형

 

XP의 정의


익스트림 프로그래밍(Extreme Programming, XP)은 애자일 소프트웨어 개발 방법론의 하나로, 소프트웨어 개발의 효율성과 품질을 극대화하기 위해 다양한 실천 방법을 통합한 접근법입니다. XP는 특히 소규모 팀이 빠르게 변화하는 요구사항에 대응하고, 높은 품질의 소프트웨어를 신속하게 제공할 수 있도록 설계되었습니다.


XP의 주요 원리

  1. 의사소통(Communication): 팀원 간의 원활한 의사소통을 중요시합니다.
  2. 단순성(Simplicity): 현재의 요구사항에 충실하며, 간단하고 명확한 설계를 지향합니다.
  3. 피드백(Feedback): 짧은 주기의 피드백을 통해 지속적으로 개선합니다.
  4. 용기(Courage): 변화와 수정에 대한 두려움을 극복하고, 필요할 때마다 과감하게 리팩토링합니다.
  5. 존중(Respect): 팀원 서로를 존중하고, 신뢰를 바탕으로 협력합니다.


XP 개발 프로세스

 

  1. 사용자 스토리(User Story):
    • 고객의 요구사항을 간단한 시나리오로 표현한 것입니다.
    • 주로 기능 단위로 작성되며, 필요한 경우 간단한 테스트 사항도 포함될 수 있습니다.
    • 사용자 스토리는 고객과 개발 팀 간의 의사소통을 원활하게 하고, 개발의 우선순위를 설정하는 데 사용됩니다.
  2. 릴리즈 계획 수립(Release Planning):
    • 몇 개의 사용자 스토리가 포함된 부분적으로 완성된 제품을 제공하는 것을 릴리즈라고 합니다.
    • 전체 개발이 완료될 때까지의 일정을 계획하고, 릴리즈 간의 우선순위를 정합니다.
  3. 스파이크(Spike):
    • 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 별도로 만드는 간단한 프로그램입니다.
    • 처리할 문제 외의 다른 조건은 모두 무시하고 작성합니다.
  4. 이터레이션(Iteration):
    • 하나의 릴리즈를 더 작은 단위로 나눈 것입니다.
    • 일반적으로 1~3주의 짧은 주기 동안 개발을 진행하합니다.
    • 이 기간 중에 새로운 스토리가 작성될 수 있으며, 작성된 스토리는 진행중인 이터레이션 혹은 다음 이터레이션에 포함될 수 있습니다.
    • 이터레이션은 반복적이고 짧은 주기의 개발을 통해 빠르게 결과물을 생산하고 고객의 피드백을 반영할 수 있습니다.
  5. 승인검사(Acceptance Test, 인수 테스트):
    • 각 이터레이션에서 계획된 릴리즈 단위의 일부 완료 제품에 대해 수행되는 테스트입니다.
    • 사용자 스토리에 포함된 테스트 사항을 바탕으로 고객이 직접 테스트를 수행하며, 발견된 오류는 다음 이터레이션에 반영됩니다.
    • 테스트 이후 새로운 요구사항이 작성되거나 요구사항의 상대적 우선순위가 변경될 수 있습니다.
  6. 소규모 릴리즈(Small Release):
    • 릴리즈를 더 작고 소규모로 나누면 고객의 반응을 기능별로 확인할 수 있어 고객의 요구사항에 더 유연하게 대응할 수 있습니다.
    • 계획된 릴리즈 기간 동안 모든 이터레이션이 완료되면 최종 결과물을 고객에게 전달합니다.
    • 릴리즈가 최종 완제품이 아닌 경우 다음 릴리즈 일정에 맞게 개발을 계속 진행합니다.

 


XP의 주요 실천 방법(Practice)

  • Pair Programming(짝 프로그래밍) 
    : 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을
  • Collective Ownership(공동 코드 소유) 
    : 개발 코드에 대한 권한과 책임을 공동으로 소유한다.
  • Test - Driven Development(테스트 주도 개발)
    : 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 정확히 파악한다, 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용한다.
  • Whole Team(전체 팀) 
    : 개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 한다.
  • Continuous Integration(계속적인 통합) 
    : 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합된다.
  • Design Improvement (디자인 개선) or Refactoring(리팩토링) 
    : 프로그램의 기능의 변경 없이, 단순화, 유연성 강화 등을 통해 시스템을 재구성한다.
  • Small Releases(소규모 릴리즈) 
    : 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있다.

 


XP의 특징

  • 적응적 계획(Adaptive Planning): 계획은 고정되지 않고, 프로젝트 진행 중에 계속해서 조정됩니다.
  • 작은 릴리스(Small Releases): 작은 단위의 기능들을 자주 릴리스하여, 고객의 피드백을 빠르게 반영합니다.
  • 고객 참여(Customer Involvement): 고객은 프로젝트의 일원으로 참여하여, 지속적으로 요구사항을 제시하고 피드백을 제공합니다.

문제


1. 익스트림 프로그래밍에 대한 설명으로 틀린 것은?
① 대표적인 구조적 방법론 중 하나이다.
② 소규모 개발 조직이 불확실하고 변경이 많은 요구를 접하였을 때 적절한 방법이다.
③ 익스트림 프로그래밍을 구동시키는 원리는 상식적인 원리와 경험을 최대한 끌어 올리는 것이다.
④ 구체적인 실천 방법을 정의하고 있으며, 개발 문서 보다는 소스코드에 중점을 둔다.

정답

정답 : ①

해설


익스트림 프로그래밍(XP)은 구조적 방법론이 아닌 애자일 방법론입니다. 구조적 방법론은 계획과 문서화에 중점을 두는 전통적인 방법론인 반면, XP는 적응적 계획, 반복적인 개발, 조기 전달, 지속적인 개선을 강조하는 애자일 접근법을 따릅니다.


2020년 3회 정보처리기사 실기 기출문제

문제

리팩토링(Refactoring)의 목적에 대하여 서술하시오.

정답

리팩토링의 목적은 복잡한 코드를 단순화하여 유지보수성, 생산성, 품질을 향상시키고, 시스템의 유연성을 높이는 것이다.
or 성능향상을 위하여 결과의 변경 없이 코드의 구조를 재조정한다.

해설

리팩토링의 주요 목적은 코드의 복잡성을 줄여 더 효율적이고 이해하기 쉬운 코드로 개선하는 것입니다. 이를 통해 여러 가지 이점을 얻을 수 있습니다.

  1. 유지보수성 향상: 코드가 간결하고 명료해지면 이후에 발생할 수 있는 오류 수정이나 기능 추가 작업이 훨씬 수월해집니다. 리팩토링을 통해 복잡한 코드를 체계적으로 재구성함으로써, 유지보수 작업에서 시간이 절약되고 실수의 가능성도 줄어듭니다.
  2. 생산성 향상: 코드가 잘 정리되면 개발자는 새로운 기능을 추가하거나 기존 기능을 변경할 때 더 효율적으로 작업할 수 있습니다. 이는 개발 속도와 품질을 모두 높이는 데 기여합니다.
  3. 품질 향상: 코드의 가독성이 높아지면 코드 자체의 오류 발생률이 줄어들고, 전반적인 소프트웨어 품질이 개선됩니다. 이는 안정적인 시스템 운영에 도움을 줍니다.
  4. 유연성 향상: 잘 리팩토링된 코드는 확장성과 유연성이 높아져, 미래의 요구사항 변경이나 기능 확장에 더 쉽게 대응할 수 있게 됩니다.

 

728x90
반응형