본문 바로가기
공부

소프트웨어공학

by Coding_mon 2021. 3. 3.

소프트웨어(SoftWare)란? 

- 프로그램, 프로그램의 개발, 운용, 보수에 필요한 정보 일체 (소프트웨어 생산 결과물 일체를 소프트웨어라고 한다)

 

소프트웨어의 생산

- 소프트웨어는 프로그램의 동적인 실체
- 프로그램은 형식 언어로 표현(코딩)된 지적 노동의 결과물 > 정신적인 노동자
- 제조업 V.S 서비스업 (소프트웨어는 제작이 아니라 창조적 노력이 포함된 개발)
   > 단순히 사람의 머리에 의하여 창조적인 노력에 의해 개발되는것이 소프트웨어 산업 인건비의 비중이 높음
- 닳아 없어지는 것이 아니라 소용없어 못쓰게 됨 (사용자들이 사용을 안할때 망함) > 소프트웨어의 폐기
- 논리적인 요소로 구성 (유지 보수가 복잡하게 됨)
- 소프트웨어 산업(국내 소프트웨어 기업 2020년에 90조 7000억원 매출)

> 사회적, 경제적인 소프트웨어의 의존도(Dependability)가 커지고 있음

 

소프트웨어의 특성

- 비가시성(Invisibility) : 구조가 소스코드안에 숨어 있어 개념적이고 무형
- 테스트 가능(Testability)
- 복잡성(Complexity)
- 변경성(Changeability) : 기능추가, 수정
- 순응성(Conformity)
- 장수(Longevity) : 마모되어 소멸하지 않음, 필요없는 경우 폐기처리
- 복제 가능(Duplicability) : 불법 복제가 무한히 가능
- 응용에 의존(Application dependability)

 

소프트웨어 시스템

유기적으로 상호 작용하는 개체들의 모임
소프트웨어 자체도 하나의 시스템으로 볼 수 있다. (카카오톡 > 메신저 시스템, 페이스북 > sns시스템)

 

소프트웨어 시스템의 특징

- 목적성 : 반드시 분명한 목적을 가지고 있음 (게임 > 오락용)
- 자동성 : 조건이나 상황의 변화가 발생할 경우, 시기 적절하게 대응하여 처리하도록 시스템을 설정
- 제어성 : 정해진 규정이나 한계 또는 궤도로부터 이탈되는 사태나 현상의 발생을 사전에 감지하여 수정
- 종합성 : 항상 다른 관련 시스템과 상호 의존 관계가 있으며, 각 부분별 시스템도 전체 시스템의 일부분으로서
              필수 기능을 수행 

정보시스템(Information System)

- 자료의 분류, 저장하고 검색하여 처리(프로세싱)하는 관점
- 데이터 베이스를 대화식으로 접근 (모든 서비스는 데이터베이스를 탑재한다)
- 조직의 문제 해결을 위한 도구(MIS, 급여관리, 학사관리 등등)
  ex) 항공권 예약 시스템, 신용카드 검색서비스, 뱅킹 시스템 > 목적에 의하여 개발됨
  > 대규모 자료로서 정적이 아님(추가 삭제가 수시로 됨 > 동적), 시스템 분석, 유지보수가 중요

MIS(Mangement Information System)
> 기업의 운영, 관리, 의사결정을 위하여 정보를 제공하는 시스템(국가기관은 > PMIS)
> 데이터 없이는 정보시스템이 존재 할 수 없다.

 

제어 시스템(Control System)

사건(Event : 마우스클릭, 키보드 클릭 등)을 감지하여 처리하고 자동적으로 보고
> 이벤트는 운영체제가 받아들임 
- 센서의 감지 
- 제어 기기의 상태 보고
- 오퍼레이터의 입력 처리
- 인터페이스

탑제 시스템(Embedded System)

> 계산이 주된 기능이 아닌 시스템의 한 구성요소 (목적의 기능을 하기 위해)
- 대규모, 장기 사용, 테스트하기 어려움
- 인터페이스가 복잡함, 비동기, 병렬, 분산
- 대규모의 자료를 접근, 변경, 출력
- 실시간 제어, 인터페이스
- 엄격한 요구 : 실시간 반응(실수가 있으면 바로 문제가 되기 때문), 고장에 대한 안전, 신뢰성이 높아야 함

 

소프트웨어의 유형

- 응용 소프트웨어 (내부에서 사용하는 일반적인 시스템)
- 시스템 소프트웨어 (운영체제, 장치 드라이버, 언어의 컴파일러, 코드의 라이브러리 등)
- 주문형 소프트웨어 (고객, 기업의 요구를 만족시키기 위해 제작)
- 패키지 소프트웨어 (상업적으로 판매, 워드, POS기 등)
- 임베디드 소프트웨어 (다른 시스템에 내장되어 제어, 조작하는 소프트웨어)

 

 

소프트웨어의 개발 작업

 

 

'공부' 카테고리의 다른 글

프로세스  (0) 2020.10.15
인터프리터 프로그래밍 해석기법, 파이썬  (0) 2020.09.11
프로그램의 컴파일 과정  (0) 2020.09.11
프로그래밍 언어의 설계 원칙  (0) 2020.09.11
프로그래밍 언어란  (0) 2020.09.11

댓글