6.5장. 소프트웨어 공학 중간정리

기타/[소프트웨어 공학]

2019. 4. 22. 23:37

 

[용어 및 질문 모음]

# 1강

- 소프트웨어의 특성 :  비가시성 / 요구사항, 주변환경에 따른 지속적 변화

- 소프트웨어 위기 : 소프트웨어 수요의 증가추세를 공급이 따라가지 못함

- 소프트웨어 개발 연관 역할                 

  1) 고객     (개발 필요성,비용,의뢰)      

  2) 사용자  (사용자측면 요구사항 제공)   

  3) 개발자  (주어진 시간,비용내 제공된 요구사항 기반으로 개발)

+ 소프트웨어 = 컴퓨터 프로그램 + 관련 기록문서

+ 작동경로에 따른 소프트웨어 분류 : 독립형/내장형/실시간형/네트워크형

+ 소프트웨어 개발단계 : 요구사항 분석 -> 설계 -> 구현 -> 테스트

+ 소프트웨어 공학의 분야 생략

 

# 2강

- 프로세스 :  주어진 목적위해 수행되는 일련의 절차

- 소프트웨어 (개발) 프로세스 : 개발절차 + 관련된 인력, 방법, 도구 통합 기술 / 각 절차에서 산출물이 나온다.

- 소프트웨어 개발 생명주기  : 소프트웨어 개발 방법에 대한 추상적 표현 / 순차적, 병렬적 단계로 구성

- 소프트웨어 개발 생명주기의 종류         

   1) 주먹구구식 개발 모델  

   2)폭포수     : 순차적, 전형적개발

   3)원형        : 점진적 개발

   4)나선형     : 2+3+위험분석

- 소프트웨어 개발 방법론                      

 : 소프트웨어 개발 생명주기 내 각 단계에서의 수행방법과 활동들을 구체적으로 정의

- 소프트웨어 개발 방법론의 종류             

   1) UP : 객체지향 SW개발 방법론 / 반복적, 점진적 개발법 / 사이클반복하며 릴리즈 계속 산출(버젼)

   2) XE : 산출물보다 개발에 치중 / 여러번 반복후 릴리즈 산출 / 고객과 상주

   3) 마르미

- 소프트웨어 개발 목표 : 정해진 기간 내, 주어진 예산 이용해 사용자가 원하는 좋은 품질로 개발하는것.

 

# 3강

- 소프트웨어 프로젝트 실패요인 : 관리자와 개발자의 잘못된 통념 / 필요지식, 의지 부족

- 프로젝트 성공위해서는 잘못된 통념 바로잡고, 이미 입증된 방안(PMBOK, ISO, CMMI등)을 지침서로 활용해야한다.

- 소프트웨어 프로젝트 관리 : 주어진 기간과 최소의 비용으로 고객이 만족하는 소프트웨어를 제공하기 위한 여러 활동

- 프로젝트 관리 대상 : 계획관리 / 품질관리 / 리스크관리

- 프로젝트 관리 구성단계 : 프로젝트 계획 수립 -> 실행 -> 통제 -> 종료  (프로젝트 관리 계실통종)

+ PMBOK에서 프로젝트 : 유일한 제품이나 서비스를 만들기 위해 수행되어야할 일시적 행동

+ PMBOK에서 프로젝트 구성요소 : 목표 / 기간 / 비용 / 관리자 / 참여자 / 기술

+ 소프트웨어 프로젝트 프로세스 : 제품구상 -> 소프트웨어 제안요청서 배포(RFP) -> 제안서 제출 -> 제안서 심사 -> 계약서 작성 -> 프로젝트 시작~종료

+ 소프트웨어 프로젝트 성공요소 : 비용 / 일정 / 품질 (이것들의 합의점 찾아야된다)

+ 프로제트 관리 영역(PMBOK) 생략

+ 프로젝트 성공 돕는 지침서 : 1)CMMI   2)ISO

+ CMMI : SEI에서 개발한 조직 프로세스 성숙도에 따라 점진적 개선 제시 기준

+ CMMI 단계 : 1단계) 계획X, 통제X, 예측X

                    2단계) 기본적 프로세스 관리 프로세스 존재 , 사용

                    3단계) 조직차원 표준 프로세스가 존재 / 전담팀 존재

                    4단계) : 정량적 프로세스 측정, 통제

                    5단계) : 프로세스 개선 연구

 

# 4강

- 프로젝트 요구사항을 정확히 명세해야하는 이유 

 : 제품 전체적 파악을 통해 의사소통 시간 절약 가능 

 : 상세 요구사항 사항 알아야 비용 산정이 가능, 이를 기반으로 계획 수립도 가능      

