1. 소프트웨어
1) 상용 소프트웨어
특징
- 상업적 목적이나 판매를 목적으로 개발되는 소프트웨어이다.
- 소프트웨어 개발에 사용된 소스코드는 배포하지 않는다.
- 다양한 형태의 라이선스를 이용하여 배포되며 기술 지원을 보증한다.
분류체계 : 상용 소프트웨어는 범용과 특화 소프트웨어로 나뉜다.
- 산업 범용 소프트웨어 : 시스템SW, 미들웨어, 응용SW 등
- 산업 특화 소프트웨어 : 자동차, 항공, 교육, 물류 등의 산업 전용
2) 응용 소프트웨어
특징
- 특정 업무를 처리하기 위한 목적으로 작성된 소프트웨어이다.
- 애플리케이션, 응용 솔루션 및 서비스 등 다양한 이름으로 불린다.
분류체계 : 크게 6가지로 나뉜다.
- 기업용 소프트웨어 : 오피스웨어, ERP, SCM, BI, CRM 등
- 영상 처리 소프트웨어 : 영상 인식, 스트리밍, 영상 편집 등
- CG/VR 소프트웨어 : 3D 스캐닝과 프린팅, 모델링, 가상현실, 홀로그램 등
- 콘텐츠 배포 소프트웨어 : 콘텐츠 보호, 관리, 유통 등
- 자연어 처리 소프트웨어 : 정보 검색과 질의응답, 의사 결정 지원, 언어 분석 등
- 음성 처리 소프트웨어 : 음성 인식, 합성, 처리 등
3) 시스템 소프트웨어
정의
- 사용자가 손쉽고 효율적으로 컴퓨터 시스템을 사용하도록 돕는 소프트웨어이다.
- 일반적으로 하드웨어 제작사에서 제공되며 운영체제와도 같은 의미를 가진다.
컴퓨터 시스템은 기능별로 수행할 장치들이 존재한다.
- 입력(Input) : 시스템 처리가 필요한 데이터, 제어 요소 등을 전달
- 처리(Process) : 입력된 값을 정해진 방식에 맞게 처리하여 결과를 도출
- 출력(Output) : 처리 결과를 출력 장치(모니터, 프린터 등) 및 저장장치로 전달
- 제어(Control) : 데이터 처리를 위해 각 장치들의 기능 수행을 제어
- 피드백(Feedback) : 기능 수행이 잘못된 경우 적절한 처리과정을 다시 반복
계산기로 생각하면쉽다. 버튼(입력) 화면(출력)에 숫자 출력(제어)되고, 더하기를 누르면 덧셈(처리)결과값이 출력된다. 더하기를 계속 눌러도 더하기는 한번만되게(피드백)이된다.
시스템의 성능평가 기준
- 처리 능력(Throughput) : 단위 시간 내 작업 처리량
- 반환 시간(Turnaround Time) : 작업 의뢰부터 처리까지의 시간
- 사용 가능도(Availability) : 필요할 때 즉시 사용 가능한 정도 (가용성)
- 신뢰도(Realability) : 주어진 문제를 정확하게 해결하는 정도
# 작업을 빠르고 완벽하게 처리하여 결과를 돌출하더라도 3시간뒤부터 작업이 가능하면 사용 가능도가 떨어진다.
플랫폼
- 특정 시스템을 바탕으로 제공되는 운영체제 및 운영환경을 뜻한다.
- 무엇을 기준으로 설정하느냐에 따라 플랫폼의 범위가 달라진다.
플랫폼의 성능을 측정하는 기준
- 가용성 : 필요할 때 즉시 사용 가능한 정도 (사용 가능도)
- 응답시간 : 명령에 반응하는 시간 (처리 시간과 다름)
- 정확성 : 처리 결과가 기대한 값과 비교해서 정확한지 측정
- 사용률 : 데이터 처리에 시스템 자원을 사용하는 정도
4) 소프트웨어 공학
정의
- 최소의 비용과 개발 기간을 통해 높은 품질의 소프트웨어를 도출하기 위한 모든 수단과 도구들의 총징이다.
- 소프트웨어 개발의 품질과 생산성의 향상을 목표로 연구하는 학문이다.
- 얼마나 효율(시간, 인력 비용)적으로 소프트웨어를 개발하는가
목적
- 소프트웨어 개발에 필요한 비용과 기간의 예측
- 하드웨어에 대한 소프트웨어의 상대적 비용 절감
- 급속하게 발전하는 하드웨어, 소프트웨어 기술 반영
기본원칙
- 현대적인 프로그래밍 기술을 지속적으로 적용한다.
- 소프트웨어 품질에 대해 지속적인 검증을 시행한다.
- 소프트웨어 개발 단계별 산출물에 대한 명확한 기록을 유지한다.
4) 소프트웨어 개발 프레임워크
모듈 (Module)
- 프로그램을 기능별로 분할하여 재사용이 가능하게끔 부품화한 것이다.
- 개발자가 프로그램의 기본 틀을 제공하고, 모듈을 활용하여 기능을 구체화한다.
라이브러리 (Library)
- 툴킷이라고도 하며, 관련 있는 모듈들을 모아놓은 것이다.
- 라이브러리에 존재하는 각 모듈이 반드시 독립적인 것은 아니다.
표준 라이브러리 : 프로그래밍 언어에 내장
외부 라이브러리 : 별도의 설치를 통해 사용 가능
디자인 패턴 (Design Pattern)
- 특정 기능에 대한 문제해결을 위한 추상적인 가이드라인을 제시한 것이다.
- 프로그램의 세부적인 구현 방안을 위해 참조하는 해결 방식을 제시한 것이다.
중요*
소프트웨어 개발 프레임워크 (FrameWork)
- 디자인 패턴에 모듈의 장점 및 기능을 결합하여 실제적인 개발의 틀(Frame)을 제공한다.
- 프레임워크가 프로그램의 기본 튼을 제공하고, 개발자가 기능을 구체화하는 제어의 역 흐름이 발생한다.
* 제어의 역흐름은 모듈과 개발자가 하는일을 프레임워크가 반대로 하게만든다.
- 프로그램의 기반, 구조를 잡아주는 코드의 모임이며 자연스럽게 특정 디자인패턴을 유도한다.
- 이미 검증된 프레임워크를 사용하므로써 품질, 예산, 유지보수에 이점이 있다.
- 프로그램 구성의 복잡도가 감소하여 상호 운용성과 개발 및 변경이 용이해진다.
5) 소프트웨어 아키텍처
- 다수의 프레임워크를 체계적으로 구성, 설명하는 구조체이다.
- 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 제공한다.
5) 컴포넌트
- 모듈의 형태로 재사용 가능한 확장된 소프트웨어 블록이다.
- 일반적인 코딩을 벗어나 마치 레고(블럭)을 쌓아 올리듯이 개발하는 기법이다.
- 프레임워크 및 아키텍처가 적용되어 있어 안정적이다.
6) 재사용 가능한 소프트웨어 요소
- 소프트웨어의 부분 또는 전체 영역을 모두 재사용 요소로 볼 수 있다.
- 부분적인 코드 뿐만아니라 응용된 지식과 데이터 구조도 재사용 가능한 요소에 포함된다.
- 개발 이후의 테스트 계획, 문서화 방법 및 절차 등도 재사용 가능 요소이다.
7) 소프트웨어 재사용 방법
- 소프트웨어 재사용 방법은 합성 중심과 생성 중심 방식으로 나뉜다.
합성 중심 : 모듈(블록)을 조립하여 소프트웨어를 완성시키는 블록 구성 방식
생성 중심 : 추상적인 명세를 구체화하여 소프트웨어를 완성 시키는 패턴 구성 방식
다음글 참고
https://yonggyu-memo.tistory.com/13
'정보처리기사 > 소프트웨어 설계' 카테고리의 다른 글
개발 기술 환경 식별 (17) | 2023.07.11 |
---|---|
소프트웨어 개발 환경 분석 (1) | 2023.07.11 |
소프트웨어 개발 방법론 (3) (7) | 2023.07.06 |
소프트웨어 개발 방법론 (2) (0) | 2023.07.05 |