[자격증][정처기] 5과목 정보시스템 구축 관리 - 1
7 minute read
1장 소프트웨어 개발 방법론 활용
157 소프트웨어 개발 방법론
- 소프트웨어 개발, 유지보수를 위한 수행 방법/기법을 표준화 한 것
- 목적 : 생산성과 품질 향상
- 방법론 종류
- 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악해서 문서화하는
처리Process
중심의 방법론
- 목적 : 쉬운 이해 및 검증이 가능한 프로그램 개발
- 분할과 정복 원리를 적용
- 타당성 검토 - 계획 - 요구사항 - 설계 - 구현 - 시험 - 운용/유지보수
- 정보공학 방법론
- 정보 시스템의 개발을 위해 계획,분석,설계 구축에 정형화된 기법들을 상호 연관성있게 통합하는
자료Data
중심의 방법론
- 대규모 정보 시스템을 구축하는데 적함
- 정보 전략 계획 수립 - 업무 영역 분석 - 업무 시스템 설계 - 업무 시스템 구축
- 객체지향 방법론
- Entity를 Object로 만들어 객체들을 조립해서 소프트웨어를 구현하는 방법론
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
- 구성요소 : Entity, Object, Message 등
- 기본원칙 : 캡슐화(데이터와 데이터를 처리하는 함수를 하나로 묶음), 정보 은닉, 추상화(중요한 부분을 중심으로 개략화), 상속성, 다형성(하나의 메세지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답) 등
- 요구 분석 - 설계 - 구현 - 테스트 및 검증 - 인도
- 컴포넌트 기반 방법론
- 기존 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 앱을 만드는 방법론
- 컴포넌트의 재사용이 가능
- 유지 보수 비용 최소화. 생산성 및 품질 향상
- 개발 준비 - 분석 - 설계 - 구현 - 테스트 - 전개 - 인도
- 애자일 방법론
- 애자일 : 민첩한, 기민한
- 고객의 요구사항 변환에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항
- 종류 : 익스트림 프로그래밍XP, 스크럼, 칸반, 크리스탈
- 사용자 스토리 -> 반복주기(계획 - 개발 - 승인 테스트)
- 제품 계열 방법론
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 개발하는데 적합
- 구분
- 영역공학 : 영역 분석, 영역 설계, 핵심 자산 구현
- 응용공학 : 제품 요구사항 분석, 제품 설계, 제품 구현
- 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍쳐, 조립 생산이 필요하다.
158 비용 산정 기법
- 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정
- 너무 높게 설정 : 예산 낭비, 일의 효율성 저하
- 너무 낮게 설정 : 개발자 부담 증가, 품질 문제
비용 결정 요소
3가지 이름
프로젝트 요소
3가지 이름
- 제품 복잡도 : 문제점 난이도
- 시스템 크기 : 일정 기간 내 주어진 조건에서 기능을 수행하는 정도
- 요구되는 신뢰도
자원 요소
3가지 이름
생산성 요소
2가지 이름 구분
159 비용 산정 기법 - 하향식
- 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용 산정하는 비과학적인 방법
- 프로젝트 전체 비용을 산정한 후 각 작업별로 비용을 세분화한다.
- 종류
- 전문가 감정 기법
- 경험이 많은 두 명 이상의 전문자에게 비용 산정을 의뢰
- 편리, 신속, 의뢰자로부터 믿음을 얻을 수 있다.
- 새로운 프로젝트에는 과거의 프로젝트와 다른 요소들이 있다는 것을 간과할 수 있음
- 새로운 프로젝트와 유사한 프로젝트에 대한 경험이 없을 수 있다.
- 개인적이고 주관적일 수 있다.
- 델파이 기법
- 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 한 명의 조정자와 여러 전문가로 구성
- 비용 산정 순서
- 조정자는 각 비용 산정 요원에게 시스템 정의서와 산정한 비용 내역을 기록할 서식 제공
- 산정 요원들은 정의서를 분석하여 익명으로 그들 나름대로의 비용을 산정
- 조정자는 산정 요원들의 반응을 요약, 배포
- 산정 요원들은 이전에 산정한 결고를 이용항 다시 익명으로 산정
- 요원들 간의 의견이 거의 일치할 때까지 이 과정을 반복
160 비용 산정 기법 - 상향식
- 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
- 종류
- LOC(원시 코드 라인 수, Line Of Code) 기법
- 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하는 방법
- 예측지 = (비관치 + 4*낙관치 + 기대치) / 6
- 산정 공식
- 노력(인원man month) = 개발 기간 x 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
- 개발 비용 = 노력 x 단위 비용(1인당 월평균 인건비)
- 개발 기간 = 노력 / 투입 인원
- 생산성 = LOC / 노력
- 개발 단계별 인월수(Effort Per Taks) 기법
- LOC를 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계 별로 산정
- LOC 보다 더 정확하다.
- 수학적 산정 기법
161 수학 산정 기법
- 상향식 비용 산정 기법 중 하나
- = 경험적 추정 모형 = 실험적 추정 모형
- 목표 : 개발 비용 산정의 자동화
- 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것
- 종류
- COCOMO 모형
- COnstructive COst MOdel 모형
- LOC에 의한 비용 산정 기법
- LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용 산정
- 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 널리 통용
- 같은 규모의 프로그램이더라도 그 성격에 따라 비용이 다르게 산정된다.
- 비용 산정 결과는 프로젝트를 완성하는데 필요한 Man-Month로 나타난다.
- Boeham이 고안한 개발비 산정 모델로 프로젝트의 예쌍되는 크기와 유형에 관한 정보가 주로 사용된다.
- 프로젝트 특성을 15개로 나누고 각각에 대한 승수값을 제시하였다.
개발 유형
Project Mode
- 조직형
Organic
Mode
- 기관 내부에서 개발된 중,소 규모의 소프트웨어로 일괄 자료 처리, 비즈니스 자료 처리용으로 5만라인 이하의 SW 개발 유형
- 노력 = 2.4 X KDSI^{1.05}
- 개발기간 = 2.5 X MM^{0.38}
- 반분리형
Semi-Detached
Mode
- 조직형과 내장형의 중간형.
- 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등 30만 라인 이하의 SW 개발 유형
- 노력 = 3.0 X KDSI^{1.12}
- 개발기간 = 2.5 X MM^{0.35}
- 내장형
Embedded
Mode
- 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만라인 이상의 SW 개발 유형
- 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
- 노력 = 3.6 X KDSI^{1.20}
- 개발기간 = 2.5 X MM^{0.32}
모형 종류
- 기본형Basic COCOMO
- 소프트웨어 크기LOC와 개발 유형만을 이용하여 비용 산정
- 중간형Intermediate COCOMO
- 기본형 COCOMO 공식 사용
- 4가지 특성의 15가지 요인에 의해 비용 산정
- 제품의 특성
- 컴퓨터의 특성
- 수행 시간의 제한/기억 장소의 제한/가상 기계의 안정성/Turn Around Time
- 개발 요원의 특성
- 분석가의 능력/개발 분야의 경험/가상 기계의 경험/프로그래머 능력/프로그래밍 언어의 경험
- 프로젝트 특성
- 소프트웨어 도구의 이용/프로제그 개발 일정/최신 프로그래밍 기법의 이요
- 발전형Detailed COCOMO
- 중간형 COCOMO를 보완하여 만들어진 방법
- 개발 공정별로 자세한 노력을 산출해 비용 산정
- 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용한다.
- 중간형 COCOMO 산정 공식 그대로 사용
- 노력 승수 = 개발 공정별 노력 승수 x 개발 공정별 가중치
- Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정
- = 생명주기 예측 무형
- 설계 및 코딩/테스트 및 확인/확장/유지.보수/수정/관리 등의 생명 주기가 있다.
- 대형 프로젝트의 노력 분포 산정에 이용되는 기법
- 개발 기간이 늘어날 수록 프로젝트 적용 인원의 노력이 감소한다.
- 기능 점수 모형
- SW 기능을 증대시키는 요인별 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하여 총 기능 점수와 영향도를 통해 비용 산출
-
소프트웨어 기능 증대 요인 |
가중치 단순 |
가중치 보통 |
가중치 복잡 |
-
162 소프트웨어 개발 방법론 결정
- 프로젝트 고나리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고, 확정된 소프트웨어 생명 주기와 개발 방법론에 맞추어 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것이다.
- 프로젝트 관리 = 일정/비용/인력/위험/품질 관리
- 결정 절차
- 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영한다.
- 개발 단계별 자격 및 절치를 소프트웨어 생명 주기에 맞춰 수립한다.
- 생명주기는
기본/지원/조직
생명주기로 나뉜다.
- 개발 프로세스/개발 생명 주기/ 프로세스 모형을 정리
- 결정된 방법론의 개발 단계별 활동 목적, 작업 내용 산출물에 대한 매뉴얼을 작성한다.
163 소프트웨어 개발 표준
- 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
- ISO/IEC 12207
- ISO,International Organization for Standardization, 국제 표준화 기구 에서 만든 포준 소프트웨어 생명 주기 프로세스.
- 소프트웨어 개발,운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준 제공
기본
생명 주기 프로세스 : 획득,공급,개발,운영,유지보수 프로세스
지원
생명 주기 프로세스 : 품질 보증, 검증,확인,활동 검토,감사,문서화,형상 간리,문제 해결프로세스
조직
생명 주기 프로세스 : 관리,기반 구조, 훈련, 개선 프로세스
- CMMI(Capability Maturity Model Integration)
- 능력 성숙도 통합 모델
- 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
- 미국 카네기멜론 대학교의 소프트웨어 공학 연구소에서 개발
- 소프트웨어 프로세스
성숙도
는 초기/관리/정의/정량적 관리/최적화
5단계로 구분한다.
초기 : 작업자 능력에 따라 성공 여부 결정
관리 : 특정한 프로젝트 내의 프로세스 정의 및 수행
정의 : 조직의 표준 프로세스를 활용하여 업무 수행
- 정량적 관리 : 프로젝트를 정량적으로 관리 및 통제
- 최적화 : 프로세스 역량 향상을 위해 지속적인니 프로세스 개선
- SPICE(Software Process Improvement and Capabilit dEtermination)
- 프로세스 범위 구분
- 고객 공급자Customer-Supplier 프로세스 : 소프트웨어를 개발하여
고객에게 전달하는 것을 지원
. 운용, 사용
을 위한 프로세스로 구성
- 공학Engineering 프로세스 :
제품의 명시화, 구현, 유지 보수
하는데 사용되는 프로세스로 구성
- 지원Support 프로세스 : 생명주기에서
다른 프로세스에 의해 이용
되는 프로세스로 구성
- 관리Manaement 프로세스 : 프로젝트
관리자
에 의해 사용되는 프로세스로 구성
- 조직Organization 프로세스 :
조직의 업무 목적 수립과 조직의 업무 목표 달성
을 위한 프로세스로 구성
- 프로세스 수행 능력 단계 구분
불완전
: 프로세스가 구현되지 않았거나 목적을 달성하지 못한 단계
수행
: 프로세스가 수행되고 목적이 달성
된 단계
관리
: 정의된 자원의 한도
내에서 그 프로세스가 작업 산출물을 인도
하는 단계
확립
: 소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행
되는 단계
예측
: 프로세스가 목적 달성을 위해 통제
되고, 양적인 측정
을 통해서 일관되게 수행되는 단계
최적화
: 프로세스 수행을 최적화
하고 지속적인 개선
을 통해 업무 목적을 만족시키는 단계
164 소프트웨어 개발 방법론 테일러링
- 방법론의 절차, 사용 기법 등을 수정 및 보완하는 작업
- 수행 절차 : 프로젝트 특징 정의 - 표준 프로세스 선정 및 검증 - 상위 수준의 커스터마이징 - 세부 커스터마이징 - 테일러이 문서화
- 내부적 요건
- 목표 환경
- 요구 사항
- 프로젝트 규모
- 보유 기술
- 외부적 요건
- 테일러링 기법 : 규모와 복잡도에 따라/구성원에 따라/팀내 방법론 지원에 따라/자동화에 따라
165 소프트웨어 개발 프레임워크
- 스프링 프레임워크
- 자바 플랫폼을 위한 오픈소스 경량형 앱 프래임워크
- 동적인 웹 사이트 개발을 위한 다양한 서비스 제공
- 전자 정부 표준 프레임워크의 기반 기술
- 전자정부 프레임워크
- 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍쳐를 제공하는 프레임워크
- 개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 한다.
- 오픈 소스 기반의 범요화가 되고 공개된 기술을 활용 -> 특정 업체의 종속성을 배제하고 사업별 공통 컴포넌트의 중복 개발을 방지
- 닷넷 프레임워크
- Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크. MS의 통합 인터넷 전략에 의해 개발
- 코드 실행을 관리하는 CLR(Common Language Runtime)이라는 이름의 가상머신에서 작동한다.
- 메모리 관리, 메모리 안전성, 보안 네트워크 작업 등 여러 가지 서비스를 제공한다.