[ICDL Computing(PYTHON)] 1장. 컴퓨팅 용어

2023. 4. 1. 04:56자격증/ICDL Computing PYTHON

1.1 컴퓨팅 개념

 1.1.1 컴퓨팅 Computing

: 컴퓨터를 사용하는 작업. 계산한다라는 의미.

COMPUTER = HW; 컴퓨터 장치를 구성. 기계부분. + SW; 컴퓨터를 작동하게 함

 

HW; CPU, 기억장치, 모니터, 자판, 마우스, 그래픽카드, 메인 보드 등 물리적인 장치. 

기능적 구분 -입출력장치  -연산장치  -제어장치  -기억장치

*펌웨어는 하드웨어 장치에 설치된 소프트웨어. 메모리에 저장되어 기본적인 소프트웨어 수행을 빠르게 수행하게 해주는 기능.

 

SW; 특정 목적을 수행하기 위해 HW를 작동하게 하는 것. (=프로그램) 소스코드와 목적코드로 구성.

소프트웨어 작동을 위해서는 컴퓨터의 저장장치에 적재되어야 한다!

소프트웨어가 작동되는 것 - "실행execute한다."

소프트웨어가 실행되면 컴퓨터가 해석하여 동작할 수 있는 기계어로 번역되어 컴퓨터 장치들을 작동하게 함.

컴파일러, 인터프리터도 SW임!

 1.1.2  컴퓨팅 사고

: 컴퓨터가 효과적으로 수행할 수 있도록 문제를 정의하고 답을 기술하는 일련의 사고 과정. 자넷 윙 박사.

해결할 문제분해 decomposition, 자료표현 data representation, 일반화 generalization, 모형 modeling, 알고리즘 algorithm이 필요.

추상화; 복잡하게 얽혀 있는 문제를 구조화하여 해결 가능한 상태로 만드는 것

자동화; 추상화된 문제를 컴퓨터의 언어로 바꾸는 과정. 

=>알고리즘 도출

 

 1.1.3 프로그래밍 Programming

프로그램: 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 집합. 실행 중에 사용자의 입력에 반응하도록 구현된 명령어의 집합으로 구성. HDD등의 매체에 binary형식의 파일로 저장되어 있다가 사용자가 실행시키면 메모리로 적재되어 실행됨.

*SW <-반대-> HW   *SW >= Program

소프트웨어: program(소스코드) + library(프로그래머가 작성X 실행시 프로그래머가 작성한 프로그램 수행을 도와주는 프로그램.) + data + α(제품설명서, 설치CD, 제품 포장 등)

컴퓨터 프로그래밍: 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 명령어instructions를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술.

프로그램 언어: 프로그램을 작성하는 언어. 컴퓨터 언어인 기계어로 번역되어 컴퓨터에 의해 실행됨. 

ex. C, Java, Assembly, Python 등.

*어셈블리어assembly language; 낮은 수준의 컴퓨터 제어가 필요한 경우. 기계어와 가장 가까운 기호로 구성됨.

 

 1.1.4 코드 Code

: 컴퓨터 명령어를 나열한 것. <=프로그램. 형식언어formal language. 

기계어: CPU가 직접 해독하고 실행할 수 있는 bit 단위로 쓰인 컴퓨터 언어를 통틀어 일컫음. 프로그램 표현하는 가장 낮은 단계의 개념. 컴퓨터 구조에 따라 달라짐.

어셈블리어: 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어. 기계어와 1:1로 작성됨. 

어셈블리어--번역(어셈블링, 어셈블러)-->기계어

 

 1.1.5 프로그램 기술description과 명세specification

기술: 입출력 데이터에 관한 설명, 프로그램 간의 호출 및 데이터 전달에 대한 설명, 사용자 인터페이스에 대한 설명 등을 포함. 기능을 어떻게how?

명세: 프로그램이 무슨what 기능을 할것인지에 대한 정의.수행할 수 있는 처리 기능의 범위와 논리를 명확하고 질서 있게 정의. 프로그램의 기능에 대한 상세한 설명과 처리 순서, 오류 처리 방법, 입출력 요소의 형식, 제한사항 등 포함. 사용자에게 제공하는 매뉴얼.

 

소프트웨어는 여러개의 단위 프로그램들이 모여서 하나의 기능을 하는 프로그램의 집합. 

소프트웨어에 대한 설명 -> 소프트웨어 명세.(발주자의 요구사항, 개발 일정, 비용, 위험 등에 대한 내용도 포함.)

 

