1. 소프트웨어의 이해(1-1)
소프트웨어의 정의
좁은 의미의 소프트웨어
소프트웨어 = 프로그램
소프트웨어공학에서 보는 소프트웨어
프로그램 개발 및 운영 및 유지보수에 이르기까지 제반 문서와 관련 정보를 포함하는 개념
- 문서와 정보도 소프트웨어 생산행위의 결과물
소프트웨어의 특성
1. 비가시성 - 자동차같은 제품과 달리 소프트웨어는 그 구조가 외관에 나타나지 않고, 코드 속에 숨어있음
2. 적합성 또는 순응성 - 요구나 환경의 변화에 적절히 변화하여 적응
3. 복제 및 변경 - 복제와 변경이 쉽게 가능
4. 복잡성 - 개발과정이 복잡하고, 시스템 자체가 난해함
소프트웨어의 종류
다섯 종류의 소프트웨어
1. 시스템 소프트웨어
- 운영체제, 컴파일러 등
2. 응용 소프트웨어
- 급여, 회계관리, 은행 시스템 등
3. 주문형 소프트웨어
- 프로토타입
4. 패키지 소프트웨어
- 패키지화되어 상업적으로 판매하는 소프트웨어 (Utility - MS-OFFICE, HWP)
5. 임베디드 소프트웨어
- 다른 시스템에 내장된 소프트웨어
소프트웨어 발전의 세대별 특징
세대별 발전 과정
1. 제1세대(1950 ~ 1960년대 중반)
- 일괄처리
- 극히 제한된 분야에 사용
- 특정 목적 전용의 소프트웨어
2. 제2세대(1960년대 중반 ~ 1970년대 초반)
- 다중 사용자 환경
- 실시간 처리
- 데이터베이스
- 소프트웨어의 상품화
3. 제3세대(1970년대 중반 ~ 1980년대 후반)
- 분산 시스템
- 하드웨어의 가격 하락에 따른 보급 확대
- 다양한 응용 분야의 범용 소프트웨어
4. 제4세대(1980년대 후반 ~ 현재)
- 고성능 데스크톱 시스템
- 객체지향 기술의 발전
- 인공지능과 전문가 시스템
- 병렬처리
- 네트워크화
=======================================================================================
소프트웨어의 위기
소프트웨어 수요과 공급의 변천
1960년 이전
- 소프트웨어보다 우수한 하드웨어의 확보와 유지보수
1860년대
- 소프트웨어 공급이 수요를 따라잡지 못하는 현상 발생
- 수요는 100배 이상 증가, 연평균 12% 이상 증가율
소프트웨어 위기(Software Crisis)
수요를 따르지 못하는 생산성에 대한 심각한 인식
1965년 ~ 1985년 |
1983년도 증가율 |
|
수요의 증가 |
100배 |
12% |
생산성 |
2배 |
4% |
개발인력 공급 |
10배 |
4% |
소프트웨어 위기 현상
위기의 구체적인 현상
- 개발기간의 지연 및 하드웨어 비용을 초과하는 개발비용의 증가
- 성능 및 신뢰성 부족
- 유지 보수의 어려움에 따른 엄청난 비용
소프트웨어 위기의 원인
4가지 원인
- 소프트웨어 규모의 거대화와 복잡화
- 소프트웨어 개발에 일반적으로 통용되는 방법이 없음
- 프로그래머 개인의 경험과 역량에 따라 결과가 크게 좌우되어 예측 불가능
- 기술적인 시험체계의 부재에 따른 신뢰성 문제
- 품질 보증에 대한 확실한 개념의 부재
결과 -------------------------------------------------------> 소프트웨어 공학 출현