[정보처리기사_필기] 소프트웨어 공학 <2>
- Information Logs/IT Notes
- 2014. 3. 29. 23:24
■ 소프트웨어 프로젝트 관리
✔ 소프트웨어 생명주기 전체에 걸쳐 진행
✔ 관리 대상
- 계획 관리 : 비용산정, 일정계획
- 품질 관리
- 위험 관리
✔ 3대요소
- People : 인적자원
- Problem : 문제인식
- Process : 일정
■ 프로젝트 계획 및 예측
✔ 계획 수립
- 개발 영역, 자원, 비용, 일정 등을 예측
- 위험성은 예측이 불가
✔ 예측 방법
- 선수 유사 프로젝트 참고
- 프로젝트 세분화
✔ 고려사항
- 규모파악 : 최우선 수행
- 복잡도
✔ 비용결정 요소
- 프로젝트 요소 : 복잡도, 크기, 신뢰도
- 자원요소 : 인적자원, H/W, S/W
- 생산성요소 : 개발자의 능력, 개발 기간
■ 비용산정 기법
✔ 하향식 비용 산정 기법
- 비과학적 방법 -> 경험에 의거
✔ 상향식 비용 산정 기법
- 세부사항을 산정하여 합하는 방법
- LOC(원시 코드 라인수)방법
➤ 프로그램의 라인수를 파악 -> 규모만 파악
➤ 예측치 = [낙관치 + 기대치 * 4 + 비관치] / 6
-COCOMO모형
➤ 복잡도도 파악해야한다.
➤ Man-Month : 한명의 프로그래머가 개발시 얼마나 걸릴지를 계산
➤ 복잡도에 따른 분류
> 조직형(Organic Mode) : 업무용, 과학용
> 반분리형(Semi-Detached Mode) : 운영체제, 데이터베이스 관리
> 내장형(Embedded Mode) : 신호제어, 미사일 유도, 실시간 처리
➤ 비용상식 종류
> Basic : 기본형
> Intermediate : 중간형
> Detailed : 발전형
➤ ex) 40PM = 한사람이 개발시 40개월이 걸린다
■ 프로젝트 조직 구성
✔ 중앙집중식 팀 구성
- 한 관리자가 책임
- 책임 프로그래머 : 요구분석, 설계
- 프로그래머 : 실제 코딩
- 프로그램 사서 : 일정, 문서등 관리
✔ 분산형 팀 구성
- 민주주의식 팀 구성
■ 프로젝트 일정
✔ PERT / CPM
- 프로젝트 완성에 필요한 작업을 나역하고 소요기간을 예측하는데 사용
- 임계경로 : 최대의 시간이 걸리는 경로
- PERT 는 예측이 어려울때 낙관, 비관, 가능성있는 경우로 나누어 예측
- CPM 은 작업 시간이 정확히 주어졌을 때
✔ 브룩스의 법칙
- 일정이 지연된다고해서 인원을 추가하는것은 악영향을 가져온다.
✔ 간트 차드
- 작업 일정을 수평 막대도표를 사용하여 나타내는 일정표
- 이정표, 작업일정, 작업기간, 산출물
✔ 일정 계획의 순서
- 프로젝트 규모 추정
- 각 작업들을 분할(WBS)
- CPM 네트워크로 나타냄
- 간트차트작성
■ 소프트웨어 품질 보증
✔ 품질 항목
- 신뢰성, 무결성, 사용용이성, 이식성(호환성)
- 포함되지 않은 것 : 중복성, 종속석, 복잡성, 간결성
✔ 정형 기술검토(FTR)
- 소프트웨어 기술자들에 의해 수행되는 활동
- 목적
➤ 사용자 요구사항 확인
➤ 기능과 로직의 오류
➤ 프로젝트 관리의 편리성
- 유형
➤ 검토회의 : 오류 검출, 수정은 x
➤ 검열 : 1~4명의 검열관이 중간 산출물 검사
- 지침사항
➤ 논쟁과 반박 제한
➤ 제품의 검토에 집중
➤ 참가자수 제한
✔ 신뢰성, 가용성
- 측정방법
➤ MTBF : 수리가능의 경우 고장이 고쳐진후 다시 고장나기까지 시간
➤ MTTF : 수리가 불가능(ex : 전구)한 경우 수명시간
➤ MTBF = MTTR(고장수리시간) + MTTF(가동시간)
➤ 가용성 =[ MTBF / (MTBF + MTTR) ] * 100%
■ 위험 관리
✔ 위험의 종류
- 사용자 요구사항 변경
- 인력부족
- 예산
- 일정
✔ 위험표(Risk Table)
- 위험내용, 위험 종류, 발생확률, 영향력, 위험 감시및 조치(해결방안)
■ 형상 관리
✔ 형상관리 : 산출물 관리
✔ 특징
- 유지보수 단계에서 행해진다.
✔ 형상관리 항목
- 정의 단계 문서
- 개발 단계 문서, 프로그램
- 유지보수 단계 변경사항
■ 요구사항 분석
✔ 구조적 분석도구
- DFD(Data Flow Diagram) 자료 흐름도
➤ 프로세스 : 원으로 표시함
➤ 자료흐름 : 화살표로 표시함
➤ 자료저장소 : 좌우가 뚫린 사각형
➤ 단말(종착지) : 사각 박스
- DD(Data Dictionary) 자료사전
➤ = : 자료의 정의
➤ + : 자료의 연결
➤ () : 자료의 생략
➤ [|] : 자료의 선택
➤ {} : 자료의 반복
➤ ** : 주석
- Mini Specification 소단위 명세서
➤ 프로세스의 처리 절차를 기술
- E-R Diagram
➤ 데이터 구조들간의 관계를 표현
- 자동화 분석 도구
➤ SREM, PSL/PSA, EPOS
-HIPO(Hierarchy Input Process Output)
➤ 분석및 설계를 문서화할 때 사용되는 하향식 기법
➤ 히포의 종류
> 가시적도표
> 총체적 다이어그램
> 세부적 다이어그램
■ 설계
✔ 설계
- 요구사항을 실현하기 위한 알고리즘
- 데이터설계 -> 아키텍처 설계 -> 인터페이스 설계 -> 절차 설계
- 용어
➤ Fan In : 상위 모듈에 호출되어지는 수
➤ Fan Out : 호출하는 하위 모듈의 수
- 바람직한 설계
➤ 설계는 모듈적(독립적)
✔ 모듈화
- 모듈 : 기능별로 분할된 기본단위
- 모듈은 독립적일수록 좋다 -> 응고결저(응집도는 높고 결합도는 낮을수록 좋다)
- 장점 : 융통성, 경제성, 확장성
- 결합도
➤ [약함]데이터 - 스탬프(자료구조) - 제어 - 외부 - 공통 - 내용 [강함]
➤ 데이터 결합도 : 데이터를 공유
➤ 내용결합도 : 다른모듈의 내용을 참조
- 응집도
➤ [강함] 기능 - 순차 - 교환 - 절차 - 시간 - 논리 - 우연 [약함]
➤ Functional
➤ Sequential
➤ Communication
➤ Procedural
➤ Temporal
➤ Logical
➤ Coincidental
✔ 설계 방법
- 데이터설계
- 아키텍처설계(구조설계)
- 인터페이스 설계
- 절차 설계
➤N-S차트 : 반복, 순차(연속), 선택으로 이루어진 순서도
■ 구현
✔ 프로그래밍 단계
✔ 언어 선정
- 업무성격
- 경험
- 새로운 언어가 무조건 좋은건 아니다
✔ 구조적 프로그래밍
- Dijkstra 방법론 : 선택과 반복구조
- 순차, 선택, 반복
■ 검사
✔ 검사의 목적은 오류를 찾아내는 것이다.
✔ 검사기법
- White Box : 코드(모듈)검사, 복잡하다, 개발자가 실행
➤ 논리, 코드 오류를 검출
➤ 기초 경로 검사
➤ 복잡도 = 계산 화살표 - 노드수 +2
- Black Box : 기능 테스트, 사용자가 실행
➤ 성능, 기능, 인터페이스 오류등을 검출
➤ 동치 분할 검사, 경계값분석, 원인-효과검사, 오류예측검사, 비교검사
✔ 검사 전략 : 개발은 역방향으로 테스트
- 분석 단계 : 시스템 테스트
- 설계 단계 : 통합테스트
➤ 스터브 : 하위모듈을 임시 시험용모듈로 대체
➤ 드라이버 : 제어모듈
- 구현 단계 : 단위테스트
- 유지보수 단계 : 시스템 테스트
- 알파 검사 : 사용자가 시험하고 개발자가 지켜봄
- 베타검사 : 실업무에서 사용자가 직접 시험
■ 유지 보수
✔ 가장 많은 비용과 노력이 필요
✔ 유지보수의 유형
- 수정보수 : 시스템을 운영하면서 검사단계에서 찾지 못한 오류 수정
- 적응보수 : 환경변화에 적응하는 유지보수 (서비스팩)
- 완전화보수 : 새로운기능을 추가, 성능개선, 가장 어렵다.
- 예방보수
✔ 목적
- 하자보수
- 환경적응
- 예방조치
✔ 외계인코드 : 문서화과정이 없었던 유지보수가 어려운 옛날 프로그램