나의 공부/Computer Science
소프트웨어공학) CH03 계획
내가 Nega
2021. 3. 31. 21:45
728x90
계획의 이해
Skip
Problem Definition
- 정의
- 소프트웨어 개발의 첫 작업
- 무엇을 개발할 것인지 명확히 정의
- 개발 범위를 결정
- 필요사항
- 개발하고자 하는 영역의 배경지식
- 문제를 파악하기 위해 현재 운영중인 시스템 사용해보기
- 실무 담당자와 면담하여 자료를 수집한 후 면밀히 분석해보기
- Requirements Gathering 
Analysis Validity
- 경제적 타당성
- 개발 여부 판단
- 기술적 타당성
- 현재의 기술로 사용자가 요구하는 기능을 구현할 수 있는지 검토
- 하드웨어 성능이 개발에 지장은 없는지 검토
- 개발자의 기술력에 문제가 없는지 검토
- 법적 타당성
- 개발용 소프트웨어와 도구의 사용이 법적으로 문제가 없는지 검토
- 지적 소유권과 프로그램 보호법이 강화되었으므로 매우 중요
- S/W License
- GNU
- MIT
- BSD
- CDDL
- CPL
- QPL
- etc...
Development cost calculation
- 개발 비용에 영향을 주는 요소
- 프로그래머 자질
- 소프트웨어 복잡도
- 소프트웨어 크기
- 참여 인력 증가
- 개발 기간 길어짐
- 복잡도 커짐
- 가용 시간
- 관리자들의 착각 : 인력/자원 증가는 개발 기간 단축
- 요구되는 신뢰도 수준
- 기술 수준
- Brooks's Law
- Adding manpower to a late software project makes it later.
- Causes.
- communication cost
- education cost about prior projects
비용 산정 기법 1 : 하향식 산정 기법
- 전문가 판단기법
- 델파이 기법
- 전문가 판단기법 + 조정자(coordinator)
비용 산정 기법 2 : 상향식 산정 기법
- 세부 작업 단위별로 비용 산정한 후 전체 비용 합산
- Side Effect
- 수학적 계산 방법보다 경험에만 의존할 경우 부정확할 수 있음
원시 코드 라인 수 기법 (LOC)
개발 단계별 노력 기법(Effort per task)
비용 산정 기법 3 : 수학적산정 기법
COCOMO 방법
- COnstructive COst MOdel
- SW 규모(LOC) 예측한 후 SW 종류에 따라 각 비용 산정 공식에 대입하여 비용 산정
Putnam model
기능점수(FP) model
- 기능 점수 산정 방법
- 산정 근거
- 기능(입.출력, 데이터베이스 테이블, 인터페이스, 조회 등)의 수
- 라인 수와 무관하게 기능이 많으면 규모도 크고 복잡도도 높다고 판단
- 사용자 관점에서 소프트웨어 기능 정량화 -> 개발 비용 산정
- 기능(입.출력, 데이터베이스 테이블, 인터페이스, 조회 등)의 수
- 기능 점수
- 소프트웨어 기능의 크기를 측정하는 단위
- 산정 근거
- 용도
- 개발 시 비용 산정
- 유지보수 비용 산정
- 개발 시 필요한 자원 산정
- 특징
- 소프트웨어 규모를 측정하는 방법
- 기능적 요구사항이 중심이 되는 측정 방법
- 소프트웨어의 요구사항 복잡도를 측정
- 구현 관점이 아닌 사용자 관점의 요구 기능을 정량적으로 산정
- 측정의 일관성 유지를 위해 개발 기술, 갭라 방법, 품질 수준등은 고려하지 않음
- 소프트웨어 개발에 사용되는 언어와 무관
- 소프트웨어 개발 생명주기의 전체 단계에서 사용 가능
- 방법
- 정규 기능 점수법
- 간이 기능 점수법
- 소프트웨어 기능 분류
- 기능 점수
- 데이터 기능
- 내부 논리 파일(ILF)
- 외부 연계 파일
- 트랜잭션 기능
- 외부 입력
- 외부 출력
- 외부 조회
- 데이터 기능
- 기능 점수
일정 계획
작업 분할 구조도(WBS : Work Breakdown Structure, 작업분해도)
- 정의
- 프로젝트 목표를 달성하기 위해 필요한 활동과 업무를 세분화하는 작업
- 프로젝트 구성 요소들을 계층 구조로 분류
- 프로젝트 전체범위 정의
- 프로젝트 작업을 세분화
- 목적과 용도
- 사용자와 개발자 간의 의사소통 도구로 사용함
- 프로젝트 업무 내역을 가시화 할 수 있어 관리가 용이함
- 프로젝트 팀원의 역할과 책임이 분명함
- 필요 인력과 일정 계획을 세우는 데 기초로 활용함
- 개발비 산정 시 기초로 활용함
- 성과 측정 및 조정 시 기준선으로 활용할 수 있음
작업 패키지(Work Package)
- 계층 구조에서 최하위에 있는 항목
네트워크 차트
PERT/CPM
- WBS의 작업 순서, 소요 기간 등을 네트워크 형태의 그래프로 표현한 후 어떤 작업이 중요한지 또, 일정에 여유가 있는 작업은 어떤 것인지 찾아내 중점 관리를 해야하는 작업을 명확히 하는데 사용
- 프로젝트를 완료할 수 있는 최소 기간은 얼마인지, 완료 기간을 맞추기 위해서는 각 작업을 언제 시작하고 완료해야 하는지 지연되지 않으려면 어떤 작업에 특히 주의를 기울여야 하는지, 또 전체 프로젝트 완료 기간을 단축하기 위해서는 어떤 작업들을 단축하는 것이 가장 경제적인지 등 관리자의 고민에 답을 주기 위해 필요한 도구
- TODO 구하는 방법 예제 풀어보기
위험 분석
- 인력부족
- 비현실적 일정 및 예산
- 잘못된 기능의 소프트웨어 개발
- 사용자 회람, 프로토 타이핑, 사용자 지침으로 해결
- 잘못된 인터페이스의 개발
- 프로토 타이핑, 시나리오, 탯크 분석, 사용자 분류(기능, 스타일, 업무)로 해결
- 과포장
- 요구 삭감, 프로토 타이핑, 비용-수익 분석, 원가 분석으로 해결
- 계속적인 요구 변경
- 최대 변경 상한선, 정보은닉, 점증적 개발(다음 버전까지 변경을 연기)*Emphasized text*
- 외부 모양의 빈약
- 외부 기능의 빈약
- 실시간 성능의 빈약
- 기술적 취약
프로덕트 리스크
TODO 3장 99~
반응형