728x90
이번 글에서는 소프트웨어에 대해서 알아보고자 한다.
소프트웨어는 아래의 세 가지를 포함한다.
- computer programs (컴퓨터 프로그램)
- system documentation (시스템 문서)
- user documentation (사용자 문서)
소프트웨어 제품은 다음과 같이 나뉜다.
- Generic (범용 소프트웨어)
- 누구나 구매할 수 있도록 개발된 소프트웨어
- 예) Excel, Word, CAD 소프트웨어 등
- Customized (맞춤형 소프트웨어)
- 특정 고객의 요구에 맞게 개발된 소프트웨어
- 예) 전자상거래 소프트웨어, 실시간 운송 추적 소프트웨어 등
- 소프트웨어 명세는 범용 소프트웨어 개발자가, 맞춤형 소프트웨어는 고객이 결정한다.(Generic+Customized)
- 예) ERP 소프트웨어
728x90
그렇다면 소프트웨어 공학이란 무엇일까?
- 소프트웨어 공학이란 소프트웨어 생산의 모든 측면을 다루며, 전문 소프트웨어 개발을 위한 이론, 방법, 도구를 포함한다
- 비용 효율적인 소프트웨어 개발에 중점을 둔다.
소프트웨어 공학의 요구사항
- 거의 모든 국가의 경제가 소프트웨어에 의존한다.
- 사회와 개인이 소프트웨어 제어 시스템에 점점 더 의존한다.
- 컴퓨터 기술 발전에 따라 소프트웨어 복잡성이 증가하고 있다.
- 더 크고 복잡한 소프트웨어를 더 빠르게 개발해야 한다.
소프트웨어 공학의 중요성
- 장기적으로 소프트웨어 공학 기법을 사용하는 것이 더 저렴하고 빠르다.
- 단순히 프로그램만 작성하는 것은 쉽지만, 비용이 더 들고 신뢰성이 떨어진다.
소프트웨어 공학과 컴퓨터 과학의 차이점
- 컴퓨터 과학 : 이론과 기본 원리에 집중
- 소프트웨어 공학 : 실제 소프트웨어 생산 문제에 집중
- 컴퓨터 과학 이론만으로는 소프트웨어 공학을 완전히 뒷받침하기에 부족하다.
소프트웨어 프로세스란?
- 소프트웨어 개발 또는 진화(evolution)를 목표로 하는 일련의 활동이다.
- 모든 소프트웨어 프로세스의 일반적인 활동
- Specification (명세) : 무엇을 해야하는지와 제약사항
- Design and implementation (Development) (개발)
- Validation (Testing) (테스트)
- Evolution (Maintenance) (유지보수)
소트프웨어 공학의 비용
- 약 60% 가 개발(명세, 설계, 구현) 비용
- 40% 가 테스트 비용
- 구현 비용은 약 20% 에 불과하다.
- 장수명 시스템은 유지보수 비용이 개발 비용의 몇 배가 될 수도 있다.
- 시스템 유형, 속성(성능, 신뢰성 등)에 따라 비용이 달라진다.
아래의 그림은 소프트웨어 개발 모델에서의 비용 분포 비교 표이다.

소프트웨어 공학의 다양성과 기본 원칙
- 다양한 소프트웨어 시스템이 존재하며, 모든 시스템에 적용 가능한 보편적인 기법은 없다.
- 이미 개발된 소프트웨어를 재사용(ad hoc approaches) 하는 것이 중요하다.
- 요구사항 설계를 이해하고, 관리된 소프트웨어 프로세스를 사용하는 것이 중요하다.
좋은 소프트웨어의 속성
- Maintainability (유지보수성) : 변화하는 요구에 맞게 진화할 수 있어야 한다.
- Efficiency (효율성) : 시스템에 자원을 낭비하지 않아야 한다.
- Dependability (신뢰성) : 가용성, 신뢰성, 보안, 안전, 무결성을 제공해야 한다.
- Acceptability (수용성) : 설계된 사용자가 받아들일 수 있어야 한다.
다음 글에서는 소프트웨어 프로세스에 대해 자세히 알아보고 정리해 보고자 한다.
728x90
'CS > Software Engineering' 카테고리의 다른 글
| [소프트웨어공학/Software Engineering] Polymorphism 다형성 (0) | 2026.04.10 |
|---|---|
| [소프트웨어공학/Software Engineering] 객체 지향이란? (2) | 2026.04.09 |
| [소프트웨어공학/Software Engineering] 애자일 소프트웨어 개발 (0) | 2026.04.07 |
| [소프트웨어공학/Software Engineering] 소프트웨어 프로세스 (2) (2) | 2026.04.03 |
| [소프트웨어공학/Software Engineering] 소프트웨어 프로세스 (1) (0) | 2026.04.02 |