5. 정보시스템 구축 관리 - 소프트웨어 개발 방법론 활용(소프트웨어 개발 방법론 ~ 수학적 산정 기법)

165. 소프트웨어 개발 방법론 (Software Development Methodology)

: 소프트웨어의 개발, 유지보수 등에 필요한 여러 작업의 수행 방법과 수행 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것

  • 목적 : 소프트웨어의 생산성과 품질 향상

 

1) 소프트웨어 개발 방법론의 종류

1. 구조적 방법론 (Structured Methodology)

: 정형화된 분석 절차에 따라 사용자 요구 사항을 파악해 문서화하는 처리(Process) 중심의 방법론

타당성 검토 계획 요구 사항 설계 구현 시험 운용 및 유지보수
  • 1960대까지 가장 많이 적용된 방법론
  • 목적 : 쉬운 이해 및 검증이 가능한 코드 생성
  • 분할 정복 원리 (Divide & Conquer) : 크고 복잡한 문제를 작은 문제들로 분할하여 해결해 나가는 방식

 

2. 정보공학 방법론 (information engineering methodology)

: 정보 시스템의 개발을 위해 각 개발 단계의 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 데이터 중심의 방법론

정보 전략 계획 수립 업무 영역 분석 업무 시스템 설계 업무 시스템 구축
  • 대규모 정보 시스템 구축에 적합한 방법론

 

3. 객체 지향 방법론 (Object Oriented Methodology)

: 현실 세계의 개체들을 객체로 만들고, 이 객체들을 조립하여 필요한 소프트웨어를 구현하는 방법론

요구 분석 설계 구현 테스트 및 검증 인도
  • 구조적 방법론의 문제점에 대한 해결책으로 채택
  • 구성 요소 : 객체(Entity), 클래스(Class), 메시지(Message)
  • 기본 원칙 : 캡슐화(Encaptulation), 정보 은닉(Information Hiding), 추상화(Abstraction), 상속(Inheritance), 다형성(Polymorphism)

※ 객체 지향 프로그래밍의 구성 요소와 기본 원칙

 

4. 프로그래밍 언어 활용 - 프로그래밍 언어 활용(절차적 언어, 객체 지향 언어 , 스크립트 언어,

141. 절차적 프로그래밍 언어 (Procedural Programming Language) : 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어 - 특징 프로그램이 실행되는 절차를 중요시 데이터를 중심으로 프로시

catisstudying.tistory.com

 

4. 컴포넌트 기반 방법론 (Component Based Design Methodology)

: 기존의 시스템, 소프트웨어를 구성하는 컴포넌트를 조합해 새로운 애플리케이션을 만드는 방법론

개발 준비 분석 설계 구현 테스트 전개 인도
  • 컴포넌트의 재사용 가능 -> 시간과 노력 절감
  • 확장성 보장 : 새로운 기능 추가가 간단함
  • 유지 보수 비용 최소화
  • 생산성 및 품질 향상

 

5. 애자일 방법론 (Agile Methodology)

: 고객의 요구 사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론

사용자 스토리 계획 개발 승인 테스트
↑__________________반복 주기________________|          
  • 소규모 프로젝트, 요구사항이 급변하는 프로젝트, 숙련된 개발자가 있는 프로젝트에 적합한 방법론
  • ex) 익스트림 프로그래밍(XP; eXtreme Programming), 스크럼(Scrum), 크리스탈(Crystal), 칸반(Kanban), etc.

 

6. 제품 계열 방법론 (Product Line Methdology)

: 특정 제품에 적용하고자 하는 공통된 기능을 정의하여 개발하는 방법론

  • 임베디드 소프트웨어 제작에 적합한 방법론
  • 영역 공학과 응용 공학으로 구분
    • 영역 공학 : 영역을 분석, 설계하여 핵심 자산을 구현하는 공학
    • 응용 공학 : 제품의 요구를 분석하고 설계하여 제품을 구현하는 공학
    • 영역 공학과 응용 공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요

166. 소프트웨어 공학의 발전 추세

1) 소프트웨어 재사용 (Software Reuse)

