[정처기 필기] 「5」 | 소프트웨어 개발 방법론 활용 - (1.1) 소프트웨어 개발 방법론, SW 공학, 상향식 비용 산정 기법

728x90

[정처기 필기] 5」 | 소프트웨어 개발 방법론 활용 - (1.1) 소프트웨어 개발 방법론, SW 공학, 상향식 비용 산정 기법

「1」 소프트웨어 설계

「2」 소프트웨어 개발

「3」 데이터베이스 구축

「4」  프로그래밍 언어 활용

> 「5」  정보시스템 구축 관리

- > 소프트웨어 개발 방법론 활용, IT프로젝트 정보 시스템 구축 관리, 소프트웨어 개발 보안 구축, 시스템 보안 구축

 

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

> 2 SW 공학의 발전적 추세

> 3 상향식 비용 산정 기법

4 수학적 산정 기법

5 프로젝트 일정 계획

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

7 소프트웨어 개발 표준

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

9 소프트웨어 개발 프레임워크

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

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

 

소프트웨어 개발, 유지보수 등 과정에서 필요한 각종 기법 / 도구를 체계적으로 정리하여 표준화

 

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

- 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일 방법론, 제품 계열 방법론

 

구조적 방법론

 

정형화된 분석 절차에 따라 요구를 파악하여 문서화하는 처리(Precess) 중심의 방법론

 

- 쉬운 이해 / 검증 가능한 프로그램 코드 생성이 목적

- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리 적용

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

 

정보공학 방법론

 

정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법을 통합 / 적용하는 자료중심 방법론

 

- 대규모 정보 시스템 구축에 적합

- 데이터베이스 설계를 위한 데이터 모델링으로 개체 관계도(ERD; Entity-Relationship Diagram) 사용

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

 

객체지향 방법론

 

현실 세계의 개체를 하나의 객체로 만들어, 객체를 조립하여 필요한 소프트웨어 구현하는 방법론

 

- 구조적 기법의 문제점의 해결책

- 설계 과정에서 주로 사용되는 모델링 언어는 패키지 다이어그램(Package Diagram), 배치 다이어그램(Deployment Diagram), 상태 전이도(State Transition Diagram)

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

 

컴포넌트 기반(CBD; Component Based Design) 방법론

 

기존 시스템, 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션 만드는 방법론

 

- 컴포넌트의 재사용(Reuasblilty) 가능하여 시간, 노력 절감

- 새로운 기능 추가가 간단하여 확장성 보장

- 유지보수 비용 최소화, 생산성 / 품질 향상

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

 

애자일(Agile) 방법론

 

요구사항 변화에 유연하게 대응하도록 일정한 주기 반복하여 개발 과정 진행하는 방법론

 

- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합

- 익스트림 프로그래밍(XP; eXtreme Programming), 스크럼(Scrum), 칸반(Kanban), 크리스탈(Crytal)

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

 

제품 계열 방법론

 

특정 제품에 적용하고 싶은 공통된 기능 정의하여 개발하는 방법론

 

- 임베디드 소프트웨어에 적합

- 영역공학, 응용공학으로 구분

  : 영역공학 - 영역 분석, 영역 설계, 핵심 자산 구현하는 영역

  : 응용공학 - 제품 요구 분석, 제품 설계, 제품 구현하는 영역

- 영역공학, 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요

 

  특정 분야의
영역 지식
핵심 자산의 개선    
         
 영역공학  영역 분석 영역 설계 핵심 자산 구현
       컴포넌트       
  제품의 요구사항 제품의 아키텍처 제품 조립 생산
                  ↓
 응용공학  제품 요구 분석 제품 설계 제품 구현

2. SW 공학의 발전적 추세

소프트웨어 재사용의 개요

 

이미 개발되어 인증받은 소프트웨어의 전체, 일부분을 다른 소프트웨어 개발, 유지에 사용

 

- 품질, 생산성을 높이기 위한 방법, 기존의 경험, 지식을 새로운 소프트웨어에 적용

- 재사용의 이점

  : 개발 시간, 비용 단축

  : 소프트웨어 품질, 개발의 생산성 향상

  : 실패의 위험 감소

  : 시스템 구축 방법에 대한 지식 공유

  : 시스템 명세, 설계, 코드문서 공유

 

