5과목 정보시스템 구축 관리 소프트웨어 개발 방법론 활용 166 ~ 176

2024. 2. 14. 20:11
728x90

166. 소프트웨어 개발 방법론 

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

1) 구조적 방법론 : 정형화된 분석 절차. 문서화

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

2) 정보공학 방법론 : 정형화된 기법들을 상호 연관성 있게 통합 및 적용

- 정보 전략 계획 수립 -> 업무 영역 분석 -> 업무 시스템 설계 -> 업무 시스템 구축

- ERD 사용

- 대규모 정보 시스템 구축하는데 적합

3) 객체지향 방법론 : 개체 - 객체  - 조립

- 요구분석 -> 설계 -> 구현 -> 테스트 및 검증 -> 인도

- 패키지 다이어그램, 배치 다이어그램, 상태 전이도

4) 컴포넌트 기반 방법론 (CBD) : 컴포넌트 조합 > 하나의 앱

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

- 컴포넌트 재사용

- 기능 추가 간단

- 유지보수 비용 최소화

5) 애자일 방법론 : 고객 요구사항 변화에 유연. 

- 사용자 스토리 -> 계획 -> 개발 -> 승인 테스트 반복

- 익스트림 프로그래밍, 스크럼, 칸반, 크리스탈

6) 제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발. 

- 임베디드 소프트웨어

- 영역공학 (영역 분석, 영역 설계, 핵심 자산 구현)

- 응용공학 (제품 요구 분석, 제품 설계, 제품 구현)

 

167. S/W 공학의 발전적 추세

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

- 장점 : 품질과 생산성 높임. 개발 시간과 비용 단축. 실패의 위험 감소. 시스템 구축 방법에 대한 지식 공유. 문서 공유.

- 방법 :

  • 합성 중심(Composition-Based) : 블록(모듈)을 만들어서 끼워맞추어 완성 (블록 구성 방법)
  • 생성 중심(Generation-Based) : 명세를 구체화하여 프로그램을 만듦. (패턴 구성 방법)

2) 소프트웨어 재공학 : 새로운 요구에 맞도록 기존 시스템을 이용하여 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시킴. 

- 소프트웨어 수명 연장, 개발기간 단축, 오류 줄어듦, 비용 절감. 예방 유지보수 측면

- 주요활동

  • 분석(Analysis) : 기존 소프트웨어의 명세서 확인, 동작 이해, 재공학할 대상 선정
  • 재구성(Restructuring) : 구조 향상을 위해 코드 재구성. (기능, 외적 동작 안바뀜)
  • 역공학 (Reverse Engineering) : 기존 소프트웨어 분석 > 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동. 
  • 이식(Migration) : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환. 

 

3) CASE (Computer Aided Softrware Engineering) : 소프트웨어 개발 과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것.

- 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발모형 지원, 그래픽 지원, 모델들의 모순 검사 및 오류검증, 자료흐름도 작성 등

- 원천 기술 : 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산처

 

168. 비용 산정 기법

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

- 너무 높으면 예산 낭비/일의 효율성 저하

- 너무 낮으면 개발자의 부담 가증/ 품질문제 발생. 

- 하향식 비용산정 기법/ 상향식 비용산정 기법.

 

2) 비용 결정 요소

- 프로젝트 요소 : 제품 복잡도(문제점들의 난이도) /시스템 크기 / 요구되는 신뢰도(일정기간 내 주어진 조건하에서 필요한 기능 수행하는 정도)

- 자원 요소 : 인적 자원(개발 관련자들이 갖춘 능력) / 하드웨어 자원 / 소프트웨어 자원

- 생산성 요소 : 개발자능력 / 개발 기간

 

169. 비용 산정 기법 - 하향식

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

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

 

1) 전문가 감정 기법 : 조직 내에 경험 많은 두 명 이상의 전문가에게 비용 산정 의뢰.

2) 델파이 기법 : 많은 전문가의 의견을 종합하여 산정. (한 명의 조정자와 여러 전문가로 구성)

 

170. 비용 산정 기법 - 상향식

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

 

1) LOC(source Line Of Code/원시 코드 라인수) 기법 : 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하고 예측치를 구하고 이용하여 비용을 산정. 

- 낙관치 : 가장 적게 측정된 코드라인 수

- 비관치 : 가장 많이 측정된 코드라인 수

- 기대치 : 측정된 모든 라인 수의 평균

- 예측치 = ((낙관치)+4(기대치)+(비관치))/6

- 산정공식 

: 거속시처럼 노(력)기(간)인(원) & LOC노(력)생(산성)

  • 노력(인월) = 개발기간 X 투입인원 = LOC / 1인당 월평균 생산 코드라인수
  • 개발비용 = 노력(인월) X 단위비용(1인단 월평균 인건비)
  • 개발기간 = 노력(인월) / 투입인원
  • 생산성 = LOC / 노력(인월)

2) 개발 단계별 인월수(Effort Per Task) 기법 : 각 기능을 구현시키는데 필요한 노력을 생명주기의 각 단계별로 산정. 

3) 수학적 산정 기법.

 

171. 수학적 산정 기법 

비용 산정 기법 - 상향식의 (3)번임

: 경험적 추정 모형, 실험적 추정 모형. 개발 비용 산정의 자동화를 목표로 함. (과거 유사한 프로젝트를 기반으로)

 

1) COCOMO(COnstructive COst MOdel) 모형 : 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정. 

- 중소 규모 소프트웨어 프로젝트 비용 추정에 적합. 

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

 

- 개발 유형

(1) 조직형 : 기관 내부에서 개발된 중소규모의 소프트웨어로 일괄 자료 처리나 과학기술 계산용, 비즈니스 자료 처리용. (5만 라인(50KDSI) 이하의 소프트웨어 개발)