: 이미 개발되어 인정 받은 소프트웨어의 전체나 일부분을 다른 소프트웨어의 개발이나 유지에 사용하는 것

  • 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법
  • 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
  • 이점
    • 개발 시간 및 비용 단축
    • 소프트웨어 품질 향상
    • 개발 생산성 향상
    • 프로젝트 실패 위험 감소
    • 시스템 구축 방법에 대한 지식 공유
    • 시스템 명세, 설계, 코드 등의 문서 공유

 

- 소프트웨어 재사용 방법

  • 합성 중심 (Composition-Based) : 소프트웨어 부품(블록, 모듈)을 만들어 끼워 맞춰서 소프트웨어를 완성시키는 방법 
    • 블록 구성 방법이라고도 함
  • 생성 중심 (Generation-Based) : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
    • 패턴 구성 방법이라고도 함

 

2) 소프트웨어 재공학 (Software Reengineering)

: 새로운 요구에 맞도록 기존 시스템을 이용해 더 나은 시스템을 구축하고, 새로운 기능을 추가해 소프트웨어 성능을 향상시키는 것

  • 유지 보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제 해결
  • 기존 소프트웨어의 데이터, 기능들을 개조 및 개선 -> 예방 유지 보수 측면의 해결법
  • 자동화된 도구를 통해 소프트웨어를 분석하고 수정하는 과정을 포함
  • 이점
    • 유지 보수 생산성 및 품질 향상
    • 소프트웨어 개발 기간 단축 및 수명 연장
    • 소프트웨어 기술 향상
    • 오류 발생 감소 및 비용 절감

 

3) CASE (Computer Aided Software Engineering)

: 소프트웨어 개발 과정의 전체나 일부를 컴퓨터와 전용 소프트웨어 도구를 이용해 자동화하는 것

  • 자동화 도구 (CASE Tool) : 소프트웨어 공학과 관련된 작업 중 하나를 자동화하는 패키지
    • 상위 CASE 도구 : 요구 분석 및 설계 과정 지원
    • 하위 CASE 도구 : 구현 및 테스트 과정 지원
  • 구조적 시스템, 객체 지향 시스템 등 다양한 시스템에서 활용
  • 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합한 소프트웨어 개발 환경 조성
  • 자동화 도구를 이용해 공통 모듈을 사용하고 모듈 관리가 가능 -> 재사용성 향상, 유지 보수 간편화
  • 소프트웨어 개발 도구와 방법론의 결합 -> 정형화된 구조 및 방법을 개발에 적용하여 생산성 향상을 구현하는 공학 기법
  • 주요 기능 
    • 소프트웨어 생명 주기 전 단계의 연결 및 자동화
    • 다양한 개발 모형 지원
    • 그래픽 지원
    • 모델의 모순 검사 및 오류 검증
    • 자료 흐름도 작성
    • etc.
  • 원천 기술 : 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산 처리

167. 소프트웨어 비용 산정 기법

: 필요한 인원, 자원, 기간 등을 통해 소프트웨어 개발 규모를 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것 

  • 비용을 너무 높게 산정할 경우 예산 낭비와 작업 효율성 저하 초래
  • 비용을 너무 낮게 산정할 경우 개발자 부담 가중, 품질 문제 발생 가능
  • 하향식 비용 산정 기법과 상향식 비용 산정 기법이 존재

 

1) 소프트웨어 비용 결정 요소

: 개발하는 소프트웨어, 개발에 투입되는 자원, 소프트웨어의 생산성에 따라 결정

 

1. 프로젝트 요소

  • 제품 복잡도 : 소프트웨어 종류에 따라 발생 가능한 문제점들의 난이도
  • 시스템 크기 : 개발해야 할 시스템의 크기
  • 요구되는 신뢰도 : 일정 기간 내 주어진 조건 하에서 프로그램이 필요한 기능을 수행하는 정도

 

2. 자원 요소

  • 인적 자원 : 개발 관련자들의 능력이나 자질
  • 하드웨어 자원 : 개발 시 필요한 장비와 보조 장비 ex) 워드 프로세서, 프린터, etc.
  • 소프트웨어 자원 : 개발 시 필요한 개발 지원 도구 ex) 언어 분석기, 문서화 도구, etc.

 

3. 생산성 요소

  • 개발자 능력 : 개발자들이 갖춘 전문 지식, 경험, 이해도, 책임감, 창의력 등
  • 개발 기간 : 소프트웨어 개발에 소모되는 기간

