소프트웨어 개발방법론
Software Development Methodology
- 개발방법론: 어떻게 개발할지를 의미한다! SDLC의 전 과정에 영향을 준다.
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.
- 소프트웨어를 하나의 생명체로 간주하고, 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론이다.
1) 구조적 방법론
Structured Development
- 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 프로세스 중심의 하향식 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트를 사용한다.
나씨-슈나이더만 :: Nassi-Shneiderman
- 논리의 기술에 중점을 둔 도형식 표현방법
- 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현한다.
- 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합하다.
- 구성👇🏻
2) 정보공학 방법론
Information Engineering Development
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
(정보공학 방법론은 정보(데이터)를 기반으로! 구조적 방법론은 기능을 기반으로!)
- 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
Object-Oriented Development
- 객체라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
- 객체, 클래스, 메시지를 사용
4) 컴포넌트 기반 방법론
CBD; Component Based Development
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용프로그램을 작성하는 방법론
- 개발 기간 단축으로 인한 생산성 향상
- 새로운 기능의 추가가 쉽다.(확장성)
- 소프트웨어의 재사용이 가능하다.
Agile Development
Agile: 민첩하다.
- 개발과 함께 즉시 피드백을 받아서 유동적으로 개발한다.
- 절차보다는 사람이 중심이 되어, 변화에 유연하고 신속하게 적응하면서, 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
- 개발 기간이 짧고 신속하다.
- 폭포수(Waterfall)에 대비되는 방법론으로 최근 각광받고 있다.
6) 제품 계열 방법론
Product Line Development
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 작성하는 데 유용한 방법론이다.
(임베디드 소프트웨어: 하드웨어에 내장시키는 소프트웨어)
- 영역 공학과 응용 공학으로 구분한다.
- 영역 공학(Domain Engineering): 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
- 응용 공학(Application Engineering): 제품 요구분석, 제품 설계, 제품을 구현하는 영역