

소개
일반적으로 시스템은 하드웨어(hardware)와 소프트웨어(software)로 구성된다. 하드웨어는 시스템을 구성하는 기계장치를가리키며 딱딱한 물체를 의미한다. 반면 소프트웨어는 시스템 동작에 필요한 컴퓨터 프로그램으로 부드러운 물체를 뜻한다. ISO/IEC에 의하면, 소프트웨어1란‘특정 목적을 수행하는 데 필요한 프로그램, 사용 지침, 관련 모든 문서와 데이터 일체’라고 정의한다. 즉, 소프트웨어란‘어떤 특정 목적을 수행하는 데 필요한 사용 지침, 데이터, 컴퓨터 프로그램(소프트웨어) 및 모든 관련 문서 일체’라고 정의된다. 또한 우리가 사용하는 소프트웨어를 대분류하면, 시스템 소프트웨어, 유틸리티 소프트웨어, 응용 소프트웨어의 세 가지로 분류된다. 지금까지 국내 대부분의 소프트웨어 개발은 주로 Code-and-Fix 모델’에 의해 개발되었고,‘Code-and-Fix 모델’이란 프로그램 코딩 및 반복적인 수정작업을 통해 프로그램을 개발하는‘비공학적 소프트웨어 개발 접근 방식’을 의미한다. 그런데, 이제‘Code-and-Fix 모델에 의한 소프트웨어 개발 방식은 잊어라.’바로 소프트웨어공학에 의한 체계적인 소프트웨어 개발을 시작해야 한다. 소프트웨어공학이란‘소프트웨어 생애주기인 계획수립, 개발, 전개, 유지보수, 폐기에 대한 효율적이고 체계적인 관리방법론’으로 정의된다. IEEE에 의하면,“Software engineering is a systematic engineering approach to software development.”으로 정의한다. 즉‘소프트웨어공학’이란 소프트웨어 생명주기인 계획수립, 개발, 전개, 유지보수, 폐기의 모든 공정에 대해 효율적이고 체계적인 개발방법론이다. 앞으로 소프트웨어공학을 공부하다 보면, 기본적으로 계획수립 프로세스, 개발 프로세스, 전개 프로세스, 유지보수 프로세스, 폐기 프로세스, 프로젝트 관리 프로세스, 품질보증 프로세스 등의 많은 프로세스가 소개될 것이다. 결과적으로 소프트웨어공학은 소프트웨어 관련 모든 작업을 효율적이고 체계적으로 관리하는 방법, 절차, 규정을 정의하는 형태이다



