Information Technology

소프트웨어 공학 정의와 목적 및 용도 정리

coinAA 2021. 5. 9.

 

목차

    소프트웨어 공학

    소프트웨어 공학의 목적

    소프트웨어 공학이란 소프트웨어를 개발하기 위해 체계적으로 접근하고 원리를 적용하기 위함이다.

     

    소프트웨어 개발의 궁극적인 목표

    소프트웨어 개발의 궁극적인 목표는 복잡도 저하, 비용 최소화, 개발 기간 단축, 대규모 프로젝트 관리, 고품질 소프트웨어 생산, 효율성을 포함하여 총 6가지의 한해서 있다. 

    • 복잡도 저하
      • 대규모 소프트웨어는 복잡하며 개발하기가 어렵다. 소프트웨어 공학은 프로젝트의 복잡도를 줄이기 위한 좋은 해결책이며, 큰 프로젝트를 소규모 프로젝트 또는 문제로 나누어 방법을 제공하는 역할을 한다.
    • 비용 최소화
      • 개발자에게 많은 비용을 지불하게 하게 되는데 많은 코드의 작성 시 중복 또는 불필요한 일을 최소화 함으로써 개발인력, 시간 등을 최소화하는 방법을 제공한다.
    • 개발 기간 단축
      • 개발을 기간을 계획하여 불필요한 작업 제거 또는 당일 할당량을 정함으로써 개발 기간을 단축하는 방법을 제공한다.
    • 대규모 프로젝트 관리
      • 대규모 프로젝트의 경우 단기간 내에 구축할 수 없지만 계획, 관리 등 공학적 접근 방법을 제공한다.
    • 고품질 소프트웨어
      • 만들어진 소프트웨어는 모든 동작이 요구사항에 맞게 동작해야 하며 결함이 있다면 모두 해결되기 위해 품질 시험을 거치게 된다.
    • 효율성
      • 모든 기능들이 들쭉날쭉한 것이 표준화되지 않게 하며 표준화되게 하여 효율적 작업이 되게 한다.

     

    소프트웨어 공학의 3가지 작업

    단계적 프로세스

    소프트웨어의 대한 비전과 개념을 먼저 파악하여 만족하는 소프트웨어가 구현될 때까지 정해진 순서의 작업을 수행하여야 하며 비즈니스 요구를 파악하고 타당성 검토와 동시에 시스템이 제공해야 할 요구와 성능을 명세화하여야 한다.

    설계, 구현, 테스팅하여 목표 환경에 설치하는 단계적인 절차를 행한다.


    소프트웨어 품질보증

    소프트웨어의 품질 보증은 개발 작업이 적절히 수행되었는지 확인하는 작업이며, 개발 작업에 의한 산출물이 요구사항과 일치하는지 검사 및 시험한다.


    프로젝트 관리

    개발과 품질보증 작업을 관리하고 감동하는 일이며, 노력 예측, 프로젝트 계획, 일정, 리스크 관리, 해 등 업무를 한다. 즉 정해진 예산과 기간 내에 산출물이 생산될 수 있도록 인도한다.

     

    단계적 프로세스

    단계적 프로세스는 요구분석, 설계, 코딩, 테스팅으로 4가지의 절차로 구성된다.

    • 요구분석
      • 소프트웨 시스템 가져야 할 기능 및 성능, 제약 사항 등을 파악하는 작업으로 사용자 요구사항을 추출하여 명세서로 작성한다.
    • 설계
      • 요구된 명세를 토대로 기술된 문제의 솔루션을 기술하는 작업이다. 소프트웨어를 구성하는 요소와 구조, 인터페이스를 정의하고 모듈과 데이터 유저 인터페이스를 설계한다.
    • 코딩
      • 설계를 토대로 한 시공 작업이다. 주로 프로그래밍 언어로 원시 코드를 작성하고 이 단계부터는 구축 단계이므로 제품의 품질에 대한 큰 영향을 주기 시작한다.
    단계 초점 결과물
    분석 무엇을 만들 것인가? 요구분석 명세서
    설계 어떻게 구축할 것인가? 설계 명세서
    구현 코딩과 단위 시험 시스템 유지보수 계획
    테스팅 요구에 맞게 실행되나? 테스팅 결과 보고서

     

    소프트웨어 품질보증

    소프트웨어 제작은 대부분 사람의 지적 활동으로 만들어지기 때문에 오류가 발생하기도 한다. 이로 인한 피해는 사용자에게 막대할 수도 있기 때문에 만들어진 소프트웨어는 요구사항을 만족하였는지 이외에 오류는 없는지 확인하는 작업이다.

    품질보증은 검토, 확인 테스팅 단계로 이루어진다.

    • 검토
      • 각 단계의 작업이 제시된 절차와 방법에 맞게 진행되었는지 체크하는 작업
    • 확인
      • 개발 완료된 결과물이 품질 수준에 맞게 생산되었지 검사하는 작업
    • 테스팅
      • 구현된 소프트웨어를 실행하여 요구사항과 맞게 예상된 결과를 출력하는지 확인하는 작업


    소프트웨어 품질 보증은 유지보수성, 신뢰성, 효율성, 유용성을 만족하는 고품질의 바람직한 소프트웨어를 만들기 위해 실행된다.

    바람직한 고품질 소프트웨어란 환경 변화 적응성을 가진 유지보수성이 제공되며 시스템의 장애 발생 시에 물리적, 경제적 손실을 발생시키지 않는 특징을 가지고 있어야 한다.

    메모리, 연산처리 등과 같은 자원을 낭비하지 않는 효율성과 더불어 사용자가 쉽고 편리하게 사용할 수 있는 인터페이스와 매뉴얼 문서 등이 제공되어야 한다.

    프로젝트 관리

    프로젝트 관리는 시간, 비용, 범위 이 3가지의 제약으로 이루어지는데 이 제약은 프로젝트마다 다르며 적절한 수준으로 관리하여 프로젝트 결과에 영향을 미치지 않아야 한다.
    프로젝트 관리는 활동은 크게 4가지 프로젝트 계획, 자원관리, 리스크 관리, 프로젝트 수행과 모니터링으로 나누어진다.

    • 프로젝트 계획
      • 소프트웨어 개발이 시작되기 전에 수행되는 작업이며 범위를 결정하고 타당성 검토 등 소프트웨어 개발이 어떤 방향으로 어떤 방법과 일정, 조직으로 이루어질 것인지 계획한다.
    • 자원 관리
      • 제품을 개발하기 위해 사용되는 인력, 도구, 하드웨어는 해당 프로젝트의 자원으로 간주되며, 자원은 소모되므로 무제한 사용할 수 없고 조직에 할당만큼만 사용한다.
      • 자원이 부족하게 된다면 개발 비용이 증가하고 개발 일정에 차질이 생기므로 추후 문제가 되지 않도록 적절한 자원을 산정하여 할당하여 관리한다.
    • 리스크 관리
      • 프로젝트가 실패할 위험요소를 미리 예측하고 이를 식별, 분석하여 대비책을 세우는 등의 관리 활동은 한다.
      • 위험요소는 개발자의 이직, 사용자의 요구사항의 변경 또는 오해, 시간과 자원의 과소평가, 기술 변화, 환경 변화, 비즈니스 경쟁 등이 있다.
    • 프로젝트 수행과 모니터링
      • 프로젝트가 시작되면 모든 작업이 계획에 따라 진행되고 있는지 모니터링이 필요하다.
      • 모니터링을 통해 작업의 상태를 파악하여 위험요소 확인 일정의 차질 등을 확인하여 조치한다.
      • 진행 상태를 정기적으로 파악하여 보고서를 작성하고 중요 시점에 체크리스트를 만드는 등 작업을 한다.

    댓글