소프트웨어 개발 방법론
소프트웨어의 개발과 유지보수 과정에서 필요한 작업 절차, 기법, 도구 등을
체계적으로 정리하여 표준화한 개발 절차 및 원칙을 의미
- 목적
- 소프트웨어의 생산성과 품질을 향상시키는 것
- 개발 과정의 일관성 확보, 재사용성 향상, 효율적인 프로젝트 관리를 가능하게 함
주요 소프트웨어 개발 방법론 종류
- 구조적 방법론
- 절차 중심
- 논리적 절차에 따라 기능을 구조적으로 분석
- 정보공학 방법론
- 데이터 중심
- 데이터 구조를 기반으로 시스템 개발
- 객체지향 방법론
- 객체 중심
- 현실 세계를 객체로 모델링하여 재사용성 극대화
- 컴포넌트 기반(CBD) 방법론
- 컴포넌트 조합 중심
- 독립된 컴포넌트를 조립하여 시스템 구성
- 제품 계열 방법론
- 공통 자산 중심
- 유사 제품군을 효율적으로 개발
- 애자일 방법론
- 협업·유연성 중심
- 신속한 개발과 지속적인 피드백 중시
구조적 방법론
정형화된 절차에 따라 요구사항을 분석하고 문서화하는 처리 중심의 개발 방법론
- 처리 중심(기능 중심)의 방법론
- 분할과 정복(Divide and Conquer) 원리 적용 → 복잡한 문제를 세분화하여 해결
- 쉬운 이해와 검증이 가능한 코드 생성이 목적
구조적 방법론 개발 절차
정보공학 방법론
정보 시스템 개발을 위해 데이터(Data) 중심으로 계획, 분석, 설계, 구축 과정을 통합 적용한 방법론
- 데이터 중심 접근
- 대규모 정보시스템 구축에 적합
- 상호 연관성 있는 개발 절차로 관리 용이
- 시스템 전체의 데이터 구조를 우선 정의
정보공학 방법론 개발 절차
객체지향 방법론
현실 세계의 개체(Entity)를 하나의 객체로 모델링하여
객체 간 상호작용을 통해 소프트웨어를 개발하는 방법론
- 구조적 기법의 한계를 극복하기 위해 등장
- 객체를 조립하듯이 소프트웨어를 구성(부품화, 재사용성 향상)
- 유지보수 용이성, 확장성, 재사용성 우수
- UML을 통한 시각적 모델링 가능
- 구성 요소
- 객체 : 데이터와 기능을 묶은 단위
- 클래스 : 객체의 속성과 연산을 정의한 틀
- 메시지 : 객체 간의 상호작용 수단
- 기본 원칙
- 캡슐화 : 데이터와 기능을 하나로 묶음
- 정보 은닉 : 외부에서 내부 구현을 숨김
- 추상화 : 공통된 특징만을 표현
- 상속성 : 상위 클래스의 특성을 하위 클래스가 상속
- 다형성 : 같은 메시지에 대해 서로 다르게 반응
객체지향 방법론 개발 절차
컴포넌트 기반(CBD; Component Based Design)
기존 시스템의 컴포넌트(독립된 모듈)를 조합하여 새로운 애플리케이션을 만드는 방법론
- 컴포넌트 재사용 가능 → 개발 시간과 비용 절감
- 유지보수 용이, 품질 향상, 확장성 우수
- 새로운 기능 추가가 용이
- 대규모 시스템 통합에 적합
컴포넌트 기반 개발 절차
재사용이 가능한 독립적 모듈로, 명확한 인터페이스를 통해 통신하며 시스템을 구성하는 단위
제품 계열 방법론
공통된 기능을 여러 제품에 재사용할 수 있도록 개발하는 방법론
- 제품군 단위의 개발에 적합
- 임베디드 소프트웨어 개발에 주로 사용
- 공통된 핵심 자산을 재활용하여 효율적인 개발 가능
- 영역공학과 응용공학으로 구분
- 영역공학
- 공통 자산(기능, 구조)을 정의하고 개발
- 영역 분석, 영역 설계, 핵심 자산을 구현
- 응용공학
- 공통 자산을 활용해 실제 제품 개발
- 제품 요구 분석, 제품 설계, 제품을 구현
정리
- 소프트웨어 개발 방법론의 목적은 생산성과 품질의 향상
- 구조적 방법론은 절차 중심, 정보공학 방법론은 데이터 중심
- 객체지향 방법론은 캡슐화·상속·다형성을 기본 원리로 함
- 컴포넌트 기반 방법론은 컴포넌트 재사용으로 생산성 향상에 기여함
- 제품 계열 방법론은 공통된 기능을 여러 제품에 재사용하는 방식으로 임베디드 시스템에 적합함