상세 컨텐츠

본문 제목

[정보처리기사] 소프트웨어 개발 방법론

Study/And so on

by Arq.Dev5igner 2021. 7. 31. 18:45

본문

소프트웨어 생명주기 모델 (SDLC, Software Development Life Cycle)

- 시스템의 요구분석 부터 유지보수까지 전 공정을 체계화한 절차

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

ㆍ요구사항 분석

ㆍ설계

ㆍ구현

ㆍ테스트

ㆍ유지보수

- 모델 종류

ㆍ폭포수 모델

ㆍ프로토타이핑 모델

ㆍ나선형 모델

ㆍ반복적 모델

 

 

 

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

- 요구사항 분석

: 개발할 소프트웨어의 기능과 제약조건, 목표 등을 사용자와 함께 명확히 정의

: 기능 / 비기능 요구사항

 

- 설계

: 시스템 명세서에서 정의한 기능을 실제 수행할 수 있도록 수행방법을 논리적으로 결정

: 시스템 구조설계 / 프로그램 설계 / UI 설계

 

- 구현

: 논리적으로 결정한 문제해결 방법을 프로그래밍 언어를 사용하여 실제 프로그램을 작성

: 프로그래밍 언어 선택, 기법, 스타일, 순서 등 결정

: 인터페이스 개발 / 자료구조 개발 / 오류 처리

 

- 테스트

: 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가

: 단위 / 통합 / 시스템 / 인수

 

- 유지보수

: 시스템이 인수되고 설치 된 이후

: 예방 / 완전 / 교정 / 적용

 

 

 

소프트웨어 생명주기 모델

- 폭포수 모델

: 소프트웨어 개발시 각 단계를 확실히 마무리 지은후에 다음 단계로 진행

: 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

 

- 프로토타이핑 모델

: 주요 요구기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하며 진행

: 요구사항 분석 -> 프로토타입 개발 -> 프로토타입 평가 -> 구현 -> 테스트

 

- 나선형 모델

: 시스템 개발시 위험을 최소화 하기 위해 점진적으로 완벽한 시스템으로 개발

: 계획 및 정의 -> 위험분석 -> 개발 -> 고객평가

 

- 반복적 모델

: 구축대상을 나누어 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 점차 완성

 

 

 

소프트웨어 개발 방법론

- 개발 전 과정에 지속적으로 적용 할 수 있는 방법, 절차, 기법

- 종류

ㆍ구조적

ㆍ정보공학

ㆍ객체지향

ㆍ컴포넌트

ㆍ제품계열

ㆍ애자일

 

 

 

구조적 방법론 (Structured Development)

- 전체 시스템을 기능에 따라 나누어 개발하고 이를 통합하는 분할과 정복 방식의 프로세스 중심의 하향식 방법론

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

※ 나씨-슈나이더만 차트

: 논리의 기술에 중점을 둔 도형식 표현 방법

: 조건이 복합적인 곳의 처리를 시각적으로 명확히 식별

 

 

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

- 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화

: 개발 주기를 이용해 대형 프로젝트 수행

 

 

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

- 객체, 클래스, 메시지를 사용하여 이해하기 쉽게 시스템에 적용

 

 

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

- 컴포넌트를 조립하여 새로운 응용 프로그램 구축

: 높은 재사용성과 확장성

※ 컴포넌트

: 이미 개발된 소프트웨어의 모듈 단위

 

 

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

- 특정 제품에 적용하고자 하는 기능을 정의하여 개발

: 임베디드 소프트웨어 개발에 유용

- 영역 공학

: 영역 분석 / 설계, 핵심자산 구현

- 응용 공학

: 제품의 요구분석, 설계, 구현

 

 

애자일 방법론 (Agile Development)

- 신속하고 유연한 사람중심의 경량 개발 방법론

- 유형

ㆍXP (Extreme Programming)

ㆍLean

ㆍSCRUM

 

 

 

XP (Extreme Programming)

- 의사소통 개선과 즉각적 피드백으로 소프트웨어의 품질 향상

: 1~3주의 개발주기 (Iteration)

 

- 5가지 가치 : 용기 / 단순성 / 의사소통 / 피드백

 

- 12가지 기본원리

ㆍ짝 프로그래밍

 

ㆍ공동 코드 소유 : 시스템의 코드는 누구든지 언제라도 수정 가능

 

ㆍ지속적인 통합 : 매일 여러번씩 소프트웨어를 통합하고 빌드

 

ㆍ계획 세우기 : 고객 요구 정의 및 개발자가 필요한 부분 알림

 

ㆍ작은 릴리즈 : 작은 시스템을 먼저 만들고 짧은 단위로 릴리즈

 

ㆍ메타포어 : 공통적인 이름 체계와 시스템 서술서 작성 (고객과 개발자간 의사소통을 위함)

 

ㆍ간단한 디자인

 

ㆍ테스트 기반 개발

 

ㆍ리팩토링 : 중복제거 / 단순화

 

ㆍ40시간 작업 : 주 40시간만 작업

 

ㆍ고객 상주 : 개발자들의 질문에 고객이 즉각 응답하도록 항시 상주

 

ㆍ코드 표준 : 효과적인 공동작업을 위해 모든 코드에 대한 코딩 표준 정의

 

 

 

스크럼 (SCRUM)

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

- 백로드

: 제품과 프로젝트에 대한 요구사항

- 스프린트

: 2주~4주의 짧은 개발 기간으로 반복적 수행

- 스크럼 미팅 (Daily meeting)

: 매일 15분 정도 미팅을 통해 To-Do-List 계획 수립

- 스크럼 마스터

: 프로젝트 리더, 스크럼 수행시 문제 인지 및 해결

- 스프린트 회고

: 스프린 주기를 되돌아 보며 규칙 준수 여부, 개선점 확인 및 기록

- 번 다운 차트

: 남아있는 백로그 대비 시간을 표현한 차트

 

 

 

린 (LEAN)

- 도요타의 린 시스템 품질 기법을 기반으로 낭비요소를 제거하여 품질을 향상시키는 방법론

: JIT / 칸반 보드 사용

 

- 7가지 원칙

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

관련글 더보기