본문 바로가기

2021 정보처리기사/5과목: 정보시스템 구축 관리

[정보처리기사 5과목] 소프트웨어 개발 방법론 활용 (1)

728x90
반응형
[정보처리기사 5과목 필기 예상 키워드] 목록으로 돌아가기
과목: 5. 정보시스템 구축 관리
챕터: 1장 소프트웨어 개발 방법론 활용
키워드: 소프트웨어 개발 방법론
 #애자일 방법론 / #소프트웨어 비용 결정 요소
#델파이 /#LOC / #COCOMO
#기능 점수 모형 / #프로젝트 관리
#CMMI / #SPICE / #닷넷 프레임워크

 

 

소프트웨어 개발 방법론

개요

소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과

이러한 일들을 효율적으로 수행하는 과정에서 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것

 

✔ 소프트웨어의 생산성과 품질 향상

✔ 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일 방법론, 제품계열 방법론 등

 

 

 

구조적 방법론

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

🚩 쉬운 이해 및 검증이 가능한 프로그램 코드 생성

🚩 분할과 정복(Divide and Conquer) 원리 적용

 

타당성 검토 ▶ 계획 ▶ 요구사항 ▶ 설계 ▶ 구현 ▶ 시험 ▶ 운용/유지보수

 

 

 

정보공학 방법론

🚩 자료(Data) 중심의 방법론

🚩 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템(대형 프로젝트)을 구축하는데 적합

 

계획 수립 ▶ 업무 영역 분석 ▶ 업무 시스템 설계 ▶ 업무 시스템 구축

 

 

객체지향 방법론

🚩 개체(Entity) > 객체(Object)로 만들어, 기계 부품을 조립하듯이 객체를 조립하여 소프트웨어를 구현

🚩 객체(Object), 클래스(Class), 메시지(Message)

🚩 캡슐화, 정보은닉, 추상화, 상속성, 다형성

 

객체(Object): 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
클래스(Class): 공통된 속성과 연산을 갖는 객체의 집합으로 객체의 일반적인 타입
메시지(Message): 객체들 간에 상호작용 수단, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구사항
캡슐화(Encapsulation): 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
정보은닉(Information Hiding): 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
추상화(Abstraction): 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에 중점을 두어 개략화하는 것
상속성(Inheritance): 이미 정의된 상의 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
다형성(Polymorphism): 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
요구분석▶설계▶구현▶테스트 및 검증▶인도

 

 

 

컴포넌트 기반(CBD) 방법론

🚩 컴포넌트(문서,코드,파일,라이브러리 등과 같은 모듈화된 자원) 를 조합하여 새로운 어플리케이션을 만드는 방법

🚩 컴포넌트 재사용(Reusability) 가능, 시간 노력 절감

🚩 기능 추가가 간단하여 확장성이 보장됨

🚩 유지 보수 비용 최소화, 생산성 및 품질 향상

 

개발 준비 ▶ 분석 ▶ 설계 ▶ 구현 ▶ 테스트 ▶ 전개 ▶ 인도

 

 

 

애자일(Agile) 방법론

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

🚩 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합

🚩 XP(eXtreme Programming), 스크럼(Scrum), 칸반(Kanban), 크리스탈(Crystal) 등

 

사용자 스토리 ▶ [ 계획 ▶ 개발 ▶ 승인테스트 ] 
* [ ] = 반복주기

 

 

제품 계열 방법론

🚩 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발

🚩 임베디드 소프트웨어(TV, 냉장고, 전기밥솥 등)를 만드는데 적합

🚩 영역공학/응용공학으로 구분

>> 영역공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역

>> 응용공학: 제품 요구 분석, 제품 설계, 제품을 구현하는 영역

 

사용자 스토리 ▶ [ 계획 ▶ 개발 ▶ 승인테스트 ] 
* [ ] = 반복주기

 

 

 

 

 

 

S/W 공학의 발전적 추세

소프트웨어 재사용

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

🚩 재사용의 이점

- 개발 시간과 비용 단축
- 소프트웨어 품질 향상
- 개발 생산성 향상 (cf. 유지보수 생산성: 소프트웨어 재공학)
- 프로젝트 실패 위험 감소
- 시스템 구축 방법에 대한 지식 공유
- 시스템 명세, 설계, 코드 등 문서를 공유

 

 

