솔적솔적

정보 처리 기사 실기 01. 요구 사항 확인(정리) + 간단 요약 본문

정보처리기사

정보 처리 기사 실기 01. 요구 사항 확인(정리) + 간단 요약

카드값줘체리 2022. 1. 18. 04:04

01. 소프트웨어 개발 방법론

1. 소프트웨어 개발방법론
2. 비용산정, 일정관리 모형

02. 현행 시스템 분석

1. 현행 시스템 파악
2. 개발 기술 환경 정의

03. 요구사항 확인

1. 요구사항
2. 요구사항의 시스템화 타당성 분석

01. 분석 모델 확인하기

1. 분석 모델 검증
2. 분석 모델의 시스템화 타당성 분석

 

01. 소프트웨어 개발 방법론

[1] 소프트웨어 개발방법론

 

(1) 소프트웨어 생명주기 모델

[1] SDLC; Software Development Life Cycle ) 모델 개념

- 소프트웨어 생명주기는 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.

- 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를   

  모델화한 것이다.

 

[2] 소프트웨어 생명주기 모델 프로세스

 

소프트웨어 생명주기 모델 프로세스

 

요구사항 분석  → 설계 → 구현 → 테스트 → 유지보수

1. 요구사항 분석 - 多 이해관계자의 상충할 수 있는 사항을고려해 신제품 or 변경된 제품에 부합하는 요구와 조건을 결정하는 단계

- 개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계 
- 기능 요구사항
- 비기능 요구사항
2. 설계 - 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계  - 시스템 구조 설계
- 프로그램 설계
- 사용자 인터페이스 설계
3. 구현 - 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계

- 프로그래밍 언어 선택, 스타일 , 순서 등을 결정하는 단계 
- 인터페이스 개발
- 자료 구조 개발
- 오류 처리
4. 테스트 - 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계  - 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
5. 유지보수 시스템이 인수되고 설치된 후 일어나는 모든 활동 - 예방, 완전, 교정, 적응 , 유지보수

 

[3] 소프트웨어 생명주기 모델 종류 

소프트웨어 생명주기 모델종류로는 폭포수 모델, 프로토타이핑 모델, 나선형모델, 반복적 모델이 있다.

 

소프트웨어 생명주기 모델 종류

폭포수 모델 (waterfall Model) - 소프트웨어 개발 시 각 단계를확실히 마무리 지은 후 다음 단계로 넘어가는 모델

- 가장 오래된 모델

- 선형 순차적 모형으로 고전적 생명주기 모형

- 모형의 적용 경험, 성공 사례 많음

- 단계별 정의와 산출물이 명확

- 요구사항 변경이 어려움
프로토타이핑 모델 (Prototyping Model) - 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델

- 발주자나 개발자 모두에게 공동의 참조 모델을 제공

- 프로토 타입은 구현 단계의 구현 골격 
나선형 모델 (Spiral Model) - 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델

- 절차 : 계획 및 정의 → 위험 분석 → 개발 → 고객 평가
반복적 모델 (Literation Model) - 구축 대상을 나누어 병렬적으로 개발 후 통합 or 반복적으로 개발하여 점증 완성시키는 SDLC 모델

- 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델

 

소프트웨어 생명주기 모델 간 비교

구분 폭포수 모델 프로토타이핑 모델 나선형 모델 반복적 모델
절차도 요구사항 분석

설계

구현

테스트 
요구사항 분석

프로토타입 개발

프로토타입 평가

구현

테스트
계획 및 정의

위험분석

개발

고객평가
개발 대상

분석 → 설계 → 구현
분석 → 설계 → 구현
분석 → 설계 → 구현 
특징 순차적 접근 프로토타입 개발 위험분석, 반복개발 증분방식으로
병행 개발
장점 이해가 용이, 관리 편함 요구분석 용이, 
타당성, 검증 가능
위험성 감소,
변경에 유연한 대처
병행 개발로 인한
일정 단축 가능
단점 요구사항 변경 어려움 프로토타입 폐기에 
따른 비용 증가
단계 반복에 따른
관리 어려움
병행 개발에 따른
관리 비용 중가

(2) 소프트웨어 개발 방법론

[1] 소프트웨어 개발 방법론(Software Development Methodology) 개념

  • 소프트웨어 개발방법론이란? 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 철차, 기법이다.
  • 소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발의  시작부터 시스템을 사용하지 않은 과정까지의 전 과정을 현상화한 방법론이다.

[2] 소프트웨어 개발 방법론 종류

소프트웨어 개발방법론 종류로는

 구조적 정보공학  객체지향 컴포넌트기반방법론 애자일 제품 계열

