Information Technology

[소프트웨어 공학] 소프트웨어 생명 주기 개념 정리(Software Life Cycle)

coinAA 2021. 5. 10.

 

목차

    소프트웨어 생명주기 개념

    소프트웨어 생명주기 프로세스의 개념

    작업의 순서를 따라서 제시된 방법으로 수행하면 원하는 결과를 얻게 되는 것을 말한다. 공식적인 가이드라인이나 프로세스 없이 개발을 하게 되면 코딩, 수정 등이 계속해서 반복된다.

     

    프로세스란 무엇인가?

    어떤 일을 하기 위한 특별한 방법으로 단계나 직업으로 구성됨이라고 정의되어 있으며, 소프트웨어 공학에서 프로세스라는 단어는 소프트웨어를 개발하는 공정을 정의하는 것이다. 즉 정의된 작업들을 어떠한 순서로 어떤 방법으로 하는가를 다루는 방법론이다.

     

    작업 공정이 없는 소프트웨어 개발의 문제점

    작업 공정이 없는 소프트웨어를 개발하는 경우 개발 작업의 순서는 프로그래밍 > 만족할 때까지 수정 > 개선을 위한 아이디어 짜내기 > 만족할 때까지 수정 이와 같은 방법을 계속해서 반복하게 될 것이다. 이처럼 개발 작업을 하게 된다면 사용자의 요구를 알아본다던지 설계하는 작업의 중요성을 깨닫지 못할 뿐 아니라 즉흥적으로 계속하여 코딩을 하게 된다면 일정, 의뢰자의 요구사항에 도달하지 못할 수도 있다.

     

    소프트웨어 프로세스 모델

    프로젝트의 작업 공정을 구성하는 일반적인 접근방법이며 이 작업 방법은 프로젝트 관리자나 팀 구성원들이 어떤 작업을 하여야 하고 어떤 순서로 작업하여야 하는지를 결정하는데 도움을 주는 역할을 한다. 이는 작업과 순서를 정하기 위한 전체적인 틀을 제공하는 것이지 작업 단계를 엄격하게 규제하자는 것이 아니다.

     

    소프트웨어 생명주기 정의

    소프트웨어 또한 사람과 같이 생명주기가 존재한다. 소프트웨어도 잉태되어 자라나는 단계, 성숙된 단계, 소퇴기가 있다는 말이다. 개발된 소프트웨어는 개발이 완료했다고 하여서 평생 쓰는 것이 아니라 바뀌는 환경, 사용자에 요구 등에 따라 패치라는 과정이 이루어지고 끝내 사용할 수 없는 순간이 온다면 서비스를 종료하기도 한다.

     

    소프트웨어 생명주기 특징

    소프트웨어를 개발하는 과정은 건축을 하는 과정과 유사하다고 한다. 그럼 한번 건축과정과 소프트웨어 개발과정을 비교해보도록 하겠다.
    건축과도 같은 개발과정을 특징을 알아보기 전에 다음 목차에서 나올 절차를 적용하여 설명해보겠다.

     

    건축으로 비유한 소프트웨어 개발과정

    • 계획
      • 집을 건축할 때에도 어떠한 형태의 집을 지을 건지에 대한 협의 즉, 계획이 필요하다. 소프트웨어 개발계획이 필요한 것이다.
    • 분석
      • 계획을 하였다면 이제 좀 더 세밀하게 사용자가 원하는 요구사항을 알아야 한다. 방은 몇 개인지 또 화장실은 몇 개인지 말이다. 이처럼 어떤 기능을 어떻게 어느 성능까지 구현해야 하는지 요구사항을 알아야 한다.
    • 설계
      • 집의 방의 몇 개 등의 요구사항이 정리됐다면 3D 프린터 등을 이용하여 예상되는 집의 모형을 보여주듯이 소프트웨어도 대략적인 인터페이스를 설계한다.
    • 구현
      • 설계까지 완료된 시점에서 이젠 시공이다. 이제 철근에 콘크리트를 입혀 집을 만드는 것처럼 소프트웨어 개발 작업에서는 코딩이 이루어지는 단계이다.
    • 테스트
      • 집이 다 건축된다면 수도관을 통해 물은 잘 나오는지 불을 켜보며 전기는 잘 들어오는지 등을 확인한다. 이처럼 소프트웨어 또한 요구사항에 맞게 기능을 잘 동작하는지 확인 작업이 필요하다.
    • 유지보수
      • 완공된 후에도 갑작스러운 정전, 배수 막힘 등의 보수할 일이 생긴다 소프트웨어 또한 기능의 변경, 성능 증가 등, 원인 모를 오류 등의 사유로 유지보수가 필요하다.

     

    소프트웨어 생명주기 절차

    소프트웨어 개발 생명주기(SDLC : Software Development Life Cycle)는 특징 목차에서 건축과 비교하며 예를 들었듯이 계획 > 분석 > 설계 > 구현 > 테스트 > 유지보수 순으로 이루어진다. 단계별 설명을 아래 표를 참고하길 바란다.

    단계 절차 설명
    1단계 계획 개발 비용 산정 : COCOMO모델,기능점수(FP) 모델사용
    일정계획 : 작업분할 구조도WBS, CPM 사용
    위험관리
    2단계 분서 기존 시스템의 문제점 파악 > 새로운 요구사항 도출 > 다이어그램 작성
    *여기서 산출물로 요구분석 명세서를 도출하게 된다.
    3단계 설계 설계원리 : 분할과 정복, 추상화, 단계적 분해,모듈화, 정보 은닉
    소프트웨어 아키텍처, 객체지향 설계
    아키텍처 스타일
    GoF의 디자인 패턴
    모듈 평가 기준 : 응집도와 결합도
    4단계 구현 표준 코딩 규칙
    기능 코딩
    5단계 테스트 테스트의 절차
    개발자 또는 사용자 시각에 따른 분류
    사용되는 목적에 따른 분류
    품질 특성에 따른 분류
    소프트웨어 개발 단계에 따른 분류
    6단계 유지보수 수정 유지보수
    적응 유지보수
    기능보강 유지보수
    예방 유지보수

     

    댓글