0. 기초 개발 용어 사전(3)

gyrud02·2021년 6월 24일
0

이론(THEORY)

목록 보기
3/24
출처: (https://www.inflearn.com/pages/weekly-inflearn-12)

[프로그래밍(Programming)]

* 시스템 아키텍쳐(System Architecture)

-- 하드웨어와 소프트웨어를 포함하는 시스템 전체에 대한 논리적인 기능 체계이다. 시스템이 어떻게 작동하는지를 설명하는 프레임워크이며 시스템이 목적을 달성하기 위해 시스템의 컴포넌트가 무엇인지, 시스템이 어떻게 상호작용하는지, 시스템의 정보가 어떻게 교환되는지 설명한다.

* 소프트웨어 아키텍처(S/W Architecture)

-- 소프트웨어 구조를 비롯한 개발에서 요구되는 기능과 품질을 확보하고, 소프트웨어 구축 및 지속적인 개선이 용이하도록 하는 역할을 한다. 요구사항 분석 활동에 의해 도출된 요구사항을 모두 충족시킬수 있는 시스템이 만들어질 수 있도록 하기 위한 설계 활동이다.

* 하드 코딩(Hard coding)

-- 데이터를 코드 내부에 직접 넣는 코딩 방식을 말한다. 데이터 처리 속도가 빠르며 직관적이고 가독성이 뛰어난 장점이 있으나 데이터가 코드 내부에 직접 들어가 있기 때문에 확장성과 유연성이 떨어져 잘 활용하지는 않는다.

* 알고리즘(Algorithm)

-- 문제를 해결하기 위해 필요한 계산 절차를 말한다. 프로그래밍 언어를 통해 알고리즘을 프로그램으로 만들어가는 작업을 프로그래밍이라고 한다.

* UX(User eXperience)

-- 사용자가 서비스를 이용하며 느끼고 얻는 경험을 뜻한다.

* UI(User Interface)

-- 사용자가 서비스를 이용하는 환경을 말하며, UI는 사용자 경험(UX)에 큰 영향을 미친다.

* SB(Story Board)

-- IT업에서 스토리보드는 사이트 제작에 필요한 정보가 들어있는 설계서를 뜻한다. SB라는 약자로도 많이 쓰이며, 개발 협업을 위한 소통 도구로 주로 사용된다. 보통 예시 이미지와 함께 구현되어야 할 항목에 대한 자세한 설명이 적혀있다.

* WBS(Work Breakdown Structure)

-- 프로젝트 범위와 일정을 세부적으로 나눈 '작업 분할 구조도'이다. 프로젝트 목표를 달성하기 위해서 필요한 활동과 업무를 계층으로 분류 및 세분화하여 전체 범위를 정의한 구조도이다. WBS를 활용하면 프로젝트에 필요한 인력과 일정 계획을 세우는 데 용이하며, R&R(Role&Responsibilities)를 한눈에 파악할 수 있기 때문에 실무에서 많이 사용된다.

* 애즈이즈(AS-IS) vs 투비(TO-BE)

-- AS-IS는 개선되지 이전의 상태이고 TO-BE는 개선된 후의 상태를 말한다.

* 헬스체크(Health Check)

-- IT업에서 헬스체크는 서버나 네트워크 등이 정상적으로 가동하는지 상태를 확인하는 것을 말한다. 미리 답이 정해진 일정한 규칙을 실행시켜 장애의 유무를 확인하고, 필요할 때에는 장애 단위를 분리시키기도 한다.

* 페일 오버(Fail Over) vs 페일 백(Fail Back)

-- 페일 오버는 서버나 시스템, 네트워크 문제가 발생했을 때 예비 시스템으로 자동 전환되는 기능을 말한다. 이 때 사람이 수동으로 전환하면 '스위치 오버'라고 한다. 페일 백은 페일오버로 자동 전환된 시스템을 기존 상태로 돌려 놓는 것을 말한다.

* 파싱(Parsing)

-- 파싱이란 어떤 문장을 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정하는 것을 의미한다. IT업에서 데이터를 조립하여 특정한 데이터만을 추출한다는 의미를 내포하고 있다. 어떤 큰 자료에서 원하는 정보만 가공하고 뽑아서 원하는 때에 불러올 수 있게 하는 것이며, 이러한 파싱을 수행하는 프로그램을 파서(Parser)라고 한다.

* 마스킹(Masking)

-- 기호의 열 또는 비트 패턴을 대상으로 하여 그 일부를 추출하거나 삭제하는 것을 뜻한다. 주로 개인정보 등과 함께 쓰여 개인정보 보호를 위한 하나의 보안과정을 의미하기도 한다.

* GUI(Graphic User Interface)

-- 사용자가 화면안의 요소를 시각적으로 확인하고, 마우스로 아이콘을 클릭하여 기능을 작동시키는 환경을 의미한다. 도스처럼 문자로 된 명령어를 입력시켜야 하는 CLI(Command-Line Interface)에 반대되는 개념이다.

* CLI(Command-Line-Interface)

-- 명령줄 인터페이스라는 의미로 사용자가 문자열을 입력하여 컴퓨터에게 명령을 하면 컴퓨터의 응답도 역시 문자열로 출력해주는 방식이다. 대표적인 예로 윈도우에서는 CMD창, 리눅스와 맥에서는 Terminal 환경을 들 수 있다.

* 모달(Modal Window)

-- UI 디자인 요소로, 웹 페이지나 프로그램 화면에서 대화상자 형태로 나타나 사용자에게 동작을 요구하는 창을 말한다. 웹에서는 팝업(Pop-up)창과 비슷하지만, 브라우저를 새로 띄우는 팝업과는 달리 브라우저 화면 내부에서 레이어를 한 겹 얹듯이 새로운 창을 보여준다.

* 마크업 언어(Markup Language)

-- 태그(Tag) 등을 이용하여 문서나 데이터의 구조를 표시한 언어를 말하며 프로그래밍 언어와는 다르다. HTML, CSS, XML이 대표적인 마크업언어이다.

* HTML(Hypertext Markup Language)

-- 웹 페이지를 위한 마크업 언어이다. 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적인 문서를 만들 수 있는 방법을 제공한다. 그리고 이미지와 객체를 내장하고 대화형 양식을 생성하는 데 사용될 수 있다.

* XML(eXtensible Markup Language)

-- 마크업 언어를 정의하기 위한 언어, 확장이 가능한 언어, 전자적으로 데이터를 교환하기 위한 표준이다. HTML의 한계를 극복하고 SGML의 복잡함을 해결하는 방안으로 만들어졌다. 웹 상에서 구조화된 문서를 전송 가능하도록 설계된 표준화된 텍스트 형식의 마크업 언어로써 인터넷에서 바로 사용 가능한 문서를 표현하는 표준이다. XML은 데이터가 무엇인지에 초점을 맞춰 데이터를 기술하기 위해 고안되었고 HTML은 데이터가 어떻게 보일지에 초점을 맞춰 데이터를 표시하기 위해 고안되었다. XML은 데이터를 구조화시키는데 사용되지만 HTML은 동일한 데이터를 표시하고 꾸미는데 사용된다.

* SGML(Standard Generalized Markup Language)

-- 문서용 마크업 언어를 정의하기 위한 메타 언어이다. 문서의 내용이나 내용 구조를 정의하기 위해 사용되는 언어이다.

* API(Application Programming Interface)

-- 응용 프로그램 인터페이스를 말한다. 쉽게 말해, 코드의 형태를 띄고 있는 개발자들의 인터페이스다. 어떤 응용 프로그램에서 특정한 기능을 사용하기 위해 필요한 데이터를 주고받게끔 만든 도구나 방법을 뜻하며, API가 규격에 맞게 데이터를 요청하고 받아볼 수 있도록 하는 중간 창구 역할을 한다.

* 라이브러리(Library)

-- 프로그램을 개발하는데 필요한 여러 기능을 활용할 수 있도록 묶어놓은 함수 또는 기능의 집합을 말한다. 프레임워크(Framework)가 개발을 제어하는 틀을 제공해준다면, 라이브러리(Library)는 도서관에서 책을 빌리듯 개발자가 필요한 기능을 마음대로 가져다 사용할 수 있는 일종의 모음집에 가깝다. 즉, 정해진 방식으로 개발을 하게끔 정해주는 프레임워크(Framework)와 달리 제어권이 개발자에게 주어지는 셈이다. 자바스크립트(JavaScript) 웹 개발에 쓰이는 리액트(React)와 제이쿼리(JQuery)가 바로 라이브러리이다.

* MFC(Microsoft Foundation Library)

-- C++용 프로그램 라이브러리이다. 윈도우용 응용 프로그램의 통합 개발 환경인 Microsoft Visual C++에 부속되는 클래스 라이브러리이다. MFC를 사용하면 코딩의 효율을 극대화 시킬 수 있어 대부분의 C++ 개발자들이 사용한다.

* 플러그인(Plug-in)

-- 어떤 특정한 기능을 해결하는데 쓸 수 있도록 미리 만들어놓은 코드 및 데이터의 모음이다. 한 라이브러리나 프레임워크에서 여러 개의 플러그인을 제공한다고 볼 수 있다.

* SDK(Software Development Kit)

-- 소프트웨어나 시스템을 만드는 데 쓰이는 개발 도구 키트를 말한다. SDK안에는 개발에 필요한 샘플 코드, 코드 편집기 같은 툴이나 콘솔, 안내 문서, APT(어노테이션 툴) 등이 포함되어 있다. 안드로이드용 모바일 앱을 개발하는 데는 Android SDK, 자바 개발하는 데는 JDK(자바 개발 키트)가 쓰이는 등 여러 가지 SDK를 찾아볼 수 있다.

* JDK(Java Development Kit)

-- 자바로 소프트웨어를 개발할 수 있도록 여러 기능들을 제공하는 개발 도구 키트이다. JDK의 종류로는 Java EE, Jave SE

-- [JDK의 종류]

  • 1) Java EE(Java Platform, Standard Edition) : 표준 자바 플랫폼으로 표준적인 컴퓨팅 환경을 지원하기 위한 자바 가상머신 규격 및 API 집합을 포함한다. Java EE, ME는 구체적인 목적에 따라 자바 SE를 기반으로 API를 추가하거나 자바 가상머신 규격 및 API의 일부를 택하여 정의된다. 이전에는 J2EE라 불리었으나 v5.0 이후로 Java EE로 개칭되었다.
  • 2) Java SE(Java platform, Enterprise Edition) : JavaSE에 웹 어플리케이션 서버에서 동작하는 기능을 추가한 플랫폼이다. 이 스펙에 따라 제품을 구현할 것을 WAS라고 한다. 이후 1.4.x 버전까지 자바 2 SE 1.4.x 혹은 J2SE 1.4.x식으로 명명하다가 1.5 버전에서 J2SE 5.0 식으로 바뀌었다가 1.6 버전부터 자바 SE 6 형태로 명명하게 되었다.
  • 3) Java ME(Java platform, Micro Edition) : 제한된 자원을 가진 휴대전화, PDA 등에서 Java 프로그래밍 언어를 지원하기 위해 만든 플랫폼 중 하나이다.