방법론이 있다.

 

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

종류 - 방법론 설명
1. 구조적
(Structued Development)
- 전체 시스템을 기능에 따라 나누어 개발,
  이를 통합하는 분할과 정복 접근 방식의 방법론

- 프로세스 중심의 하향식 방법론

- 구조적 프로그래밍 표현을 위해
  나씨-슈나이더만(Nassi-Shneidrman) 차트사용

나씨- 슈나이더만 차트 특징 :
- 논리기줄에 중점둔 도형식 표현방법
- 연속, 선택, 다중선택, 반복 등의 제어 논리 구조로 표현
- 조건이 복합되어 있는 곳의 처리를 시각적으로
  명확히 식별하는데 적합
2. 정보공학 방법론
(Information Engineering)
- 정보 시스템 개발에 필요한 관리 절차, 작업 기법을
  체계화한 방법론
- 개발주기를 이용해 대형 프로젝트를 수행하는
  체계적인 방법론
3. 객체지향 방법론
(Object-Oriented Development))
- '객체' 라는 기본 단위로 시스템을분석 및 설계하는 방법론
- 복잡한현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
4. 컴포넌트 기반 방법론
(CBD : Component Based Development)
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론

- 개발 기간 단축으로 인한 생산성 향상
- 새로운 기능 추가 쉬움(확장성)
- 소프트웨어 재사용이 가능
5. 애자일 방법론
(Agile Development)
- 절차보단 사람이 중심되어 변화에 유연, 신속대응, 효율적으로 시스템을 개발할수 있는 신속 적응적 경량 개발 방법론

- 애자일은 개발 과정의 어려움을 극복하기 위해 적극적으로 모색한 방법론
6. 제품 계열 방법론
(Product Line Development)
-  특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론

- 임베디드 소프트웨어를 작성하는데 유용한 방법론

- 영역 공학과 응용 공학으로 구분

영역공학 : 영역 분석, 영역 설계 , 핵심 자산을 구현하는 영역
응용공학 : 제품 요구분석, 제품 설계, 제품을 구현하는 영역

 

[3] 애자일(Agile)

1. 애자일 방법론의 개념

- 절차보다 사람이 중심, 변화에 유연, 신속 대응, 효율적으로 시스템 개발할 수 있는 신속 적응적 경량 개발방법론

- 개발 기간 짧고 신속, 폭포수 모형과 대비되는 방법론

- 즉시 피드백받아 유동적으로 개발

 

2. 애자일 방법론 등장 배경

기존 개발방법론의 한계를 극복하기 위해 등장

등장배경 :

- 소프트웨어 개발 환경의 변화(개발 트랜드가 모바일 환경으로 변화), 시장 적시성과 잦은 배포의 중요성 부각

- 기존 개발 방법론의 한계 : 전통적 방법론은 문서 및 절차 위주로 변화대응에 신속하지않았음

                                    빠른 적응, 효율적 개발의 필요성 증가

 

3. 애자일 방법론의 유형

<대표적>

XP, 린, 스트럼(SCRUM) 등 

 

애자일 방법론의 유형

종류 내용
XP
(eXtreme Programming)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

- 1~3주의 반복(lteration)

- 5가지 가치와 12개의 실천 항목 존재

- 가치 : 용기, 단순성, 의사소통, 피드백, 존중

- XP의 12가지 기본원리

1. 짝 프로그래밍 : 개발자 둘이 짝으로 코딩

2. 공동 코드 소유 : 시스템에 있는 코드 누구든 수정가능

3. 지속적인 통합 : 매일 여러 번씩 SW 통합, 빌드 must

4. 계획 세우기 : 고객 요구 가치 정의, 개발자 필요한 것 등

5. 작은 릴리즈 : 작은 시스템 먼저 만들고 , 짧은 단위로 업뎃

6. 메타포어 : 공통적 이름체계, 시스템 서술서 통해
                 고객 <=>개발자 의사소통 원활목표

7. 간단한 디자인 : 현재의 요구사항에 적합한
                        가장 단순한 시스템을 설계

8. 테스트 기반 개발 : 작성해야할 프로그램 테스트 먼저 수행,
                           이 테스트를 통과할 수 있게
                           실제 프로그램의코드를 작성하는 원리
9
. 리팩토링 : 프로그램의 기능 안 바꾸고
                 중복제거, 단순화위해 재구성한다는 원리

10. 40시간 작업 : 피곤으로 인해 실수 않도록 일주일에
                       40시간이상을 일하지 말아야한다는 원리
