자격증/정보처리기사

요구사항 확인 (5)

카늬 2024. 6. 12. 19:24

소프트웨어 개발 방법론

소프트웨어 개발 방법론

  • 소프트웨어 개발, 유지보수 등에 필요한 여러 일들의 수행방법과 수행하려는 과저에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화 한 것
  • 소프트웨어 개발 방법론의 목적은 소프트웨어의 생산성과 품질 향상이다.
  • 주요 소프트웨어 개발 방법론
    1. 구조적 방법론
    2. 정보공학 방법론
    3. 객체지향 방법론
    4. 컴포넌티 기반(CBD) 방법론
    5. 제품 계열 방법론
    6. 애자일 방법론

구조적 방법론

  • 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론이다.
  • 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론
  • 복잡한 문제를 다루기 위해 분할과 정복 원리를 적용
  • 구조적 방법론의 개발절차
    1. 타당성 검토
    2. 계획
    3. 요구사항
    4. 설계
    5. 구현
    6. 시험
    7. 운용/유지보수

정보공학 방법론

  • 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중임의 방법론이다.
  • 대규모 정보시스템을 구축하는데 적합하다.
  • 정보공학 방법론의 개발절차
    1. 정보 전략 계획 수립
    2. 업무 영역 분석
    3. 업무 시스템 설계
    4. 업무 시스템 구축

객체지향 방법론

  • 부품처럼 하나의 객체로 만들어 기계부품 조립하듯이 객체들을 조립해서 소프트웨어를 구현하는 방법론
  • 구조적 기법의 문제점으로 인한 소프트웨어 위기를 해결책으로 채택
  • 객체지향 방법론 구성요소
    1. 객체
    2. 클래스
    3. 메시지
  • 객체지향 방법론의 기본원칙
    1. 캡슐화
    2. 정보 은닉
    3. 추상화
    4. 상속성
    5. 다형성
  • 객체지향 방법론의 개발 절차
    1. 요구 분석
    2. 설계
    3. 구현
    4. 테스트 및 검증
    5. 인도

컴포넌트 기반 방법론

  • 소프트웨어를 구성하는 컴포넌트(재사용이 가능한 모듈화 자원)를 조합하여 새로운 애플리케이션을 만드는 방법론
  • 컴포넌트는 재사용이 가능하여 시간과 노력을 절감할 수 있다.
  • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장된다.
  • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있다.
  • 컴포넌트 기반 방법론의 개발 절차
    1. 개발 준비
    2. 분석
    3. 설계
    4. 구현
    5. 테스트
    6. 전개
    7. 인도

제품 계열 방법론

  • 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • 임베디드 소프트웨어를 만드는데 적합

S/W 공학의 발전적 추세

소프트웨어 재사용(software Reuse)

  • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
  • 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법
  • 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용한다.
  • 소프트웨어 재사용 기법
    1. 합성 중심 - 전자칩과 같은 소프트웨어 부품, 즉 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 함
    2. 생성 중심 - 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 함

소프트웨어 재공학(Software Reengineering)

  • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
  • 유지보수의 생산성을 향상을 통해 소프트웨어 위기를 해결하는 방법
  • 소프트웨어 재공학의 이점
    1. 소프트웨어의 품질 향상
    2. 소프트웨어의 생산성 증가
    3. 소프트웨어의 수명 연장
    4. 소프트웨어의 오류 감소

CASE(Computer Aided Sofrware Engineering)

  • 소프트웨어 개발 과정에서 사용되는 요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
  • CASE 주요 기능
    1. 소프트웨어 생명주기 전 단계의 연결
    2. 다양한 소프트웨어 개발 모형 지원
    3. 그래픽 지원

비용 산정 기법 - 하향식

하향식 비용 산정 기법

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

전문가 감정 기법

  • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법

델파이 기법

  • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법

비용 산정 기법 - 상향식

상향식 비용 산정 기법

  • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
  • 주요 상향식 비용 산정하는 방법
    1. LOC(원시 코드 라인 수) 기법
    2. 개발 단계별 인월수 기법
    3. 수학적 산정기법

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

  • 각 기능의 원시코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
  • 측정이 용이하고 쉬워 가장 많이 사용한다.

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

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

수학적 산정 기법

수학적 산정 기법

  • 수학적 산정 기법은 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형이라고도 한다.
  • 개발비용의 자동화를 목표로 한다.
  • 사용되는 공식은 과거의 유사한 프로젝트를 기반으로 유도된 것이다.
  • 주요 수학적 산정 기법
    1. COCOMO 모형
    2. Putnam 모형
    3. 기능 점수 모형

COCOMO 모형

  • 원시 프로그램의 규모인 LOC에 의한 비용 산정 기법이다.
  • 보헴이 제안하였다.

COCOMO의 소프트웨어 개발 유형

  • 조직형 - 5만라인 이하의 소프트웨어를 개발하는 유형
  • 반 분리형 - 30만 라인 이하의 소프트웨어를 개발하는 유형
  • 임베디드형 - 30만 이상의 소프트웨어를 개발하는 유형

Putnam 모형

  • 소프트웨어 생명 주기의 전 과정 동안에 사용될 놓ㅎ력의 분포를 예상하는 모형
  • 푸트남이 제안한 것으로, 생명 주기 예측 모형이라고도한다.
  • 대형 프로젝트의 노력분포 산정에 이용된다.

기능 점수(FP : Funtion Point) 모형

  • 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고 가중치를 합산하여 총 기능점수를 산출해 기능점수를 구한 후 비용을 산정
  • 알브레히트가 제안
  • 소프트웨어 기능 증대 요인
    1. 자료 입력(입력 양식)
    2. 정보 출력(출력 보고서)
    3. 명령어(사용자 질의 수)
    4. 데이터 파일
    5. 필요한 외부 루틴과의 인터페이스