[소프트웨어공학][예상토픽] 소프트웨어 개발 수명 주기(SDLC) 모델

 

소프트웨어 개발 수명 주기 (Software Development Life Cycle)

= 소프트웨어 개발 프로세스(Software Development Process)라고도 한다

 

크게 순차적 개발 모델, 점진적 개발 모델, 반복적 개발 모델로 나누어 진다

 

순차적 개발 모델 (폭포수 모델, V-모델)

반복적 개발 모델 (래셔널 통합 프로세스, 스크럼, 칸반, 나선형 모델, 지속적 전달/배포)

 

 


 

 

폭포수 모델(Watefall model)은 6개의 연속적 단계로 이루어져있다

계획 - 분석 - 설계 - 구현 - 테스트 - 유지

 

계획

소프트웨어 개발 프로젝트의 전 과정에 걸쳐 일정과 예산에 대한 계획안을 수립하는 단계
계획 내용: 프로젝트 목적과 범위, 기대 효과와 관리상의 목표, 통제과정과 처리절차 및 자금,
인력, 장비, 시간의 소요량, 투입기간


요구사항 분석

소프트웨어가 '무엇을 할 것인지'

개발하고자 하는 업무를 면밀히 조사, 이해하여 사용자의 요구사항을 정의해 요구사항 명세서를 만드는 단계

대표적인 기법: 객체 지향 분석(OOA), 구조적 분석(Structured Analysis)

 

설계

시스템의 개념적 측면(What)을 구체적(How)으로 명세화하는 단계

코딩(구현)의 준비단계, 테스트 계획과 유지보수에 대한 청사진을 나타냄

외부 설계: 외부적인 특성(화면, 출력물, 파일 또는 데이터베이스) 설계

내부 설계: 포괄적인 기능을 세부기능으로 분할해서 내부처리 기능을 나타내고, 자료를 정의. 일반 설계, 상세 설계로 나누어짐.

일반 설계: 전체 소프트웨어의 구조를 기능별로 분해해 계층적으로 나타냄

상세 설계: 각 기능별 모듈의 내부처리 기능을 순서도 (flow chart), 나씨-슈나이더만 차트, 의사코드(Pseudo code) 등으로 나타냄

대표적인 기법: 객체 지향 설계(OOD), 구조적 설계(Structured Design)

 

구현

설계 내용을 토대로 적합한 프로그래밍 언어로 각 모듈을 코딩하고 단위 모듈 테스트(Unit Test) 한 후

모듈들을 결합해서 총제적인 시스템으로 만드는 단계

유지보수하기 좋은 소프트웨어 구현 → 절차적(or 구조화) 프로그래밍 기법

모듈 재사용성 고려 → 객체 지향 프로그래밍(OOP) 기법

 

시스템 테스트
구현된 전체 시스템이 설계 내용과 같은 기능을 수행하는지

기능의 정확성, 신뢰성 및 효율성 등에 대해 여러 가능한 경우를 가정해 실행해 보고 결과를 평가하는 단계

 

유지보수

개발이 완료되어 사용자가 운영하고 있는 시스템에 대해 일어나는 모든 변화에 대처해서 수정

소프트웨어 비용 중 67%를 차지, 다른 어떤 단계들보다도 가장 중요한 단계

 

 

 테스팅 단계에서 <이미 설계되고 코딩된 제품>을

출시 전에 테스트하는 것은 오류 비용이 증가하는 경향이 있다

 

계획 단계에서 초기에 오류 감지할 시, 비즈니스에 비교적 큰 손실이 발생하지 않음!

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

프로세스가 더 진행될 수록, 손실은 기하급수적으로 증가

 

설계 단계에서 오류가 발견될 시, 재설계를 해야한다

발견되지 못 했을 시, 상당한 노력과 투자를 하여 디자인과 소스 코드를 크게 변경해야한다

 

구현 단계도 마찬가지다

로직에 문제가 있음에도 그 위에 기능을 더 빌드하는 경우, 장기적으로 심각한 손실을 일으킬 수 있다

 

 

→ 제품이 아직 빌드되는 동안, 모든 기능을 테스트하는 것이 좋다! (반복적인 애자일 방법론)

 


 

 

애자일 개발 모델 (Agile Development Model)

 

시간이 중요한 애플리케이션에 적용되며, 수명주기 단계의 속도를 높이고 범위를 줄임

개발 프로세스를 더 작은 <부분, 주기, 스프린트>로 나눈다

 

테스터는 프로세스 전반에 걸쳐 나머지 팀과 동시에 작업할 수 있으며,

결함 및 오류가 발생하는 즉시 수정 가능!

제한된 시간 안에 효율적으로 더 빨리, 자주, 많이 테스트 가능

테스트 업무 분산화, 테스트 활동 및 도구 다양화

 

주요 목적:  <새로운 소프트웨어 기능>을 빠르고 최상의 품질로 제공

가격 경쟁력 있음: 개발 프로세스에서 일찍 오류를 고치는 것은 비교적 적은 비용과 노력을 요함

빠른 속도, 더 나은 결과: 팀 내 효과적인 커뮤니케이션과 이해관계자의 적극적 참여

 


 

 

DevOps 개발 모델

 

<개발-QA-운영> 갭을 해소하는 Agile 확장판!

개발 + 운영 → 커뮤니케이션에서 오는 장애 해소, 빠른 서비스 개발 & 반영

체인(개발 - QA - 운영)의 다양한 기능들 간 높은 수준의 합동 필요

개발자가 직접 운영환경을 컨트롤 (신속성 향상)

 

Agile과 다르게, DevOps는 지속적 개발(Continuous Development) 컨셉을 포함

 

지속적 개발(CD) = 버전 컨트롤에 작성, 커밋되는 코드는 빌드, 배포, 테스트 되며, 사용자가 사용할 준비가 된 프로덕션 환경에 설치

 

빠른 속도로 어플리케이션 및 서비스를 전달할 수 있게 해주는 자동화, 지속적 통합 툴에 큰 중점을 둔다

 

DevOps 모델의 각 단계에서 테스트 수행 → 테스터의 역할과 테스트 전반적 의미를 변화시킴 (전문적 기술+코드 능숙 요구)

 

[출처] https://dev-test-hqsw.tistory.com/79

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED