소프트웨어 개발 방법론
개요
- 목적: 소프트웨어의 생산성과 품질 향상
- 종류: 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일(Agile) 방법론, 제품 계열 방법론이 있다.
구조적 방법론 - 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 복잡한 문제를 다루기 위해 분할과 정복 원리를 적용
정보공학 방법론 - 정보 시스템의 개발을 위해 상호 연관성 있게 통합 및 적용하는
자료 중심
의 방법론 - 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합
객체지향 방법론 - 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 기본 원칙: 캡슐화, 정보 은닉, 추상호, 상속성, 다형성 등이 있다.
컴포넌트 기반 - 컴포넌트를 조합하여 하나의 새로운 어플리케이션을 만드는 방법론.
- 컴포넌트의 재사용이 가능하여 시간과 노력을 절감, 유지 보스 비용 최소화, 생산성 및 품질을 향상시킬 수 있다.
애자일(Agile) 방법론 - 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 개발을 진행하는 방법론
- 소규모 프로젝트, 급변하는 요구사항에 적합하다.
제품 계열 방법론 - 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론.
- 임베디드 소프트웨어를 만드는데 적합하다.
- 영역공확과 응용공학으로 구분된다.
비용 산정 기법
소프트웨어 비용 결정 요소
- 프로젝트 요소
- 제품 복잡도: 문제점들의 난이도
- 시스템 크기: 규모에 따른 개발 시스템의 크기
- 요구되는 신뢰도: 프로그램이 필요한 기능을 수행하는 정도
자원 요소
- 인적 자원: 소프트웨어 개발 관련자들이 갖춘 능력 혹은 자질
- 하드웨어 자원: 필요한 장비와 보조 장비들
- 소프트웨어 자원: 언어 분석기, 문서화 도구 등의 개발 지원 도구
생산성 요소
- 개발자 능력: 개발자들의 지식, 경험, 실력 등
- 개발 기간
하향식 비용 산정 기법 - 과거의 경험을 바탕을 개발자들이 회의를 통해 비용을 산정(비과학적)
- 전문가 감정 기법: 두 명 이상의 전문가에게 비용 산정을 의뢰
- 가장 편리하고 신속하게 비용 산정 가능
- 개인적이고 주관적
- 델파이 기법: 전문가 감정 기법의 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 한 명의 조정자와 여러 전문가로 구성
상향식 비용 산정 기법
- 한 명의 조정자와 여러 전문가로 구성
- 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정
- LOC(원시 코드 라인 수) 기법: 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정
- 개발 단계별 인월수(Effort Per Task) 기법: LOC 기법을 보완, 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정.
수학적 산정 기법(상향식 비용 산정 기법)
- 경험적 추정 모형, 실험적 추정 모형이라고도 불림, 개발 비용 산정의 자동화를 목표
- COCOMO 모형, Putnam 모형, 기능 점수(FP) 모형 등이 존재
COCOMO 모형 - 보헴이 제안함, LOC에 의한 비용 산정 기법.
- 조직형(5만KDSI), 반분리형(30만KDSI 이하), 내장형(30만KDSI 이상)로 유형이 나뉜다.
- 모형의 종류
- 기본(Basic)형 COCOMO: 소프트웨어의 크기 + 개발 유형만을 이용하여 비용 산정
- 중간(Intermediate)형 COCOMO: 기본형을 토대로 4가지 특성(제품, 컴퓨터, 개발 요원, 프로젝트)의 요인에 의해 비용을 산정
- 발전(Detailed)형 COCOMO: 중간형을 보완하여 만들어짐, 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정하는 모형
PutNam 모형
- Putnam이 제안, 생명 주기 예측 모형이라고도 불림
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함.
- 대형 프로젝트의 노력 분포 산정에 사용
- 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
기능 점수(FP) 모형
- 알브레히트(Albrecht)가 제안 , 소프트웨어의 기능을 증대시키는 용인별로 가중치 부여
- 요인별 가중치를 합산해 총 기능 점수를 산출, 총 기능 점수와 영향도를 이용해 기능 점수를 구현 후 이를 이용해 비용을 산정하는 기법.
자동화 추정 도구(비용 산정의 자동화를 위해 개발된 도구) - SLIM: Rayleigh-Norden 곡선과 Putnam 에측 모델을 기초로 하여 개발된 자동화 추정 도구. - ESTIMACS: FP 모형을 기초로 하여 개발된 자동화 추정 도구.
소프트웨어 개발 표준
개요
- 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
- ISO/ISE 12207, CMMI, SPICE etc.
ISO/IEC 12207
- ISO에서 만든 표준 소프트웨어 생명 주기 프로세스로, 소프트웨어의 개발, 운영, 유지보스 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준을 제공
- 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지보수 프로세스
- 지원 생명 주기 프로세스: 품질 보증, 검증, 확인, 활도 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
- 조직 생명 주기 프로세스: 관리, 기반 구조, 훈련, 개선 프로세스
CMMI(능력 성숙도 통합 모델) - 개발 조직의 업무 능력 및 조직의 성숙도를 평가, 카네기멜론 대학의 소프트웨어 공학연구소(SEI)에서 개발
-
초기, 관리, 정의, 정랼적 관리, 최적화 5단계로 구분
SPICE(Software Process Improvement and Capability dEtermination) - 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준, 공식 명칭은 ISO/IEC 15504
- 목적: 프로세스 개선을 위해 개발 기관이 스스로 평가,
- 5개의 프로세스 범주와 40개의 세부 프로세스로 구성
- 수행, 관리, 확립, 예측, 최적화의 6단계 프로세스 수행 능력 단계로 구분
소프트웨어 개발 프레임워크
개요
- 소프트웨어 개발에 공통적으로 사용디는 구성 요소와 아키텍처르 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
- 주요 기능: 예외 처리, 트랜잭션 처리, 메모리 공유, 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 etc.
- 종류: 스프링, 전자정부, 닷넷 프레임워크 등이 존재
스프링 프레임워크 자바
플랫폼- 동적인 웹 사이트의 개발을 위한 서비스 제공
- 전자정부 표준 프레임워크의 기반 기술
전자정부 프레임워크 - 나라의 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처 제공
닷넷 프레임워크 - Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크, MS 사에서 개발함
- 코드 실행을 관리하는 CLR(Common Language Runtime, 공용 언어 런타임)이라는 이름의 가상머신 상에서 동작