본문 바로가기
CERTIFICATE/정보처리기사

[정보처리기사 실기] 1-1 소프트웨어 개발방법론

by 안녕나는현서 2021. 9. 7.
728x90

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

- 소프트웨어 생명주기 (SDLC; Software Development Life Cycle) 모델

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

 

- 소프트웨어 생명주기 모델 프로세스

  1. 요구사항 분석
    • 다양한 이해관계자의 요구사항 고려 → 요구조건 결정
    • 소프트웨어의 기능, 제약조건, 목표 등을 사용자와 함께 명확히 정의
    • 기능 요구사항, 비기능 요구사항
  2. 설계
    • 수행 방법을 논리적으로 결정
    • 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
  3. 구현
    • 프로그래밍 언어 사용해서 실제 프로그램 작성
    • 프로그래밍 언어, 기법, 스타일, 순서 등 결정
    • 인터페이스 개발, 자료 구조 개발, 오류 처리
  4. 테스트
    • 시스템이 정해진 요구를 만족하는지, 예상과 어떤 차이를 보이는지 검사/평가
    • 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테트스
  5. 유지보수
    • 시스템이 인수되고 설치된 후 일어나는 모든 활동
    • 예방, 완전, 교정, 적응 유지보수

 

- 소프트웨어 생명주기 모델 종류

  1. 폭포수 모델 (Waterfall Model)
    • 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후 다음 단계 진행 (순차적 접근)
    • 단계별 정의와 산출물 명확, 요구사항 변경 어려움
    • 타당성 검토 - 계획 - 요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수
  2. 프로토타이핑 모델 (Prototyping Model)
    • 주요 기능을 프로토타입으로 구현하여, 피드백 반영하여 소프트웨어 제작
    • 요구분석 용이, 타당성 검증 가능
    • (요구사항 분석 - 프로토타입 개발 - 프로토타입 평가) - 구현 - 테스트  *() 안의 과정 반복
  3. 나선형 모델 (Spiral Model)
    • 시스템 개발 시 위험을 최소화하기 위해 점진적으로 시스템 개발 → 변경에 유연한 대처
    • 단계 반복에 따른 관리 어려움
    • (계획 및 정의 - 위험 분석 - 개발 - 고객 평가)
  4. 반복적 모델 (Iteration Model)
    • 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성
    • 병행 개발로 인한 일정 단축 가능 but 관리 비용 증가

 

- 소프트웨어 개발방법론

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
  • 소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발시작 ~ 시스템을 사용하지 않는 과정까지 전 과정 형상화

 