11. 고객 상주 : 개발자들의 질문에 즉각 대답해 줄 수 있는
                    고객을 프로젝트에 풀타임으로
                    상주시켜야한다는 원래

12. 코드 표준 : 효과적인 공동 작업을위해서는 모든 코드에
                    대한 코딩 표준을 정의해야한다는 원래 
스크린(SCRUM) - 매일 정해진 시간, 장소에서
  짧은 시간의 개발을 하는 팀을 위한 프로젝 관리
  중심 방법론
-------------------------------------------------------------------
- 백로그
- 스프린트
- 스크럼 미팅
- 스크럼 마스터
- 스프린트 회고
- 번 다운 차트

린(LEAN) - 도요타의 린 시스템 품질 기법을
  소프트웨어 개발 프로세스에 적용해서
  낭비 요소를 제거하여 품질 향상시키는 방법론

- JIT(Just In Time) , 칸반(Kanban) 보드 사용

7가지 원칙 :
낭비 제거, 품질 내재화, 지식 창출, 늦은 확정, 
빠른 인도, 사람 존중, 전체 최적화

 

4. 애자일과 전통적 방법론 비교

비교대상 애자일 방법론 전통적 방법론
계획수립 유동적 범위 설정 확정적 범위 설정
업무수행 팀 중심업무 수행 관리자 주도적명령과 통제, 개인 단위로 업무 수행
개발/검증 반복 주기 단위로 SW 개발 검증 분석 / 설계/ 구현 / 테스트 순차적 수행
팀관리 업무 몰입, 팀 평가 경쟁, 개별 평가
문서화 문서화보다는 코드를 강조 상세한 문서화 강조
성공요소 고객 가치 전달 계획/일정 준수
유형 XP, 스크럼, 린 폭포수, 프로토타입, 나선형

 

[2] 비용산정, 일정관리 모형

(1) 비용산정 모형

[1] 비용산정 모형 개념

소프트웨어규모파악을 통한 투입자원, 소요시간을 파악해 실행 가능한 계속을 수립하기 위해 비용을 산정하는 방식

 

[2] 비용산정 모형 분류하향식 산정방법과 상향식 산정방법이 있다.

 

비용산정 모형 분류

분류 설명 종류
하향식 산정방법 경험이 많은 전문가에게 비용 산정을 의뢰, 여러 전문가와 조정자를 통해 산정하는 방식 - 전문가 판단
- 델파이 기법
상향식 산정방법 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 - 코드 라인 수(Loc)
- Man Month
- COCOMO 모형
- 푸트남 모형
- 기능점수(FP)모형

[3] 비용산정 모형 종류

1. LoC모형

- 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정해 여측치를 구하고 

  이를 이용하여 비용을 산정하는 방식

 

- 측정이 쉽고 이해하기 쉬워 많이 사용한다.

 

- 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정 

 

2. Man Month 모형

한 사람이 1개월 동안 할 수 잇는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식

 

3. COCOMO 모형

- 보헴이 제안한 모형, 프로그램 규모에 따라 비용을 산정하는 방식

- 비용산정 결과는 프로젝트를 완성하는 데 필요한 노력으로 산정한다.

- 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용

- 규모에 따라 유형이 조직형(=기본형, 단순형), 반 분리형, 임베디드형으로 나뉜다.

 

COCOMO의 소프트웨어 개발 유형

유형 설명
조직형  
반분리형  
임베디드형  

 

4.푸트남 모형

- 푸트남 모형은 SW개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식

- 푸트남이 제안하는 것으로 생명주기 예측 모형이라고한다.

- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.

 

5. 기능점수 모형

- 기능 점수 모형은 요구 기능을 증가시키는인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식

 

- 경험을 바탕ㅇ으로 단순, 보통, 복잡한 정도에 따라 가중치를 부여한다. 

 

기능점수가중치 부여

 

 

(2) 일정관리 모델

[1] 일정관리 모델 개념

일정관리 모델은 프로젝트가 일정 기한 내에 적절하게 완료될수 있도록 관리하는 모델

 

[2] 일정관리 모델 종류

모델 설명
주 공정법 - 여러 작업의 수행 순서가 얽혀 있는
프로젝트의 일정을 계산하는 기법

- 모든 자원 제약사항을 배제한 상태로
프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간의 연결을 통해 공정을 계산하기 위한 액티비티 표기법
PERT 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로
비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 
관리하는 기법
중요 연쇄 프로젝트 관리 주 공정 연쇄법으로 자원제약사항을 고려하여
일정을 작성하는 기법

 

 

[출저] 수제비2021...! 정보처리기사 실기