Personal Space/정보처리기사 실기

[정보처리기사 실기] [Ch 1] 1-1 소프트웨어 생명주기 모델과 소프트웨어 개발 방법론

잇트루 2021. 6. 22. 17:05
반응형

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

(1) 소프트웨어 생명주기(SDLC: Software Development Life Cycle) 모델 개념

  • SDLC 개념 : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
  • SDLC 프로세스 : 요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수

(2) SDLC 모델 종류

폭포수 모델(Waterfall model)

 - 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델

  • 가장 오래된 모델
  • 선형 순차적 모형으로 고전적 생명주기 모형이라고도 함
  • 모형의 적용 경험과 성공 사례가 많음
  • 단계별 정의와 산출물이 명확
  • 요구사항 변경이 어려움

 

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

 - 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델

  • 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
  • 프로토타입은 구현 단계의 구현 골격

 

나선형 모델(Spiral Model)

 - 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델

  • 나선형 모델 절차 : 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가

 

반복적 모델(Iteration Model)

  •  구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
  •  사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델

 

 

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

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

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
  • 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론

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

구조적 방법론

 - 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론

  • 프로세스 중심의 하향식 방법론
  • 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트(Nassi-Shneiderman chart) 사용

나씨-슈나이더만 개념

  • 논리의 기술에 중점을 둔 도형식 표현 방법
  • 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합
  • 순차처리 구조, 선택 구조, 반복 구조

 

정보공학 방법론

  • 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
  • 개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

 

객체지향 방법론

- '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론

  • 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
  • 객체, 클래스, 메시지를 사용

 

컴포넌트 기반 방법론

 - 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론

  • 개발 기간 단축으로 인한 생산성 향상
  • 새로운 기능 추가 쉬움(확장성)
  • 소프트웨어 재사용이 가능

 

애자일 방법론 개념

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

 

제품 계열 방법론

  • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • 임베디드 소프트웨어를 작성하는 데 유용한 방법론
  • 영역 공학과 응용 공학으로 구분

 

3. 애자일(Agile)

(1) 애자일(Agile) 방법론의 개념

  • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론
  • 개발 기간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있다.
  • 애자일 방법론의 등장 배경 : 기존 개발방법론의 한계를 극복하기 위해 등장

 

(2) 애자일 방법론 특징

  • 프로젝트 요구사항은 기능 중심으로 정의한다.
  • 절차와 도구보다 개인과 소통이 중요하게 생각한다.
  • 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응할 수 있다.
  • 소프트웨어가 잘 실행되는 데 가치를 둔다.
  • 고객과의 피드백을 중요하게 생각한다.

 

(3) 애자일 방법론의 유형

XP(eXtreme Programming)

 - 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

  • 1~3주의 반복 개발 주기
  • 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중
  • 12개의 실천 : 페어 프로그래밍, 공동 코드 소유, 지속적인 통합(CI), 계획 세우기, 작은 릴리즈, 메타포어, 심플 디자인, 테스트 기반 개발(TDD), 리팩토링, 40시간 작업, 고객 상주, 코드 표준
  • 페어 프로그래밍(Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리
  • 지속적인 통합(CI: Continuous Integration) : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
  • 작은 릴리즈(Small Release) : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
  • 메타포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
  • 테스트 기반 개발(TDD: Test Driven Develop) : 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고, 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
  • 리팩토링(Refactoring) : 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리

 

스크럼(SCRUM)

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

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

 

린(LEAN)

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

  • JIT(Just In Time), 칸반(Kanban) 보드 사용
  • 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
반응형