일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 컴퓨터 동작방식
- 파이썬 연산자
- 이것이 취업을 위한 코딩테스트다
- sort()
- 시스템 소프트웨어
- 이코테
- DP
- 북클럽
- CS
- 리스트
- 쉽게 배우는 데이터 통신과 컴퓨터 네트워크
- data type
- 데이터 통신과 컴퓨터 네트워크
- icmp
- 쿠키
- 노마드코더
- 라우팅
- 파이썬 자료형
- IT5분잡학사전
- 자료형
- 데이터통신
- ARP
- 노개북
- 파이썬 정렬
- 이것이 취업을 위한 코딩 테스트다
- 컴퓨터네트워크
- OSI7계층모델
- RARP
- 기억장치
- GIT
- Today
- Total
뚝딱햄 탈출기
[CS] 소프트웨어 : 시스템/프로그래밍/응용 소프트웨어, 소프트웨어 생명주기, 데이터, 트랜지스터, 데이터 단위 본문
엘리스트랙 - <알아두면 쓸데 있는 컴퓨터 사이언스> 강의 내용 정리
1. 소프트웨어
사용자는 요구사항을 가지고 있고, 생산자인 프로그래머의 의무는 사용자에게 그에 맞는 서비스를 제공하는 것.
소프트웨어는 하드웨어와 사용자 사이의 중개자. 프로그래머는 요구사항에 맞는 소프트웨어를 구축하는 일을 함.
1-1. 소프트웨어
소프트웨어는 하드웨어가 특정 동작을 하도록 하드웨어에 동작 방법을 지시하는 명령어의 집합.
컴퓨터 프로그램 및 그와 관련된 문서를 총칭함.
소프트웨어는 원하는 작업을 하기 위해 순서대로 작성된 명령어(코드)들의 집합.
1-2. 소프트웨어의 종류
시스템 소프트웨어
- 사용자가 직접적으로 실행시킬 수 없으며, 직접 이용할 수 없음.
- 컴퓨터와 스마트폰의 자원을 관리하는 OS와, 마우스와 키보드 등 모든 장치들을 제어하기 위한 디바이스 드라이브가 시스템 소프트웨어에 속함.
프로그래밍 소프트웨어
- 프로그래머가 새로운 소프트웨어를 만들기 위해 사용. 코딩할 때 사용하는 소프트웨어.
- 특정 목적을 가진 명령어 집합을 설계하고 개발하기 위해 사용.
- 프로그래머는 인간이 이해할 수 있는 언어(→ 프로그래밍 언어)를 사용해 소프트웨어를 만드는데, 하드웨어가 명령을 이해하려면 프로그래밍 언어가 기계어로 변환되어야 함.
이를 변환해주는 번역기인 컴파일러가 프로그래밍 소프트웨어에 내장되어 있는 셈. - 개발자가 만들고자 하는 서비스의 유형에 따라 다른 프로그래밍 소프트웨어 사용.
- ex) VSC, XCode(iOS 어플 개발시 사용), 안드로이드 스튜디오(안드로이드 어플 개발시 사용) 등
응용 소프트웨어
- 사용자 목적에 맞게 수행.
- 각각의 앱(= 애플리케이션 소프트웨어)들은 다른 명령어들의 집합이라 다른 기능을 수행함.
- ex) 인스타그램, 웹 브라우저, 문서작성 툴, 시계 앱 등
- 응용 소프트웨어가 동작하기 위해선 시스템 소프트웨어가 필요.
사용자와 가까울수록 상위 소프트웨어로 분류되며, 응용 - 프로그래밍 - 시스템 소프트웨어 순으로 상위 소프트웨어.
2023.07.24 - [CS] - [CS] 컴퓨터 시스템 구조 참고
1-3. 소프트웨어 생명주기(SDLC) - 정보처리기사 실기 이론 토대로 작성함.
소프트웨어 생명주기는 시스템의 전 공정을 체계화한 절차로, 시스템이 개발될 때 부터 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화 한 것.
소프트웨어 생명주기 모델 프로세스
요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
요구사항 분석
- 다양한 이해관계자의 상충할 수 있는 요구사항을 고려해 새로운 제품이나 변경된 제춤에 부합하는 요구와 조건을 결정하는 단계.
- 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계.
- 소프트웨어가 어떠한 기능을 제공해야 하는지 결정하는 단계.
- 입출력이 무엇인지에 대한 검토.
- 활동 : 기능 요구사항, 비기능 요구사항
설계
- 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법 논리적으로 결정하는 단계.
- 요구사항 분석 단계에서 결정된 사항에 대한 구체적 설계가 이루어지는 단계.
- 활동 : 시스템 구조 설계, 프로그램 설계, UI 설계
구현
- 목적에 맞는 프로그래밍 언어를 사용해 코딩하는 단계.
- 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계.
- 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용해 실제 프로그램을 작성하는 단계.
- 활동 : 인터페이스 개발, 자료구조 개발, 오류 처리
테스트
- 인터페이스에서 구현한 기능이 잘 작동하는지 확인하는 단계.
- 시스템의 정해진 요구 만족 여부, 예상과 실제 결과의 차이를 검사하고 평가하는 단계.
- 활동 : 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
유지보수
- 시스템이 인수되고 설치된 후 일어나는 모든 활동.
2. 데이터 형태와 처리
컴퓨터 동작 방식(input 받아들임 → 저장 → 처리 → output 처리)에서 모두 데이터를 다룸.
컴퓨터가 효율적이고 에러없이 정보를 받아들이기 위해 데이터 타입이 나눠져 있어야 함.
데이터 종류: 숫자, 문자, 이미지, 비디오 (이미지가 여러장 모인 것), 사운드 등이 있음.
모든 데이터는 컴퓨터에 0과 1로 저장됨. => 모든 것은 이진법으로 이루어져 있다.
2-1. 트랜지스터
- 컴퓨터를 구성하는 하드웨어.
- 연산에 사용됨.
- 컴퓨터의 이진법 연산을 가능하게 함.
- 전류의 흐름에 따라 0과 1 구분. 1 : 전류 흐름 / 0 : 전류 흐르지 않음.
- 하나의 트랜지스터는 두개의 신호(0,1)만을 표현할 수 있음.
- 최근 출시되는 CPU에는 50억개 이상의 트랜지스터가 내장되어 있음.
2-2. 데이터 단위
비트는 0과 1로 이루어져 있음.
Bit < Byte < KB < MB < GB < TB
8 Bits = 1Byte
1 KB = 2^10 Bytes
1 MB = 2^10 KB = 2^20 Bytes
1 GB = 2^10 MB
1 TB = 2^10GB
즉, 텍스트, 이미지, 비디오, 사운드 등 컴퓨터가 처리하는 모든 정보는 모두 이진수로 맵핑되어 아주 많은 수의 0과 1로 컴퓨터에 저장되고, 이를 복원해 output이 출력된다.
'CS + OS' 카테고리의 다른 글
[CS][Linux] 리눅스 다루기 : 파이프, 프로세스, 마운트 (0) | 2023.07.26 |
---|---|
[CS][Linux] 리다이렉션 (0) | 2023.07.26 |
[CS] 운영체제 : 프로세스, 스레드, 커널, 셸 (0) | 2023.07.25 |
[CS] 컴퓨터 구조 : 기계어/어셈블리어/고급언어, 기억장치, CPU, 동작 흐름, 시스템 버스 (0) | 2023.07.25 |
[CS] 컴퓨터 시스템 구조 : 동작 방식, 하드웨어, CPU/HDD/RAM/그래픽카드/GPU (0) | 2023.07.24 |