소프트웨어 재사용 방법

합성 중심  모듈(블록)을 만들어 끼워 맞추어 소프트웨어를 완성 시키는 방법 (블록 구성 방법)
생성 중심  추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법 (패턴 구성 방법)

 

 

CASE의 개요

CASE(Computer Aided Software Engineering)은 소프트웨어 개발 과정에서 사용되는

요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것

 

🚩 소프트웨어 생명 주기 전 단계의 연결

🚩 다양한 소프트웨어 개발 모형 지원

🚩 그래픽 지원 등

 

👀 더 알아보기

 

CASE와 HIPO란?

요구사항 분석 [CASE] CASE(Computer Aided Software Engineering-자동화 도구) - 소프트웨어의 생명주기 전반을 지원하는 프로그램 또는 소프트웨어 개발을 지원하는 자동화도구 혹은 방법론의 결합 - 요구사

y-oni.tistory.com

 

 

 

비용 산정 기법

소프트웨어 비용 산정의 개요

🚩 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것

🚩 시스템의 크기가 크고, 신뢰도가 높을 수록 비용이 많이 든다

🚩 개발 초기보다 개발 후기로 갈 수록 비용이 적게 든다

🚩 하향식 비용 산정 기법과 상향식 비용 산정 기법이 있다.

 

고려사항

🚩 프로젝트 요소, 자원 요소, 생산성 요소

 

🚩 프로젝트 요소

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

 

🚩 자원 요소

- 인적 자원: 개발자들이 갖춘 능력 혹은 자질
- 하드웨어 자원: 소프트웨어 개발 시 필요한 장비
- 소프트웨어 자원: 소프트웨어 개발 시 필요한 언어 분석기, 문서화 도구 등의 지원도구

 

🚩 생산성 요소

- 개발자 능력: 개발자들의 전문지식, 경험, 이해도, 책임감, 창의력 등
- 개발 기간: 소프트웨어를 개발하는 기간

 

 

 

 

비용 산정 기법 - 하향식

하향식 비용 산정 기법의 개요

🚩 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용 산정(비과학적)

🚩 전체 비용을 산정한 후 각 작업별로 비용 세분화

🚩 전문가 감정 기법, 델파이 기법 등

 

전문가 감정 기법(하향식)

🚩 경험 많은 두 명 이상의 전문가에게 비용 산정 의뢰

🚩 편리하고 신속

🚩 새로운 프로젝트에는 과거의 프로젝트와 다른 요소가 있다는 것을 간과할 수 잇음

🚩 새로운 프로젝트와 유사한 프로젝트에 대한 경험이 없을 수 있음

🚩 개인적이고 주관적일 수 있음

 

델파이 기법(하향식)

🚩 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정

🚩 한 명의 조정자와 여러 전문가로 구성

 

 

 

비용 산정 기법 - 상향식

상향식 비용 산정 기법의 개요

🚩 프로젝트 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용 산정

🚩 LOC(원시 코드 라인 수) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법 등

 

 

LOC(원시 코드 라인 수) 기법 (상향식)

🚩 각 기능의 원시 코드 라인 수의 *비관치, *낙관치, *기대치를 측정하고 예측하여 비용 산정

🚩 측정이 용이하고 이해하기 쉬워 가장 많이 사용 됨

🚩 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정

예측치= (a+4m+b) / 6

a: 낙관치 / b: 비관치/ m:기대치(중간치)
산정 공식

✔노력(인월) = 개발기간 x 투입인원  = LOC / 1인당 월 평균 생산 코드 라인 수

✔개발 비용 = 노력(인월) x 단위 비용(1인당 월 평균 인건비)

✔개발 기간 = 노력(인월) / 투입인원

✔생산성 = LOC / 노력(인월)

예제1)

두 명의 개발자가 5개월에 걸쳐 10,000 라인의 코드를 개발하였을 때, 월별(Person Month) 생산성 측정을 위한 계산방식은?

 

계산방법)

생산성= LOC / (개발기간x투입인원) = 10,000 / (5 x 2)

 


예제2)

10명의 개발자가 10개월동안 개발에 참여했다. 이 중 7명은 10개월 내내, 3명은 3개월 동안만 부분적으로 참여했다.

