[정보처리기사-필기] 소프트웨어 공학 (1)

2011. 6. 11. 14:23머리쓰기/정보처리기사 공부

소프트웨어. 
쉬어가는 과목이랍니다.

좋은 소프트웨어란.. 좋으면 됨 (독창적 x)
 
시스템의 구성 요소 
1. 입력
2. 처리
3. 출력
4. 제어
5. 피드백 

소프트웨어 공학
: 가장 경제적이고 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체제
▶ 경제성, 적시성, 보편타당성

소프트웨어의 위기
하드웨어 발달 > 소프트웨어 발달
유지 보수의 어려움과 엄청난 비용
인력 부족, 성능 및 신뢰성의 부족 

 소프트웨어 생명 주기
: 프로젝트 비용 산정과 개발 계획을 수립할 수 있는 기본 골격, 용어 및 기술의 표준화를 가능케 함.

▶ 종류
1) 폭포수 모형 ( Waterfall Model )

타당성 검토 ▶ 계획 ▶ 요구 분석 ▶ 설계 ▶ 구현(코딩) ▶ 시험(Test) ▶ 유지보수

장점 
: 적용 경험, 성공 사례가 많음. 단계별 정의 및 산출물이 정확
단점
: 과정 중에 새로운 요구 사항 반영 어려움, 단계별로 오류 없이 다음 단계가야 하는데 현실적으로 어려움.

2) 프로토타입 모형 ( Prototype Model )
 
요구 수집 
▶ 빠른 설계 ▶ 프로토타입 구축 ▶ 고객평가 ▶ 프로토타입 조정 ▶ 구현

장점
: 사용자 요구사항의 정확한 파악 및 충실한 반영, 요구사항 변경이 용이
단점
:  사용자와 분석자의 지식과 경험의 수준 차이로 인한 
커뮤니케이션 문제가 일어날 가능성.
 
3) 나선형 모델 ( Spiral )
: 반복적인 작업을 수행하는 점증적 생명주기 모델. 큰 프로젝트에 적합
    
       ↑--------------------------------------↓
계획 수립  ▶  위험 분석  ▶ 공학적 개발  ▶ 고객 평가 
       ↑______________________________________↓

Planning  ▶  Risk Analysis  ▶  Engineering  ▶ Customer Evaluation



효과적인 소프트웨어 프로젝트 관리를 위한 3P ( 3대 요소 )
1) People 사람 인적자원
2) Problem 문제 문제인식
3) Process 프로세스 작업계획 

프로젝트 계획 수립
: 프로젝트가 수행되기 전에 소프트웨어 개발 영역 결정, 필요한 자원, 비용, 일정 등을 예측하는 작업
      ___________________________________________________________________________↓
      ↓
예측의 대상. 
: 기능, 성능, 신뢰도, 비용, 일정, 참여인원 수, 요구되는 노력, 제약조건

예측의 방법
: 유사 프로젝트 참고, 잘게 분리하여 예측, 경험적 예측 모델 활용 등 

계획 수립 시 고려사항.
1. 규모 파악 ( 제일 먼저! )
2. 복잡도
3. 구조적 불확실성 정도
4. 과저 정보의 가용성
5. 위험성

비용 결정 요소!
● 프로젝트 요소 :  제품의 복잡도, 시스템의 크디, 요구되는 신뢰도
● 자원 요소 : 인적, 하드웨어, 소프트웨어 자원
● 생산성 요소 : 개발자의 능력, 개발기간

비용 산정 기법. 

(1) 하향식 비용 산정 기법
: 전체 비용을 산청한 후 각 작업별로 비용을 세분화하여 배정하는 기법
과거의 유사한 경험을 바탕, 비과학적인 방법 
( 전문가 감정 기법, 델파이 기법 등이 있음 )

(2) 상향식 비용 산정 기법
: 하향식과 반대, 세부적인 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법.
( LOC 기법, 개발 단계별 인월 수 기법, 수학적 산정 기법 등이 있음 ) 

LOC ( Line of Code ) 원시 코드 라인 수
: 프로그램의 라인 수를 평가하여 비용을 산정하는 방법 ( 규모 = 비용 )
예측치 = { 낙관치 + ( 4*기대치 ) + 비관치 } / 6
개발기간 = 노력(인월) / 투입인원
개발비용 = 노력(인월) * 단위비용
노력(인월) = 개발기간

COCOMO ( COnstructive COst MOdel ) ( 규모 + 복잡도 = 비용 )
: 보헴이 제안. 소프트웨어의 종류에 따라 다르게 책정되는 비용산정. 같은 규모라도 프로그램의 성격까지 고려

COCOMO 프로젝트 모드 ( 개발 유형 )
1. 조직형 ( Organic Mode ) : 5만 라인 이하, 간결한 소프트웨어
2. 반분리형 ( Semi-Detached Mode ) : 30만 라인 이하, 간단한 운영체제 및 데이터베이스
3. 내장형 ( Embedded Mode ) : 30만 라인 이상, 복잡한 소프트웨어

COCOMO 모형의 종류
기본형 (Basic) : 크기와 개발 유형만을 이용
중간형 (Intermediate) : 기본형을 토대로 여러 가지 다른 요인을 추가
발전형 (Detail) : 중간형을 보완.