비용산정 공식 ( KDSI = 1000라인)

- 노력(MM) = 2.4 X (KDSI)^1.05

- 개발기간(TDEV) = 2.5 X (MM)^0.38

(2) 반분리형 : 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등 30만 라인 이하의 소프트웨어 개발.

비용산정 공식

- 노력(MM) = 3.0 X ( KDSI )^1.12

- 개발기간(TDEV) = 2.5 X (MM)^0.35

(3) 내장형 : 초대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 라인 이상의 소프트웨어 개발.

비용산정 공식

- 노력(MM) = 3.6 X ( KDSI)^1.20

- 개발기간(TDEV) = 2.5 X (MM)^0.32

 

2) Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형. (생명 주기 예측 모형)

- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함. 

 

3) 기능 점수(FP/Function Point) 모형 : 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여 >> 요인별 가중치를 합산하여 총 기능 점수를 산출 >> 총 기능 점수와 영향도를 이용하여 기능 점수를 구한 후 이를 이용해서 비용을 산정하는 기법.

- 기능 점수(FP) = 총 기능 점수 X [0.65 + (0.1 X 총 영향도)]

- 기능별 가중치

  • 자료 입력(입력 양식) : 3,4,5
  • 정보 출력(출력 보고서) : 4,5,7
  • 명령어(사용자 질의수) : 3,4,5
  • 데이터 파일 : 7,10,15
  • 필요한 외부 루틴과의 인터페이스 : 5,7,10

- 자동화 추정도구 

  • SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
  • ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 개발된 자동화 추정 도구.

 

172. 프로젝트 일정 계획

: 프로젝트의 프로세스를 이루는 소작업을 파악하고 예측된 노력을 각 소작업에 분배하며 소작업의 순서와 일정을 정하는 것.

 

1) PERT(Program Evaluation and Review Technique/프로그램 평가 및 검토 기술)

: 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크. 

- 낙관적인 경우

- 가능성이 있는 경우

- 비관적인 경우로 나눔

- 원 노드에는 작업을, 화살표에는 낙관치, 기대치, 비관치를 표시.

- 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성을 알 수 있다. 

 

2) CPM(Critical Path Method/임계 경로 기법)

: 프로젝트 완성에 필요한 작업을 나열하고 소요기간을 예측하는데 사용. 

- 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄. 

- 원형 노드는 각 작업

- 박스 노드는 이정표 (예상 완료 시간 표시)

- 임계 경로 = 최장 경로.

 

3) 간트 차트(Gantt Chart)

: 프로젝트 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표. (시간선 차트)

- 중간 목표 미달성 시 그 이유와 기간을 예측 가능.

- CPM 네트워크 데이터를 바탕으로 제작 가능. 

- 수평 막대의 길이 = 각 작업의 기간.

 

173. 소프트웨어 개발 방법론 결정

: 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영& 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것. 

 

- 프로젝트 관리 : 일정 관리/ 비용 관리/ 인력 관리/ 위험 관리/ 품질 관리.

 

1) 결정 절차

- 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영.

- 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립 (기본, 지원, 조직 생명 주기별로 확인/ 개발 프로세스, 개발 생명 주기, 프로세스 모형을 정리)

- 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성. 

 

174. 소프트웨어 개발 표준

: 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준

 

1) ISO/IEC 12207 : 기본 / 지원 / 조직 생명주기 프로세스로 구분.

2) CMMI(Capability Maturity Model Integration/능력 성숙도 통합 모델) : 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델.

- 초기, 관리(규칙화된 프로세스), 정의(표준화된), 정량적 관리(예측 가능한), 최적화(지속적 개선)

3) SPICE(Software Process Improvement and Capability dEtermination/소프트웨어 처리 개선 및 능력 평가 기준) = ISO/IEC 15504

: 정보 시스템 분야에서 소프트웨어 품질 및 생산성 향상을 위해 프로세스를 평가 및 개선하는 국제 표준

- 범주 : 고객-공급자 프로세스/ 공학 프로세스/ 지원 프로세스 / 관리 프로세스 / 조직 프로세스

- 불완전(incomplete) -> 수행(performed) ->관리(managed) -> 확립(established) -> 예측(predictable) -> 최적화(optimizing)

 

175. 소프트웨어 개발 방법론 테일러링

: 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업. 

- 절차 : 프로젝트 특징 정의 > 표준 프로세스 선정 및 검증 > 상위 수준의 커스터마이징 > 세부 커스터마이징 > 테일러링 문서화

 

1) 고려사항

- 내부적 기준 : 목표 환경, 요구사항, 프로젝트 규모, 보유 기술

- 외부적 기준 : 법적 제약사항, 표준 품질 기준

 

2) 테일러링 기법 

- 프로젝트 규모와 복잡도에 따른 테일러링

- 구성원에 따른

- 팀내 방법론 지원에 따른

- 자동화에 따른

 

176. 소프트웨어 개발 프레임워크

- 프레임워크 : 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템.

- 주요 기능 : 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등 

 

- 프레임워크의 특성

  • 모듈화 : 캡슐화로 모듈화 강화 
  • 재사용성 : 재사용 가능한 모듈들 제공
  • 확장성 : 다형성을 통한 인터페이스 확장
  • 제어의 역흐름(IoC) : 객체들의 제어를 프레임워크에 넘김.

 

1) 스프링 프레임워크 : 자바 오픈소스 경량형 애플리케이션 프레임워크 

2) 전자정부 프레임워크 : 우리나라 공공부문 정보화 사업 시 효율적인 정보 시스템 구축을 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크

3) 닷넷 프레임워크(.NET Framework) : Windows 프로그램 개발 및 실행 환경을 제공하는 프레임워크

728x90

BELATED ARTICLES

more