본문 바로가기

정보처리기사 실기

Ⅰ. 요구사항 확인 - 1. 소프트웨어 개발방법론

Ⅰ. 요구사항 확인

 

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

 

1) 소프트웨어 개발방법론

 

(1) 소프트웨어 생명주기(SDLC; Software Developent Life Cycle) 모델

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

* 소프트웨어 생명주기 모델 프로세스: 요구사항 분석 - 설계 - 구현 - 테스트 -유지보수

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

- 폭포수 모델(Waterfall Model)

- 프로토타이핑 모델(Prototyping Model)

- 나선형 모델(Spiral Model)

- 반복적 모델(Iteration Model)

 

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

* 개념: 소프트웨어 개발방법론은 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다.

* 종류:

- 구조적 방법론(Structured Development): 나씨-슈나이더만(Nassi-Shneiderman) 차트

- 정보공학 방법론(Information Engineering Development)

- 객체지향 방법론(Object-Oriented Development)

- 컴포넌트 기반 방법론(CBD; Component Based Development)

- 애자일 방법론(Agile Development)

- 제품 계열 방법론(Product Line Development)

 

* 애자일(Agile)

- 개념: 애자일 방법론은 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론이다. 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있다.

 

- 등장 배경: 소프트웨어 개발 환경의 변화(개발 트렌드가 모바일 환경으로 변화, 시장 적시성과 잦은 배포의 중요성 부각), 기존 개발방법론의 한계(전통적 방법론은 문서 및 절차 위주로 변화에 신속한 대응이 어려움, 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성 증가)

 

- 유형: XP(eXtreme Programming), 린(Lean), 스크럼(SCRUM) 등

 

* XP 개념: 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론. 1~3주의 반복(Iteration) 개발주기

 

* XP의 5가지 가치: 용기, 단순성, 의사소통, 피드백, 존중

 

* XP의 12가지 기본원리: 

기본원리 설명
짝 프로그래밍
(Pair Programming)
개발자 둘이서 짝으로 코딩하는 원리
공동 코드 소유
(Collective Ownership)
시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
지속적인 통합
(CI; Continuous Integration)
매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
계획 세우기
(Planning Process)
고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리
작은 릴리즈
(Small Release)
작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
메타포어
(Metaphor)
공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
간단한 디자인
(Simple Design)
현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
테스트 기반 개발
(TDD; Test Driven Develop)
작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
리팩토링
(Refactoring)
프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성한다는 원리
40시간 작업
(40-Hour Work)
개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상을 일하지 말아야 한다는 원리
고객 상주
(On Site Customer)
개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리
코드 표준
(Coding Standard)
효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리


* 스크럼 주요 개념

- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

- 백로그(Backlog)

- 스프린트(Sprint)

- 스크럼 미팅(Scrum Meeting)

- 스크럼 마스터(Scrum Master)

- 스프린트 회고(Sprint Retrospective)

- 번 다운 차트(Burn Down Chart)

 

* 린 개념: 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론

 

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

 

 

2) 비용산정, 일정관리 모형

 

(1) 비용산정 모형

 

* 개념: 비용산정 모형은 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식이다.

 

* 비용산정 모형 분류

- 하향식 산정방법: 전문가 판단, 델파이 기법

- 상향식 산정방법: 코드 라인 수(LoC), Man Month, COCOMO 모형, 푸트남 모형, 기능점수(FP) 모형

 

* 비용산정 모형 종류

모형 설명
LoC
(Lines of Code) 모형
예측치: (낙관치 + 4x중간치 + 비관치) / 6 
Man Month 모형 (Man Month) = (LoC) / (프로그래머의 월간 생산성)
(프로젝트 기간) = (Man Month) / (프로젝트 인력)
COCOMO
(COnstructive COst MOdel) 모형
보헴이 제안한 모형으로 프로그램 규모에 따라 비용을 산정.
유형: 조직형(5만 라인 이하), 반 분리형(30만 라인 이하), 임베디드형(30만 이상 라인)
푸트남
(Putnam) 모형
푸트남이 제안한 모형으로 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식. 생명주기 예측 모형.
기능점수
(FP; Function Point) 모형
기능점수(FP) = 총 기능점수 X [0.65 + (0.1 X 총 영향도)]

 

(2) 일정관리 모델

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

 

* 종류

- 주 공정법(CPM; Critical Path Method)

- PERT(Program Evaluation and Review Technique)

- 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)