Skip to content

Latest commit

 

History

History
228 lines (186 loc) · 14.4 KB

5과목 1장 소프트웨어 개발 방법론 활용.md

File metadata and controls

228 lines (186 loc) · 14.4 KB

정보처리기사 핵심 개념 정리

5과목 정보시스템 구축 관리

1장 소프트웨어 개발 방법론 활용

SECTION 157 소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론의 개요

    • 목적 : 소프트웨어의 생산성과 품질 향상
    • 종류 : 구조적, 정보공학, 객체지향, 컴포넌트 기반(CBD), 애자일, 제품 계열
  • 구조적 방법론

    • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 무서화하는 처리 중심의 방법론
    • 목적 : 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성
    • 분할과 정복 원리를 적용
    • 절차 : 타당성 검토 단계 -> 계획 단계 -> 요구사항 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지보수 단계
  • 정보공학 방법론

    • 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 절차 : 정보 전략 계획 수립 -> 분석 -> 설계 -> 구축
  • 객체지향 방법론

    • 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성 요소 : 객체, 클래스, 메시지
    • 기본 원칙 : 캡슐화, 정보 은닉, 추상화, 상속성, 다형성
    • 절차 : 요구 분석 -> 설계 -> 구현 -> 테스트 및 검증 -> 인도
  • 컴포넌트 기반(CBD; Component Based Design) 방법론

    • 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하여 시간과 노력을 절감
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상
  • 애자일 방법론

    • 민첨한, 기민한이라는 의미로, 애자일 방법론은 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
    • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
    • 대표적인 종류 : 익스트림 프로그래밍, 스크럼, 칸반, 크리스탈 등
    • 절차 : 사용자스토리(요구사항) -> 계획 -> 개발 -> 승인 테스트
  • 제품 계열 방법론

    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합
    • 영역공학과 응용공학으로 구분
    • 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요

SECTION 158 비용 산정 기법

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

    • 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 산정하는 것
    • 너무 높게 산정시 예산 낭비와 일의 효율성 저하를 초래, 너무 낮게 산정할 경우 개발자의 부담이 가중되고 품질문제가 발생
    • 햐향식 비용 산정 기법, 상향식 비용 산정 기법
  • 소프트웨어 비용 결정 요소

    • 소프트웨어, 자원, 생산성에 따라 결정
    • 요소 3가지 : 프로젝트 요소, 자원 요소, 생산성 요소
    • 프로젝트 요소 : 제품 복잡도, 시스템 크기, 요구되는 신뢰도
    • 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원
    • 생산성 요소 : 개발자 능력, 개발 기간

SECTION 159 비용 산정 기법 - 하향식

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

    • 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
    • 프로젝트의 전체 비용을 산정한 후 각 작업별로 비용을 세분화
    • 전문가 감정 기법, 델파이 기법
  • 전문가 감정 기법

    • 조직 내에 있는 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
    • 편리, 신속하게 비용을 산정
    • 개인적이고 주관적
  • 델파이 기법

    • 전문가 감정의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
    • 전문가의 편견이나 분위기에 지배되지 않도록 한명의 조정자와 여러 전문가로 구성

SECTION 160 비용 산정 기법 - 상향식

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

    • 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • LOC(원시 코드 라인 수) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법 등
  • LOC(Line Of Code) 기법

    • 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 산정 공식
      • 노력(인월) = 개발 기간 x 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
      • 개발 비용 = 노력(인월) x 단위 비용(1인당 월평균 인건비)
      • 개발 기간 = 노력(인월) / 투입 인원
      • 생산성 = LOC / 노력(인월)
  • 개발 단계별 인월수(Effort Per Task) 기법

    • LOC 기법을 보완하기 위한 기법, 각 기능을 구현시키는데 필요한 노력을 생명 주기의 각 단계별로 산정
    • LOC 기법보다 더 정확

