많은 사람들은 컴퓨터 프로그램을 소프트웨어와 같은 것이라고 생각합니다. 그러나 조금 더 넓은 의미의 정의를 하자면 소프트웨어는 단순한 프로그램일 뿐만 아니라 프로그램이 올바르게 작동하도록 하는 데 필요한 그와 관련된 모든 문서 및 설치 데이터를 의미합니다.
소프트웨어 시스템은 여러 개의 프로그램과 그 프로그램을 설치하는 데 필요한 설치 파일, 시스템의 구조를 기술한 시스템 문서, 시스템 사용방법과 사용자가 제품의 최근 정보를 내려받기 위한 웹사이트를 기술하는 사용자 문서 등을 포함합니다.
소프트웨어에는 2가지 유형이 있습니다.
1. 일반적인 제품
개발 조직에 의해서 생산된 독립형의 제품으로서 그것을 사고 싶어 하는 어떤 고객에게든지 판매할 수 있습니다. 이러한 유형의 제품은 데이터베이스, 문서 편집기, 프로젝트 관리 도구, 그래픽 패키지 등과 같은 PC용 소프트웨어를 포함합니다.
2. 맞춤형 제품
특정한 고객을 위한 시스템으로서 소프트웨어 개발자는 특정 고객에 대한 소프트웨어를 개발합니다. 이러한 유형의 소프트웨어는 전자 장치에 대한 제어 시스템이나 특정 비즈니스 프로세스를 지원하기 위한 시스템, 항공관제 시스템 등을 포함합니다.
이 2가지의 소프트웨어의 중요한 차이점은, 일반적인 제품은 그 소프트웨어를 개발하는 조직이 소프트웨어 명세화를 제어하지만, 고객용 제품은 그 소프트웨어를 구입하는 조직에 의해서 소프트웨어의 명세서가 개발되고 제어됩니다. 소프트웨어 개발자는 그 명세서에 따라 일을 진행합니다.
그러나 이러한 제품의 차이에 대한 장벽이 점점 허물어져 가고 있습니다. 더 많은 소프트웨어 회사가 일반적인 시스템으로 시작해서 특정 고객에 적합한 것으로 맞추어 가고 있습니다. SAP 시스템과 같은 전사적자원 관리(ERP: EnterpriseResource Planning)시스템이 이러한 기법의 가장 좋은 예입니다. 복잡한 대규모 시스템을 비즈니스 규칙과 프로세스, 필요한 보고서에 관한 정보를 통합한 한 회사에 적용하는 것입니다.
'소프트웨어 공학' 카테고리의 다른 글
[소프트웨어 공학] 소프트웨어 공학과 컴퓨터 과학의 차이점은 무엇인가? (0) | 2019.10.14 |
---|---|
[소프트웨어 공학] '소프트웨어 공학'이란 무엇인가? (0) | 2019.10.14 |
[소프트웨어 공학] 애자일 개발의 장점 (0) | 2019.10.02 |
[소프트웨어 공학] 애자일 개발이란? (0) | 2019.10.02 |
[소프트웨어 공학] TDD (Test Driven Development) (0) | 2019.10.01 |