소프트웨어 관리 1: 프로젝트 관리와 품질 관리
22 Jul 2024 #cs
프로젝트 관리 (Project Management)
SW 개발 목표 달성을 위해 프로젝트 계획, 실행, 모니터링 및 완료를 체계적으로 수행하는 과정입니다. 비용 관리, 일정 관리 등이 이에 해당합니다.
소프트웨어 비용 산정 (Cost Estimation)
SW 개발 프로젝트의 비용과 필요한 노력을 예측하는 과정. 프로젝트 계획, 자원 할당, 일정 관리 등의 효과적인 수행, 프로젝트의 성공적인 완료, 예산 초과 방지 등에 중요한 역할.
LOC (source Line Of Code) 기법
SW 원시 코드 라인 수(LOC)의 비관치, 낙관치, 기대치를 측정해 예측치를 구하고, 이를 이용해 비용을 산정하는 기법입니다.
- 공식: 비용 = LOC / (개발 기간 $\times$ 투입 인원)
수학적 산정 기법
상향식 비용 산정 기법으로 개발 비용 산정의 자동화를 목표로 합니다.
- 경험적 추정 모형, 실험적 추정 모형이라고도 합니다.
- 주요 기법: COCOMO 모형, Putnam 모형, FP 모형
COCOMO (COnstructive COst MOdel) 모형
LOC에 의한 비용 산정 기법으로 Boehm이 제안했습니다. LOC를 예측한 후 이를 SW에 따라 다른 비용 산정 방정식에 대입해 비용을 산정하는 방법입니다.
- Man-Month: 프로젝트를 완성하는 데 필요한 노력. COCOMO 비용 산정 결과의 형식입니다.
- 개발 유형:
- 조직형 (Organic Model): 중소규모 5만(50KDSI) 라인 이하의 SW 개발에 쓰이는 유형으로, 사무 처리나 과학용 응용 SW 개발에 적합합니다.
- 반분리형 (Semi-Detached Model): 중간 규모 30만(300KDSI) 라인 이하의 SW 개발에 쓰이는 유형으로, 컴파일러, 인터프리터 등 유틸리티 개발에 적합합니다.
- 내장형 (Embedded Model): 초대형 규모, 30만(300KDSI) 라인 이상의 SW 개발에 쓰이는 유형으로, 신호기 제어, 실시간 처리 등 시스템 프로그램 개발에 적합합니다.
Putnam 모형
소프트웨어 개발 생명 주기의 전 과정 동안 사용될 노력의 분포를 예상하는 모형으로, Putnam이 제안했습니다.
- 생명 주기 예측 모형이라고도 합니다.
- Rayleigh-Norden 곡선의 노력 분포도를 기초로 하여 시간에 따른 함수로 표현합니다.
FP (Function Point; 기능 점수) 모델
SW의 기능을 증대시키는 요인별로 기능 점수(FP)를 구한 후 이를 이용해 비용을 산정하는 기법입니다.
- FP 산출: 요인 별 가중치를 합산 해 총 FP를 구하고, 총 FP와 영향도를 이용해 각 요인의 FP를 구합니다.
- 기능 증대 요인: 입력 양식, 출력 보고서, 사용자 질의 수, 데이터 파일, 인터페이스.
비용 산정 자동화 추정 도구
- SLIM: Rayleigh-Norden 곡선과 Putnam 모델을 기초로 개발된 자동화 추정 도구.
- ESTIMACS: FP 모델을 기초로 하여 다양한 프로젝트와 개인별 요소를 수용하도록 개발된 자동화 추정 도구.
스케줄링 기법 (Scheduling)
PERT (Program Evaluation and Review Technique)
프로젝트 전체 작업 간 상호 관계를 표시하는 네트워크입니다.
- 결정 경로, 작업에 대한 경계 시간, 작업 간 상호 관련성 등을 알 수 있습니다.
- 각 작업을 단계로 나누어 종료 시기를 결정합니다: 낙관적, 가능성이 있음, 비관적
CPM (Critical Path Method; 임계 경로 기법)
프로젝트 완성에 필요한 작업을 나열하고, 작업에 필요한 소요시간을 예측하는 데 사용하는 기법입니다.
- 노드와 간선으로 구성된 네트워크: 노드는 작업, 간선은 작업 간 전후 의존 관계를 나타냅니다.
- 임계 경로: 작업 소요 시간이 제일 길게 걸리는 경로.
간트 차트 (Gantt Chart)
프로젝트 작업 일정을 막대 도표를 사용해 표시하는 프로젝트 일정표로, 시간선(Time-Line) 차트라고도 합니다. 중간 목표 미달성 시 이유와 기간을 예측하는 데 도움이 됩니다.
소프트웨어 품질 관리 (Quality Management)
SW 품질을 보장하고 향상시키는 데 초점을 두어, 제품이 요구되는 품질 기준을 충족하도록 보장하는 활동입니다.
테스트 케이스 (Test Case)와 ISO/IEC/IEEE 29119-3
구현된 SW가 요구사항을 정확히 준수했는지 확인하기 위해 테스트할 때, 이 테스트 항목에 대한 명세서입니다. ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성 요소로는:
- 식별자: 항목 식별자, 일련번호
- 테스트 항목: 테스트의 대상(모듈, 기능 등)
- 입력 명세: 테스트 데이터, 테스트 조건
- 출력 명세: 테스트 케이스 수행 시 예상되는 출력 결과
- 환경 설정: 필요한 HW, SW 환경
- 특수 절차 요구: 테스트 케이스 수행 시 특별히 요구되는 절차
- 의존성 기술: 테스트 케이스 간 의존성
ISO/IEC 12207
ISO(국제표준화기구)에서 만든 표준 SW 생명 주기 프로세스입니다. SW 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 SW 생명 주기 표준을 제공합니다. 아래와 같이 구분됩니다:
- 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지보수
- 지원 생명 주기 프로세스: 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결
- 조직 생명 주기 프로세스: 관리, 기반 구조, 훈련, 개선
SPICE (Software Process Improvement and Capability dEtermination)
공식 명칭은 ISO/IEC 15504로, SW 품질 및 생산성 향상을 위해 SW 프로세스를 평가, 개선하는 국제 표준입니다.
SPICE 기준 프로세스 수행 능력 단계
- 0 Incomplete (불완전): 프로세스가 구현되지 않았거나 목적을 달성하지 못한 단계
- 1 Performed (수행): 프로세스가 수행되고 목적이 달성된 단계
- 2 Managed (관리): 자원의 한도 내에서 프로세스가 작업의 산출물을 내는 단계
- 3 Established (확립): 소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행되는 단계
- 4 Predictable (예측): 프로세스가 목적 달성을 위해 통제되고 양적 측정을 통해 일관적으로 수행되는 단계
- 5 Optimizing (최적화): 프로세스 수행이 최적화되고 지속적으로 개선되어 목적을 만족하는 단계
CMMI (Capability Maturity Model Integration)
SW 개발 조직의 업무 능력 및 성숙도를 평가하는 모델입니다. 성숙도 단계는 아래와 같습니다:
- 1 Initial (초기): 작업자의 능력에 성공 여부가 달림
- 2 Managed (관리): 특정 프로젝트 안에서 프로세스가 정의 및 수행됨
- 3 Defined (정의): 조직의 표준 프로세스가 존재하여 이에 따라 업무 수행
- 4 Quantitatively Managed (정량적 관리): 프로젝트를 정량적으로 관리 및 통제함
- 5 Optimized (최적화): 프로세스 역량 강화를 위해 지속적으로 프로세스를 개선함
소프트웨어 재사용 (Software Reuse)
이미 개발되어 인정 받은 SW를 다른 SW 개발이나 유지에 사용하는 것을 말합니다.
- Composition-Based (합성 중심; 블록 구성 방법): SW 부품(블록)을 만들어 끼워 맞추며 SW를 완성시키는 방법.
- Geneeration-Based (생성 중심; 패턴 구성 방법): 추상화된 명세를 구체화하여 프로그램을 만드는 방법.
# 요구 명세 기법과 UML: 요구 명세 기법은 사용자 요구사항을 수집하고 명확히 정의하는 기법으로, 유스케이스 다이어그램과 같이 UML을 사용할 수도 있습니다. 한편, UML은 요구사항을 포함한 시스템의 다양한 측면을 시각적으로 표현하는 데 사용되는 표준 모델링 언어입니다. 즉, UML이 더 넓은 개념이라고 할 수 있습니다.
CASE (Computer Aided Software Engineering)
SW 개발 과정 전체 혹은 일부를 컴퓨터 및 전용 SW 도구를 사용해 자동화하는 것을 말합니다.
- 주요 기능: 소프트웨어 생명 주기 전 단계 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원.