Software engineering의 필요성
- 모든 나라의 경제는 소프트웨어에 의존하고 있다.
- 더 많은 시스템이 소프트웨어로 제어된다.
- 소프트웨어의 비용(expenditure)은 GNP의 의미있는 부분이다.
Software 란?
: Computer programs and *associated documentation.
소프트웨어는 컴퓨터 프로그램과 관련된 문서를 말한다.
*관련 문서들, 라이브러리, 지원 웹 사이트, 환경 설정 데이터, 사용자 메뉴얼 등
소프트웨어 제품은 특정 고객을 위해 개발되거나, 또는 일반 시장(general market)을 위해 개발된다.
Software products
- Generic products
구매를 원하는 모든 고객을 대상으로 팔기 위한 *Stand-alone systems
*stand-alone : 다른 장치의 도움 없이 독립적으로 기능 구현
ex) 한글, CAD software
- Customized products
특정 고객의 요구를 충족하기 위한 소프트웨어
ex) embedded control systems, air traffic control software
Product specification
Generic products와 Customized products의 가장 큰 차이점은 소프트웨어 사양(Software specification)의 제어에 있다.
- Generic products <- by software developer
- Customized products <- by the customer
소프트웨어의 기능과 그 기능을 바꾸는 결정을 개발자가 하는지, 아니면 고객의 요구로 하는지의 차이점이다.
*Generic products로 개발 시작 후 customized products처럼 특정 고객의 요구사항을 반영하는 경우도 있다.
Software costs
소프트웨어 비용은 컴퓨터 시스템 비용보다 우세하다.
*하드웨어 비용 < 소프트웨어 비용
*소프트웨어 비용 = 개발 비용 + 유지 보수 비용
또한 소프트웨어 비용은 개발보다 유지 비용이 더 크다. 시스템의 수명이 길 수록, 유지 비용은 개발 비용보다 여러 차례 들 수 있다.
소프트웨어 공학은 비용 효율적인 소프트웨어 개발과 관련이 있다.
Software project failure
소프트웨어 프로젝트의 실패요인
- 시스템 복잡성의 증가
새로운 소프트웨어 공학 기술로 크고 더 복잡한 시스템의 개발 그리고 요구사항의 변경에 대처할 수 있다.
시스템은 아무리 크고 복잡한 시스템일지라도 빠른 개발과 출시를 목표로 하고, 또한 시스템은 이전에 불가능하다고 여겨진 능력을 가져야 한다.
- 소프트웨어 공학 사용의 실패
소프트웨어 공학 체계와 기술을 사용하지 않고 컴퓨터 프로그램을 작성하는 것이 더 쉽다. 많은 업체들이 그들의 제품과 서비스를 곧바로 소프트웨어 개발부터 시작한다. 그 결과, 소프트웨어가 더 비싸지고 신뢰성이 낮아진다.
Software engineering
- 소프트웨어 공학은 전문적인 소프트웨어 개발을 위한 이론, 체계 그리고 도구들과 관련이 있다.
- 소프트웨어 공학은 소프트웨어 개발의 모든 면과 관련된 공학의 한 분야이다.
- 소프트웨어 공학 activities
: Software specification, software development, software validation and software evolution.