본문 바로가기
정보처리/소프트웨어설계

요구사항 확인 소프트웨어 개발 방법론 2/4

by 피갓자 2025. 3. 30.

요구사항 확인 소프트웨어 개발 방법론
요구사항 확인 소프트웨어 개발 방법론

소프트웨어 개발 방법론

소프트웨어 개발 방법론

소프트웨어 개발 방법론(Software Development Methodology) 개념

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
  • 소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론

소프트웨어 개발 방법론 종류

구조적 방법론(Structured Development)

  • 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
  • 프로세스 중심의 하향식 방법론
  • 구조적 프로그래밍 표현을 위해 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용

정보공학 방법론(Information Engineering Development)

  • 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
  • 개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

객체 지향 방법론(Object Oriente Development)

  • ‘객체’라는 기본 단위로 시스템을 분석 및 설계하는 방법론
  • 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
  • 객체, 클래스, 메시지를 사용

컴포넌트 기반 방법론(CBD, Component Based Development)

  • 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
  • 개발 기간 단축으로 인한 생산성 향상
  • 새로운 기능 추가 쉬움(확장성)
  • 소프트웨어 재사용 가능

애자일 방법론(Agile Development)

  • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
  • 애자일이 개발 과정의 어려움을 극복하기 위해 모색한 방법론

제품 계열 방법론(Product Line Development)

  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • 임베디드 소프트웨어를 작성하는 데 유용한 방법론
  • 영역 공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
  • 응용 공학 : 제품 요구분석, 제품 설계, 제품을 구현하는 영역

애자일

애자일(Agile) 방법론의 개념

  • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
  • 개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있음

애자일 방법론 등장 배경

소프트웨어 개발 환경의 변화

  • 소프트웨어 개발 트렌드가 모바일 환경으로 변화
  • 시장 적시성과 잦은 배포의 중요성 부각

기존 개발 방법론의 한계

  • 전통적 방법론은 문서 및 절차 위주로 변화에 신속한 대응이 어려움
  • 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성 증가

애자일 방법론의 유형

XP(eXtreme Programming)

  • 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
  • 1~3주의 반복(Iteration) 개발 주기

XP의 5가지 가치

용기(Courage) : 고객 요구사항 변화에 능동적으로 대응

단순성(Simplicity) : 필요한 것만 하고 그 이상의 것들은 하지 않음

의사소통(Communication) : 개발자, 관리자, 고객 간의 원활한 소통

피드백(Feedback) : 지속적 테스트와 통합, 반복적 결함 수정 등 빠른 피드백

존중(Respect) : 개발 팀원 간의 상호 존중

 

XP의 12가지 기본 원리

짝 프로그래밍(Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리

공동 코드 소유(Collective Ownership) : 시스템에 있는 코드는 누구든지 언제라도 수정이 가능하다는 원리

지속적인 통합(CI, Continuous Integration) : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리

계획 세우기(Planning Process) : 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리

작은 릴리즈(Small Release) : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리

메타포어(Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리

간단한 디자인(Simple Design) : 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리

테스트 기반 개발(TDD, Test Driven Development) : 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리

리팩토링(Refactoring) : 프로그램의 기능을 바꾸지 않으면서 중복 제거, 단순화 등을 위해 시스템을 재구성한다는 원리

40시간 작업(40-Hour Work) : 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상 일하지 말아야 한다는 원리

고객 상주(On Site Customer) : 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리

코드 표준(Coding Standard) : 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리

 

스크럼(SCRUM)

  • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

스크럼의 주요 개념

백로그(Backlog) : 제품과 프로젝트에 대한 요구사항

스프린트(Sprint) : 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발 품질 향상

스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획 수립, 데일리 미팅(Daily Meeting)이라고도 함

스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람

스프린트 회고(Sprint Retrospective) : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록, 해당 스프린트가 끝난 시점이나 일정 주기로 시행

번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트, 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치

 

린(LEAN)

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상하는 방법론
  • JIN(Just In Time), 칸반(Kanban) 보드 사용

린의 7가지 원칙

낭비제거 : 상품 가치에 영향을 미치지 않는 불필요한 코드나 기능을 제거하는 원칙

품질 내재화 : TDD를 통해 코드의 실수를 미리 방지하고 품질을 보장하는 원칙

지식 창출 : 개발 과정 진행 중 기획자, 개발자, 고객 등 참여자들이 지속적으로 학습하며 지식을 공유하는 원칙

늦은 확정 : 중요한 문제에 대한 의사 결정의 최대한 미루고, 요구사항의 변경에 유연하게 대응하는 원칙

빠른 인도 : 결과물을 가능한 한 빨리 제공하여 사용자의 불확실성을 줄이고, 개발자에게는 결함 발견의 기회를 주는 원칙

사람 존중 : 팀원 간 상호 책임 의식과 신뢰를 바탕으로 서로 존중하는 원칙

전체 최적화 : 사용자 요구사항 수집부터 배포까지 모든 프로세스를 최적화하여 최대의 효율을 추구하는 원칙

 

애자일과 전통적 방법론 비교

애자일 방법론

  • 계획 수립 : 유동적 범위 설정
  • 업무 수행 : 팀 중심 업무 수행
  • 개발/검증 : 반복 주기 단위로 소프트웨어를 개발/검증
  • 팀 관리 : 업무 몰입, 팀 평가
  • 문서화 : 문서화보다는 코드를 강조
  • 성공 요소 : 고객 가치 전달
  • 유형 : XP, 스크럼, 린

전통적 방법론

  • 계획 수립 : 확정적 범위 설정
  • 업무 수행 : 관리자 주도적 명령과 통제, 개인 단위로 업무 수행
  • 개발/검증 : 분석 / 설계 / 구현 / 테스트를 순차적으로 수행
  • 팀 관리 : 경쟁, 개별 평가
  • 문서화 : 상세한 문서화를 강조
  • 성공 요소 : 계획/일정 준수
  • 유형 : 폭포수, 프로토타입, 나선형