02. 소프트웨어 개발 방법론

유길상·2022년 3월 28일
0

소프트웨어 개발 방법론 개념

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

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

  • 소프트웨어 개발 방법론 종류로는 구조적 방법론, 정보공학 방법론, 객체 지향 방법론, 컴포넌트 기반 방법론(CBD), 애자일 방법론, 제품 계열 방법론이 있다.
  1. 구조적 방법론

    • 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론

    • 프로세스 중심의 하향식 방법론

    • 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트 사용

      나씨 슈나이더만 차트 특징
       	- 논리의 기술에 중점을 둔 도형식 표현 방법
      	- 연속, 선택 및 다중 선택, 반복 등의 제어 논리구조로 표현
      	- 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합

  2. 정보공학 방법론

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

    • 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
    • 복잡한 형실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
    • 객체, 클래스, 메시지를 사용
  4. 컴포넌트 기반 방법론

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

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

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

    • 임베디드 소프트웨어를 작성하는데 유용한 방법론

    • 영역 공학과 응용 공학으로 구분

      	영역공학 : 영역분석, 영역설계, 핵심 자산을 구현하는 영역
      	응용공학 : 제품 요구분석, 제품설계, 제품을 구현하는 영역

애자일(Agile)

  • 애자일 방법론은 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속, 적응적 경량 개발 방법론이다.
  • 개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있다.
  • 애자일 방법론은 기존 개발 방법론의 한계를 극복하기 위해 등장했다.

애자일 방법론의 유형

  • 애자일 방법론은 대표적으로 XP, LEAN, SCRUM이 있다.

1.XP(eXtreme Programing)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

- 1~3주의 반복 개발 주기

- 5가지 가치와 12개의 신청항목이 존재

- XP의 5가지 가치(피존용단소)

  1. 드백 : 의사소통에 대한 빠른 피드백
  2. 중 : 팀원간의 상호 존중
  3. 기 : 용기를 가지고 자신감 있게 개발(피드백을 두려워 하지 않으며 테스트 후 빠르게 리팩토링할 수 있는 용기
  4. 순성 : 필요한 것만 하고 그 이상의 것들은 하지 않음
  5. 의사통 : 개발자, 관리자, 고객 간의 원활한 소통

- XP의 12가지 기본원리

  1. Pair Programing
  2. Collective Ownership
  3. Continuous Intergration (CI)
  4. Planning Process)
  5. Small Release
  6. Metaphor
  7. Simple Design
  8. Test Driven Develop (TDD)
  9. Refactoring
  10. 40-Hour Work
  11. On Site Customer
  12. Coding Standard

2.Scrum
- 매일 정해진 시간과 장소에서 짧은 시간 동안 개발하는 팀을 위한 프로젝트 관리 중심의 방법론이다.

주요개념
1. 백로그(Backlog) : 개발할 제품에 대한 요구사항 목록
2. 스프린트(Spring) : 2~4주의 짧은 반복적인 개발 주기
3. 스크럼 미팅(Scrum Meeting) : 스프린트 목표와 백로그를 계획해 계획을 수립
4. 스크럼 마스터(Scrum Master) : 프로젝트 관리자
5. 스프린트 회고(Sprint Retrospective) : 스프린트를 되돌아보며 실행된 작업 목록과 해야 할일 이슈사항 등을 공유
6. 번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

2.Lean
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제가형 품질을 향상시킨 방법론
- JIT(Just In Time), 칸반 보드 사용
- 7가지 원칙

  1. 낭비제거
  2. 품질 내재화
  3. 지식 창출
  4. 늦은 확정
  5. 빠른 인도
  6. 사람 존중
  7. 전체 최적화

0개의 댓글