728x90

1. 소프트웨어 생명 주기(Software Life Cycle)

  소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것

 

  • 대표적인 생명 주기 모형: 폭포수 모형, 포로토타입 모형, 나선형 모형, 애자일 모형

 

2. 폭포수 모형(Waterfall Model)

  각 단계를 확실히 매듭짓고 결과를 검토하여 승인 과정을 거친 후 다음 단계를 진행하는 개발 방법론(=고전적 생명 주기 모형)

 

3. 프로토타입 모형(Prototype Model, 원형 모형)

  실제 개발될 소프트웨어 견본품(prototype)을 만들어 최종 결과물을 예측하는 모형

 

4. 나선형 모형(Spiral Model, 점진적 모형)

  여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 개발하는 모형

  • 보헴이 제안
  • 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능 추가
  • 유지보수 과정 필요 없음
  • 4가지 주요 활동: 계획 수립 > 위험 분석 > 고객 평가 > 개발 및 검증(다시 계획수립으로)

 

5. 애자일 모형(Agile Model)

  요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반영하면서 개발하는 모형

  • 폭포수 모형과 대조적
  • 대표적인 개발 모형: 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), Lean, 기능 중심 개발(FDD; Feature Driven Development)

5-1. 스크럼(Scrum)

  팀이 중심이 되어 개발의 효율성을 높이는 기법

 

  1.  스크럼 팀
    • 제품 책임자(PO; Product Owner)
      • 요구사항이 담긴 백로그(Backlog)를 작성하는 주체
      • 이해관계자들 중 개발될 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사를 결정할 사람
    • 스크럼 마스터(SM; Scrum Master)
      • 스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할을 수행
    • 개발팀(DT; Development Team)
      • 제품 책임자와 스크럼 마스터를 제외한 모든 팀원으로 제품 개발 수행
  2. 스크럼 개발 프로세스
    • 스프린트 계획 회의(Sprint Planning Meeting)
      • 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 회의
      • 제품 백로그(Product Backlog): 제품 개발에 필요한 모든 요구사항(User Story)을 우선순위에 따라 나열한 목록
    •  스프린트(Sprint)
      • 실제 개발 작업을 진행하는 과정으로, 보통 2~4주 정도 기간 내에서 진행
    • 일일 스크럼 회의(Daily Scrum Meeting)
      • 모든 팀원이 매일 약 15분 동안 진행 상황을 점검하는 회의
      • 남은 작업 시간은 소멸 차트(Burn-dowm Chart)에 표시
    • 스프린트 검토 회의(Sprint Review)
      • 부분 또는 전체 완성 제품이 요구사항에 잘 부합하는지 테스팅하는 회의
    • 스프린트 회고(Sprint Retrospective)
      • 정해놓은 규칙 준수 여부 및 개선할 점을 확인하고 기록

 

5-2. XP(eXtreme Programming)

  요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법

  • XP 5가지 핵심 가치: 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)

 

 

  1. XP 개발 프로세스
    • 릴리스 계획 수립(Release Planning)
      • 부분 혹은 전체 개발 완료 시점에 대한 일정을 수립하는 것
      • 릴리즈: 몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것
    • 이터레이션(Iteration, 주기)
      • 실제 개발 작업을 진행하는 과정으로, 보통 1~3주 정도의 기간으로 진행
    • 승인 검사(Acceptance Test, 인수 테스트)
      • 하나의 이터레이션 안에서 부분 완료 제품이 구현되면 수행하는 테스트
    • 소규모 릴리즈(Small Release)
      • 요구사항에 유연하게 대응할 수 있도록 릴리즈의 규모를 축소한 것 
  2. XP 주요 실천 방법(Practice)
    • Pair Programming(짝 프로그래밍)
      • 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성
    • Collective Ownership(공동 코드 소유)
      • 개발 코드에 대한 권한과 책임을 공동으로 소유함
    • Test-Driven Development(테스트 주도 개발)
      • 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지 정확히 파악함
      • 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용
    • Whole Team(전체 팀)
      • 개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 함
    • Continuous Integration(계속적인 통합)
      • 모듈 단위로 나눠서 개발된 코드들은 하나의 직업이 마무리될 때마다 지속적으로 통합됨
    •  Refactoring(리팩토링)
      • 프로그램 기능의 변경 없이 시스템을 재구성함
      • 목적: 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함
    • Small Releases(소규모 릴리즈)
      • 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음

 

6. 애자일 개발 4가지 핵심 가치

  • 프로세스, 도구 << 개인, 상호작용
  • 방대한 문서 << SW
  • 계약 협상 << 고객, 협업
  • 계획 따르기 << 변화에 반응

 

7. 소프트웨어 공학

  소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문

  • 소프트웨어 공학의 기본 원칙
    1. 현대적인 프로그래밍 기술을 계속적으로 적용해야 한다.
    2. 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.
    3. 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.

 

728x90

'정보처리기사 > 요구사항 확인' 카테고리의 다른 글

[정처기] UML(Unified Modeling Language)  (0) 2022.07.04
[정처기] 요구사항  (0) 2022.07.04

+ Recent posts