자격증/정보처리기사

정보처리기사 - 1장 요구사항 확인(소프트웨어 개발 방법론)

지팡구 2022. 6. 24. 02:29

해당 내용은 2022 정보처리기사  수제비 실기책을 참고해 작성한 내용입니다.

 

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

  1) 소프트웨어 생명주기 ( SDLC : Software Developement Life Cycle)

 

 : 요구분석부터 유지보수까지 전 공정을 체계화한 절차로 시스템 개발의 운용과 유지보수를 거쳐 생애를 마칠 때까지 밟는 순서에 대한 작업 프로세스를 모델화 한 것이다.

 

이 생명주기의 모델에는 4가지가 있는데, 폭포수(waterfall) 모델, 프로토타이핑(prototyping) 모델, 나선형(spiral) 모델, 반복적(iteration) 모델이 있다.

 

  1) 폭포수 모델(Waterfall Model)은 개발 시 단계를 완료한 후에 다음 단계로 넘어가는 모델로 가장 오래된 모델이다.  선형 순차적 모델으로 고전적 생명주기 모형이라고도 하며, 단계별 정의와 산출물이 명확하고 요구사항의 변경이 어렵다.

 

  2) 프로토타이핑 모델(Prototyping Model)은 고객이 요구한 주요 기능을 프로토타입으로 구현하며, 고객의 피드백을 반영해 소프트웨어를 만들어간다. 

 

  3) 나선형 모델(Sprial Model)은 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템을 개발하는 모델이다.

 

  4) 반복적 모델(Iteration Model)은 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발해 점차 완성하는 모델로 요구사항의 일부분이나 제품의 일부분을 반복적으로 개발해 최종 시스템을 완성하는 모델이다.


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

 소프트웨어 개발 방법론은 개발 전 과정에서 지속적으로 적용할 수 있는 방법, 절차, 기법으로 소프트웨어를 하나의 생명체로 간주한다는 특징이 있다.

 

개발 방법론에는 구조적 방법론, 정보공학 방법론, 객체 지향 방법론, 컴포넌트 기반 방법론, 애자일 방법론, 제품 계열 방법론이 있다.

 

  1) 구조적 방법론(Structureed Development) 

      전체 시스템을 기능에 따라 나눠 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론으로, 프로세스 중심의 하향식 방법론이다. 구조적 프로그래밍을 표현하기 위해 나씨-슈나이더만 차트를 사용한다.

 

  2) 정보공학 방법론(Information Enginerring Development)

      개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론으로 개발주기를 이용해 대형 프로젝트를 수행한다.

 

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

     '객체'라는 단위를 이용해 시스템을 분석, 설계하는 방법론으로 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용한다.

 

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

    모듈 단위인 컴포넌트를 조립해 하나의 새로운 응용 프로그램을 작성하는 방법론으로 개발 기간 단축으로 인한 생산성이 향상되고, 새로운 기능의 추가가 쉬워 확장성이 좋다. 또한 소프트웨어 재사용이 가능하다.

 

  5) 애자일 방법론(Agile Development)

    절차보단 사람이 중심이 되어 변화에 유연하고, 신속히 적응하면서 효율적으로 시스템을 개발할 수 있는 경량 개발 방법론으로 개발 과정의 어려움을 극복하기 위해 방법을 모색한 방법론이다. 

 

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

   임베디드 소프트웨어를 작성하는데 유용한 방법론으로 특정 제품에 적용하고 싶은 공통된 기능을 정의해 개발하는 방법론이다.

 

  애자일 방법론(Agile Development)

   = 애자일 방법론은 SW 개발 환경의 변화와 기존의 개발 방법론의 한계를 극복하기 위해 등장했는데, 앞서 설명했던 것 처럼 절차보단 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 개발할 수 있는 방법론이다. 폭포수 모델과 대비되는 방법론이며 개발과 함게 즉시 피드백을 받아 유동적으로 개발할 수 있다.

 

   애자일 방법론에는 대표적으로 XP, 린(Lean), 스크럼(SCRUM)등이 있다.

 

   XP(eXtreme Programming) 의사소통의 개선즉각적인 피드백으로 SW 품질을 높이기 위한 방법론으로 1~3주의 반복 개발주기를 가지고 있다. 또한 5개의 가치와 12개의 실천항목이 존재하는데, 그 내용은 다음과 같다.

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

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

 

