1.1.1 소프트웨어 시스템
소프트웨어 시스템은 특정 작업이나 일련의 작업을 수행하려고 함께 동작하는 컴포넌트나 모듈, 프로그램의 집합입니다. 일반적으로 데이터 관리, 트랜잭션 처리, 최종 사용자를 위한 서비스 제공 등 원하는 기능을 실행할 수 있는 연관된 소프트웨어 애플리케이션으로 구성됩니다.
소프트웨어 시스템은 단순 프로그램처럼 간단할 수도 있고, 여러 컴퓨터와 네트워크에 걸쳐 있는 분산 시스템처럼 복잡할 수도 있습니다.
애플리케이션을 개발할 때는 어떤 프로그래밍 언어를 선택할지, 어떤 에디터를 사용할지, 테스트는 테스트 주도 개발(Test Driven Development, TDD) 방식으로 할지 등 다양한 고민을 하게 됩니다. 소프트웨어 시스템을 개발하는 과정 역시 비슷합니다. 언어 선택에서 시작하여 설계에 적합한 여러 방법론을 고민하며 시스템을 만듭니다. 또 개발이 끝났다고 해서 모든 과정이 끝난 것은 아닙니다. 시스템이 제대로 기능을 유지하는지, 시간이 흐르면서 자연스레 생겨나는 버그를 해결하는 정기적인 업데이트와 유지 보수를 제공할 수 있는지 등도 역시나 설계 과정에서 고려해야 합니다.