나의 공부/Computer Science

소프트웨어공학) CH03 계획

내가 Nega 2021. 3. 31. 21:45
728x90

계획의 이해

Skip

Problem Definition

  • 정의
    • 소프트웨어 개발의 첫 작업
    • 무엇을 개발할 것인지 명확히 정의
    • 개발 범위를 결정
  • 필요사항
    • 개발하고자 하는 영역의 배경지식
    • 문제를 파악하기 위해 현재 운영중인 시스템 사용해보기
    • 실무 담당자와 면담하여 자료를 수집한 후 면밀히 분석해보기
  • Requirements Gathering ![Alt](Ch03 계획 15-14-43.png)

Analysis Validity

  • 경제적 타당성
    • 개발 여부 판단
  • 기술적 타당성
    • 현재의 기술로 사용자가 요구하는 기능을 구현할 수 있는지 검토
    • 하드웨어 성능이 개발에 지장은 없는지 검토
    • 개발자의 기술력에 문제가 없는지 검토
  • 법적 타당성
    • 개발용 소프트웨어와 도구의 사용이 법적으로 문제가 없는지 검토
    • 지적 소유권과 프로그램 보호법이 강화되었으므로 매우 중요
    • S/W License
      • GNU
      • MIT
      • BSD
      • CDDL
      • CPL
      • QPL
      • etc...

Development cost calculation

  • 개발 비용에 영향을 주는 요소
    • 프로그래머 자질
    • 소프트웨어 복잡도
    • 소프트웨어 크기
      • 참여 인력 증가
      • 개발 기간 길어짐
      • 복잡도 커짐
    • 가용 시간
      • 관리자들의 착각 : 인력/자원 증가는 개발 기간 단축
    • 요구되는 신뢰도 수준
    • 기술 수준
    • Brooks's Law
      • Adding manpower to a late software project makes it later.
      • Causes.
        • communication cost
        • education cost about prior projects

비용 산정 기법 1 : 하향식 산정 기법

  • 전문가 판단기법
  • 델파이 기법
    • 전문가 판단기법 + 조정자(coordinator)

비용 산정 기법 2 : 상향식 산정 기법

  • 세부 작업 단위별로 비용 산정한 후 전체 비용 합산
  • Side Effect
    • 수학적 계산 방법보다 경험에만 의존할 경우 부정확할 수 있음

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

개발 단계별 노력 기법(Effort per task)

비용 산정 기법 3 : 수학적산정 기법

COCOMO 방법

  • COnstructive COst MOdel
  • SW 규모(LOC) 예측한 후 SW 종류에 따라 각 비용 산정 공식에 대입하여 비용 산정

Putnam model

기능점수(FP) model

  • 기능 점수 산정 방법
    • 산정 근거
      • 기능(입.출력, 데이터베이스 테이블, 인터페이스, 조회 등)의 수
        • 라인 수와 무관하게 기능이 많으면 규모도 크고 복잡도도 높다고 판단
      • 사용자 관점에서 소프트웨어 기능 정량화 -> 개발 비용 산정
    • 기능 점수
      • 소프트웨어 기능의 크기를 측정하는 단위
  • 용도
    • 개발 시 비용 산정
    • 유지보수 비용 산정
    • 개발 시 필요한 자원 산정
  • 특징
    • 소프트웨어 규모를 측정하는 방법
    • 기능적 요구사항이 중심이 되는 측정 방법
    • 소프트웨어의 요구사항 복잡도를 측정
    • 구현 관점이 아닌 사용자 관점의 요구 기능을 정량적으로 산정
    • 측정의 일관성 유지를 위해 개발 기술, 갭라 방법, 품질 수준등은 고려하지 않음
    • 소프트웨어 개발에 사용되는 언어와 무관
    • 소프트웨어 개발 생명주기의 전체 단계에서 사용 가능
  • 방법
    • 정규 기능 점수법
    • 간이 기능 점수법
  • 소프트웨어 기능 분류
    • 기능 점수
      • 데이터 기능
        • 내부 논리 파일(ILF)
        • 외부 연계 파일
      • 트랜잭션 기능
        • 외부 입력
        • 외부 출력
        • 외부 조회

일정 계획

작업 분할 구조도(WBS : Work Breakdown Structure, 작업분해도)

  • 정의
    • 프로젝트 목표를 달성하기 위해 필요한 활동과 업무를 세분화하는 작업
    • 프로젝트 구성 요소들을 계층 구조로 분류
    • 프로젝트 전체범위 정의
    • 프로젝트 작업을 세분화
  • 목적과 용도
    • 사용자와 개발자 간의 의사소통 도구로 사용함
    • 프로젝트 업무 내역을 가시화 할 수 있어 관리가 용이함
    • 프로젝트 팀원의 역할과 책임이 분명함
    • 필요 인력과 일정 계획을 세우는 데 기초로 활용함
    • 개발비 산정 시 기초로 활용함
    • 성과 측정 및 조정 시 기준선으로 활용할 수 있음

작업 패키지(Work Package)

  • 계층 구조에서 최하위에 있는 항목

네트워크 차트

PERT/CPM

  • WBS의 작업 순서, 소요 기간 등을 네트워크 형태의 그래프로 표현한 후 어떤 작업이 중요한지 또, 일정에 여유가 있는 작업은 어떤 것인지 찾아내 중점 관리를 해야하는 작업을 명확히 하는데 사용
  • 프로젝트를 완료할 수 있는 최소 기간은 얼마인지, 완료 기간을 맞추기 위해서는 각 작업을 언제 시작하고 완료해야 하는지 지연되지 않으려면 어떤 작업에 특히 주의를 기울여야 하는지, 또 전체 프로젝트 완료 기간을 단축하기 위해서는 어떤 작업들을 단축하는 것이 가장 경제적인지 등 관리자의 고민에 답을 주기 위해 필요한 도구
  • TODO 구하는 방법 예제 풀어보기

위험 분석

  • 인력부족
  • 비현실적 일정 및 예산
  • 잘못된 기능의 소프트웨어 개발
    • 사용자 회람, 프로토 타이핑, 사용자 지침으로 해결
  • 잘못된 인터페이스의 개발
    • 프로토 타이핑, 시나리오, 탯크 분석, 사용자 분류(기능, 스타일, 업무)로 해결
  • 과포장
    • 요구 삭감, 프로토 타이핑, 비용-수익 분석, 원가 분석으로 해결
  • 계속적인 요구 변경
    • 최대 변경 상한선, 정보은닉, 점증적 개발(다음 버전까지 변경을 연기)*Emphasized text*
  • 외부 모양의 빈약
  • 외부 기능의 빈약
  • 실시간 성능의 빈약
  • 기술적 취약

프로덕트 리스크

TODO 3장 99~

반응형