소프트웨어
정의
프로그램, 프로그램과 관련된 문서들, 라이브러리, 지원 웹사이트와 프로그램을 유용하게 쓰는데에 필요한 환경설정 데이터를 모두 포함하여 소프트웨어라고 한다.
유형
소프트웨어 제품은 목적에 따라서 두가지 유형으로 분류하여 생각할 수 있다.
- 일반 제품(Generic product)
- 독립형 시스템. 어떤 고객이든 원하면 살 수 있도록 판매된다. 이때, 특정 분야에 특화괸 마켓을 위한 소프트웨어또한 포함된다.
- 맞춤식 제품(Customized porduct)
- 특정 고객을 위해서 고객에 맞추어 개발하는 시스템
좋은 소프트웨어
좋은 소프트웨어가 되기 위해서 소프트웨어는 어떤 요건을 만족해야할까?
- 유지보수성
- 소프트웨어는 고객의 변화하는 요구를 충족시켜야 한다
- 확실성과 보안성
- 소프트웨어의 신뢰성, 보안성과 안정성을 포함해야 한다.
- 효율성
- 메모리, 프로세서 사이클 같은 시스템자원을 낭비하면 안된다.
- 효율성은 응답성, 처리시간, 자원 활용 등을 포함한다.
- 수용성
- 설겨한 목적에 부합하는 사용자 유형이 이해, 수용할 수 있는 소프트웨어야 한다.
소프트웨어 공학
정의
소프트웨어 공학이란, 소프트웨어의 시스템 명세화, 개발, 운용, 유지보수 등의 생명주기 전반에 관련된 공학적 학문 분야이다. 즉, 소프트웨어 공학은 고품질 소프트웨어의 시스템의 비용 효율적인 개발에 중점을 둔 공학 분야이다.
1968년 software crisis에서 처음 등장한 개념.
소프트웨어 엔지니어는 작업에 대해서 체계적이고 조직적인 접근 방식을 채택하고 해결해야 할 문제, 개발의 제약조건 및 사용 가능한 리소스에 따라서 적절한 도구와 기술을 사용해야 한다. 따라서 이런 부분에서 소프트웨어 공학이 역할을 할 수 있다.
소프트웨어 공학 vs. Computer Science vs. 시스템 공학
- 컴퓨터 과학 : 컴퓨터와 소프트웨어 시스템이 가지고 있는 이론과 방법을 다룬다.
- 시스템 공학: 컴퓨터 기반 시스템 개발의 모든 관점을 다루므로 소프트웨어 뿐 아니라 하드웨어 개발, 정책, 프로세스 설계 및 시스템 설치 등을 모두 다룬다. (하드웨어+소프트웨어+프로세스+...)
- 소프트웨어 공학: 유용한 소프트웨어를 만드는데 필요한 실제적 문제를 다룬다. 시스템에 포함된 소프트웨어 인프라, 제어, 응용 프로그램 및 데이터베이스 개발과 관련되어 있음
소프트웨어 공학에서의 비용(Cost)
소프트웨어 개발에 들어가는 전체 비용 중 약 60%는 개발, 40%는 테스트 비용.
비용은 개발중인 시스템의 유형, 성능, 시스템 안정성과 같은 시스템 속성의 요구사항에 따라서 다르다.
그런데, 소프트웨어는 개발보다 유지보수/관리에 더 많은 비용이 들어간다. 특히 수명이 긴 시스템이라면 관리 비용이 개발 비용의 몇 배에 이를 수 있다. 또한 맞춤식 소프트웨어의 경우 진화 비용이 개발 비용을 앞지르는 경우가 많다.
최선의 소프트웨어 공학기법
소프트웨어 시스템은 매우 다양한 유형이 존재하므로, 모두에 적용할 수 있는 보편적인 소프트웨어 기법은 존재하지 않는다.
즉, 소프트웨어 공학의 방법과 도구들은 개발 대상 SW의 유형, 고객의 요구, 팀의 개발 역량에 따라 달라진다.
소프트웨어 시스템의 유형
바로 윗부분에서 소프트웨어 시스템에 너무 다양한 유형이 존재하여 최선의 SW 공학기법이 존재하지 않는다고 했다. 그렇다면 여기에서 시스템의 유형들이 어떤것들이 있는지 알아보자.
- 독립형 애플리케이션
- 네트워크의 연결 없이 개별 환경에서 동작하는 애플리케이션.
- 인터렉티브 트랜잭션 기반 애플리케이션
- 원격 컴퓨터에서 실행하는 애플리케이션. 사용자의 컴퓨터나 모바일 기기등을 이용해서 접근한다. 전자상거래 애플리케이션과 같은 웹 애플리케이션도 이에 해당한다.
- 임베디드 제어 시스템
- 하드웨어 기기를 제어하는 SW제어 시스템을 말한다. 시스템 유형 중 가장 많은 비중을 차지한다.
- 일괄처리 시스템 Batch processing system
- 대규모로 데이터를 처리하도록 설계된 비즈니스 시스템. 많은 수의 개별 입력을 가공하여 각각에 해당하는 출려글 만들어낸다.
- 엔터테인먼트 시스템
- 사용자의 즐거움을 위해 개인적으로 사용하는 시스템
- 모델링 및 시뮬레이션 시스템
- 물리적 진행이나 상황을 모젤링하기 위해서 엔지니어와 과학자가 개발한 시스템. 독립적으로 상호작용하는 수많은 객체를 가지고 있음
- 데이터 수집 및 분석 시스템
- 환경으로부터 데이터를 수집하고, 처리를 위해 다른 시스템으로 전달하는 시스템
- 복합시스템(SoS)
- 여러 다른 소프트웨어 시스템으로 구성된 시스템
'Computer Science > SW Engineering' 카테고리의 다른 글
[소프트웨어 공학]02. Project Planning (0) | 2023.10.12 |
---|