#소프트웨어 기술은 프로그램 기술보다 범위가 넓다.

 

 1.1.6 소프트웨어 개발 과정

1) 문제 분석analysis. 요구사항 분석requirements analysis.

요구사항에 대한 무엇이 구현되어야 하는가에 대한 소프트웨어 명세를 만드는 과정.

사용자와 인터뷰, 브레인스토밍, 프로토타이핑, 사용사례 분석 등 충분한 소통.

사용자<--요구사항 분석 및 문서화-->개발자

 *소프트웨어 명세: SW시스템을 문제 영역 중심으로 구현하고자 하는 대상 기능을 정리하고 문서화하는 것. 일반적, 기능적, 외부적 사항 포함.

 

2) 설계design

전체 개념을 추상화하는 작업. 요구사항에서 분석된 내용을 일정한 형식을 활용하여 문서로 만드는 작업.

개발하고자 하는 시스템에 대한 구조, 데이터, 인터페이스 및 프로시저들에 대한 알고리즘을 구체화. 어떻게 수행할지.

3) 프로그래밍

프로그램을 작성하는 과정. 사람이 읽을 수 있는 형식으로 알고리즘을 기술하는 표현 과정.

언어는 기계어, 어셈블리어, 고급언어로 구분. 

4) 테스트

숨어있는 결함fault을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차. 오류 발견 목적. 품질 평가.

무결점을 위한 것X 오류를 찾기 위한 과정. 

성공적인 테스트는 테스트 케이스 선정, 테스트 계획 수립에 많은 영향을 받음.

*테스트 케이스는 기대되는 표준결과를 포함하는 에측오류와 기대 되지 않는 결함인 비예측오류가 존재 한다는 가정하에 수립.

*화이트박스 테스트, 블랙박스 테스트, 동적 테스트, 정적 테스트, 검증 및 확인 등

*이 단계에서 단위테스트, 통합테스트, 시스템 테스트, 인수 테스트, 설치테스트를 수행

5) 유지보수maintenance

오류 수정. 사용자 요구사항 정정. 기능과 수행력을 증진시키기 위한 활동. 새로운 기능 추가. 긴급사항에 대한 개선enhancement. 이 단계에서도 요청, 분석, 승인, 개선된 프로그램 실행단계가 필요. 개선하고자 하는 부분을 충분히 분석하고 검토할 필요가 있음.

 

1.2 컴퓨터 동작

 1.2.1 컴퓨터시스템

: SW(System/응용Application) + HW(CPU, 저장장치RAM/Disk drive, 입출력장치 등)

System SW: 시스템을 운영   /   Application SW: 사용자를 위한

 

 1.2.2 이진수

1자리 bit

8bit = 1byte

10³ = 1024 = 1Kilo

10⁶ = 1Mega

10⁹ = 1Giga

10¹² = 1Tera

*이진수 4자리씩 모아서 16진수로 표현하는 방법도 있음.

 

 1.2.3 디지털 논리회로

플립플롭(flip flop, SR 플립플롭): 1비트를 저장

컴퓨터 덧셈은 디지털 회로에서 이루어짐. 

디지털 논리회로는 부울대수라는 논리 연산에 기초.

 

 

 

 

 

 

 

NOT A=C

 

A ·B=C

 

A+B=C

 

 

 1.2.4 숫자와 문자의 저장

숫자의 저장; 2byte(16bit) 혹은 4byte(32bit) 기억장소에 저장. 

문자의 저장; 각 알파벳을 1byte의 저장소에 숫자로 바꾸어 저장. ASCII표준 이용.

 

 1.2.5 기억장치

주기억장치CPU

-RAM; 주로 4GB, 8GB 휘발성

-ROM; Read-Only. 변하지 않는 데이터를 저장하는 특별한 용도로 사용. 비휘발성

-Cache Memory; CPU가 가장 가까이 두고 사용하는 기억장소. 휘발성

보조기억장치 (비휘발성)

-HDD; 주로 500GB, 1TB(1,000GB). 자기적으로 데이터 저장

-SSD; 주로 128GB, 256GB. 속도가 빠른 디스크 드라이브

 

* Cache Memory, RAM, SSD: 전기 논리회로/HDD: 자기 기계장치

 

 

#프로그램을 만들 때 문제 해결과 계획하는 과정을 정의하는 활동은 Design

#컴퓨팅 사고는 컴퓨터가 어떻게 작동하는지를 잘 이해하게 도와준다.(X)