본문 바로가기
정보처리기사/1. 현행 시스템 분석

소프트웨어 개발 방법론

by 후닝훈 2023. 6. 30.
반응형

 

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

  • 소프트웨어 제품의 개념 형성에 시작하여 운용/유지보수에 이르기까지의 변화의 모든 과정
타당성 검토 > 개발 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 운용 > 유지보수

 

1-2. 생명주기 모형의 종류

 

폭포수 모형 (Waterfall Model)

  • boehm이 제시한 고전적 생명주기 모형으로 소프트웨어 개발 과정의 단계가 순차적으로 진행되는 모형이다
  • 선형 순차 모델이라고도 한다
타당성검사 > 계획 > 요구분석 > 기본설계 >상세설계 > 구현 > 시험 > 운용 > 유지보수

 

폭포수 모형의 장점

  • 적용경험과 성공사례가 많음
  • 단계별 정의가 분명, 전체 구조 이해가 용이
  • 단계별 산출물이 명확

 

폭포수 모형의 단점

  • 개발 과정 중에 발생하는 새로운 요구나 경험을 설계에 반영하기 어려움
  • 두개 이상의 과정이 병행 수행되거나 이전 단계로 넘어가는 경우가 없음
  • 이전 단계의 오류수정이 어려움

 

프로토타입 모형 (Prototype Model)

  • 실제 개발될 시스템의 견본을 미리 만들어 최종 결과물을 예측하는 모형
  • 개발이 완료되고 나서 사용을 하면 문제점을 알 수 있는 폭포수 모형의 단점을 보완
요구수집 > 빠른 설계 > 프로토타입 구축 > 고객평가 > 프로토타입 조정 > 구현

 

프로토타입 모형의 장점

  • 프로토타입은 발주자나 개발자 모두에게 공동의 참조모델 제공
  • 구현단계의 골격이 될 수 있음
  • 최종 결과물이 만들어지기 전에 의뢰자가 결과물의 일부 또는 모형을 볼 수 있다
  • 요구사항이 충실히 반영됨

 

프로토타입 모형의 단점

  • 프로토타입과 실제 소프트웨어와의 차이로 인해 사용자의 혼란이 야기될 수 있음
  • 폐기 시 비경제적 일 수 있음

 

나선형 모형 (Spiral Model)

  • boehm이 제시, 반복적인 작업을 수행하는 점증적 생명주기 모형
  • 소프트웨어 개발 중 발생할 수 있는 위험을 관리하고 최소화하는 것이 목적
  • 각 개발 순서를 반복하여 수행하는 점진적 방식으로 누락된 요구사항 추가가능
  • 유지보수 과정이 필요없음
목표설정(계획수립) > 위험분석 > 공학적 개발(개발과 검증) > 고객평가/다음단계 수립

 

나선형 모형의 장점

  • 위험 분석 단계에서 기술과 관리의 위험 요소들을 하나씩 제거해 나감으로서 완성도 높은 소프트웨어 개발이 가능하다
  • 비용이나 시간이 많이 소요되는 대규모 프로젝트나 큰 시스템 구축시 유리하다

 

나선형 모형의 단점

  • 위험 분석 단계에서 발견하지 못한 위험 요소로 인한 문제 발생
  • 적용 겸험이나 성공 사례가 많지않음

 

2-1. 애자일(Agile) 방법론

 

애자일 방법의 개념

  • 사전적 의미로 '날렵한, 재빠른'의 뜻을 가지고 있음
  • 소프트웨어 개발 중 설계 변경에 신속하게 대응하여 요구사항을 수용 할 수 있음
  • 절차와 도구보다 개인과의 소통을 중요시하고, 고객과의 피드백을 중요시 여김
  • 소프트웨어가 잘 실행되는 것에 가치를 둠
  • 특정 방법론이 아닌 소프트웨어를 빠르고 낭비 없이 제작하기 위해 고객과의 협업에 초점을 둠
  • 짧은 릴리즈의 반복, 점증적 설계. 사용자 참여, 문서 최소화, 비공식적인 소통, 변화
  • eXtremeProgramming, SCRUM, Lean, DSDM, FDD, Crystal 

 

애자일 선언문

  • 프로세스나 도구보다 개인과의 소통이 더 중요하다.
  • 완벽한 문서보다 실행되는 소프트웨어가 중요하다.
  • 계약 협상보다 고객과의 협업이 더 중요하다.
  • 계획을 따르는 것보다 변경에 대한 응답이 더 중요하다.

 

2-2. XP(eXtreme Progamming)

정의

  • 1999년 Kent Beck이 제안
  • 개발 단계 중 요구사항 변동이 심한경우 적합한 방법론
  • 요구에 맞는 양질의 소프트웨어를 신속하게 제공하는 것을 목표로 함
  • 요구사항을 모두 정의해 놓고 작업을 진행하지 않고, 변경되는 것을 적용하는 방식
  • 예측성보단 적응성에 더 높은 가치를 부여
  • 고객의 참여와 개발 과정의 반복을 극대화 하여 생산성을 향상하는 방법

 

XP의 핵심 가치 5가지

  • 소통(Communication) :  개발자, 관리자, 고객간 원할한 소통 지향
  • 단순성(Simplicity) : 부가적 기능, 미사용 구조와 알고리즘 배제
  • 피드백(Feedback) : 지속적인 테스트와 통합, 반복적 결함 수정 등을 빠르게 피드백
  • 용기(Courage) : 고객 요구사항 변화에 능동적으로 대응
  • 존중(Respect) : 개발 팀원 간의 상호 존중을 기본으로 함
소단피용존 (CSFRC)

 

XP 프로세스

 

 

