-
[정보처리기사] 5과목 정보시스템 구축 관리 : 1장. 소프트웨어 개발 방법론 활용정보처리기사 2022. 2. 17. 19:10728x90반응형
1. 소프트웨어 개발 방법론 ***
2. 비용 산정 기법 ***
3. 비용 산정 기법 - 하향식 ***
4. 비용 산정 기법 - 상향식 ***
5. 수학적 산정 기법 ***
6. 소프트웨어 개발 방법론 결정
7. 소프트웨어 개발 표준
8. 소프트웨어 개발 방법론 테일러링
9. 소프트웨어 개발 프레임워크1. 소프트웨어 개발 방법론 ***
소프트웨어 개발 방법론의 개요
- 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
- 목적은 소프트웨어의 생산성과 품질 향상
1) 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적
- 복잡한 문제를 다루기 위해 분할과 정복 원리를 이용함
2) 정보공학 방법론
- 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합함
3) 객체지향 방법론
- 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
- 구성 요소에는 객체, 클래스, 메시지 등이 있음
- 기본 원칙에는 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등이 있음
4) 컴포넌트 기반 방법론
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용이 기능하여 시간과 노력을 절감할 수 있음
- 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있음
5) 애자일 방법론
- 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항
- 익스트림 프로그래밍, 스크럼, 칸반, 크리스탈 등이 있음
6) 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 만드는데 적합함
(1) 영역공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
(2) 응용공학: 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
2. 비용 산정 기법 ***
소프트웨어 비용 산정의 개요
- 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것
- 너무 높게 산정할 경우 예산 낭비와 일의 효율성 저하를 초래할 수 있고, 너무 낮게 산정할 경우 개발자의 부담이 가중되고 품질문제가 발생할 수 있음
- 하향식 비용 산정 기법과 상향식 비용 산정 기법이 있음
소프트웨어 비용 결정 요소
- 개발하는 소프트웨어, 소프트웨어 개발에 투입되는 자원, 소프트웨어 생산성에 따라 결정됨
1) 프로젝트 요소
- 제품 복잡도: 소프트웨어의 종류에 따라 발생할 수 있는 문제점들의 난이도를 의미함
- 시스템 크기: 소프트웨어의 규모에 따라 개발해야 할 시스템의 크기를 의미함
- 요구되는 신뢰도: 일정 기간 내 주어진 조건하에서 프로그램이 필요한 기능을 수행하는 정도를 의미함
2) 자원 요소
- 인적 자원: 소프트웨어 개발 관련자들이 갖춘 능력 혹은 자질
- 하드웨어 자원: 소프트웨어 개발 시 필요한 장비와 워드프로세서, 프린터 등의 보조 장비를 의미함
- 소프트웨어 자원: 소프트웨어 개발 시 필요한 언어 분석기, 문서화 도구 등의 개발 지원 도구를 의미함
3) 생산성 요소
- 개발자 능력: 개발자들이 갖춘 전문지식, 경험, 이해도, 책임감, 창의력 등을 의미함
- 개발 기간: 소프트웨어를 개발하는 기간을 의미함
3. 비용 산정 기법 - 하향식 ***
하향식 비용 산정 기법의 개요
- 하향식 비용 산정 기법은 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
- 프로젝트의 전체 비용을 산정한 후 각 작업별로 비용을 세분화함
1) 전문가 감정 기법
- 조직 내에 있는 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 가장 편리하고 신속하게 비용을 산정할 수 있으며, 의뢰자로부터 믿음을 얻을 수 있음
- 새로운 프로젝트에는 과거의 프로젝트와 다른 요소들이 있다는 것을 간과할 수 있음
- 새로운 프로젝트와 유사한 프로젝트에 대한 경험이 없을 수 있음
2) 델파이 기법
- 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 전문가들의 편견이나 분위기에 지배되지 않도록 한 명의 조정자와 여러 전문가로 구성됨
- 비용 산정 순서
(1) 조정자는 각 비용 산정 요원에게 시스템 정의서와 산정한 비용 내역을 기록할 서식을 제공함
(2) 산정 요원들은 정의서를 분석하여 익명으로 그들 나름대로의 비용을 산정함
(3) 조정자는 산정 요원들의 반응을 요약하여 배포함
(4) 산정 요원들은 이전에 산정한 결과를 이용하여 다시 익명으로 산정함
(5) 요원들 간의 의견이 거의 일치할 때까지 이 과정을 반복함
4. 비용 산정 기법 - 상향식 ***
상향식 비용 산정 기법의 개요
- 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
1) LOC 기법
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
- 측정이 용이하고 이해하기 쉬워 가장 많이 사용됨
- 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정함
- 예측치 = (낙관치 + 4*기대치 + 비관치) / 6
- 노력(인월) = 개발 기간 * 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
- 개발 비용 = 노력(인월) * 단위 비용(1인용 월평균 인건비)
- 개발 기간 = 노력(인월) / 투입 인원
- 생산성 = LOC / 노력(인월)
2) 개발 단계별 인월수 기법
- LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정함
- LOC 기법보다 더 정확함
5. 수학적 산정 기법 ***
수학적 산정 기법의 개요
- 상향식 비용 산정 기법으로, 경험식 추정 모형, 실험적 추정 모형이라고도 하며, 개발 비용 산정의 자동화를 목표로 함
- 비용을 자동으로 산정하기 위해 사용되는 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것
1) COCOMO 모형 개요
- 보헴이 제안한 것으로, 원시 프로그램의 규모인 LOC에 의한 비용 산정 기법
- 개발할 소프트웨어의 규모를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정함
- 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용되고 있음
- 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정됨
- 비용 산정 결과는 프로젝트를 완성하는 데 필요한 노력으로 나타남
COCOMO의 소프트웨어 개발 유형
- 소프트웨어의 복잡도 혹은 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형으로 분류할 수 있음
(1) 조직형(Organic Mode)
- 기관 내부에서 개발된 중소 규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 자료 처리용으로 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
- 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합함
- 노력(MM) = 2.4 * (KDSI)^1.05
- 개발 기간(TDEV) = 2.5 * (MM)^0.38
(2) 반분리형(Semi-detached Mode)
- 조직형과 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
- 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합함
- 노력(MM) = 3.0 * (KDSI)^1.12
- 개발 기간(TDEV) = 2.5 * (MM)^0.35
(3) 내장형(Embedded Mode)
- 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형
- 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합함
- 노력(MM) = 3.6 * (KDSI)^1.20
- 개발 기간(TDEV) = 2.5 * (MM)^0.32
COCOMO 모형의 종류
(1) 기본형 COCOMO
- 소프트웨어의 크기(생산 코드 라인 수)와 개발 유형만을 이용하여 비용을 산정하는 모형
- 개발 노력(MM, PM, Effort) = a * (KDSI)^b
- 개발 기간(TDEV) = c * (MM)^d
- 적정 투입 인원(FPS) = MM / TDEV
- 인적 비용(COST) = MM * 1인당 월 평균 급여
(2) 중간형 COCOMO
- 기본형 COCOMO의 공식을 토대로 사용하나, 다음 4가지 특성의 15가지 요인에 의해 비용을 산정하는 모형
- 제품의 특성: 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도
- 컴퓨터의 특성: 수행 시간의 제한, 기억 장소의 제한, 가상 기계의 안정성, Turn Around Time
- 개발 요원의 특성: 분석가의 능력, 개발 분야의 경험, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍 언어의 경험
- 프로젝트 특성: 소프트웨어 도구의 이용, 프로젝트 개발 일정, 최신 프로그래밍 기법의 이용
- 개발 노력(MM, PM, Effort) = 기본 COCOMO의 MM * 요인별 노력 승수
- 개발 기간(TDEV) = c * (MM)^d
- 적정 투입 인원(FPS) = MM / TDEV
- 인적 비용(COST) = MM * 1인당 월 평균 급여
(3) 발전형 COCOMO
- 중간형 COCOMO를 보완하여 만들어진 방법으로 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정하는 모형
- 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용함
- 노력 승수 = 개발 공정별 노력 승수 * 개발 공정별 가중치
2) Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형
- 푸트남이 제안한 것으로 생명 주기 예측 모형이라고도 함
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
- 대형 프로젝트의 노력 분포 산정에 이용되는 기법
- 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소함
- 개발 노력(MM) = L^3 / (C_k^3 * Td^4)
- L: 원시 코드 라인 수, Td: 개발 기간, C_k: 환경 상수(빈약 환경 = 2000, 좋은 환경 = 8000, 최적 환경 = 12000)
3) 기능 점수 모형
- 알브레히트가 제안한 것으로, 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수를 구한 후 이를 이용해서 비용을 산정하는 기법
- 기능 점수(FP) = 총 기능 점수 * [0.65 + (0.1 * 총 영향도)]
자동화 추정 도구
- SLIM: Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS: 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 자동화 추정 도구
6. 소프트웨어 개발 방법론 결정
소프트웨어 개발 방법론 결정의 개요
- 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고, 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
프로젝트 관리
- 일정 관리, 비용 관리, 인력 관리, 위험 관리, 품질 관리
소프트웨어 개발 방법론 결정 절차
1) 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
- 소프트웨어 개발 방법론에 프로젝트 관리와 재사용 현황을 반영하는 방법을 프로젝트 관련자들에게 설명함
- 소프트웨어 개발 방법론에 프로젝트 관리와 재사용 현황을 반영하고 그 결과를 프로젝트 관련자들에게 설명한 후 결정함
2) 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
- 소프트웨어의 기본 생명 주기, 지원 생명 주기, 조직 생명 주기별로 주요 프로세스를 확인함
- 소프트웨어의 개발 프로세스, 개발 생명 주기, 프로세스 모형을 정리함
3) 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 매뉴얼을 작성함
7. 소프트웨어 개발 표준
소프트웨어 개발 표준의 개요
- 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
1) ISO / IEC 12207
- ISO에서 만든 표준 소프트웨어 생명 주기 프로세스로, 소프트웨어의 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준을 제공함
(1) 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지보수 프로세스
(2) 지원 생명 주기 프로세스: 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
(3) 조직 생명 주기 프로세스: 관리, 기반 구조, 훈련, 개선 프로세스
2) CMMI
- 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델로, 미국 카네기멜론 대학교의 소프트웨어 공학연구소에서 개발함
- 소프트웨어 프로세스 성숙도는 초기, 관리, 정의, 정량적 관리, 최적화의 5단계로 구분함
3) SPICE
- 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 형가 및 개선하는 국제 표준으로, 공식 명칭은 ISO / IEC 15504임
SPICE의 목적
- 프로세스 개선을 위해 개발 기관이 스스로 평가하는 것
- 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것
- 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것
프로세스
(1) 고객-공급자 프로세스
- 소프트웨어를 개발하여 고객에게 전달하는 것을 지원하고, 소프트웨어의 정확한 운용 및 사용을 위한 프로세스로 구성됨
- 구성 요소: 인수, 공급, 요구 도출, 운영
- 프로세스 수: 10개
(2) 공학 프로세스
- 시스템과 소프트웨어 제품의 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
- 구성 요소: 개발, 소프트웨어 유지보수
- 프로세스 수: 9개
(3) 지원 프로세스
- 소프트웨어 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
- 구성 요소: 문서화, 형상, 품질 보증, 검증, 확인, 리뷰, 감사, 품질 문제 해결
- 프로세스 수: 8개
(4) 관리 프로세스
- 소프트웨어 생명 주기에서 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
- 구성 요소: 관리, 프로젝트 관리, 품질 및 위험 관리
- 프로세스 수: 4개
(5) 조직 프로세스
- 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성됨
- 구성 요소: 조직 배치, 개선 활동 프로세스, 인력 관리, 기반 관리, 측정 도구, 재사용
- 프로세스 수: 9개
프로세스 수행 능력 단계
- 불완전, 수행, 관리, 확립, 예측, 최적화
8. 소프트웨어 개발 방법론 테일러링
소프트웨어 개발 방법론 테일러링의 개요
- 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용 기법 등을 수정 및 보완하는 작업
- 절차: 프로젝트 특징 정의 -> 표준 프로세스 선정 및 검증 -> 상위 수준의 커스터마이징 -> 세부 커스터마이징 -> 테일러링 문서화
소프트웨어 개발 방법론 테일러링 고려사항
1) 내부적 요건
- 목표 환경: 시스템의 개발 환경과 유형이 서로 다른 경우 테일러링이 필요함
- 요구사항: 프로젝트의 생명 주기 활동에서 개발, 운영, 유지보수 등 프로젝트에서 우선적으로 고려할 요구사항이 서로 다른 경우 테일러링이 필요함
- 프로젝트 규모: 비용, 인력, 기간 등 프로젝트의 규모가 서로 다른 경우 테일러링이 필요함
- 보유 기술: 프로세스, 개발 방법론, 산출물 등이 서로 다른 경우 테일러링이 필요함
2) 외부적 요건
- 법적 제약사항: 프로젝트별로 적용될 IT Compliance가 서로 다른 경우 테일러링이 필요함
- 표준 품질 기준: 금융, 제도 등 분야별 표준 품질 기준이 서로 다른 경우 테일러링이 필요함
소프트웨어 개발 방법론 테일러링 기법
1) 프로젝트 규모와 복잡도에 따른 테일러링 기법: 가장 일반적인 기법으로, 프로젝트 규모를 프로젝트 기간, 작업범위, 참여인원 등에 따라 대중소로 구분하고, 프로젝트 업무의 난이도에 따라 복잡도를 상중하로 구분하는 기법
2) 프로젝트 구성원에 따른 테일러링 기법: 프로젝트에 참여하는 구성원들의 기술적 숙련도와 방법론의 이해 정도를 확인하여 테일러링 수준을 결정하는 기법
3) 팀내 방법론 지원에 따른 테일러링 기법: 프로젝트 수행 시 각 팀별로 방법론 담당 인력을 배정하여 팀의 방법론 교육과 프로젝트 전체의 방법론 운영을 위한 의사소통을 담당하도록 인력을 구성하는 기법
4) 자동화에 따른 테일러링 기법: 프로젝트 수행 시 작업 부하를 줄이기 위해 중간 단계에서의 산출물을 자동화 도구를 사용하여 산출할 수 있도록 지원하는 기법
9. 소프트웨어 개발 프레임워크
소프트웨어 개발 프레임워크의 개요
- 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
- 프레임워크의 주요 기능에는 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등이 있음
1) 스프링 프레임워크
- 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
- 동적인 웹 사이트의 개발을 위해 다양한 서비스를 제공함
- 전자정부 표준 프레임워크의 기반 기술로 사용됨
2) 전자정부 프레임워크
- 우리나라의 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크
- 개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 함
- 오픈 소스 기반의 범용화가 되고 공개된 기술을 활용함으로써 특정 업체의 종속성을 배제하고 사업별 공통 컴포넌트의 중복 개발을 방지함
3) 닷넷 프레임워크
- Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크로, Microsoft 사에서 통합 인터넷 전략을 위해 개발함
- 코드 실행을 관리하는 CLR이라는 이름의 가상머신 상에서 작동함
- 메모리 관리, 유형 및 메모리 안정성, 보안, 네트워크 작업 등 여러 가지 서비스를 제공함
LIST'정보처리기사' 카테고리의 다른 글
[정보처리기사] 5과목 정보시스템 구축 관리 : 3장. 소프트웨어 개발 보안 구축 (0) 2022.02.18 [정보처리기사] 5과목 정보시스템 구축 관리 : 2장. IT프로젝트 정보시스템 구축 관리 (1) 2022.02.18 [정보처리기사] 1과목 소프트웨어 설계 : 1장. 요구사항 확인 (0) 2022.02.17 [정보처리기사] 1과목 소프트웨어 설계 : 4장. 인터페이스 설계 (0) 2022.02.17 [정보처리기사] 1과목 소프트웨어 설계 : 3장. 애플리케이션 설계 (0) 2022.02.16