이 소프트웨어 개발을 위한 인월(Man Month)는 얼마인가?

 

계산방법)

(개발기간 x 투입인원 7) + (개발기간 x 투입인원 3) = (7 x 10) + (3 x 3) = 70 + 9 = 79


예제3) 

예측치 50000라인, 개발자 월 평균 생산성이 200, 참여할 개발자가 10인일 때 개발 소요 기간은?

 

개발 기간= 노력(인월) / 투입인원, 생산성 = LOC / 노력(인월)

200 = 50000 / 노력(인월) 일 때, 노력(인월) = 250

개발 기간 = 250 / 10 = 25개월

 


예제4)

COCOMO 비용 산정에 의해 소요되는 노력이 40PM(Programmer-Mont)로 계산되었다.

개발 소요기간이 5개월이고 1인당 인건비가 100만원이라면 이 프로젝트에 소요되는 총 인건비는 얼마인가?

개발비용: 노력(인월) x 1인당 월 평균 인건비 = 40PM x 1,000,000 = 40,000,000 원(4천만 원)

 

 

개발 단계별 인월수(Effort Per Task 기법) (상향식)

🚩 LOC 기법보다 정확

 

 

수학적 산정 기법(상향식)

🚩 경험적 추정 모형, 실험적 추정 모형

🚩 개발 비용 산정의 자동화를 목표로 함

🚩 사용되는 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것

🚩 COCOMO, Putnam, FP 모형 등이 있으며 각 모형에서 지정된 공식을 사용하여 비용 산정

 

(👀 공식을 암기할 필요는 없으며 유형과 모형별 특징을 구분할 수 있으면 된다)

 

COCOMO 모형

🚩 개발할 소프트웨어의 규모(LOC)를 예측한 후 소프트웨어 종류에 따라 대입하여 비용을 산정

🚩 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 개발비 견적에 널리 통용

🚩 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정됨

🚩 비용 산정 결과는 프로젝트를 완성하는 데 필요한 노력(Man-Month)으로 나타남

 

👀 기본(Basic)형 COCOMO

- 소프트웨어의 크기(생산 코드 라인 수)와 개발 유형만을 이용하여 비용 산정

 

👀 중간(Intermediate)형 COCOMO

- 제품의 특성, 컴퓨터의 특성, 개발 요원의 특성, 프로젝트 특성의 15가지 요인에 의해 비용 산정

 

👀 발전(Detailed)형 COCOMO

- 중간(Intermediate)형 COCOMO를 보완하여 만들어진 방법

- 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용 산정

- 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며 개발 과정의 후반부에 주료 적용

 

COCOMO 유형

🚩 조직형(Organic Mode)

- 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형

- 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합

 

 

🚩 반분리형(Semi-Detached Mode)

- 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형

- 조직형과 내장형의 중간형

- 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등

- 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합

 

 

🚩 내장형(Embedded Mode)

- 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형

- 초대형 규모의 트랜잭션 처리 시스템이나 운영체제 등

- 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 프로그램 개발에 적합

 

 

Putnam 모형

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

🚩 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함 (Rayleigh = Putnam)

>> 노든(Norden)이 소프트웨어 개발에 관한 경험적 자료를 수집하여 이를 근거로 그린 곡선🚩 대형 프로젝트의 노력 분포 산정에 이용됨🚩 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소함

 

 

기능점수(FP; Function Point) 모형

🚩 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여

🚩 요인별 가중치를 합산하여 총 기능 점수 산출

🚩 COCOMO와 PUTNAM과의 차이는 LOC가 아닌 FP를 이용해 비용을 산정한다는 것이다

🚩 자료 입력(입력 양식), 정보 출력(출력 보고서), 명령어(사용자 질의수), 데이터 파일, 외부 루틴과의 인터페이스가 있다.

 

 

자동화 추정 도구

🚩 비용 산정의 자동화를 위해 개발된 도구로는 SLIM과 ESTIMACS가 있다

🚩 SLIM: Rayleigh-Norden 곡선 + Putna, 예측 모델을 기초로 개발된 자동화 추정 도구

🚩 ESTIMACS: 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 차동화 추정도구

 

 

 

 

 


 

정보처리기사 5과목 필기(상시업뎃)

2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이 

y-oni.tistory.com

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90