SECTION 161 수학적 산정 기법

  • 수학적 산정 기법의 개요

    • 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형 이라고도 하며, 개발 비용 산정의 자동화를 목표로 함
    • 비용을 자동으로 산정하기 위해 사용되는 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것
    • COCOMO 모형, Putnam 모형, 기능 점수(FP) 모형 등이 있음, 각 모형마다 지정된 공식을 사용하여 비용 산정
  • COCOMO 모형 개요

    • COCOMO(COnstructive COst MOdel) 모형은 보헴이 제안한 것, 원시 프로그램의 규모인 LOC(Line Of Code)에 의한 비용 산정 기법
    • 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 산정 방정식에 대입하여 비용을 산정
    • 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용
    • 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정
    • 비용 산정 결과는 프로젝트를 완성하는데 필요한 노력(Man-Month)으로 나타남
  • COCOMO의 소프트웨어 개발 유형

    • 소프트웨어의 복잡도 혹은 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형으로 분류할 수 있음
    • 조직형(Organic Mode)
      • 기관 내부에서 개발된 중, 소규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 처리용으로 5만 라인 이하의 소프트웨어를 개발하는 유형
      • 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합
    • 반분리형(Semi-Detached Mode)
      • 조직형과 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만 라인 이하의 소프트웨어를 개발하는 유형
      • 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
    • 내장형(Embedded Mode)
      • 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만라인 이상의 소프트웨어를 개발하는 유형
  • COCOMO 모형의 종류

    • 비용 산정 단계 및 적용 변수의 구체화 정도에 따라 기본(Basic), 중간(Intermediate), 발전(Detailed)형으로 구분
    • 기본형 COCOMO
      • 소프트웨어의 크기와 개발 유형만을 이용하여 비용을 산정하는 모형
    • 중간형 COCOMO
      • 기본형 COCOMO의 공식을 토대로 사용하나, 4가지 특성(제품의 특성, 컴퓨터의 특성, 개발 요원의 특성, 프로젝트 특성)에 의해 비용을 산정하는 모형
    • 발전형
      • 중간형 COCOMO를 보완하여 만들어진 방법. 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정하는 모형
      • 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용
  • Putnam 모형

    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형
    • 푸트남이 제안. 생명주기 예측 모형
    • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 이용되는 기법
    • 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소
  • 기능 점수(FP) 모형

    • 알브레히트가 제안한 것으로, 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법
    • 최근들어 유용, 간편해서 최선의 평가를 받고 있음
  • 자동화 추정 도구

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

SECTION 163 소프트웨어 개발 표준

  • 소프트웨어 개발 표준의 개요

    • 소프트웨어 개발 단게에서 수행하는 품질 관리에 사용되는 국제 표준
    • ISO/IEC 12207, CMMI, SPICE
  • ISO/IEC 12207

    • ISO(International Organization for Standardization, 국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스로, 소프트웨어의 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준을 제공
    • 기본 생명 주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스로 구분
  • CMMI(Capability Maturity Model Integration)

    • CMMI(능력 성숙도 통합 모델)는 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • CMMI의 소프트웨어 프로세스 성숙도는 초기, 관리, 정의, 정량적 관리, 최적화의 5단계로 구분
  • SPICE(Software Process Improvement and Capability dEtermination)

    • 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준. ISO/IEC 15504.
    • 목적
      • 프로세스 개선을 위해 개발 기관이 스스로 평가
      • 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것
      • 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것
    • SPICE의 5개의 프로세스 범주
      • 고객-공급자 프로세스
      • 공학 프로세스
      • 지원 프로세스
      • 관리 프로세스
      • 조직 프로세스
    • SPICE의 프로세스 수행 능력 단계
      • 불완전 : 프로세스 구현 x 목적 달성 x
      • 수행 : 프로세스 수행 o 목적 달성 o
      • 관리 : 작업 산출물을 인도
      • 확립 : 정의된 프로세스가 수행
      • 예측 : 통제, 일관되게 수행
      • 최적화 : 최적화, 업무 목적을 만족시킴

SECTION 164 소프트웨어 개발 방법론 테일러링

  • 소프트웨어 개발 방법론 테일러링의 개요

    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 절차 : 프로젝트 특징 정의 -> 표준 프로세스 선정 및 검증 -> 상위 수준의 커스터마이징 -> 세부 커스터마이징 -> 테일러링 문서화
  • 소프트웨어 개발 방법론 테잉러링 고려사항

    • 밑에 있는 요건들이 다를 경우 테일러링이 필요
    • 내부적 요건
      • 목표 환경
      • 요구사항
      • 프로젝트 규모
      • 보유 기술
    • 외부적 요건
      • 법적 제약사항 : IT Compliance(법적 규제 사항, 지침)
      • 표준 품질 기준 : 금융, 제도
  • 소프트웨어 개발 방법론 테일러링 기법

    • 프로젝트 규모와 복잡도에 따른 테일러링 기법
    • 프로젝트 구성원에 따른 테일러링 기법
    • 팀내 방법론 지원에 따른 테일러링 기법

SECTION 165 소프트웨어 개발 프레임 워크

  • 소프트웨어 개발 프레임워크의 개요

    • 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 주요 기능 : 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등
    • 종류 : 스프링 프레임워크, 전자정부 프레임워크, 닷넷 프레임워크 등
  • 스프링 프레임 워크

    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
  • 전자정부 프레인워크

    • 우리나라의 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍쳐를 제공한느 프레임워크
    • 목적 : 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상
    • 오픈 소스 기반의 범용화, 공개된 기술을 활용 -> 특정 업체의 종속성을 배제, 공통 컴포넌트의 중복 개발을 방지
  • 닷넷 프레임워크

    • Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크로, Microsoft 사에서 통합 인터넷 전략을 위해 개발
    • 코드 실행을 관리하는 CLR(Common Language Runtime, 공용 언어 런타임)이라는 이름의 가상머신 상에서 작동
    • 메모리 관리, 유형 및 메모리 안전성, 보안, 네트워크 작업 등 여러 가지 서비스를 제공