Information Technology

소프트웨어 프로세스 개념 및 특징 / 바람직한 소프트웨어란?

coinAA 2021. 10. 17.

 

목차

    소프트웨어 프로세스의 개념

    소프트웨어 개발 프로세스(software development process)는 소프트웨어 제품을 개발하기 위해 필요한 과정 또는 구조이다. 비슷한 말로 소프트웨어 생명 주기와 소프트웨어 프로세스가 있다. 
    소프트웨어 개발 프로세스에는 몇 가지 모델들이 존재하며, 이들 각각은 해당 단계별로 요구되는 활동이나 작업을 기술하고 있다.

    한 줄 요약 : 소프트웨어를 개발하는데 필요한 작업을 정의한 것이다.

    • 소프트웨어 정의
      • 컴퓨터 소프트웨어는 저장장치에 저장된 특정한 목적의 하나 또는 다수의 컴퓨터 프로그램을 뜻하며, 프로그램 소프트웨어는 컴퓨터 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써, 그것이 수행하도록 구현된 기능을 수행
    • 프로세스의 정의
      • 일이 처리되는 과정이나 공정. 즉, 주어진 일을 해결하기 위한 목적으로 그 순서가 정해져 수행되는 일련의 절차
    • 소프트웨어 프로세스 산출물
      • 소프트웨어 개발 계획서(SDP)
      • 소프트웨어 요구 사양서(SRS)
      • 소프트웨어 인터페이스 명세서(IDD)
      • 소프트웨어 설계 명세서(SDD)
      • 소프트웨어 시험 명세서(STD)
      • 소프트웨어 시험 결과서(STR)
      • 소프트웨어 버전 명세서(VDD)
      • 소프트웨어 산출물 사양서 (SPS)

     

    소프트웨어 프로세스의 특징

    각 단계의 결과가 검증되어야 하기 때문에 프로세스를 너무 많은 단계로 나누면 문서나 결과물이 너무 많아지기 때문에  나누지 말아야 한다.
    이런 이유로 최상위 단계는 소수의 프로세스로 나누며 목적이 명확하고 검증 가능한 문서를 생성하여야 한다.
    결국 프로세스를 정하는 일은 특정 단계의 어떤 작업을 수행하는가를 언급하여야 함


    소프트웨어 프로세스는 '각 단계가 언제 시작되고 끝내야 하는가’에 대한 진입과 출구 조건이 있다.

    • 진입 조건 : 그 단계의 작업을 시작하기 위해서 만족하여야 할 조건
    • 출구 조건 : 그 단계의 작업을 종료하기 위해서 결과물이 만족하여야 할 조건

    입력과 결과물, 즉 진입 조건과 출구 조건, 결함을 찾기 위한 검증작업이 있어야 한다.
    입출력을 위한 출구, 진입조건 이외에도 프로세스 관리를 위한 정보를 생성할 필요가 있다
    프로세스 상태를 나타내기 위한 정보를 생성하여 관리 프로세스에 제공한다. 이러한 정보는 프로세스를 제어하기 위해 적절한 조치를 할 때 사용된다.

    그림으로 표현한 개발 프로세스 과정

     

    좋은(바락 직한) 소프트웨어 프로세스의 특징

    성숙한 개발 역량을 갖추기 위한 중요한 요소 4가지는 아래와 같다.

    • 예측 가능성
      • 프로젝트 안에 있는 프로세스의 결과가 프로젝트를 완성하기 전에 얼마나 정확하게 예측될 수 있는가를 판단하는 특성이다.
    • 테스팅과 유지보수 용이성
      • 개발 프로젝트의 가장 중요한 사항 중 하나는 유지보수가 쉬운 소프트웨어를 만들어야 한다.
        • 일반적으로 소프트웨어 유지보수에 드는 비용은 개발 비용을 초과하는 것으로 알려져 있는데 소프트웨어 개발 비용 부분만을 줄이는 것보다 전체 비용을 줄이려면 개발의 목표가 유지보수 노력을 줄이는 것으로 되어야 한다.
    • 변경 용이성
      • 변경은 언제든지 일어날 수 있기에 변경이 용이해야 한다.
        • 실행되고 있는 소프트웨어를 변경하는 것은 개발 작업을 벗어난 일이므로 논외로 하더라도 개발하는 과정에서는 변경이 이루어져야 하는데 고객의 요구가 프로젝트 중간에 바뀔 수도 있고 프로젝트가 장시간 수행된다면 상당한 변경과 수정이 예상되기도 하기 때문에 변경이 용이하게 만들어야 한다.
    • 결함 제거 용이성
      • 오류 탐색과 수정은 소프트웨어 개발 전체 단계에서 지속적인 프로세스가 이루어져야 한다.
        • 오류는 가장 어려운 작업인 프로그래밍을 하는 동안 발생할 것이라고 생각하지만 실제로는 개발과정의 모든 단계에서 오류가 발생되고 오류를 발견하고 수정하는데 소요되는 노력은 발생 시점에 따라 모두 다르다.
        • 단계별 소프트웨어의 오류 수정에 드는 상대적인 비용을 나타내고 있으며, 오류가 발생된 후 발견이 지연될수록 수정하는데 드는 비용이 높아진다.
        • 요구 분석 단계에 발생한 오류를 테스팅 단계에 수정한다면 분석 단계에서 수정하는 비용보다 100배까지 올라갈 수 있다.

     

    댓글