- 기능적 요구사항과 비기능적 요구사항의 차이점

 1) 기능적 요구사항 : 제품을 구현하기 위한 기능적 특성 (저장기능, 편집기능 등)

 2) 비기능적 요구사항 : 제품의 품질등의 기준을 만족하기 위한 특성 (성능, 보안 ,신뢰도등)       

- 요구사항 개발 단계 : 요구사항 수립 -> 분석 -> 명세 -> 검증 (요구사항 수분명검)         

-  SRS : 요구사항 명세서(명세단계에서 도출) : 모두에게 공통 목표 제시 / 개발자와 고객 공통으로 보는 문서

- 유스케이스 다이어그램을 작성하는 이유 : 사용자 관점에서 바라보는 기능을 그려 이해를 도움 => 고객, 개발자간 이거 보며 의견조율가능.

- 유스케이스 다이어그램 표현 절차 : 액터 식별 -> 유스케이스 식별 -> 관계 정의

+ 요구사항 분석 방법 : 유스케이스 모델링 -> 기술서 작성 -> 기능/비기능 분류 ->      요구사항 명세서 작성 

 

# 5강

- 프로젝트 계획 수립시 제일먼저 해야하는거 : 프로젝트 규모 파악

- 프로젝트 개발비용 산정시 결정에 영향주는 요소 : 규모, 공수(Effort), 비용  (개발비용 규공비)

- 소프트웨어 개발 비용 : X , 개발 기간 Y.

- 소프트웨어 산정 방법, 모형 

  1) 경험적 방법

    - 델파이 기법 : 노력과 시간에 대한 수식을 경험적으로 유도해 예측  : 충분한 경험, 스킬 없으면 정확성 감소

  2) 크기중심 방법

    - LOC, COCOMO : 코드의 라인수로 측정 : 개발 초기에는 소스 코드 라인수 예측이 어렵고, 개발 언어 / 저,고평가 에 따라 값이 변동

  3) 기능중심 방법 

    - 기능점수 : 사용자 중심의 기능 크기로 결정

- 기능점수 산정 방식의 7단계 프로세스 생략

- 일정 계획에 사용되는 대표적인 차트, 이에대한 기술 

  1) 퍼트차트 : 프로젝트 구성하는 여러 작업 관계, 흐름을 그래프로 표현 (병행가능, 작업간 상호의존성, 진행경로파악 가능)

  2) 간트차트 : 프로젝트 일정, 예산 및 자원계획등을 목적으로 사용될수 있는 프로젝트 제어 기법  (막대형태, 시작종료일 분명 ,작업간 의존성 안보여줌)

- EVM(Earned Value Management)                      

  : 프로젝트가 계획대로 진행되고 있는지 점검하는 법

  : 프로젝트 일정, 비용, 완료된 작업량을 비용화해 계획대비 실적을 비교, 평가해 성과와 진행률 정량적으로 관리

+ 프로젝트 계획서 : 프로젝트 참여자 모두가 프로젝트 진행하며 참조하는 프로젝트의 중심 문서 / 모든 작업을 테스크와 액티비티로 나누고 분배.

   # 주기적 통제 기본

+ 프로젝트 팀 구성 : 1) 2단계구조 : 소규모 프로젝트에 적합 / 팀장의 능력에 성패 달림

                            2) 계층적구조 : 큰 프로젝트 / 단계별 보고체계 / 의사소통 경로 줄임

                            3) 민주적 팀구성

+ WBS : 대표적 스케쥴링 방식

+ 톱다운 방식 : 하향식 상위단계에서 쪼개 하위단계로 내려오며 세분화

+ 작업 패키지 : 최하위단 작업 / 작업 원가와 일정 신뢰할정도로 산정 가능 최소단위. / 각 마다 산출물 나와야됨.

+ 프로젝트 목표 달성위해 계획과 통제 항상 함께 다뤄짐

 

# 6강

- 리스크의 현실화 : 문제

- 프로젝트 성공에 위헙이 되는 불안요소 파악하는 활동 : 리스크 관리

- 리스크 식별위해 활동되는 방법 : 브레인스토밍, 조사, 인터뷰 등

- 리스크 우선순위 선정 이유 : 모든 리스크에 대응하기에 프로젝트 자원의 제약 존재

- 리스크의 영향을 최소화하기 위해 식별된 리스크에 대해 대처하기 위한 수단  : 리스크 대처 방안

 

 


 

[표현 예시]

1. 유스케이스 다이어그램

 

2. LOC, COCOMO 산정방식

    

 

3. 기능점수 산정방식

 

4. 퍼트차트

 

5. 간트차트

 

6. EVM