소프트웨어 개발에 필요한 반복적인 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것
수 많은 소프트웨어 실제 개발 과정을 정리하여 체계적인 분석을 통해 각각의 상황에 맞는 개발 방법을 정의한 이론
소프트웨어를 생산하는 데 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여
프로그래머들이 프로그래밍 개발과정에서 각 개인이 개발과정에서의 일관성을 유지하고
프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론
소프트웨어 방법론 구성 요소
1. 구조적 방법론
1970년대
절차 지향 소프트웨어 개발 방법론
제한된 구조에서 코드 생성 및 순차적 실행
프로세스 단위로 문제 해결 : 알고리즘 단위 구조( 순차, 선택, 반복 )로 코드 표현
과정
설명
1) 요구사항 분석
고객이 원하는 요구사항을 끌어내 명세화하는 것
2) 구조적 분석
고객이 원하는 기능/시스템환경/데이터를 종합하여 데이터 흐름도(Data Flow Diagram)를 작성
3) 구조적 설계
모듈 중심 설계 단계. 목적 : 재활용, 결합도를 낮춰 독립성을 높임
4) 구조적 프로그래밍
순차(Sequencing), 선택(Selection), 반복(Iteration)의 논리 구조 구성으로 프로그램 복잡성 최소화
※ DD ( Data Dictionary )
자료의 의미나 자료의 단위 및 값에 대한 사항을 정의하는 도구
DFD에 표현된 자료 저장소를 구체적으로 명시하기 위해 사용
※ DTD ( Data Flow Diagram )
각 기능을 최대한 상세화가 될 때까지 분할하여 표현한 구조
※ STD ( State Transition Diagram )
보통 어떤 상태에서 다른 상태로 변경되는 과정 및 해당 과정의 프로세스 명세
ex) 자판기 프로세스 STD
각 상태에서 어떤 기능이 실행되고 괄호 안 조건 만족에 따라 화살표 방향으로 상태 전이
※ Minispec ( Mini Specification )
쪼갤 수 없을 정도 까지의 기능으로 분리 후 명세 ( 구조 언어 사용하거나 N-S Chart 이용 )
ex) 웹 브라우저 오픈 시 위키피디아 로드 여부에 따른 기능 명세
- 구조 언어 명세법 -
IF open web browser IF wikipedia open = true THEN search for article ELSE click wikipedia link
- N-S Chart 명세법 -
구조적 개발 방법론 장점
정형화 / 체계화 : 명확한 요구사항을 추출하여 설계에 반영 가능
모듈화 : 효율적인 재사용 및 유지보수 가능
구조적 개발 방법론 한계
거시적 관점 인식 부족 : 방법론에 대한 다양한 시도를 하고 있지 않다는 뜻으로 단위적 프로젝트에서만 사용하는 추세
그 결과, 실제 사례 자료 부족으로 데이터 모델링 방법과 명확한 방법론적 지침이 미흡함
구조적 방법론 대표적 모델링 : 폭포수 모델
2. 정보 공학적 방법론
1980년대
정보시스템 > 경영정보시스템 ( MIS, Management Information System ) 진화
기업의 정보시스템 구축을 위해 계획/분석/설계 등 전 과정을 정형화 시킨 절차 및 방법론
과정 : 설계 및 구현 단계 ( 데이터 우선 개발 ) > 문제 영역 세분화 > Top-Down 방식 전개
빠른 결과물 확인이 가능하며 단순 S/W 개발이 아닌 기업의 경영전략에 초점을 둠
단계별 정리
1) ISP : 전사적인 전략과 시스템의 Align 단계 경영전략 분석 -> 현행 업무 프로세스 분석 -> 현행 시스템 분석/평가 -> 아키텍처 개발 -> 전략 계획 (우선 순위 도출) 2) BAA : ISP에서 수집된 자료를 기반으로 세부적으로 확장하는 단계 데이터 모델 다이어그램, 프로세스 분할 다이어그램, 프로세스/데이터 매트릭스 (CRUD 매트릭스) 3) BSD : 비지니스 시스템 설계 ERD, DFD 등의 비지니스 시스템 설계 4) SD : 시스템 설계를 기반으로 정보시스템을 구축하는 단계 연관분석, 물리적 데이터베이스 설계, 코딩등의 작업 수행
ISP
BAA
BSD
기술설계
구축
전환
운영
정보공학 방법론 장점
일관성 있고 통일된 정보시스템 구축 가능
데이터 중심 : 업무 절차 및 환경 변화에 유연
정보공학 방법론 한계
정보공학 방법론을 효과적으로 이행하기 위해서는 장시간이 소요됨
특정 사업 영역으로부터 독립된 시스템 개발 분야에서는 부적합
정보공학 방법론 대표적 모델링 : 프로토타입
3. 객체 지향 방법론
1990년대
프로그램을 객체와 객체간의 인터페이스 형태로 구성하기 위하여 문제 영역에서
객체, 클래스 간의 관계를 식별하여 설계 모델로 변환하는 방법론
분석과 설계, 구현의 전 과정을 객체 중심으로 개발
특징 : 추상화, 캡슐화, 정보은폐, 상속, 다형성
객체 지향 방법론 장점
사용자의 요구 사항 반영 및 모든 단계를 유기적으로 협력시킴
전체 프로세스 방향성 유지와 상속에 의한 재사용성 향상
현실 반영을 통한 분석 설계의 갭 최소화, 유지보수 용이함
객체 지향 방법론 한계
Software 기술 없이는 구현이 어려움
객체 지향 방법론 대표적 모델링 :
반복-점증적 모델 ( Iterative and Incremental )
4. CBD( Component Based Development ) 분석 방법론
※ 컴포넌트 : 인터페이스로 접근 가능하고 독립적인 기능을 수행하는 모듈로써 교체가 가능한 소프트웨어 부품
문제를 조각으로 나누어 각각 컴포넌트를 생성한 후, 다시 조합하는 재사용성에 초점을 둔 방식
재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 애플리케이션 개발
CD 단계
컴포넌트 개발 단계
도메인 분석 후 컴포넌트 대상 업무 선별 및 개발된 컴포넌트를 저장소에 입력
CBD 단계
개발된 컴포넌트를 사용하여 개발을 진행하는 단계
요구 분석 후 컴포넌트 기반으로 설계 후 필요한 컴포넌트를 저장소에서 찾아 조립하는 방식으로 프로그램 개발을 진행
CBD 분석 방법론 장점
생산성 및 품질 향상
시스템 유지보수 비용 최소화
CBD 분석 방법론 한계
높은 설계 및 개발 수준을 요구하는 컴포넌트 특성에 비해 턱없이 부족한 국내 기술
개발된 컴포넌트를 공유 및 활용할 수 잇는 유통 플랫폼이 미흡함
5. 애자일 방법론
기존 방법론들이 절차를 중시한 나머지 변화에 빠른 대응을 할 수 없는 단점 개선을 위해 등장
절차 < 사람 / 문서 < 소프트웨어 / 사전 계획 < 변화에 즉각 대응 / 계약, 협상 < 고객과의 협력
소프트웨어 개발 방법론
소프트웨어 개발 방법론
소프트웨어를 생산하는 데 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여
프로그래머들이 프로그래밍 개발과정에서 각 개인이 개발과정에서의 일관성을 유지하고
프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론
소프트웨어 방법론 구성 요소
1. 구조적 방법론
1970년대
※ DD ( Data Dictionary )
※ DTD ( Data Flow Diagram )
※ STD ( State Transition Diagram )
ex) 자판기 프로세스 STD
각 상태에서 어떤 기능이 실행되고 괄호 안 조건 만족에 따라 화살표 방향으로 상태 전이
※ Minispec ( Mini Specification )
ex) 웹 브라우저 오픈 시 위키피디아 로드 여부에 따른 기능 명세
- 구조 언어 명세법 -
IF open web browser IF wikipedia open = true THEN search for article ELSE click wikipedia link
- N-S Chart 명세법 -
구조적 개발 방법론 장점
구조적 개발 방법론 한계
구조적 방법론 대표적 모델링 : 폭포수 모델
2. 정보 공학적 방법론
1980년대
단계별 정리
1) ISP : 전사적인 전략과 시스템의 Align 단계
경영전략 분석 -> 현행 업무 프로세스 분석 -> 현행 시스템 분석/평가 -> 아키텍처 개발 -> 전략 계획 (우선 순위 도출)
2) BAA : ISP에서 수집된 자료를 기반으로 세부적으로 확장하는 단계
데이터 모델 다이어그램, 프로세스 분할 다이어그램, 프로세스/데이터 매트릭스 (CRUD 매트릭스)
3) BSD : 비지니스 시스템 설계
ERD, DFD 등의 비지니스 시스템 설계
4) SD : 시스템 설계를 기반으로 정보시스템을 구축하는 단계
연관분석, 물리적 데이터베이스 설계, 코딩등의 작업 수행
정보공학 방법론 장점
정보공학 방법론 한계
정보공학 방법론 대표적 모델링 : 프로토타입
3. 객체 지향 방법론
1990년대
객체 지향 방법론 장점
객체 지향 방법론 한계
객체 지향 방법론 대표적 모델링 :
반복-점증적 모델 ( Iterative and Incremental )
4. CBD( Component Based Development ) 분석 방법론
※ 컴포넌트 : 인터페이스로 접근 가능하고 독립적인 기능을 수행하는 모듈로써 교체가 가능한 소프트웨어 부품
CD 단계
CBD 단계
CBD 분석 방법론 장점
CBD 분석 방법론 한계
5. 애자일 방법론
애자일 방법론에 따른 개발 과정
단계별로 고객에게 소프트웨어 동작 시연 후 요구사항에 대한 피드백 수용이 포인트
애자일 방법론 대표적 모델 :
XP( eXtreme Programming ), SCRUM, FDD, Crystal 방법론
개발 방법론 선택 기준
프로젝트 특성 및 규모
프로젝트 참여자의 수준
가용 자원의 정도
요구사항의 명확도
위험도
출처:
https://yoo-hyeok.tistory.com/103
http://ko.wikipedia.org
https://m.blog.naver.com/seilius/130185981952
https://multicore-it.com/46
http://www.jidum.com/jidums/view.do?jidumId=18
'Knowledge' 카테고리의 다른 글