168. 하향식 비용 산정 기법

: 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들의 회의롤 통해 비용을 산정하는 비과학적 기법

  • 프로젝트의 전체 비용을 산정한 후 각 작업별로 비용을 세분화
  • ex) 전문가 감정 기법, 델파이 기법, etc.

 

- 전문가 감정 기법

: 조직 내의 경험이 많은 전문가 두 명 이상이 비용을 산정하는 방법

  • 가장 편리하고 신속한 방법
  • 비용 산정 의뢰자로부터 믿음을 얻을 수 있음
  • 과거 프로젝트들과는 다른 새 프로젝트의 요소를 간과할 수 있음
  • 개인적, 주관적 방법

 

- 델파이 기법

: 전문가 감정 기법의 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합해 비용을 산정하는 기법

  • 한 명의 조정자와 다수의 전문가로 구성된 그룹이 협의를 통해 비용을 산정
  • 산정 과정
    1. 조정자는 산정 요원(전문가)들에게 시스템 정의서와 비용 내역을 기록할 서식을 제공
    2. 산정 요원들은 정의서를 분석하여 산정한 비용을 익명으로 제출
    3. 조정자는 수집한 비용 내역에 대한 요원들의 반응을 요약하여 배포
    4. 산정 요원들은 산정 결과와 반응을 검토하여 다시 산정한 비용을 익명으로 제출
    5. 요원들 간의 의견이 거의 일치할 때까지 위 과정을 반복

169. 상향식 비용 산정 기법

: 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 이를 집계하여 전체 프로젝트의 비용을 산정하는 기법

  • ex) 원시 코드 라인 수(LOC) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법, etc.

 

1) 원시 코드 라인 수(LOC; source Line Of Code) 기법

: 소프트웨어 각 기능의 원시 코드 라인 수에 대해 계산한 예측치를 통해 비용을 산정하는 기법

  • 측정이 용이하고 이해가 쉬워 가장 많이 이용
  • 예측치 계산 방법
    • 낙관치 : 가장 적게 측정된 코드 라인 수
    • 비관치 : 가장 많이 측정된 코드 라인 수
    • 기대치 : 측정된 모든 코드 라인 수의 평균

  • 계산된 예측치를 통해 생산성, 노력, 개발 기간 등의 비용 산정
    • 노력(인월, Man Month) = 개발 기간 X 투입 인원 (= LOC ÷ 1인당 월 평균 생산 코드 라인 수)
    • 개발 비용 = 노력 X 단위 비용(1인당 월 평균 인건비)
    • 생산성 = LOC ÷ 노력

 

2) 개발 단계별 인월 수 (Effort Per Task) 기법

: LOC 기법을 보완하여 각 기능을 구현하는 데 필요한 노력을 소프트웨어 생명 주기의 각 단계별로 산정하는 기법


170. 수학적 산정 기법

: 과거의 유사한 프로젝트를 통해 경험적으로 유도된 수학 공식을 통해 자동으로 개발 비용을 산정하는 기법

  • 경험적, 실험적 추정 모형
  • ex) COCOMO 모형, Putnam 모형, 기능 점수 모형, etc.

 

1) COCOMO (COnstructive COst MOdel) 모형

: 원시 프로그램의 규모인 LOC에 의한 비용 산정 기법

  • 베리 W. 보헴(bohem)이 제안한 모형
  • 개발할 소프트웨어의 규모를 LOC로 예측한 뒤 이를 비용 산정 방정식에 대입하여 비용을 산정
  • 같은 규모의 프로그램이라도 소프트웨어의 종류와 성격에 따라 비용이 다르게 산정
  • 비용 산정 결과는 프로젝트 완성에 필요한 노력(Man Month)로 나타남
  • 비용 견적의 강도 분석 및 유연성이 높음

 

- 소프트웨어 개발 유형

: COCOMO 모형은 소프트웨어의 복잡도, 원시 프로그램의 규모에 따라 유형을 나누어 비용을 다르게 산정

 

1. 조직형 (Organic Mode)

: 기관 내부에서 개발된 중소규모의 소프트웨어로, 5만 라인(5KDSI) 이하의 소프트웨어를 개발하는 유형

KDSI (Kilo Delivered Source Instruction)

