소프트웨어 개발 방법론
소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화 한 것.
- 목적 ? 생산성, 품질 향상
- 종류 : 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD)방법론, 애자일(Agile)방법론
구조적 방법론
🚩point : 구조 중심 분석/설계
, 문서화
, 모듈화
- 절차 중심의 개발 방법론
- 모듈화를 통해 기능적으로 분할하여 하향식으로 개발한다.
- 절차 : 요구사항 분석 -> 구조적 분석 -> 구조적 설계 -> 구조적 프로그래밍
정보공학 방법론
🚩point : 자료(Data)
- 정보 시스템의 개발을 위해 계획,분석,설계 ,구축에 정형화된 기법들을 상호 연관성있게 통합 및 적용하는 자료 중심의 방법론
객체지향 방법론
🚩point : 개체(entity)
, 객체(Object)
, 캡슐화
, 상속
, 다형성
- 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어서 개발할 때 조립하듯이 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
컴포넌트 기반(CBD)
🚩point : 컴포넌트
. 재사용
- 기존의 시스템, 소프트웨어를 구성하는 컴포넌트를 조합하여 새로운 어플리케이션을 만드는 방법
애자일 방법론
🚩point : 요구사항
- Agile = 날렵한, 날쌘
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
- 요구사항이 자주 변화하는 프로젝트에 사용하는 것이 좋다.
잘못된 생각
올바른 생각
절차
요구사항 분석 후 우선순위가 높은 요구사항을 먼저 개발하고 개발된 부분에 대해 피드백을 받고 이를 반영해 다음 요구사항 개발에 참고하는 것을 반복하며 개발한다.
특징
- 고객과 개발자가 지속적으로 소통해서 변화하는 요구사항을 신속하게 수용함
- 고객의 의견을 가장 우선시함
- 팀원들과의 주기적인 회의 및 제품 시현하는 시간을 가진다.
장점
- 프로젝트 계획 시간이 최소화된다.
- 점진적으로 테스트할 수 있어서 버그를 빠르게 찾을 수 있다.
- 계획, 기능 수정에 유연하다.
단점
- 반복적인 유지보수 작업이 많다.
- 팀이 중심이 되는 개발방법이라서 공통 작업의 양이 많다.
- 계획이 확정된 상태로 개발하는 것이 아니라서 이해하지 못하고 진행하는 부분이 많을 수 있다.
종류
칸반
- 게시판을 구성 방식에 따라 구간을 나누어 작업의 현재 상태와 흐름을 시각적으로 보여주는 방법
- 프로젝트의 모든 참가자가 프로젝트의 진행상태를 확인 가능
- 기본적인 구성 방식은 계획, 진행중, 완료
- 진행 중인 일의 개수를 최소한으로 제한하는 것이 중요
TDD
- Test Driven Development(테스트 주도 개발)
- 구현 코드 작성 전에 테스트 코드를 작성한다.
- 코드의 확장성, 유지보수가 용이해진다.
BDD
- Behavior Driven Development(행위 주도 개발)
- 테스트 케이스가 요구항이 되도록 하는 개발 방식
- 함수단위 테스트보다는 시나리오 기반의 테스트 케이스 작성
스크럼
- 5~9명으로 구성된 소규모의 팀이 제품 개발을 하기 위해 스프린트(Sprint)를 반복한다.
- ❓스프린트 : 작업의 단위
- ❓스프린트 백로그 : 스프린트 각각의 작업 목록
- 스크럼 회의는 모든 팀원이 참가하고 짧게 진행하고 상황을 점검하는 시간
🙋♀️면접 질문
- 애자일 방법론은 무엇인가?
- 애자일하게 개발한 경험이 있는가?
출처
기술면접 - 애자일
스크럼과 애자일
회사에서 애자일하게 개발하는 법
애자일이란