* JRE(Java Runtime Enviroment)

-- 자바가 동작하는데 필요한 JVM, 라이브러리 등 다양한 파일들을 포함한다.

* JVM(Java Virtual Machine)

-- 자바가 실제로 동작하는 가상 환경이다. JVM으로 하나의 자바 프로젝트를 개발해도 여러 환경에서 원활하게 실행시킬 수 있다.

* IDE(Integrated Development Environment)

-- 프로그램을 개발하는데 필요한 소스 코드 작성 및 편집, 컴파일, 디버킹 등 모든 작업을 한번에 할 수 있는 통합 개발 환경을 말한다. 대표적인 예로 비주얼 스튜디오, 이클립스, 인텔리제이 아이디어가 있다.

* MEAN vs MERN vs MEVN

-- 풀스택 웹 개발을 할 수 있는 대표적인 기술 스택(묶음) 종류이다. 공통으로 들어가 있는 M, E, N은 각각 데이터베이스를 담당하는 MongoDB, 서버 개발에 필요한 Express.js, 자바스크립트 프로그램을 실행할 수 있게 해주는 Node.js를 가리킨다. 여기에 프론트엔드를 담당하는 프레임워크 또는 라이브러리만 각각 앵귤러(Angular; MEAN), 리액트(React; MERN), 뷰(Vue.js; MEVN)로 나뉜다. 자바스크립트 언어만으로도 풀스택 개발을 할 수 있다는 이유때문에 풀스택 개발자가 되고 싶은 사람들 사이에서 인기가 많은 기술 스택이다.

