다양한 기록

소프트웨어 특성, 역사, 분류 본문

소프트웨어공학

소프트웨어 특성, 역사, 분류

라구넹 2024. 10. 20. 16:27

소프트웨어 특성

- 안보임

- 제조되는 것이 아닌 엔지니어링 됨

- 낡지 않음

- 테스트 가능

- 적합성, 변경 가능성

- 복제 가능

- 애플리케이션 신뢰성

- 오해받기 쉬움 .. => myth of software


1950s ~ mid 1960s (The early years)

- 배치 접근, 커스텀 SW

 

1960s mid ~ 1970s mid (The Second era)

- 멀티 유저, 리얼 타임, 데이터베이스, 프로덕트 SW

 

1970s mid ~ 1980s late (The third era)

- 분산 시스템, 임베디드 "Intelligence"

- 값싼 하드웨어 - 소프트웨어 엔지니어링 시작

 

1980s late ~ 2000s (The fourth era)

- 성능 좋은 데스크탑, 객체지향 기술

- 예측 시스템, 인공 뉴럴 네트워크

- 병렬 컴퓨팅, 네트워크 컴퓨터

 

2001 ~ Present (The 5th era)

- 유무선 인터넷

- Component Based Development, SOA

- Cloud computing

- Big data - AI - IoT


옛날에는 소프트웨어와 하드웨어 비율을 따지면 하드웨어의 비중이 훨씬 높았음

그런데 그 중에서도 소프트웨어 개발 비용보다 유지 보수 비용이 굉장히 큼

 

소프트웨어 분류

기능적 분류

- 응용 SW

- 시스템 SW

- 임베디드 SW

 

개발 과정에 따른 분류

- 프로토타입

- 프로덕트

- 패키지

 

하드웨어 환경에 따른 분류

- 분산 시스템 SW

- PC & 워크스테이션

- 모바일 SW


소프트웨어 분류

- 시스템 소프트웨어

- 비즈니스 어플리케이션 소프트웨어

- 엔지니어링/과학 소프트웨어

- 리얼타임 소프트웨어

- 웹 어플리케이션

- AI 소프트웨어

- 유비쿼터스

 

1) 시스템 소프트웨어

- 다른 프로그램을 서비스하기 위해 작성된 프로그램 집합

- 일부 시스템 소프트웨어는 복잡하지만 결정적인 작업을 처리 (컴파일러, 에디터, 유틸리티)

- 다른 시스템 소프트웨어는 대부분 불확정적인 데이터를 처리 (운영체제, 드라이버, 네트워크 모듈)

- C, C++

 

2) 비즈니스 애플리케이션 소프트웨어

- 비즈니스에 도움됨

- 데이터베이스 사용

- 클라이언트-서버 시스템, 웹 기반 시스템, 모바일 기반 시스템

- Java, C, C++

 

3) 리얼 타임 소프트웨어

- 실제 세계의 사건들을 모니터링, 분석, 제어하는 프로그램임

- 이러한 소프트웨어는 시간 제한 내에 응답해야 함

- 하드 실시간 시스템, 소프트 실시간 시스템

- C, C++

 

* 온라인 vs 배치

온라인 SW: 데이터를 유저와 상호작용하면서 처리

배치 SW: 요청을 한꺼번에 처리

 

리얼 타임은 타임 리미트가 중요

소프트 RT -> 못해도 금전적, 인적 피해가 적음

하드 RT -> 시간제한 못지키면 피해가 큼

 

4) 엔지니어링, 과학 SW

- 많은 수치 데이터 처리해야 함

- Fortran, C, C++, R

 

5) Embedded SW

- 롬에 상주하며 프로덕트와 시스템 제어

- 굉장히 제한적이고 중요한 기능 수행

 

6) AI SW

- 인간과 같은 지능적인 기능 수행

 

7) 엔테테인먼트 SW

- 게임 소프트웨어

 

 

SW 역할의 증대

시간이 지날수록 전투기 같은 곳에 들어가는 소프트웨어의 비중이 커지는 중

미국에서는 IT제조업과 소프트웨어업의 부가 가치가 큼

한국에서도 비중이 커지는 중