SW
[2020 정보처리기사 필기] 소프트웨어 개발 방법론 활용 (1) 본문
157. 소프트웨어 개발 방법론 ★★★
1. 소프트웨어 개발 방법론의 개요
- 소프트웨어 개발 방법론은 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것이다.
- 소프트웨어 개발 방법론의 목적은 소프트웨어의 생산성과 품질 향상이다.
- 소프트웨어 개발 방법론의 종류에는 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일(Agile) 방법론, 제품 계열 방법론 등이 있다.
2. 구조적 방법론
- 구조적 방법론은 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Process) 중심의 방법론이다.
- 쉬운 이해 및 검증이 가능한 프로그램을 생성하는 것이 목적이다.
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용한다.
- 구조적 방법론의 절차
- 타당성 검토 -> 계획 -> 요구사항 -> 설계 -> 구현 -> 시험 -> 운용/유지보수
3. 정보공학 방법론
- 정보공학 방법론은 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료중심의 방법론이다.
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합하다.
- 정보공학 방법론의 절차
- 정보 전략 계획 수립 단계 -> 업무 영역 분석 단계 -> 업무 시스템 설계 단계 -> 업무 시스템 구축 단계
4. 객체지향 방법론
- 객체지향 방법론은 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론이다.
- 객체지향 방법론은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었다.
- 구성 요소에는 객체(Object), 클래스(Class), 메시지(Message) 등이 있다.
- 기본 원칙에는 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등이 있다.
- 객체지향 방법론의 절차
- 요구 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 및 검증 단계 -> 인도 단계
5. 컴포넌트 기반(CBD; Component Based Design) 방법론
- 컴포넌트 기반 방법론은 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다.
- 컴포넌트의 재사용이 가능하여 시간과 노력을 절감할 수 있다.
- 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있다.
- 컴포넌트 기반 방법론의 절차
- 개발 준비 단계 -> 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 전개 단계 -> 인도 단계
6. 애자일(Agile) 방법론
- 애자일 방법론은 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론이다.
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합하다.
- 애자일 방법론의 대표적인 종류로는 익스트림 프로그래밍(XP), 스크럼(Scrum), 칸반(Kanban), 크리스탈(Crystal) 등이 있다.
- 애자일 방법론의 절차
- 사용자 스토리 -> (계획 -> 개발 -> 승인 테스트)(반복)
7. 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법
- 임베디드 소프트웨어를 만드는데 적합
- 제품 계열 방법론은 영역공학과 응용공학으로 구분된다.
- 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역이다.
- 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역이다.
- 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요하다.
핵심
- 구조적 방법론 : 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화
- 정보공학 방법론 : 대규모 정보 시스템 구축하는데 적합
- 객체지향 방법론 : 개체, 객체를 조립
- 컴포넌트 기반 방법론 : 컴포넌트를 조합, 재사용 가능
- 애자일 방법론 : 고객의 요구사항 변화에 유연하게 대응(익스트림 프로그래밍, 스크럼, 크리스탈)
- 제품 계열 방법론 : 공통된 기능을 정의하여 개발, 임베디드 소프트웨어 만드는데 적합
158. 비용 산정 방법 ★★★
1. 소프트웨어 비용 산정의 개요
- 소프트웨어 비용 산정은 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것이다.
- 하향식 비용 산정 기법과 상향식 비용 산정 기법이 있다.
2. 소프트웨어 비용 결정 요소
- 소프트웨어 비용은 개발하는 소프트웨어, 소프트웨어 개발에 투입되는 자원, 소프트웨어 생산성에 따라 결정된다.
- 소프트웨어 비용을 결정하는 요소에는 프로젝트 요소, 자원 요소, 생산성 요소가 있다.
- 프로젝트 요소
- 제품 복잡도 : 소프트웨어의 종류에 따라 발생할 수 있는 문제점들의 난이도를 의미
- 시스템 크기 : 소프트웨어의 규모에 따라 개발해야 할 시스템의 크기를 의미
- 요구되는 신뢰도 : 일정 기간 내 주어진 조건하에서 프로그램이 필요한 기능을 수행하는 정도를 의미
- 자원 요소
- 인적 자원 : 소프트웨어 개발 관련자들이 갖춘 능력
- 하드웨어 자원 : 개발 시 필요한 장비와 워드프로세서, 프린터 등의 보조 장비
- 소프트웨어 자원 : 언어 분석기, 문서화 도구 등의 개발 자원 도구
- 생산성 요소
- 개발자 능력
- 개발 기간
핵심
- 프로젝트 요소 : 제품 복잡도, 시스템 크기, 요구되는 신뢰도
- 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원
- 생산성 요소 : 개발자 능력, 개발 기간
159. 비용 산정 기법 - 하향식 ★★★
1. 하향식 비용 산정 기법의 개요
- 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
- 프로젝트의 전체 비용을 산정한 후 각 작업별로 비용을 세분화
- 전문가 감정 기법, 델파이 기법 등이 있다.
2. 전문가 감정 기법
- 조직 내에 경험 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 가장 편리하고 신속하게 비용 결정 가능
- 새로운 프로젝트에는 과거의 프로젝트와 다른 요소들이 있다는 것을 간과할 수도 있음
- 새로운 프로젝트와 유사한 프로젝트에 대한 경험이 없을 수 있다.
- 개인적이고 주관적일 수 있다.
3. 델파이 기법
- 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 전문가들의 편견이나 분위기에 지배되지 않도록 한 명의 조정자와 여러 전문가로 구성된다.
- 비용 산정 순서
- 조정자는 각 비용 산정 요원에게 시스템 정의서와 산정한 비용 내역을 기록할 서식을 제공한다.
- 산정 요원들은 정의서를 분석하여 익명으로 그들 나름대로의 비용을 정한다.
- 조정자는 산정 요원들의 반응을 요약하여 배포
- 산정 요원들은 이전에 산정한 결과를 이용해 다시 익명으로 산정
- 요원들 간의 의견이 거의 일치할 때까지 이 과정을 반복
핵심
- 하향식 비용 산정 기법 : 전문가 감정 기법(주관적), 델파이 기법(전문가 감정 기법의 단점을 보완)
- 전체 비용을 산정한 후 각 작업별로 비용을 세분화
160. 비용 산정 기법 - 상향식 ★★★
1. 상향식 비용 산정 기법의 개요
- 상향식 비용 산정 기법은 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법이다.
- LOC(원시 코드 라인 수)기법, 개발 단계별 인월수 기법, 수학적 산정 기법 등이 있다.
2. LOC(원시 코드 라인 수, source Line Of Code) 기법
- LOC 기법은 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법이다.
- 측정이 용이하고 이해하기 쉬워 가장 많이 사용한다.
- 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정한다.
- 예측치 = (a + 4b + b)/6, a: 낙관치, b:비관치, m: 기대치(중간치)
- 산정 공식
- 노력(인월) = 개발 기간 x 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
- 개발 비용 = 노력(인월) x 단위 비용(1인당 월평균 인건비)
- 개발 기간 = 노력(인원) / 투입 인원
- 생산성 = LOC / 노력(인월)
3. 개발 단계별 인월수(Effort Per Task) 기법
- 개발 단계별 인월수 기법은 LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정한다.
- LOC 기법보다 더 정확하다.
핵심
- 상향식 비용 산정 기법 : LOC(원시 코드 라인 수)
- 노력 = 개발 기간 x 투입 인원
- 개발 비용 = 노력 x 단위 비용(1인당 월평균 인건비)
161. 수학적 산정 기법 ★★★
1. 수학적 산정 기법의 개요
- 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형 이라고도 하며, 개발 비용 산정의 자동화를 목표로 한다.
- 비용을 자동으로 산정하기 위해 사용되는 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것이다.
- 수학적 산정 기법에는 COCOMO 모형, Putnam 모형, 기능 점수(FP) 모형 등이 있으며 각 모형에서는 지정된 공식을 사용하여 비용을 산정한다.
2. COCOMO 모형 개요
- COCOMO(Constructive COst Model) 모형은 보헴(Bohem)이 제안한 것으로 원시 프로그램 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법이다.
- 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정한다.
- 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용되고 있다.
- 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정된다.
- 비용 산정 결과는 프로젝트를 완성하는 데 필요한 노력(Man-Month)으로 나타난다.
3. COCOMO의 소프트웨어 개발 유형
- 소프트웨어 개발 유형은 소프트웨어의 복잡도 혹은 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형을 분류할 수 있다.
- 조직형(Organic Mode)
- 조직형은 기관 내부에서 개발된 중소 규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스자료 처리용으로 5만(50KDSI)라인 이하의 소프트웨어를 개발하는 유형이다.
- 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합하다.
- 반분리형(Semi-Detached Mode)
- 반분리형은 조직형과 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI)라인 이하의 소프트웨어를 개발하는 유형이다.
- 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합하다.
- 내장형(Embedded Mode)
- 내장형은 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만(300KDSI)라인 이상의 소프트웨어를 개발하는 유형이다.
- 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합하다.
4. COCOMO 모형의 종류
- COCOMO는 비용 산정 단계 및 적용 변수의 구체화 정도에 따라 기본(Basic), 중간(Intermediate), 발전(Detailed)형으로 구분할 수 있다.
- 기본(Basic) 형 COCOMO
- 기본형 COCOMO는 소프트웨어의 크기와 개발 유형만을 이용하여 비용을 산정한다.
- 중간(Intermediate)형 COCOMO
- 중간형은 기본형의 공식을 토대로 사용하나, 다음 4가지 특성의 15가지 요인에 의해 비용을 산정하는 모형이다.
- 제품의 특성 : 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도
- 컴퓨터의 특성 : 수행시간의 제한, 기억장소의 제한, 가상 기계이 안정성, Turn Around Time
- 개발 요원의 특성 : 분석가의 능력, 개발 분야의 경험, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍 언어의 경험
- 프로젝트 특성 : 소프트웨어 두구의 이용, 개발 일정, 최신 기법 이용
- 발전(Detailed)형 COCOMO
- 발전형 COCOMO는 중간형 COCOMO를 보완하여 만들어진 방법으로 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정
- 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용
- 산정 공식 : 개발 공정별 노력 승수 X 개발 공정별 가중치
5. Putnam 모형
- Putnam 모형은 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해 주는 모형이다.
- 푸트남(Putnam)이 제안한 것으로 생명 주기 예측 모형이라고도 한다.
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
- 대형 프로젝트의 노력 분포 산정에 이용되는 기법
- 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소한다.
6. 기능 점수(FP) 모형
- 기능 점수(Function Point) 모형은 알브레히트(Albrecht)가 제안한 것으로, 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법이다.
- 발표 초기에는 관심을 받지 못했으나 최근에는 그 유용성과 간편성으로 비용 선정 기법 가운데 최선의 평가를 받고 있다.
- COCOMO나 Putnam 모형은 LOC 를 중심으로 비용을 산정하는데 반해 기능 점수 모형은 FP를 이용하여 비용을 산정한다.
7. 자동화 추정 도구
- 비용 산정의 자동화를 위해 개발된 도구로는 SLIM과 ESTIMACS가 있다.
- SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구이다.
- ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 자동화 추정 도구이다.
핵심
- COCOMO 모형 : 원시 프로그램 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법
- COCOMO의 소프트웨어 개발 유형 : 조직형(중소규모), 반분리형(조직형과 내장형의 중간), 내장형(최대형 규모)
- COCOMO 모형의 종류 : 기본형, 중간형(15가지 요인), 발전형(노력을 산출하여 비용)
- Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해 주는 모형, Rayleigh-Norden 곡선의 노력 분포도를 기초
- 기능 점수(FP) 모형 : 요인별로 가중치를 부여하고 그것을 토대로 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정
- 자동화 추정 도구 : SLIM(Putnam 모델 기초), ESTIMACS(FP 모형 기초)
'대학교 > 자격증' 카테고리의 다른 글
[2020 정보처리기사 필기] IT 프로젝트 정보시스템 구축 관리 (1) (0) | 2020.08.15 |
---|---|
[2020 정보처리기사 필기] 소프트웨어 개발 방법론 활용 (2) (0) | 2020.08.15 |
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (3) (0) | 2020.08.13 |
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (2) (0) | 2020.08.13 |
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (1) (0) | 2020.08.13 |