ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 개발 수명 주기(SDLC) 모델
    개발 관련/개념 2020. 9. 30. 00:23

     

     

    소프트웨어 개발 수명 주기 (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%를 차지, 다른 어떤 단계들보다도 가장 중요한 단계

     

     

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

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

     

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

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

     

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

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

     

    구현 단계도 마찬가지다

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

     

     

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

     


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

     

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

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

     

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

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

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

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

     

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

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

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

     


    DevOps 개발 모델

     

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

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

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

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

     

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

     

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

     

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

     

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

     


     

    연관 포스트

    SDLC 단계에 따른 QA 활동

     

    '개발 관련 > 개념' 카테고리의 다른 글

    디버깅  (0) 2021.05.09
    모듈  (0) 2021.05.09
    도메인 주도 설계 (DDD)  (0) 2021.04.11
    소프트웨어 개발 환경  (0) 2021.02.17
    점진적 개발 모델 Vs 반복적 개발 모델  (0) 2021.01.29
Designed by Tistory.