- 소프트웨어 개발방법론 종류

  1. 구조적 방법론 (Structured Development)
    • 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 접근 방식의 방법론
    • 프로세스 중심의 하향식 방법론
  2. 정보공학 방법론 (Information Engineering Development)
    • 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
    • 개발주기를 이용해 대형 프로젝트 수행
  3. 객체지향 방법론 (Object-Oriented Development)
    • 객체를 기본 단위로 시스템 분석 및 설계
    • 객체, 클래스, 메시지 사용
  4. 컴포넌트 기반 방법론 (CBD; Component Based Development)
    • 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램 작성
    • 개발 기간 단축으로 생산성 향상
    • 새로운 기능 추가 쉬움 (확장성)
    • 소프트웨어 재사용 가능
  5. 제품 계열 방법론 (Product Line Development)
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발
    • 영역 공학(영역 분석, 영역 설계, 핵심 자산 구현), 응용 공학(제품 요구분석, 제품 설계, 제품 구현)
  6. 애자일 방법론 (Agile Development)
    • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론
    • 폭포수 모형에 대비 → 개발과 동시에 즉시 피드백 받아서 유동적으로 개발
    • 애자일 방법론 유형
      1. XP (eXtreme Programming)
        • 의사소통 개선, 즉각적 피드백 → 소프트웨어 품질 향상
        • 1~3주의 반복 개발주기
        • 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중
        • 12가지 기본 원리 : 짝 프로그래밍, 공동 코드 소유, 지속적인 통합, 계획 세우기, 작은 릴리즈, 메타 포어, 간단한 디자인, 테스트 기반 개발, 리팩토링, 40시간 작업, 고객 상주, 코드 표준
          • 짝 프로그래밍 (Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리
          • 지속적인 통합 (CI; Continuous Intergration) : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 함
          • 메타 포어 (Metaphor) : 공통적인 이름 체계, 시스템 서술서 통해 고객과 개발자 간의 의사소통을 원활하게 함
          • 테스트 기반 개발 (TDD; Test Driven Develop) : 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고, 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성
      2. 스크럼 (SCRUM)
        • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
      3. (LEAN)
        • 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
  애자일 방법론 전통적 방법론
계획수립 유동적 범위 설정 확장적 범위 설정
업무수행 팀 중심 업무 수행 관리자 주도적 명령과 통제
개인 단위 업무 수행
개발/검증 반복 주기 단위로 개발/검증 분석/설계/구현/테스트를 순차적으로 수행
팀관리 업무 몰입, 팀 평가 경쟁, 개별 평가
문서화 문서화 < 코드 강조 상세한 문서화
성공요소 고객 가치 전달 계획/일정 준수
유형 XP, 스크럼, 린 폭포수, 프로토타입, 나선형

 

2. 비용산정, 일정관리 모형

- 비용산정 모형

  • 소프트웨어 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용 산정

 

- 비용산정 모형 분류

  • 하향식 산정 방법 : 전문가에게 의뢰하거나, 여러 전문가와 조정자를 통해 산정
    • 전문가 판단, 델파이 기법
  • 상향식 산정 방법 : 세부적인 요구사항과 기능에 따라 필요한 비용 계산
    • 코드 라인 수(LoC), Man Month, COCOMO모형, 푸트남 모형, 기능점수(FP)모형

 

- 비용산정 모형 종류

  1. LoC (Lines of Code) 모형
    • 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치 구하고, 이를 이용하여 비용 산정
      • 낙관치 : 가장 적게 측정된 코드 라인 수
      • 중간치 : 측정된 모든 코드 라인 수의 평균
      • 비관치 : 가장 많이 측정된 코드 라인 수
    • 예측치 = (낙관치 + (4 * 중간치) + 비관치) / 6
  2. Man Month 모형
    • 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정
    • Man Month = LoC/(프로그래머의 월간 생산성)
    • 프로젝트 기간 = (Man Month)/(프로젝트 인력)
  3. COCOMO 모형
    • 보헴이 제안, 프로그램 규모에 따라 비용 산정
    • 조직형 : 중소규모, 5만(50KDSI) 라인 이하의 소프트웨어 개발
    • 반 분리형 : 30만(300KDSI) 라인 이하의 소프트웨어 개발
    • 임베디드형 : 초대형 규모, 30만(300KDSI) 라인 이상의 소프트웨어 개발
  4. 푸트남(Putnam) 모형
    • 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
    • 생명주기 예측 모형
  5. 기능점수 (FP; Function Point) 모형
    • 요구 기능을 증가시키는 인자별로 가중치 부여하고, 요인별 가중치를 합산하여 총 기능의 점수 계산하여 비용 산정
    • 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치 부여
    • 기능점수(FP) = 총 기능점수 * {0.65 + (0.1 * 총 영향도)}

 

- 일정관리 모델

  • 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
  • 주 공정법 (CPM; Critical Path Method)
    • 여러 작업의 수행 순서가 얽혀있는 프로젝트의 일정을 계산
    • 모든 자원 제약사항을 배제하고 프로젝트의 시작과 끝을 나타내는 노드와 노드 간의 연결을 통해 공정을 계산
    • 임계 경로 (Critical Path) : 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로 계산
  • PERT
    • 일의 순서를 계획적으로 정리하기 위한 수렴 기법
    • 비관치, 중간치, 낙관치의 3점 추정 방식을 통해 일정 관리
  • 중요 연쇄 프로젝트 관리 (CCPM)
    • 주 공정 연쇄법으로 자원제약사항을 고려하여 일정 작성
728x90

댓글