요구사항 관리 – SW 개발 방법론 선정
요구공학
- 요구사항에 관계되는 모든 활동과 원칙들에 대한 공학적인 접근 즉, 요구사항을 정의, 문서화, 관리하는 프로세스
- 요구사항 추출- 분석 – 기술 – 검증 – 유지보수
요구사항 추출
- 생명 주기 동안 지속적으로 반복
- 시스템에 대한 요구사항 수집 (개발자관점)
- 이해관계자 식별, 개발 팀과 고객 사이의 관계 생성
- 도출기법 : 인터뷰, 설문, 브레인스토밍, 워크샵, 유스케이스, 프로토타이핑
요구사항 분석
- 무슨 시스템을 구현할 것인가 분석
- 요구사항 간 상충 해결, 소프트웨어 범위 파악, 환경과의 상호작용 이해
- 시스템 요구사항을 정제하여 소프트웨어 요구사항 도출
- 분석기법 : 요구사항 분류, 개념모델링, 요구사항 할당, 요구사항 협상, 정형분석(수학적 기호 표현)
요구사항 기술(명세화) - 분석된 요구사항을 명확하고 정확하게 기록하여 문서화
- 기능 요구사항은 빠짐없이, 비기능 요구사항은 필요한 것만
- 체계적으로 검토, 평가, 승인될 수 있는 문서 작성
- 산출물 : 시스템정의서, 시스템 요구사항 명세서, 소프트웨어 요구사항 명세서
요구사항 검증 및 확인
- 요구사항이 정확하고 완벽하게 그리고 연계성있게 명세호 되었는지 검증
- 분석가가 요구사항을 이해했는지 확인
- 요구사항 문서가 표준에 적합하고 이해 가능하며, 일관성 있고 완전한지 검증
- 리소스가 요구사항에 할당되기 전에 문제파악을 위해 검증 수행
- 주요 활동 : 검토, 프로토타이핑, 모델 검증(정적), 인수테스트(사용자입장, 알바/베타 테스트)
요구사항 유지보수
- 새로운 요구사항의 출현과 변경을 체계적으로 관리
비용산정
- 소프트웨어 개발 비용을 예측하는 과학적이고 합리적인 활동
비용산정의 구성
- 개발원가 = 소프트웨어 개발규모 X 단가 X 기술보정
- 이익 = 개발원가의 10~20% 내외
하향식 산정기법(전체 비용 산정 후 작업별로 비용 세분화)
- 과거의 유사 경험을 바탕으로 회의를 통해 산정하는 비과학적인 기법
- 전문가 판단 기법 : 조직 내 경험이 있는 2명 이상의 전문가에게 비용 산정 의뢰, 편리하고 신속
- 델파이 기법 : 한명의 조정자와 다수 전문가의 의견 종합하여 비용 산정, 전문가의 주관성이라는 단점 보완
상향식 산정기법(세부적인 작업 단위별로 비용 산정 후 전체 비용 산정)
- 원시코드라인수(LOC) : 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 중간치를 측정해 예측치를 구해 비용 산정기법
(비관치 + 4중간치 + 낙관치)/6 = 예측치 - 개발 단계별 노력(MM) : 생명주기 각 단계별로 노력(인/월수)을 산정하는 방ㅇ식
LOC 산정 공식
- 노력 : 개발기간 * 투입인원 == LOC / 1인당 월평균생산코드라인수
- 개발 기간 : 인월 / 투입 인원
- 개발 비용 : 인월 * 단위 비용(1인당 월평균 인건비)
- 생산성 : LOC / MM
수학적 산정기법 (경험적 추정기법)
- 목표 : 개발 비용 산정의 자동화
- COCOMO / Putnam / FP(기능점수)
COCOMO 방법 (Bohem 제안) - 개발할 소프트웨어의 규모(LOC)를 예측한 후 소프트웨어 종류에 따라 비용 산정
- 비용 견적의 강도 분석 및 비용 겨넉의 유연성이 높아 개발비 견적에 널리 통용
- 원시 프로그램의 규모 따라 조직형 organic / 반분리형 semi detached / 내장형 embedded model로 분류
- 비용산정 단계 및 구체화 정도에 따라 기본형(Basic) / 중간형(Intermediate) / 발전형(Detailed) COCOMO로 분류
Putnam 방법
- 소프트웨어 생명주기의 전 과정에 사용될 노력의 분포를 가정해주는 방식( = 생명주기 예측 모형)
- 개발기간이 늘어날수록 프로젝트 적용 인원의 노력 감소, 대형 프로젝트에 이용
기능점수법 (FP) - 알란 알브레히트가 소개 후, ISO.IEC 14143으로 소프트웨어 크기에 대한 국제 표준이 됨
- 기준 : 데이터 기능과 트랜잭션 기능으로 구분하고 가중치를 부여 후 합산하여 총 기능 점수 산출물
- 데이터 기능 : 내부 논리파일 + 외부연계파일
- 트랜잭션 기능 : 외부 입력 + 외부 출력 + 외부 조회
문제1 소프트웨어 위험의 대표적 특성
- 불확실성과 손실
- 위험은 불확실성과 손실을 내재하고 있는데, 이러한 위험의 불확실성을 감소시키고 손실에 대비하는 것이 위험관리 작업이다.
문제2 소프트웨어 재공학 활동(3R)
- Reverse Engineering 역공학 : 소프트웨어를 분석하여 소프트웨어 분석 및 설계 정보를 재발견하거나 다시 만들어내는 작업
- Re-engineering 재공학 : 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 성능을 향상시키는 작업
- Reuse
문제3 나선형 모델(Spiral Model) by Bohem
- 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것이 목적 (점진적 모형)
- 개발 순서 : 계획 및 정의 -> 위험 분석 -> 공학적 개발 -> 고객 평가 (유지보수 과정 불필요)