: 전체 원시 코드 라인 수를 1,000라인 단위로 묶은 것 (== 1000LOC, == 1KLOC)

 

  • 자료 처리, 사무 처리, 업무, 과학 계산 등에 사용되는 응용 소프트웨어 개발에 적합
  • 비용 산정 공식

 

2. 반분리형 (Semi-Detached Mode)

: 조직형과 내장형의 중간 형태의 소프트웨어로, 30만 라인(300KDSI) 이하의 소프트웨어를 개발하는 유형

  • 컴파일러, 인터프리터 등의 유틸리티 개발에 적합
  • 비용 산정 공식

 

3. 내장형 (Embedded Mode)

: 초대형 규모의 소프트웨어로, 30만 라인(300KDSI) 이상의 소프트웨어를 개발하는 유형

  • 트랜잭션 처리 시스템, 운영체제, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
  • 비용 산정 공식

 

- COCOMO 모형의 종류

: 비용 산정 단계 및 적용 변수의 구체화 정도에 따라 COCOMO 모형을 구분

 

1. 기본형 (Basic) COCOMO

: 소프트웨어의 크기(LOC)와 개발 유형만을 이용해 비용을 산정하는 모형

  •  산정 공식
    • 개발 노력 (Effort, MM, PM) = a x KDSI^b (a, b는 소프트웨어 개발 유형에 따라 다름)
    • 개발 기간 (TDEV) = c x MM^d (c, d는 소프트웨어 개발 유형에 따라 다름)
    • 적정 투입 인원 (FPS) : MM / TDEV
    • 인적 비용 (COST) : MM x 1인당 월 평균 급여

 

2. 중간형 (Intermediate) COCOMO

: Basic COCOMO 공식을 토대로 하여 소프트웨어 개발의 네 가지 특성을 통해 비용을 산정하는 모형

  • 산정 공식
    • 개발 노력 (MM) = Basic COCOMO의 MM X 요인별 노력 승수 (요인별 노력 승수 : 특성별 요인에 따라 정해진 값)
    • 개발 기간, 적정 투입 인원, 인적 비용은 Basic COCOMO와 동일
  • 네 가지 특성별 비용 산정 요인
    • 제품의 특성 : 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도
    • 컴퓨터의 특성 : 수행 시간의 제한, 기억 장소의 제한, 가상 기계의 안정성, 반환 시간
    • 개발 요원 특성 : 분석가의 능력, 개발 분야의 능력, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍 언어의 경험
    • 프로젝트 특성 : 소프트웨어 도구의 이용, 프로젝트 개발 일정, 최신 프로그래밍 기법의 이용

 

3. 발전형 (Detailed) COCOMO

: Intermediate COCOMO를 보완하여 개발 공정별로 보다 자세하고 정확하게 노력을 산출해 비용을 산정하는 모형

  • 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 함
  • 개발 과정에 후반부에 주로 적용
  • 산정 공식 : Intermediate COCOMO의 산정 공식을 그대로 이용하되, 노력 승수를 다음과 같이 적용
    • 노력 승수 = 개발 공정별 노력 승수 X 개발 공정별 가중치

 

2) Putnam 모형

: 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정하는 모형

Rayleigh-Norden 곡선

  • 로렌스 H. 푸트남(Putnam)이 제안한 모형
  • 생명주기 예측 모형이라고도 함
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
  • 대형 프로젝트의 노력 분포 산정에 이용
  • 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
  • 산정 공식
    • L : 원시 코드 라인 수
    • Td : 개발 기간
    • Ck : 환경 상수 (빈약 = 2,000 / 좋음 = 8,000 / 최적 = 12,000)

 

3) 기능 점수 (Function Point) 모형

: 소프트웨어의 기능을 증대시키는 요인별 가중치를 합산하여 총 기능 점수를 산출하고 총 기능 점수와 영향도를 이용해 기능 점수를 계산해 비용을 산정하는 모형

  • 발표 초기에는 큰 관심을 얻지 못했으나 최근 유용성과 간편성을 인정 받음
  • 산정 공식

  • 기능별 가중치

 

※ 자동화 추정 도구

: 비용 산정의 자동화를 위해 개발된 도구

  • SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 개발된 추정 도구
  • ESTIMACS :  FP 모형을 기초로 개발된 추정 도구