본 포스팅은 “프로세스 모델링 이해” 온라인 강의를 바탕으로 공부한 내용을 정리한 것입니다.
- SW 개발 방법론 정의 및 필요성
- 개발 방법론의 정의
- 개발 방법론의 필요성
- SW 개발 방법론 발전
- SW 개발 방법론의 발전
- 프로젝트에서의 적용
1. SW 개발 방법론 정의 및 필요성
개발 방법론의 정의
시스템을 개발하기 위한 활동 절차, 도구, 산출물, 기법 등을 체계적으로 정리한 것
개발 방법론의 필요성
- 품질보증의 기준 제공
- 프로젝트 계획 수립의 효율적인 길잡이 역할
- 위험 요소 분석을 위한 가이드
- 표준화를 통한 기술 축적/진화
- 의사소통의 기반
- 따라서
- 표준화, 모듈화, BP (Best Practice), 재활용을 통한 개발생산성 향상
- 정형화된 절차, 표준 용어를 이용한 효과적인 의사소통 수단
2. SW 개발 방법론 발전
SW 개발 방법론의 발전
1. 구조적 방법론
SW개발 방법론도 프로젝트에 적용되면서 지속적으로 변화해 왔다.
- 구조적 방법론
- 기능 분할을 활용한 업무 기능을 파악하여, 프로세스 중심으로 분석/설계하는 방법론.
대표 산출물은 Data Flow Diagram, Structure Chart
2. 정보공학 방법론
- 정보공학 방법론
- 기업 레벨의 프로세스와 데이터를 분석/설계하는 기법.
- 구조적 방법과의 차이점은 데이터 중심의 접근법을 통해 분석/설계를 진행하는 점.
대표 산출물은 업무기능분해도, ERD
3. 객체지향 방법론
- 객체지향 방법론
- 프로세스와 데이터를 포함하는 object단위의 분석/설계를 진행.
Object (객체) : 속성과 메소드가 결한된 형태
주요산출물은 Usecase Diagram, Sequence Diagram 등
4. CBD 방법론
- CBD 방법론 (Component Based Development)
- 컴포넌트 기반의 분석/설계를 진행하며 SW 유지보수성 및 높은 재사용성.
컴포넌트 : 특정기능을 수행하는 모듈로, 시스템에 종속적이지 않아 재사용 가능하고 교체가 가능한 단위.
주요산출물은 컴포넌트 명세서, Interface Diagram 등
5. SOA (Service Oriented Architecture) 방법론
- SOA
- 외부 제공 및 재사용 가능한 업무 프로세스 기반 서비스 단위의 분석/설계.
프로세스 중심에서 프로세스와 데이터 중심으로,
프로세스와 데이터를 포함하는 객체단위에서 컴포넌트 단위, 외부 제공 가능한 서비스 단위까지 발전해왔다.
프로젝트에서의 적용
1. Monolithic AApplication
- 초기 SW개발시의 모습. 하나의 Application 영역과 DB 영역을 관리하는 형태.
- 유사한 성격의 logic이 여기저기 흩어져 있고, DB와의 연결관계도 스파게티처럼 연결됨.
- logic의 변경/삭제 발생시 범위 파악과 수정이 어렵고 전반적으로 관리가 어려움.
- 하나의 프로세스로 운영되다 보니 서비스 반영을 위해서 한번에 빌드/배포해야 하는 어려움.
- 서비스 on/off시 모든 서비스를 이용할 수 없는 일괄장애 상태의 문제점 발생.
2. Internally Componentized Application
- 관리의 규모와 SW복잡성이 증가하며 Monolithic Application에서 진화.
- 모듈화, CBD, SOA 등의 방법으로 거대한 하나의 Application의 논리적 분리 진행.
- 유사한 연결성이 높은 logic들 그룹화하여 관리.
- 공공, 금융 등의 아웃소싱 프로젝트 대부분에서 해당 구조 채택.
- 논리적 분리의 한계점 발생, 스파게티 logic 여전히 존재하여 서비스 장애와 빌드/배포에서 문제 발생.
3. Microservice Architecture (MSA)
- MSA는 서비스별로 application과 DB를 분리, 각 프로세스로 실행되는 형태.
- 서비스 분할시에는 업무중심으로 분할됨.
- MSA는 물리적 분리를 반영, 장애 발생시 다른 서비스들의 중단없이 제공 가능, 빌드/배포 용이.
4. 최적의 방법론은?
가장 좋은 방법론이란 타 사이트가 했다, 최신이라 적용했다가 아닌,
관리의 규모와 복잡성에 따라, 현행시스템의 문제점과 해결의 관점에 따라,
각각의 상황에 맞는 방법론을 선택 적용할 것.