* 임베디드 시스템(Emedded, Embedded System)

-- 특정 기능을 수행하는 전자 시스템을 내장해놓은 것이다. 일반적인 PC가 다양한 목적에 따라 범용적으로 쓰인다면, 임베디드 시스템은 각종 가전제품, ATM, 개표기, 키오스크 등 특수한 목적에 따라 기능을 수행하도록 제작된다. OS(운영체제)는 보통 간소한 형태로 탑재되거나 생략되며, 낮은 전력으로도 정교한 기능을 실시간으로 처리할 수 있게 하는 것이 핵심이다.

* 펌웨어(Firmware)

-- 하드웨어를 제어하는 소프트웨어이다. 하드웨어가 출고된 때부터 포함되어 있는 프로그램인 만큼 하드웨어보다는 교체하기 쉽지만 일반적인 소프트웨어에 비해서는 어렵기 때문에 soft도 hard도 아닌 그 중간쯤의 firm이라는 이름이 붙었다.

* 자료 구조(Data Structure)

-- 데이터를 효과적으로 접근할 수 있도록 만들어진 데이터 체제로, 코드상에서 자료를 저장하는 방법이다. 자료끼리의 관계 등을 구조적으로 표현하는 방식으로 어떤 자료구조를 쓰느냐에 따라 코드 효율이 달라진다.

