소프트웨어 개발 방법론
From CS Wiki
소프트웨어 개발 방법론은 소프트웨어 공학 원리를 소프트웨어 개발 생명주기에 적용한 개념으로 정보시스템 개발을 위한 작업활동, 절차, 산출물, 기법 등을 체계적으로 정리한 것을 말한다.
종류[edit | edit source]
구분 | 구조적 | 정보공학 | 객체지향 | CBD |
---|---|---|---|---|
시기 | 1960년대 | 1980년대 | 1990년대 | 2000년대 |
특징 | 모듈화, 유지보수성 향상 | 기업업무 중심의 정보시스템 개발 최적화 | 실세계의 객체 모형을 반영 | 재사용성 및 효율성 극대화 |
주요 관점 | 프로세스 중심 | 데이터 중심 | 객체 중심 | 컴포넌트 중심 |
SDLC | 폭포수 모델 | 프로토타이핑 모델 | 반복적 모델 | 반복적 모델 |
개발 방식 | Top Down | Top Down | Bottom Up | Bottom Up |
구조적 방법론[edit | edit source]
정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 체계적인 방법으로 비즈니스 프로세스 자동화를 목표로 하고 있으며, 프로세스 중심의 개발 방법
- 특징
- 데이터 흐름 지향, 즉 프로세스 위주의 분석과 설계 방식
- 모듈의 분할과 정복에 의한 하향식 설계 방식
- SDLC의 구조를 가진 폭포수 모델이 기본
- 소프트웨어의 개발이 목표인 프로세스와 산출물의 구성
- 데이터의 구성에 대한 설계 방안이 부족
- 프로젝트 관리 및 조직, 역할 등 방법론적 다른 요소들의 정의가 없음
- 라이프사이클 : 폭포수 모델
- 개발방식 : TOP‐DOWN
- 단계별 산출물
- 계획 : 도메인 분석, 프로젝트 계획서 등
- 분석 : DFD(Data Flow Diagram) 등
- 설계 : Structure Chart, 프로그램 사양서 등
객체지향 방법론[edit | edit source]
분석, 설계 및 개발에 있어서 객체지향 기법을 활용하여 시스템을 구축하는 방법
- 특징
- 반복적이고 점증적인(Iterative and Incremental) 개발 방식
- 재사용성의 강조
- 쉽고 표준화된 표기법 존재
- 분산객체 기술의 완벽한 지원
- 분석 설계 및 구현 단계들 사이에 의미적 갭(semantic gap)이 작다
- 라이프사이클 : 반복적 개발
- 개발방식 : BOTTOM‐UP
- 단계
- 계획
- 주어진 문제 안에서 객체들을 발견하고 객체들의 상관관계를 분석
- 산출물: 비즈니스 프로세스, 개념 모델, 프로젝트 계획서 등
- 분석
- 산출물: 유즈케이스 다이어그램, 시퀀스 다이어그램, 클래스 다이어그램 등
- 설계
- 객체들을 클래스로 정의하고 상관관계를 상속 단계로 정의
- 산출물: 시퀀스 다이어그램, 클래스 다이어그램, 컴포넌트 다이어그램, 배포 다이어그램 등
- 구현
- 정의된 클래스들에 대해 특정언어를 이용하여 1:1로 정의
- 계획
CBD 방법론[edit | edit source]
재사용이 가능한 컴포넌트의 개발 또는 사용컴포넌트를 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 방법이다
- 특징
- 컴포넌트 기반 개발
- 반복 점진적 개발프로세스 제공
- 표준화된 산출물 작성, 컴포넌트 제작 기법을 통한 재사용성 향상
- 라이프사이클 : 반복적 개발
- 개발방식 : BOTTOM‐UP
- 단계별 산출물
- 계획 : 비즈니스 프로세스, 개념 모델, 프로젝트 계획서 등
- 분석 : 유즈케이스 다이어그램, 유즈케이스 명세서, 요구사항 추적표 등
- 설계 : 사용자 인터페이스 설계서, 컴포넌트 설계서, ERD 기술서, 데이터베이스 설계서 등