반응형

이번에 정보처리기사를 준비하면서, 필기 내용이 방대하다보니, 

제가 다시 공부하기 위한 목적으로 요점정리를 업로드합니다.

 

아무래도, 공부 목적으로 업로드하는 것이다보니, 내용이 조금 부족할 수 있다는 점 양해 부탁드립니다.

 

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

 

  • 소프트웨어 개발 방법론의 바탕
  • 개발하기 위해 정의하고, 운용, 유지보수 등의 과정을 단계별로 나눈 것
  • 소프트웨어 생명 주기를 표현하는 형태를 소프트웨어 생명 주기 모형, 소프트웨어 프로세스 모형, 소프트웨어 공학 패러다임이라고 칭함
  • 대표적인 소프트웨어 생명 주기 모형에는 폭포수 모형(Waterfall), 프로토타입 모형(Prototype), 나선형 모형(Spiral), 애자일 모형(Agile) 등이 있다.

소프트웨어 공학 기본 원칙

 

  • 현대적인 프로그래밍 기술을 계속적으로 적용
  • 개발된 소프트웨어의 품질이 유지되도록 지속적인 검증
  • 개발 관련 사항 및 결과에 대한 명확한 기록 유지

폭포수 모형(Waterfall Model)

 

  • 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형, 고전적 생명 주기 모형이라고도 함
  • 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형(Linear Sequential Model)
  • 제품의 일부가 될 메뉴얼을 작성해야 함
  • 타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현 -> 시험 -> 유지보수 순으로 진행

프로토타입 모형(Prototype Model)

 

  • 사용자의 요구사항이 명확하지 않을 때 활용
  • 실제 개발될 소프트웨어에 대한 프로토타입을 만들어 최종 결과물을 예측
  • 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발
  • 개발이 다 끝난 후에 오류가 발견되는 Waterfall 방식의 단점을 보완

나선형 모형(Spiral Model)

 

  • Boehm(보헴)이 제안한 것으로, Waterfall과 Prototype의 장점에 위험 분석 기능 추가
  • 나선처럼 여러 번이 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 소프트웨어를 개발, 점진적 모형
  • 소프트웨어 개발시 발생하는 위험을 관리하고 최소화 하는 것이 목적
  • 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가 순으로 반복 진행하며 유지보수 과정 필요 X

애자일 모형(Agile Model)

 

  • 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 개발과정 진행
  • 좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 모든 방법론을 통칭
  • Sprint또는 Iteration이라고 불리는 짧은 개발 주기를 반복하며, 주기마다 고객에게 평가와 요구를 적극 수용
  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
  • Scrum, XP, 칸반, Lean, 크리스탈, ASD, 기능 중심 개발(FDD), DSDM,  DAD등이 애자일 모형 기반

 

Scrum(스크럼)

 

  • 팀원 스스로가 스크럼 팀을  구성(Self-Organizing)해야 하며 개발 작업에 관한 모든 것을 스스로 해결(Cross-functional)할 수 있어야 한다.
  • 제품 책임자(PO; Product Owner), 스크럼 마스터(SM; Scrum Master), 개발팀 (DT; Development Team) 구성
  • 제품책임자?
    - 이해관계자들 중 개발될 제품에 대한 이해도가 높고 요구사항을 책임지고 의사결정할 사람
    - 이해관계자들의 의견을 종합하여 제품에 대한 요구사항 작성을 진행하는 주체
    - 요구 사항이 담긴 백로그(Backlog)를 작성하고 우선순위를 지정
    - 주기적으로 요구사항의 우선순위를 갱신
  • 스크럼 마스터?
    - 스크럼 팀이 스크럼을 잘 수행할 수 있도록 객관적인 시각에서 조언을 해주는 가이드 역할, 통제가 아님
    - 일일 스크럼 회의를 주관하여 진행 사항 점검 및 문제 발생 시 공론화하여 처리 진행
  • 개발팀?
    - PO와 SM을 제외한 모든 팀원으로 개발자 뿐만 아니라 디자이너, 테스터등이 모두 포함된다.

 

스크럼 개발 프로세스

  • 제품 백로그(Product Backlog)
    - 제품 개발에 필요한 모든 요구사항(User Story)을 우선 순위에 따라 나열한 목록
    - 개발 과정에서 새롭게 도출되는 요구사항으로  지속적 업데이트
    - 제품 백로그에 작성된 사용자 스토리를 기반으로 전체 일정 계획인 릴리즈 계획 수립
  • 스프린트 계획 회의(Sprint Planning Meeting)
    - 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정 수립
    - 스프린트에서 처리할 User Story를 개발자들이 나눠서 작업할 수 있도록 Task라는 단위로 분할, 개발자 별로 수행할 작업 목록인 Sprint Backlog를 작성
  • 스프린트(Sprint)
    - 실제 개발 작업을 진행하는 과정, 2~4주 정도 기간
    - 스프린트 백로그에 작성된 태스크를 대상으로 작업 시간을 추정한 후 개발자에게 할당
    - 할당된 Task는 할 일(To Do), 진행 중 (In Progress), 완료 (Done)의 상태를 지님
  • 일일 스크럼 회의(Daily Scrum Meeting)
    - 모든 팀원이 매일 약 15분 정도의 짧은 시간동안 진행상황을 점검
    - 남은 작업 시간은 소멸 차트(Burn-Down Chart)에 표시
  • 스프린트 검토 회의(Sprint Review)
    - 스프린트 산출물이 요구사항에 잘 부합되는지 사용자가 포함된 참석자 앞에서 테스팅 수행
    - 제품 책임자(PO)는 개선할 사항에 대한 피드백 정리 후 반영하여 제품 백로그 업데이트
  • 스프린트 회고(Sprint Retrospective)
    - 스프린트 주기를 되돌아보며 규칙 준수 여부, 개선점 확인 및 기록
    - 스프린트 마치고 수행하거나 일정 주기로 수행
반응형

'IT > 정보처리기사' 카테고리의 다른 글

소프트웨어 설계 - XP기법, 현행 시스템 파악  (0) 2021.02.02
블로그 이미지

Hyunsoo Luke HA

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

,