스크럼(SCRUM)은 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀 프로젝트 관리 중심의 방법론이다.

백로그(Backlog) 제품과 프로젝트에 대한 요구사항
스프린트(Sprint) 2~4주의 짧은 개발 기간 반복적 수행을 통해 개발의 품질을 향상
스크럼 미팅(Scrum Meeting) 매일 15분정도 미팅, To-Do List 계획 수립(데일리 미팅)
스크럼 마스터(Scrum Matster) 프로젝트 리더로 스크럼 수행 시 문제를 인지, 해결
스프린트 회고(Sprint Retrospective) 스프린트 주기를 되돌아보며 개선점, 규칙 준수 여부 등을 확인하고 기록하며, 스프린트가 끝난 시점이나 일정 주기로 시행
번 다운 차트(Burn Down Chart) 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

 

린(LEAN)은 도요타의 린 시스템 품질기법을 SW 개발 프로세스에 적용해 낭비 요소를 제거해 품질을 향상시킨 방법론.

 

3. 객체 지향 분석 방법론 

객체 지향 분석(OOA: Object Oriented Analysis)는 사용자의 요구사항을 분석해 주어진 문제와 관련된 모든 객체, 속성과 연산, 관계 등을 정의해 모델링하는 기법으로 종류는 OOSE, OMT, OOD가 있다.

 

OOSE (Object Oriented Software Engineering)야콥슨이 만들었으며 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론이다. 기능적 요구사항의 중심의 시스템이다.

 

OMT (Object Modeling Technology)럼바우가 만들었으며 그래픽 표기법을 이용해 SW 구성요소를 모델링하는 방법론인데, 분석 절차가 있다(객동기)= 객체 모델링>동적 모델링> 기능 모델링 순서로 진행한다.

 

OOD (Object Oriented Design)부치가 만들었으며 설계 문서화를 강조해 다이어그램 중심으로 개발하는 방법론인데 분석과 설계의 분리가 불가능하다.

 

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

비용산정 모형은 SW의 규모파악을 통한 투입자원, 소요시간을 파악해 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식으로 하향식 산정방법상향식 산정방법이 있다.

 

- 하향식 산정방법경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식으로 종류에는 전문가 판단과 델파이 기법이 있다. 

 

-상향식 산정방법세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식인데, 종류에는 코드 라인 수(Loc), Man Month, COCOMO 모형, 푸트남 모형, 기능점수(FP) 모형 등이 있다.

 

  1. Loc(Line of Code) 모형은 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정해 예측치를 구해서 이를 이용해 비용을 산정하는 방식인데, 측정이 쉽고 이해하기 쉬워 많이 사용한다. 

  

  예측치를 먼저 구해야하는데,  (낙관치 : A, 중간치  : B, 비관치 : C)

  예측치를 구하는 공식 :  1/6 x (A+ 4B + C)이다.

예측치 구하는 공식

  2. Man Month 모형은 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식인데 공식은 다음과 같다

 

Man Month = (Loc)/(프로그래머의 월간 생산성)

프로젝트 기간 = (Man Month) / (프로젝트 인력)

 

  3. COCOMO 모형보헴이 제안한 모형으로 프로그램의 규모에 따라 비용을 산정하는 방식인데 유연성이 높아 SW 개발비 견적에 널리 통용된다. 그래서 규모에 따라 개발 유형이 나뉘게 되는데 (조직형, 반 분리형, 임베디드형)다음과 같다.

 

유형 설명
조직형(Organic Model) 소규모의 SW, 5만라인 이하의 SW개발
반 분리형(Semi-Detached Model) 단순형과 임베디드형의 중간형, 30만라인 이하의 SW 개발
임베디드형(Embedded Model) 초대형 규모, 30만 라인 이상의 SW 개발

 

 4. 푸트남 모형은 소프트웨어 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식으로 생명주기 예측 모델이라고도 한다.

 

 5. 기능점수(FP : Fuction Point)모형은 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산해 총 기능의 점수를 계산하여 비용을 산정하는 방식이다.

 

일정관리 모델은 프로젝트가 일정 기한 내 적절히 완료될 수 있도록 관리하는 모델인데 다음과 같은 종류가 있다.

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