User Story

  • 일종의 요구사항, UML의 유스 케이스와 같은 목적으로 생성되나 형식이 없고, 고객에 의해 작성됨

 

Release Planning

  • 몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공하는 것. (Spike)
  • 부분/전체 개발 완료 시점에 대한 일정을 수립한다.

 

Iteration

  • 하나의 릴리즈를 세분화한 단위. 1~3주 단위로 진행
  • 반복 진행 중 새로운 스토리가 추가될 경우 진행 중 반복이나 다음 반복에 추가 될 수 있다.

 

Acceptance Test (인수 테스트)

  • 릴리즈 단위의 개발이 구현되었을 때 진행하는 테스트
  • 사용자 스토리에 작성된 요구사항을 확인하여 고객이 직접 테스트
  • 오류가 발견되면 다음 반복에 추가

 

Small Release

  • 릴리즈 단위를 기능별로 세분화하면 고객의 반응을 기능별로 확인 할 수 있음
  • 최종 완제품일 때에는 고객에 의한 최종 테스트 진행 후 고객에 제공

 

XP의 12가지 실천사항(Practice)

Pair Programming

  • 두 사람이 짝이 되어 한 사람은 코딩을, 한 사람은 검사를 수행
  • 코드에 대한 책임을 공유, 비형식적인 컴토를 수행

 

 

2-3. SCRUM

스크럼의 개념

  • 반복적이고 점진적인 소규모 팀 중심의 소프트웨어 개발 방법론
  • 팀원 간 활발한 소통과 협동심이 필요
  • 요구사항 변경에 신속하게 대처
  • 개발자들의 팀 구성과 각 구성원의 역할, 일정 결과물 및 그 외 규칙을 정함
  • Self Organizing : 팀원 스스로 팀을 구성해야 한다
  • Cross Functional : 개발 작업에 관한 모든것을 팀원 스스로 해결해야 한다

 

스크럼의 특징

  • 기능 개선점에 우선순위를 부여하고, 개발 주기 동안 실제 동작 가능한 결과를 제공한다
  • 개발 주기마다 적용된 기능이다 개선점의 리스트를 제공한다
  • 커뮤니케이션을 위하여 팀은 개방된 공간에서 개발하고, 매일 15분 정도 회의한다.

 

스크럼의 기본원리

  • 스트린트 단위로 기능 협업을 기준으로 배치된 팀을 이룸.
  • 스프린트는 고정된 30일의 반복이며, 행하는 작업은 고정됨.
  • 정해진 시간을 철저히 고수해야함
  • 완료된 모든 작업은 Product Backlog 에 기록

 

스크럼 팀의 역할

제품 책임자 (Product Owner)

  • 개발 목표에 이해도가 높은 개발의뢰자, 사용자가 담담
  • 제품 요구사항을 파악하여 기능목록(Product Backlog)을 작성
  • 제품 테스트 수행 및 요구사항 우선순위 갱신 및 추가
  • 스프린트 계획 수립까지만 수행
  • 스프린트가 시작되면 팀 운영에 관여하지 않음

 

스크럼 마스터

  • 업무 배분만 하고 일을 강요하지 않음
  • 팀을 스스로 조직하고 관리하도록 지원
  • 개발 과정의 장애 요소를 찾아 제거

 

스크럼 팀

  • 팀원은 5~9명 내외로 구성
  • 개발자, 디자이너, 제품 검사자 등 모든 팀원이 해당
  • 요구사항을 사용자 스토리로 도출하고 구현
  • 기능을 작업 단위로 나눔

 

스크럼 작업흐름도

 

Product Backlog > Sprint Planning Meeting > Sprint (+ Daily Scrum Meeting)
> Finished Work > Sprint 리뷰 > Sprint 회고

 

1. Product Backlog

  • 제품 개발에 필요한 모든 요구사항(User Story)을 우선순위에 따라 나열한 목록
  • 개발 과정에서 새롭게 도출되는 요구사항으로 인한 지속적 업데이트
  • 제품 백로그에 작성된 사용자 스토리를 기반으로 전체 일정 계획인 릴리즈 계획을 수립

 

2. Sprint Planning Meeting

  • Product Backlog(제품 기능 목록)에서 진행할 항목을 선택
  • 선택한 스프린트에 대한 단기 일정을 수립, 요구사항을 개발자들이 나누어 작업할 수 있도록 Task 단위로 나움
  • 수행에 필요한 각종 요구사항을 스크럼 마스터에게 보고하여 이해관계자로부터 지원을 받는다

 

3. Sprint

  • 작은 단위의 개발 업무를 단기간에 전력으로 개발
  • 반복주기(2~4주) 마다 이해관계자에게 일의 진척도 보고

 

4. Daily SCRUM Meeting

  • 매일 짧은 시간동안 서서 진행상황을 점검한다.
  • Burn Down Chart : 스크럼 마스터가 방해요소를 찾아 해결하고 잔여 작업시간을 기록하는 문서

 

5. Finished Work

 

6. Sprint Review

  • 스프린트 검토회의에 개발자와 사용자가 같이 참석한다
  • 하나의 스프린트 반복주기가 끝나면 실행 가능한 제품이 생성되며 이에 대해 검토한다.
  • 개선해야 할 사항에 대하여 제품 책임자는 피드백을 정리하여 Product Backlog를 작성하여 다음 스프린트에 적용한다.

 

7. Sprint Retrospective

  • 스프린트에서 수행한 활동과 결과물을 살펴본다.
  • 개선점 문제점을 기록한다.

 

 

반응형

'정보처리기사 > 1. 현행 시스템 분석' 카테고리의 다른 글

개발 기술 환경 분석  (1) 2023.07.05
현행 시스템 파악  (0) 2023.06.30
소프트웨어 공학  (0) 2023.06.28

댓글