* 리팩토링(Refactoring)

-- 이미 완성된 코드의 구조를 개선하는 일이다. 결과값을 바뀌지 않지만 코드 내부를 뜯어고쳐 다른 사람이 이해하고 쉽고 간결하게 만드는 행위를 말한다. 버그를 고치거나 새로운 기능을 만드는 건 아니지만, 코드의 생산성을 높이고 유지보수가 쉽게끔 만들어준다.

* 코딩 컨벤션(Coding Convention)

-- 여러 개발자가 협업하는 과정에서 서로의 코드를 파악하고 관리하기 쉽도록 일관적인 스타일을 유지하게끔 하는 코드 작성 규칙을 말한다. 띄어쓰기, 들여쓰기, 함수명이나 변수명을 지정하는 방법 등 정해진 코딩 컨벤션을 준수해야 한 프로젝트 안에서 통일된 코드를 작성할 수 있다.

* 기술 부채(Technical Debt)

-- 불확실한 업무나 촉박한 일정에 맞춰 제한된 방법으로 개발을 진행하면서 문제점이 누적된다는 관점이다. 프로젝트에 대해 정리된 문서를 마련하지 못하거나, 조약한 코드로 작업을 계속하게 되거나 자동화할 수 있는 일에 대한 자동화 처리를 해놓지 않는 등 다양한 상황에서 기술 부채가 쌓일 수 있다. 마치 이자가 붙듯이 시간이 지나면 지날수록 해결이 까다로워지는 만큼 말 그대로 기술적으로 빛을 지는 셈이다. 하지만 완전히 피할 수는 없는 일인만큼 무작정 나쁘다고 보기보다는 관리할 수 있는 선에서 기술부채를 유지하고 작업을 추진해나가는게 필요하다.

* 컴파일(Compile), 컴파일러(Compiler), 컴파일드 언어(Compiled Language)

-- 사람이 이해할 수 있는 고급 프로그래밍 언어로 작성한 코드를 컴퓨터가 처리할 수 있는 기계어로 한꺼번에 번역하는 과정을 컴파일(Compile)이라고 한다. 이 때 쓰이는 프로그램 또는 시스템이 컴파일러(Compiler)이다. 수정이 까다롭지만 프로그램 실행 속도가 빠르다는 장점이 있으며 대표적으로 C, C++, 자바(JAVA) 등이 속한다.

* 인터프리트(Interpret), 인터프리터(Interpreter), 인터프리티드 언어(Interpreted Language)

-- 컴파일과 달리 프로그램을 실행할 때마다 고급 프로그래밍 언어로 작성된 코드를 한 줄씩 기계어로 번역하는 방식을 인터프리트(Interpret)이다. 한 줄 한 줄씩 코드를 실행해내려가기 때문에 컴파일 방식보다 실행 속도는 느리지만 디버깅은 쉽다. 대표적으로 파이썬(Python), 자바스크립트(JavaScript) 등이 속한다.

* 빌드(Build)

-- 프로그램 코드들은 보통 한 파일이 아닌 여러개의 파일들에 걸쳐 작성이 되는데 이 코드를 소프트웨어로 배포하기 위해 특정 형태로 압축하거나 변경해야하는 과정을 빌드라고 한다. 컴파일 과정이 이에 포함된다.

* 환경변수

-- 소프트웨어가 돌아가는 환경마다 특정 변수명에 지정된 값들이다. 각 컴퓨터의 조건이나 용도에 맞게 소프트웨어가 실행할 수 있도록 하고, 보안상 민감한 정보들을 코드로부터 분리하는 등 다양한 목적과 형태로 활용된다.

* 크로스 브라우징(Cross Browsing)

