[정처기 필기] 「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 기본서 (길벗알앤디)