소프트웨어 재사용 방법

 

합성 중심(Composition-Based) : 전자 칩과 같은 소프트웨어 부품, 모듈을 만들어 끼워 맞춰 완성, == 블록 구성 방법

생성 중심(Generation-Based) : 추상화 형태로 쓰인 명세를 구체화하여 만드는 방법, == 패턴 구성 방법

 

소프트웨어 재공학의 개요

 

새로운 요구에 맞도록 기존 시스템을 이용하여 나은 시스템 구축, 새로운 기능 추가하여 성능 향상

 

- 유지보수 비용이 개발 비용의 대부분을 차지, 데이터와 기능들의 개조 / 개선을 통해 유지보수성과 품질 향상

- 기능을 개조 / 개선하므로 예방(Preventive) 유지보수 측면에서 위기를 해결하는 방법

- 소프트웨어 수명 연장, 기술 향상, 개발 기간 단축

- 오류, 비용 절감

 

분석(Analysis)

: 명세서를 확인하여 동작을 이해, 재공학할 대상 선정

재구성(Restructuring)

: 구조 향상을 위해 코드를 재구성, 기능과 외적인 동작은 바뀌지 않음

역공학(Reverse Engineering)

: 개발 과정, 데이터 처리 과정을 설명하는 분석 / 설계 정보를 재발견하거나 다시 만드는 활동

: 기존 코드를 복구, 기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도 추출

이식(Migration)

: 다른 운영체제, 하드웨어 환경에서 사용할 수 있도록 변환

 

CASE(Computer Aided Software Engineering)의 개요

 

요구 분석, 설계, 구현, 검사 / 디버깅 과정 전체 또는 일부를 컴퓨터, 전용 소프트웨어 도구를 사용하여 자동화

 

- 다양한 시스템에서 활용되는 자동화 도구(CASE Tool)

- 요구 분석, 설계 과정 지원하는 상위 CASE 도구구현, 테스트 과정 지원하는 하위 CASE 도구

- 상위 CASE 도구모델 사이 모순을 검사, 모델의 오류 검증, 자유 흐름도 작성, 하위 CASE 도구소스 코드 작성

- CASE 사용 이점

  : 개발 기간, 개발 비용 절감

  : 자동화된 기법으로 품질, 생산성 향상

  : 유지보수 간편하게 수행

  : 생산, 운용 활동을 효과적으로 관리 / 통제

  : 품질, 일관성을 효과적으로 제어

  : 모든 단계에 걸친 표준 확립 가능

  : 모듈의 재사용성 향상, 개발 기법 실용화 가능, 문서화 쉬움

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

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

3. 상향식 비용 산정 기법

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

 

프로젝트의 세부적인 작업 단위별 비용 산정 후 집계하여 전체 비용 산정

 

- LOC(원시 코드 라인 수) 기법, 개발 단계별 인월수 기법, 수학적 산정 기법

 

LOC(source Line Of Code, 원시 코드 라인 수) 기법

 

소프트웨어 각 기능의 원시 코드 라인 수비관치(가장 많이 측정), 낙관치(가장 적게 측정), 기대치(평균)를 측정하여 구한 예측치로 비용을 산정

 

- 측정 용이, 이해가 쉬워 가장 많이 사용

- 예측치로 생산성, 노력, 개발 기간비용 산정

 

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

 

: 노력(인월) = 개발 기간 × 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수

: 개발 비용 = 노력(인월) × 단위 비용(1인당 월평균 인건비)

: 개발 기간 = 노력(인월) / 투입 인원

: 생산성 = LOC / 노력(인월)

 

ex)

LOC 기법으로 예측된 총 라인 수가 30,000라인, 참여한 프로그래머가 5명, 평균 생산성이 월간 300라인일 때 소요되는 기간

// 노력(인월) = 30,000 / 300 = 100명

// 개발 기간 = 100 / 5 = 20개월

 

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

 

LOC 기법 보완, 필요한 노력을 생명 주기의 각 단계별로 산정, LOC 기법보다 정확

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90