개발 방법론

P·2021년 11월 3일
0

0. 개발 방법론의 종류

(출처: http://wiki.hash.kr/index.php/소프트웨어_개발방법론)
  • 구조적 방법론
  • 정보공학 방법론
  • 객체지향 방법론
  • 컴포넌트 기반 방법론 (CBD, Component Based Design)
  • 제품 계열 방법론
  • 애자일 방법론

1. 구조적 방법론

정형화 된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화 하는 처리 중심의 방법론

  • 쉬운 이해 및 검증이 가능한 프로그램을 생성하는 것이 목적
  • 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용
  • 구조적 방법론의 절차

    타당성 검토 단계 -> 계획 단계 -> 요구사항 분석 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지 보수 단계

2. 정보공학 방법론

정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론

  • 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합
  • 정보공학 방법론의 절차

    정보 전략 계획 수립 단계 -> 업무 영역 분석 단계 -> 업무 시스템 설계 단계 -> 업무 시스템 구축 단계

3. 객체지향 방법론

객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론

  • 객체지향 방법론은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
  • 구성 요소에는 객체, 클래스, 메시지 등이 있음
  • 기본 원칙에는 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등이 있음
  • 객체지향 방법론의 절차

    요구 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 및 검증 단계 -> 인도 단계

4. 컴포넌트 기반 방법론(CBD)

기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론

  • 컴포넌트의 재사용이 가능하여 시간과 노력 절감 가능
  • 유지 보수 비용을 최소화하고 생산성 및 품질 향상
  • 컴포넌트 기반 방법론의 절차

    개발 준비 단계 -> 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 전개 단계 -> 인도 단계

5. 제품 계열 방법론

특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법

  • 임베디드 소프트웨어를 만드는데 적합
  • 제품 계열 방법론은 영역공학과 응용공학으로 구분
    -영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
    -응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
  • 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요

6. 애자일 방법론

고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론

  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
  • 애자일 방법론의 대표적인 종류로는 익스트림 프로그래밍(XP), 스크럼(Scrum), 린(Lean)등이 있음
  • 애자일 방법론의 절차

    사용자 스토리 -> [계획 -> 개발 ->승인 테스트]반복


애자일 방법론의 특징

  • 프로젝트의 요구사항은 기능 중심으로 정의
  • 절차와 도구보다 개인과 소통을 중요하게 생각
  • 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응할 수 있음
  • 소프트웨어가 잘 실행되는데 가치를 둠
  • 고객과의 피드백을 중요하게 생각함

애자일 선언문

  • 공정과 도구보다 인과 상호작용
  • 계획을 따르기보다 화에 대응하기
  • 포괄적인 문서보다 작하는 소프트웨어
  • 계약 협상보다 객과의 협력

1. 익스트림 프로그래밍(XP)

  • 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
  • 1~3주의 반복 개발 주기
  • 5가지 가치와 12개의 실천항목 존재
  • XP의 12가지 기본 원리
    1. 짝 프로그래밍(Pair Programming)
    2. 공통 코드 소유(Collective Ownership)
    3. 지속적인 통합(CI, Continuous Integration)
    4. 계획 세우기(Planning Process)
    5. 작은 릴리즈(Small Release)
    6. 메타포어(Metaphor)
    7. 간단한 디자인(Simple Design)
    8. 테스트 기반 개발(TDD, Test Driven Develop)
    9. 리팩토링(Refactoring)
    10. 40시간 작업(40-Hour Work)
    11. 고객 상주(On Site Customer)
    12. 코드 표준(Coding Standard)

2. 스크럼(SCRUM)

  • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
    • 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
    • 스프린트(Sprint): 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상

3. 린(Lean)

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
  • 린의 7가지 원칙

    낭비 제거/ 품질 내재화/ 지식 창출/ 늦은 확정/ 빠른 인도/ 사람 존중/ 전체 최적화

profile
개인 정리 공간

0개의 댓글