-- 표준 웹 기술을 채용하여 다른 기종 혹은 플랫폼에 따라 달리 구현되는 기술을 비슷하게 만듦과 동시에 어느 한쪽에 최적화되어 치우치지 않도록 공통 요소를 사용하여 웹 페이지를 제작하는 기법을 말한다. 또한, 지원할 수 없는 다른 웹 브라우저를 위한 장치를 구현하여 모든 웹 브라우저 사용자가 방문했을 때, 정보로서의 소회감을 느끼지 않도록 하는 방법론적 가이드를 의미한다.

* 오픈소스 라이선스(OpenSource license)

-- 오픈소스 소프트웨어의 지적 재산권을 일컫는 말이다.

-- [오픈소스 라이선스의 종류]

  • 1) GNU GPL v2.0/v3.0 : 자유소프트웨어 재단(FSF)에서 제정하였다. GPL라이선스를 이용하여 개발 시 개인적, 내부적 이용에 한해서는 소스코드를 공개하지 않아도 되지만 외부 배포 시 해당 소프트웨어의 전체 코드를 공개해야 한다. 예) Firefox(2.0), Linux 커널, GIT, MariaDB 등이 있다.
  • 2) LGPL : 기존 GPL의 높은 제약을 완화시키기 위해 만들어졌다. LGPL로 작성된 소스코드를 라이브러리(정적, 동적 모두 포함)로만 사용하는 경우에는 소스코드를 공개하지 않아도 된다. 그 이외의 사항은 GPL과 동일하다. 다만, 사용자가 라이브러리 수정 후 동일한 실행 파일을 생성할 수 있도록 정정 링크시에는 응용프로그램의 오브젝트 코드를 제공해야한다. 예) Firefox(2.1) 등이 있다.
  • 3) BSD : 캘리포니아 대학에서 제정하였다. 공공의 몫으로 돌려주자는 의미가 강하여 저작권 및 라이선스 명시 이외에는 아무 제약없이 사용이 가능한 자유로운 라이선스이다. 다만 이 소프트웨어를 사용해서 발생 가능한 모든 리스트와 손해는 본인이 책임지도록 하는 책임 도피형 라이선스이다. 예) OpenCV 등이 있다.
  • 4) Apache : 아파치 소프트웨어 재단에서 제정하였다. 소스코드를 공개해야하는 의무는 없지만 아파치 라이선스 사용에 대해서는 밝혀야 하며, BDS 라이선스보다 좀 더 완화된 라이선스이다. 예) Android, 하둡 등이 있다.
  • 5) MIT : BDS 라이선스를 기초로 하여 MIT 대학에서 제정하였다. MIT 라이선스를 따르는 소프트웨어를 사용하여 개발 시, 만든 개발품을 꼭 오픈소스로 해야 할 필요는 없으며 소스코드를 공개할 의무도 없어서 의무사항이 가장 자유로운 라이선스 중 하나이다. 예) X 윈도 시스템, Jsoup 등이 있다.
  • 6) MPL : Mozilla Public License로 소스코드와 실행파일의 저작권 분리가 특징이다. MPL 라이선스의 소스 코드를 사용하여 개발 시, 수정한 소스코드는 MPL로 공개하고 원저작자에게 수정한 부분에 대해 알려야 하지만, 실행파일은 독점 라이선스로 배포가 가능하다. 또한 MPL과 무관하게 작성된 소스코드는 공개할 필요 없다. 예) Firefox(1.1) 등이 있다.
  • 7) Eclipse : 이클립스 재단에서 제정하였다. CPL을 대체하며, GPL보다 약한 수준으로 기업 친화적인 것이 특징이다. 예) Eclipse

* ERP(Enterprise Resource Planning)

-- 전사적 자원 관리라고 부르며, 말 그대로 기업 활동을 위해 쓰여지고 있는 기업 내의 모든 인적, 물적 자원을 효율적으로 관리하여 궁극적으로 기업의 경쟁력을 강화시켜주는 역할을 하게 되는 통합정보시스템이라 할 수 있다. 기업은 경영 활동의 수행을 위해 생산, 판매, 인사, 회계, 등의 운영 시스템을 갖고 있는데 ERP는 이처럼 전 부문에 걸쳐 있는 경영 자원을 하나의 체계로 통합적 시스템을 재구축함으로써 생산성을 극대화하려는 대표적인 기업 리엔지니어링 기법이다.

수정일자 2021-08-24
profile
Back-End Engineer

0개의 댓글

관련 채용 정보