소프트웨어 공학에서 프론트 엔드와 백엔드라는 용어는 소프트웨어의 presentation layer (프론트 엔드)과 data access layer (백엔드) 또는 물리구조 또는 하드웨어 사이의 관심사를 분리하는 것을 의미하나요?
프런트엔드와 백엔드
소프트웨어 공학에서 프론트 엔드와 백엔드라는 용어는 소프트웨어의 presentation layer (프론트 엔드)과 data access layer (백엔드) 또는 물리구조 또는 하드웨어 사이의 관심사를 분리하는 것을 의미한다. 클라이언트 - 서버 모델에서 클라이언트는 일반적으로 프런트 엔드로 간주되며 서버에서 실제로 presentation 작업이 수행되는 경우에도 일반적으로 서버가 백 엔드로 간주된다.
블록 다이어그램
데이터 혹은 물리학적인 정보의 흐름과 관련한 자료 분석을 시작할 때, 자료의 처리 과정을 단계적으로 체계화하여 하나의 그림으로 나타낸 것을 뜻한다. 이때 각 자료 및 단계는 블록으로 처리가 되며, 그 자료와 단계의 흐름은 선으로 표현되어 각각의 자료와 단계를 잇는 형식으로 구성된다.. 다른 말로 '블록 차트' 또는 '플로우 차트' 라고도 한다. 보통 하나의 단계가 블록으로 표시되므로 이런 이름을 가지게 되었으며 공학계열 전범위에서 널리 사용되고 있다. 블록 다이어그램의 용도와 의미는 데이터의 종류 및 흐름에 따라 천차만별로 나뉘게 되는데, 보통 기계, 건설 등 순수 하드웨어적인 공학 분야와 전자, 전산 등의 소프트웨어적인 공학 분야에서 그 차이가 두드러지게 나타난다. 최근에는 그 적용 범위가 늘어나는 추세이다.
어드밴스트 포맷
롱 데이터 섹터 위원회가 맡은 어드밴스트 포맷 이니셔티브들 중에서 레거시 컴퓨팅 솔루션과 하위 호환성을 유지하는 방식들이 언급되었다. 이러한 목적을 달성하기 위해 여러 분류의 어드밴스트 포맷 장치가 만들어졌다.
수많은 호스트 컴퓨터 하드웨어와 소프트웨어 구성 요소들은 하드 드라이브가 512바이트 섹터의 경계로 구성되어 있다고 간주한다. 여기에는 칩셋, 운영 체제, 데이터베이스 엔진, 하드 디스크 파티셔닝, 이미징 도구, 백업, 파일 시스템 유틸리티뿐 아니라 기타 응용 소프트웨어의 일부분에까지 그 범위는 넓은 편이다. 레거시 컴퓨팅 구성 요소와의 호환성을 유지하기 위해 수많은 하드 디스크 드라이브 제공업체들은 512바이트 변환 펌웨어가 포함된 기록 미디어에 어드밴스트 포맷 기술을 지원한다. 512바이트 펌웨어에 4096바이트 물리 섹터로 구성된 하드 드라이브들은 어드밴스트 포맷 512e 또는 512 에뮬레이션 드라이브로 부른다.
슈퍼 (소프트웨어)
슈퍼 (Simplified Universal Player Encoder & Renderer의 준말)는 여러 가지 명령 줄 도구를 위한 프론트엔드이다. 비용을 들이지 않고 다른 많은 입출력 포맷을 지원하며 별도의 지식 없이 비디오 소프트웨어를 사용하기 쉽게 되어 있다.
방화벽 (네트워킹)
방화벽(防火壁)이란 서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다.
룩 앤드 필
소프트웨어 디자인에서 룩 앤드 필은 그래픽 사용자 인터페이스의 관점에서 쓰이며 색, 모양, 레이아웃, 글꼴(룩)뿐 아니라 단추, 상자, 메뉴와 같은 동적인 요소의 동작(필)을 수반하는 디자인의 측면을 이루고 있다. 룩 앤드 필은 또한 API의 관점을 가리키기도 하며, 이 API의 관점 중 대부분은 기능적인 특성과 관련되어 있지는 않다. 룩 앤드 필이라는 용어는 소프트웨어와 웹사이트 두 곳에서 쓰인다.
클리어타입
클리어타입 렌더링은 사용자와 시스템 응용 프로그램들이 표현되는 트루타입이나 오픈타입 글꼴에만 적용된다. 다른 그래픽 화면 요소(비트맵으로 이미 변환된 텍스트를 포함)은 클리어타입 렌더링의 영향을 받지 않는다. 예를 들어, 마이크로소프트 워드 안에 입력한 문자열은 클리어타입 렌더링 기술이 적용되어 표현된다. 그러나 포토샵이나 그림판과 같은 프로그램 안에 보이는 비트맵으로 이미 만들어진 그림 안의 문자열에는 이 기술이 적용되지 않는다. 클리어타입 렌더링 기술은 특정한 종류의 컴퓨터 디스플레이 위에 표현되는 문자열에만 적용된다. 이것은 특정 디스플레이 상에서는 화질을 떨어뜨릴 가능성이 있다는 것을 의미한다.
컴퓨터 지원 설계
컴퓨터 지원 설계(, ) 또는 단순히 캐드(CAD)는 공학자, 건축가 그리고 설계 활동에서 전문적인 설계를 지원하는 컴퓨터 기반 도구의 다양한 영역에서 사용한다. 제품 수명 주기 관리 처리 내부에서 주된 기하학 저작 도구이고 소프트웨어와 가끔 특정 용도의 하드웨어를 포함한다. 현재 패키지는 제도 시스템 기반인 2D 백터부터 3D 입체와 표면 모델러까지 다양하다.
컴퓨팅 플랫폼
플랫폼은 응용 소프트웨어를 실행하기 위해 쓰이는 하드웨어와 소프트웨어의 결합이다. 플랫폼은 하나의 운영 체제 또는 컴퓨터 아키텍처라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있다.
소프트웨어 유지보수
소프트웨어 유지보수()는 소프트웨어 공학에서 배급된 이후 결함을 수정하고 성능이나 기타 특성을 개선하는 소프트웨어 제품의 수정을 말한다.
리버스 엔지니어링
리버스 엔지니어링() 또는 역공학(逆工學)은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 이것은 종종 대상(기계 장치, 전자 부품, 소프트웨어 프로그램 등)을 조각내서 분석하는 것을 포함한다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것을 포함한다.
랜 스위칭
IEEE가 스위칭 작업을 설명하기에 유용한 계급적 용어를 만들었는데, 서브네트워크 간에 패킷 분담 능력이 없는 네트워크 장치는 엔드 시스템(E.S)이라고 부르고, 패킷 분담을 가진 경우에는 인터미디에이트 시스템(I.S)이라고 부르고 있다. I.S는 그들의 라우팅 도메인 안에서 통신을 분할시키고, 분할된 라우팅 도메인들 간에 통신을 한다. 라우팅 도메인은 공동 관리 권한에 따라 하나의 인터네트워크의 부분으로써 간주하고 관리 지침을 준수한다. 라우팅 도메인은 매우 능동적인 시스템으로 간주된다.
소프트웨어 품질
소프트웨어 공학에서 소프트웨어 품질()은 비즈니스 문맥에서 품질이 정의된 곳에 존재하는, 두 개의 서로 관련되면서도 구별된 개념을 가리킨다.
클래스 (컴퓨터 과학)
클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 된다.
서브클래스는 자신만의 메소드와 변수를 정의할 수도 있다.
이러한 클래스와 그 서브클래스 간의 구조를 "클래스 계층(hierarchy)"이라 한다.
서비스로서의 소프트웨어
서비스로서의 소프트웨어(Software as a Service, SaaS)는 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어 전달 모델이다. 주문형 소프트웨어(on-demand software, 온디맨드 소프트웨어)라고도 한다.
리버스 엔지니어링
리버스 엔지니어링의 기원은 상업적 또는 군사적으로 하드웨어를 분석한 것에서 시작되었다. 목적은 원본 생산의 절차에 관한 지식이 거의 없는 상태에서, 최종 제품을 가지고 디자인 결정과정을 추론하는 것이다. 같은 기술이 레거시 소프트웨어 시스템을 응용하기 위해 현재 연구되고 있는데, 산업이나 국방이 아니고, 오류, 미완성, 접근 불가인 문서를 수정하기 위함이다.소프트웨어 리버스 엔지니어링을 위해 IDA Pro나 OllyDbg 등의 도구들이 사용된다. 이 도구들은 어셈블리 언어들을 분석하기 쉽게 하도록 분석하는 기능과 코드를 변형하는 기능등을 제공한다.
슈퍼 (소프트웨어)
슈퍼는 이보다 낮은 사양에서도 동작할 수 있다. 실제 최소 요구 사항은 전적으로 사용자가 선택한 백엔드 프로그램과 설정에 따라 달라질 수 있다.
오픈스택
Designate은 DNS를 관리하는 멀티테넌트 REST API이다. 이 구성 요소는 서비스로서의 DNS를 제공하며 PowerDNS, BIND를 포함한 수많은 백엔드 기술들과 호환된다. 하나의 테넌트마다 DNS 존을 관리하기 위해 기존의 DNS 서버와 상호 작용하는 등의 목적으로 DNS 서비스를 제공하지는 않는다.
신뢰성 공학
소프트웨어와 하드웨어 사이의 고장원인에 대한 차이점 - 소프트웨어는 마모되지 않는다 - 에도 불구하고 소프트웨어 신뢰성 공학을 연구자들 가운데는 하드웨어 신뢰성 연구에 사용되는 통계적 모델이 소프트웨어 신뢰성 척도로 유용하다고 믿는 사람들도 있다. 소프트웨어 사용자의 경험상, 소프트웨어를 오래 사용할 수록 결국 시험한 적 없는 방식으로 사용하게 되고 고장으로 이어지는 숨어있던 결함을 발견하게 된다는 것이다.
컴퓨터 과학
컴퓨터 과학()은 전산 이론, 하드웨어 및 소프트웨어에 중점을 둔 정보과학의 한 분야이다. 정보 자체보다는 정보의 수집ㆍ전달ㆍ축적ㆍ가공을 하는 도구로서의 기계를 연구 대상으로 삼는다. 전산 및 그 응용기술에 대한 과학적이고 실용적인 접근을 의미하며 전산 이론 및 시스템 설계를 다루는 전문가를 컴퓨터 과학자라 부른다.
컴퓨터 지원 설계
중간급 소프트웨어는 최종 사용자에게 매개 공간을 더 쉽게 통합되었다: 더 직관적인 기능 (스케치업)을 통합한 것은 매개 특징 (백터웍스)을 지니는 3D 덤프 공간으로된 양쪽 세상의 최고가 되거나 상대적으로 적은 스텝 (시네마4D)에서 매우 사실같은 뷰 화면을 만든다.
간반 (소프트웨어 개발)
간반()은 소프트웨어 개발 프로세스 중의 하나로, 개발자들에게 과도한 부하를 주지 않으면서 적시에 상품을 출시하도록 하는 개발 방법이다. 크게는 간반 체제와 간반 방식으로 나눌 수 있다.
다운그레이드
다운그레이드()는 컴퓨팅에서 소프트웨어나 하드웨어를 더 오래된 버전으로 되돌리는 것을 말한다. 다운그레이드는 업그레이드의 반의어이다. 종종, 복잡한 프로그램들은 사용되지 않거나 버그가 많은 기능들을 제거하기 위해, 속도 증가 및 쉬운 사용을 위해 다운그레이드가 필요할 수 있다. 기계에서도 동일한 현상이 발생할 수 있다.
업무 재설계
비용절감, 작업시간절감, 작업환경개선, 권한위임과 같은 구체적인 사업 비전과 프로세스별 목표를 찾아내고 이들의 우선순위를 확정한 후 최종목표치를 정량화시켜 확정한다.
프로세스의 성과에 강한 영향을 미치는 핵심 프로세스 또는 문제가 되는 병목 프로세스를 찾아내어 재설계대상 프로세스로 확정하고 각 프로세스별 책임자를 선정하는 작업을 수행한다.
프로세스 재설계에 앞서, 일단 발견된 문제는 더 이상 반복하지 않고, 정확한 측정과 분석을 통하여 향후 개선의 기준으로 삼기 위하여 필요한 단계이다. 문제와 오류를 해결하고 개선된 프로세스를 위해 완전한 프로세스와 신중히 비교분석해야 한다.
요구되는 정보기술을 탐색하는 단계이다.
프로세스를 실제로 구축하게 되지만 이는 프로세스 재설계의 마지막이 아니라, 원형을 이용해 순환적 수정을 통하여 최적의 프로세스를 찾아나가는 형태이다.
 예：비용 = 인원 및 설비의 시간 단가 × 시간 × 횟수경쟁기업의 제품을 완제품에서부터 애초에 설계되었던 부품단계까지로 역추론함으로써 경쟁제품의 설계사양을 유도하는 것을 말한다.
시스템의 기능적인 변화 없이 다른 새로운 시스템으로 변환하는 것을 말한다.
기능의 변화를 목적으로 시스템을 완전히 재설계하는 것을 말한다.
데이터베이스 머신
데이터베이스 머신(database machine) 또는 백엔드 프로세서(back end processor)는 데이터베이스의 데이터를 저장, 검색하는 컴퓨터나 특수한 하드웨어를 일컫는다. 데이터베이스 접근을 위해 특별히 설계되며 고속 채널을 통해 메인 (프론트엔드) 컴퓨터와 결합된다. 데이터베이스 머신은 메인 CPU와 밀착 결합되는 반면 데이터베이스 서버는 네트워크를 통해 느슨히 결합된다. 데이터베이스 머신은 데이터베이스 소프트웨어를 가지고 수백, 수천 개의 마이크로프로세서를 사용하여 대형 패킷의 데이터를 메인프레임으로 전송할 수 있다. 프론트엔드 프로세서는 데이터를 수신한 다음 이를 표시한다. 한편 백엔드 프로세서는 프론트엔드 프로세서의 데이터를 분석하고 저장한다. 백엔드 프로세서는 더 높은 성능, 호스트 메인 메모리 증가, 데이터베이스 복구 및 보안 증가, 제조 비용 감소의 결과를 보여준다. 데이터베이스 머신은 데이터베이스를 보유하고 있는 근거리 통신망의 컴퓨터인 데이터베이스 서버와는 상반된다.
어도비 애프터 이펙트
각 그림, 영상은 타임라인 위에 레이어로 처리되며, 이는 비선형 영상 편집이 하는 바와 비슷하다. 그러나 애프터 이펙트와 비선형 영상 편집의 한 가지 차이점은 애프터 이펙트는 레이어 지향인 반면, 비선형 영상 편집은 일반적으로 트랙 지향이라는 것이다. 다시 말해, 애프터 이펙트에서 각 개별 객체는 저만의 트랙을 차지하지만 비선형 영상 편집은 오버랩을 허용하지 않는 한 각 객체가 같은 트랙을 차지할 수 있는 시스템을 사용한다. 이러한 트랙 지향 시스템은 편집하기에 알맞고, 프로젝트 파일을 훨씬 더 정밀하게 관리할 수 있다. 애프터 이펙트가 채용한 레이어 지향 시스템은 확장 효과 작업과 키 프레임 처리에 알맞다.
순차 접근
순차접근(sequential access)은 컴퓨터 과학에서 데이터에 접근하는 방법의 하나로써 자기테이프 같이 데이터를 순차적으로 접근하는 방식이다. 데이터의 위치에 따라 시간이 달라진다. 직접접근과 반대되는 개념이다.
파일 서버
컴퓨팅 환경에서 파일 서버(file server)는 워크스테이션이 접근할 수 있는 컴퓨터 파일(문서, 사운드 파일, 사진, 영화, 그림, 데이터베이스 등)을 공유하고 있는 기억 공간의 위치를 제공하는 것이 주 목적을 가진 네트워크에 추가된 컴퓨터를 말한다. "서버"(server)라는 용어는 클라이언트 서버 구조로 된 기기의 역할을 강조하며 여기서 클라이언트는 이 기억 공간을 사용하는 워크스테이션을 말한다. 파일 서버는 일반적으로 어떠한 계산도 수행하지 않으며 클라이언트의 중간에 어떠한 프로그램도 실행하지 않는다. 데이터의 빠른 저장과 워크스테이션이 중대한 계산을 제공하는 데이터 수신이 파일 서버의 주된 설계 목적이다.
인터페이스 (컴퓨팅)
소프트웨어 인터페이스는 여러 종류의 여러 수준의 인터페이스를 가리킬 수 있다. 즉, 운영 체제는 하드웨어와 인터페이스(접속)할 수 있다. 이 운영 체제에서 실행되는 응용 소프트웨어나 프로그램은 스트림을 통해 상호작용할 수 있으며 객체 지향 프로그램들의 경우 응용 프로그램 내의 오브젝트들은 메소드를 통해 상호작용해야 할 수 있다.
모델-뷰-컨트롤러
모델-뷰-컨트롤러()는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
컴퓨터 구조
하드웨어 부품을 골라서 상호적으로 연결하여 기능, 성능, 비용적인 목표를 충족하는 컴퓨터를 만들어 내는 과학과 기술로 정의될 수도 있다.
소프트웨어
"소프트웨어"라는 용어는 1957년에 존 터키(John W. Tukey)가 처음 사용한 용어이다. 일상적으로 이 용어는 응용 소프트웨어의 의미로 자주 쓰인다. 컴퓨터 과학과 컴퓨터 공학에서 "컴퓨터 소프트웨어"는 컴퓨터 시스템, 프로그램, 데이터에 의해 처리된 모든 정보를 말한다.
인터페이스 (컴퓨팅)
인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
컴퓨팅에서 컴퓨터 시스템끼리 정보를 교환하는 공유 경계이다. 이러한 교환은 소프트웨어, 컴퓨터 하드웨어, 주변기기, 사람 간에 이루어질 수 있으며, 서로 복합적으로 이루어질 수도 있다.
터치스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신할 수 있으며 마우스나 마이크로폰과 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.
소프트웨어 프레임워크
소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. 이렇게 매우 폭넓은 정의는 이 용어를 버즈워드(buzzword)로서, 특히 소프트웨어 환경에서 사용할 수 있게 만들어 준다.
웹 서버 게이트웨이 인터페이스
WSGI는 서버와 게이트웨이 , 애플리케이션과 프레임워크 양단으로 나눠져있다. WSGI 리퀘스트를 처리하려면, 서버단에서 환경정보와 콜백함수를 애플리케이션단에 제공해야한다. 애플리케이션은 그 요청을 처리하고 미리 제공된 콜백함수를 통해 서버단에 응답한다.
WSGI 미들웨어(라고 불린다.)가 WSGI 서버와 애플리케이션 사이를 보충해주는데, 이 미들웨어는 서버의 관점에서는 애플리케이션으로, 애플리케이션의 관점에서는 서버로 행동한다. 이 미들웨어는 다음과 같은 기능을 가진다.애플리케이션을 호출하고 리스폰스를 받는 예시이다
도메인 모델
소프트웨어 공학에서 도메인 모델()은 행위와 데이터를 둘 다 아우르는 도메인의 개념 모델이다.
클라우드 컴퓨팅
SaaS 모델에서 사용자들은 응용 소프트웨어와 데이터베이스에 대한 접근 권한을 가진다. 클라우드 제공자들은 응용 프로그램을 실행하는 인프라스트럭처와 플랫폼을 관리한다. SaaS는 "주문형 소프트웨어"(on-demand software)를 가리키기도 하며 가격 정책은 일반적으로 종량제(pay-per-use) 기반이거나 구독 비용 기반이다. SaaS 모델에서 클라우드 제공자들은 클라우드에 응용 소프트웨어를 설치, 운영하며 클라우드 사용자들은 클라우드 클라이언트의 소프트웨어를 접근한다. 클라우드 사용자들은 이러한 응용 프로그램들이 실행하는 클라우드 인프라스트럭처와 플랫폼을 관리하지 않는다. 이로 말미암아 클라우드 사용자 자신의 컴퓨터에 응용 프로그램을 설치하고 실행할 필요가 없으므로 유지보수와 지원이 단순하게 된다.
클라우드 응용 프로그램들은 확장성 관점에서 다른 응용 프로그램들과 차이가 있는데, 확장성은 변화하는 작업 수요를 충족하기 위해 런타임 중에 태스크들을 여러 개의 가상 머신으로 복제함으로써 수행할 수 있다. 로드 밸런서들은 가상 머신들의 집합을 통해 작업을 분산시킨다. 이 과정은 오직 하나의 단일 액세스 포인트를 바라보는 클라우드 사용자에게는 투명하게 보인다. 수많은 클라우드 사용자들을 수용하기 위해 클라우드 애플리케이션들은 멀티테넌트일 수 있으며, 즉 어떠한 머신이라도 하나 이상의 클라우드 사용자 조직에 서비스를 제공할 수 있다는 것을 뜻한다.
서비스 지향 아키텍처
서비스 지향 아키텍처(Service Oriented Architecture, 약칭 SOA 「에스오에이」혹은 「소아」로 발음)란 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상의 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다. 업무 처리 변화를 시스템에 빠르게 반영하고자 하는 수요에 대응하기 위해 2004년부터 IT 업계에서 주목을 하고 있다.SOA를 이루는 두 번째 중요한 개념은 메시지이다. 서비스 제공자와 서비스 사용자는 메시지를 통해 서로 통신한다. 서비스 제공자는 서비스 명세를 통해 자신이 가진 서비스의 인터페이스를 공개하는데, 이 명세 내에는 서비스가 제공하는 기능과 이를 이용하기 위해 사용자와 주고 받아야 하는 메시지의 형식이 정의되어 있다. SOA 관점에서 서비스는 플랫폼 독립적이어야 하므로, SOA에서 정의되는 메시지는 특정 기술에 독립적이어야 한다.
기술 소통
기술 영역은 소프트 & 하드 과학, 컴퓨터와소프트웨어를 포함한 첨단 기술, 가전제품 그리고 비즈니스 프로세스와 사례들을 포함하는 어떤 종류의 것이라도 될 수 있다.
의공학
의용 생체 공학의 주목할만한 하위 학문분야는 의료 응용 프로그램 측에서과 엔지니어링 측면에서, 두 개의 각도에서 볼 수 있다. 의공학 엔지니어는 양쪽의 시각(능력)을 가지고 있어야 한다. 많은 의료 전문분야 (예 : 심장과, 신경과)와 같은 일부 BME 하위 분야는 다음과 같은 인체의 특정 시스템과의 관계에 의해 구별된다 :
그 예는 해부학이나 생리학의 특정 측면에 초점을 맞춘다.
버전 관리
소프트웨어 엔지니어링에서는 일반적인 소프트웨어 소스 코드만을 관리하는 내역을 주로 버전 관리라고 정의하게 된다. 일반적으로 산업 공학이나 이전 생산 기반 제조 공학 등에서 소프트웨어 쪽으로 넘어오는 학문적 관심에 의해 이전 생산 공학에서 사용하던 개념을 가져오게 되었고, 그에따라 버전 관리(Software Version Management)와 형상 관리(Software Configuration Management)의 개념들이 따라왔다고 볼 수 있겠다.
소프트웨어
사용자들의 시각은 보통 프로그래머의 시각과는 차이가 있다. 현대의 범용 컴퓨터(임베디드 시스템의 반대 의미)를 사용하는 사람들은 보통 소프트웨어를 플랫폼, 응용 프로그램, 사용자 소프트웨어의 세 층으로 분류한다.
정적 프로그램 분석
소프트웨어 메트릭과 리버스 엔지니어링은 정적 분석의 형태로 묘사될 수 있다. 소프트웨어 매트릭을 끌어내는 것과 정적 분석은 소프트웨어 품질 목표 (software quality objective)라고 불리는 것을 정의함으로써 점점 서로를 효율적으로 사용하게 된다. 특히 임베디드 시스템에서 그렇다.
디스크 섹터
기하학적으로 섹터라는 용어는 부채꼴을 뜻하며, 기초적인 세 가지 부분으로 이루어지는데, 여기에는 섹터 헤더, 데이터 영역, 오류 정정 코드(ECC)가 있다. 섹터 헤더는 디스크와 컨트롤러가 사용하는 정보를 포함하고 있으며, 이 정보에는 동기(sync) 바이트, 주소 식별 정보, 결함(flaw) 플래그, 헤더 패리티 바이트가 들어있다. 헤더에는 데이터 영역의 의존이 불가능할 경우 사용되는, 대안이 되는 주소를 포함할 수 있다. 주소 식별 정보는 드라이브의 동작을 통해 정확한 위치에 읽기/쓰기 헤드를 조준할 수 있도록 보장하기 위해 사용된다. 데이터 영역에는 기록된 사용자 데이터를 담고 있는 반면, ECC 필드는 데이터 필드에 기반한 코드를 담고 있어서 데이터에 유입될 수 있는 오류를 검사, 정정하는데 사용된다.
사용자 인터페이스
사용자 인터페이스(, )는 사람(사용자)과 사물 또는 시스템, 특히 기계, 컴퓨터 프로그램 등 사이에서 의사소통을 할 수 있도록 일시적 또는 영구적인 접근을 목적으로 만들어진 물리적, 가상적 매개체를 뜻한다. 사용자 인터페이스는 사람들이 컴퓨터와 상호 작용하는 시스템이다. 사용자 인터페이스는 물리적인 하드웨어와 논리적인 소프트웨어 요소를 포함한다. 사용자 인터페이스는 크게 다음과 같은 수단을 사용한다.
컴퓨터 과학자
컴퓨터 과학자들은 일반적으로 소프트웨어 측면의 컴퓨터 시스템을 다루며, 하드웨어 측면에서는 (서로 겹치는 분야가 있기는 하지만) 컴퓨터 공학자가 주로 초점을 둔다. 컴퓨터 과학자들이 그들의 노고와 연구를 특정 분야(알고리즘과 자료 구조 개발 및 설계, 소프트웨어 공학, 정보 이론, 데이터베이스 이론, 계산 복잡도 이론, 인간-컴퓨터 상호작용, 수치 해석, 프로그래밍 언어 이론, 컴퓨터 그래픽스, 컴퓨터 비전)에 중점을 둘 수도 있으나, 그들의 기본 목적은 이러한 다른 분야들을 바탕으로 한 컴퓨팅의 이론적 연구이다.
부트스트랩 (프론트엔드 프레임워크)
부트스트랩은 기본 요소 외에도 사용자들이 자주 사용하는 요소들을 포함한다. 예를 들면, 각종 버튼들, 드롭다운 메뉴, 탭, 라벨, 상태 바 등이 있다.
개인용 컴퓨터
개인용 컴퓨터는 다음과 같은 종류로 나뉜다.컴퓨터 소프트웨어란, 컴퓨터 프로그램과 절차 및 컴퓨터에 대한 지시사항울 나타내는 일반적인 용어다.
소프트웨어는 워드프로세서같은 응용 소프트웨어, 운영 체제같은 시스템 소프트웨어, 그리고 미들웨어로 나뉜다.
프론트엔드 모듈
프론트엔드 모듈(Front End Module)은 자동차의 전면의 여러 부품을 하나의 모듈(Module)로 구성한 것을 일컫는 말이다. 일반적으로 뼈대를 이루는 부품인 캐리어와 헤드램프(Head Lamp), 라디에이터 어셈블리(Radiator Assembly), 프론트 범퍼 빔(Beam-Front Bumper)및 기타 부품등으로 구성된다. 경우에 따라서는 프론트 범퍼 어셈블리(Front Bumper Assembly)를 포함하는 경우도 있다. 프론트엔드모듈 구조는 자동차에 따라서 선택적으로 적용가능하며, 현재 일본, 미국, 한국, 유럽의 자동차 회사들에서 이 기술을 채택하여 적용하고 있다.
원자성 (데이터베이스)
궁극적으로, 어떤 애플리케이션 레벨의 구현은 운영체제 기능에 의존한다. 여기서 운영체제는 시스템 자원을 다시 전환하려는 다른 소프트웨어나 자원을 이용할 수 없는 상태가 발생(예. 전원 정지)에 대비해 전문화된 하드웨어를 차례로 사용한다. (pre-emptive multitasking)
컴퓨터 과학
컴퓨터 과학과 소프트웨어 공학의 관계에 대해서는 논란이 많다. 컴퓨터 과학과 소프트웨어 공학의 용어 정의가 많은 사람들에게 다소 모호하게 보이기 때문이다. 소프트웨어 공학은 컴퓨터 과학의 한 분야에 불과하다고 말하는 사람들이 있는 반면, 소프트웨어 공학은 다른 분야에 대한 응용이나 자원을 운용하는 방법 등 실용적인 특징에서 컴퓨터 과학의 다른 분야와 잘 구분된다.
백본망
백본() 또는 백본망(, )은 다양한 네트워크를 상호 연결하는 컴퓨터 네트워크의 일부로서, 각기 다른 LAN이나 부분망 간에 정보를 교환하기 위한 경로를 제공한다. 백본은 같은 건물 안에, 다른 건물 안에, 또 캠퍼스 환경 안에, 아니면 넓은 지역에 걸쳐 다양한 네트워크를 묶을 수 있다. 일반적으로 백본의 용적은 그와 연결된 네트워크보다 더 크다.
수많은 지역의 대형 회사는 지역 전체를 한데 묶는 백본망을 가질 수 있는데, 이를테면 서버 클러스터가 각기 다른 지역에 위치한 여러 회사 부문에 의해 접근할 필요가 있을 경우가 그러하다. 이 부서들을 아우르는 네트워크 연결(예: 이더넷, 무선)을 네트워크 백본이라고 부른다. 백본을 설계할 때 네트워크 혼잡은 고려 대상이다.
마이크로소프트 블렌드
마이크로소프트 블렌드 포 비주얼 스튜디오(, 이전 이름: Microsoft Expression Blend/마이크로소프트 익스프레션 블렌드)는 웹 애플리케이션과 데스크톱 응용 프로그램을 위한 그래픽 인터페이스를 작성할 목적으로 마이크로소프트가 개발하여 판매하는 사용자 인터페이스 디자인 도구이다. 윈도 프레젠테이션 파운데이션과 실버라이트 응용 프로그램의 XAML 기반의 인터페이스를 디자인하는 상호 작용적인 위지위그 프론트엔드이다. 과거에는 마이크로소프트 익스프레션 스튜디오 제품군의 응용 프로그램들 가운데 하나였다.
V 모델
컴퓨터 아키텍처 및 소프트웨어 아키텍처 설계 단계를 합쳐서 고수준 설계라 부른다. 아키텍처를 선택함으로써 만들어지는 베이스라인은 일반적으로 모든 구현될 모듈 항목과 그 간략한 기능을 정의하고, 모듈 간의 인터페이스, 관계, 의존성을 기술하며, 필요한 데이터베이스 테이블, 아키텍처 다이어그램, 적용기술 내역을 기술한다. 또한 이 단계에서 통합 테스트에 대한 설계가 이루어진다.
상속 (객체 지향 프로그래밍)
"파생 클래스" 또는 후계자 클래스, 자식 클래스라고도 불리는 서브클래스는 하나 이상의 다른 클래스(수퍼클래스, 기반 클래스, 또는 부모 클래스)로부터 하나 이상의 언어 엔티티를 상속하는 모듈러, 파생 클래스이다. 클래스 상속의 의미는 언어에 따라 달라지지만, 일반적으로 서브클래스는 수퍼클래스의 인스턴스 변수들과 멤버 함수들을 자동적으로 상속한다. 어떤 언어들은 다른 구조의 상속을 지원하기도 한다. 예를 들어, 에펠에서 클래스의 사양을 정의하는 계약도 후계자가 상속받는다. 수퍼클래스는 특정한 서브클래스가 상속하고 수정, 보완할 수 있는 공통 인터페이스와 기본적인 기능을 수립한다. 서브클래스에 의해 상속된 소프트웨어는 서브클래스에서 재사용된다. 클래스의 인스턴스에 대한 참조는 사실 그것의 서브클래스 중 하나를 참조하는 것이다. 참조되는 객체의 실제 클래스를 컴파일 타임에 예측하는 것은 불가능하다. 수많은 다른 클래스의 객체 멤버 함수를 호출하는데에는 똑같은 인터페이스가 사용된다. 서브클래스는 수퍼클래스의 함수를 같은 메소드 시그니처를 공유해야 하는 완전히 새로운 함수로 대체할 수도 있다.
후입 선출
후입 선출(後入先出) 또는 LIFO(last in, first out)는 컴퓨터 과학과 대기 이론에서 어떠한 종류의 데이터 구조에 저장되어 있는 항목들이 처리되는 것을 말한다. LIFO 구조화 선형 목록에서, LIFO 요소는 맨 위의 항목만 추가하거나 제거할 수 있다. LIFO 구조는 작은 문을 가진 좁고 둘러싸인 승강기로 예를 들 수 있다. 승강기가 도착지에 다다를 때, 마지막에 탄 사람은 먼저 내려야 한다.
엑소커널
엑소커널은 하나의 애플리케이션이 다른 요구조건(requirements)을 가진 다른 추상 계층 위에 놓이도록 강제하지 않는다는 점에서 단대단 원칙(end-to-end principle)을 운영 체제에 적용한 한 예로도 볼 수 있다. 예를 들어 MIT 엑소커널 프로젝트에서는 치타 웹 서버는 미리 형태가 준비된 인터넷 프로토콜(IP) 패킷을 디스크에 저장해놓고, 커널은 그 디스크에 대한 다른 애플리케이션의 읽기 및 쓰기를 차단해준다. 하지만 디스크가 어떻게 추상화되어 있는지는 전적으로 애플리케이션이나 그 애플리케이션이 쓰는 라이브러리에 달려있을 뿐이다.
컴퓨터 공학
컴퓨터 공학()은 컴퓨터 하드웨어 및 소프트웨어를 개발하는 데 필요한 전기공학 및 컴퓨터 과학의 여러 가지 분야를 통합하는 학문 분과이다. 현대 정보화 사회에서 컴퓨터의 하드웨어와 소프트웨어를 연구, 컴퓨터 시스템과 컴퓨터 관련 기술을 개발하여 익히고 이를 각 분야에 응용함을 목적으로 한다.
헤더 (컴퓨팅)
정보기술에서 헤더(header)는 저장되거나 전송되는 데이터 블록의 맨앞에 위치한 보충 데이터를 가리킨다. 데이터 전송에서 헤더를 따르는 데이터는 페이로드(payload), 바디(body)로 불리기도 한다.
역컴파일러
첫 번째 역컴파일 단계는 입력된 기계어나 중간 언어 프로그램의 바이너리 형식을 로드하고 분석하는 것이다. 이것은 펜티엄, 파워PC 같은 아키텍처와 엔트리 포인트 같은 입력된 프로그램의 기본 사실들을 발견하는 것이 가능해야 한다. 많은 경우에 C의 codice_1 함수(유저가 쓴 코드의 시작점) 같은 것을 찾는 것이 가능해야 한다. 이것은 런타임 초기화 코드를 역컴파일하지 않고 배제해야 한다. 만약 심볼 테이블과 디버그 데이터가 사용 가능하다면 이것들 또한 로드되어야 한다. 프론트엔드는 코드와 링크된 라이브러리들을 식별할 수 있다. 이것은 라이브러리 인터페이스를 제공할 수 있다. 만약 사용된 컴파일러를 결정할 수 있다면 코드 관용구들을 식별하는데 유용한 정보가 될 것이다.
디버거
몇몇 유명한 디버거들은 단지 CLI로 구현된다. 개발자들은 GUI를 통해 더 쉽고 효율적인 디버깅을 고려한다. 이것은 시각적인 프론트-엔드의 이유이다. 대부분의 GUI 디버거 프론트-엔드가 특정한 디버거를 대상으로 삼는데 반해, 어떤 것들은 여러 CLI 디버거들을 대상으로 삼는다.
프런트 오피스
프런트 오피스(Front office)는 호텔 등에서 가장 먼저 손님을 접하는 공간을 의미한다. 의미가 커져 회사 등의 운영 부서 전체를 뜻하기도 한다.
항공전자 소프트웨어
항공전자 소프트웨어는 항공기 구성품에 탑재하기 때문에 안전성과 신뢰성을 요구하는 임베디드 소프트웨어를 말한다. 기존에 임베디드 소프트웨어와 차이는 안전성을 위해 정해진 법칙과 최적화된 소프트웨어 개발 프로세스가 있는 점이다.
의존관계 역전 원칙
객체 지향 프로그래밍에서 의존 관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존 관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. 이 원칙은 다음과 같은 내용을 담고 있다.
제품계열공학
제품계열공학(Product Line Engineering)은 소프트웨어 제품별 공통적인 부분과 가변적인 부분을 구분하여, 하나의 플랫폼을 개발하면 여러 모델에 동시 적용할 수 있도록 하는 소프트웨어 공학의 한 분야이다. CBD(Component Based Development) 방법론에 도메인 공학을 결합한 분야이다. 프레임워크 기반의 예를 들면, 사용자 단에 MFC, AWT, Swing 과 서버 단에 EJB, DCOM, CORBA 와 같은 프로그램 기법이 있을 수 있다.
백업
백업(, )은 임시 보관을 일컫는 말로, 정보 기술에서는 데이터 백업()이라고 하며, 데이터를 미리 임시로 복제하여, 문제가 일어나도 데이터를 복구할 수 있도록 준비해 두는 것을 말한다.
이벤트 (컴퓨팅)
컴퓨터 프로그래밍에서 "이벤트 핸들러"는 프로그램 내부에서 입력을 받아 처리하는 일종의 콜백 서브루틴이며, 자바 또는 자바 스크립트 에서는 "listener" 라고도 불린다. 각각의 이벤트는 주로 GUI 툴킷 등을 포함하는 기본 프레임 워크에서 온 응용 프로그램 레벨의 정보로, 이러한 GUI 이벤트에는 키 누름, 마우스 움직임, 동작 선택 및 타이머 완료 등이 있다. 좀 더 하위의 이벤트는, 파일 또는 네트워크 스트림을 읽는 부분에서 데이터의 가용성을 나타내기 위해 사용될 수도 있다. 이벤트 핸들러는 이벤트 기반 프로그래밍 ()에서 가장 중요한 개념이다.
하드웨어 가속
보통, 프로세서는 연속적이며 함수는 하나씩 실행된다. 다양한 기술들은 성능을 개선하는 데에 사용되고 하드웨어 가속은 그 기능들 가운데 하나이다. 하드웨어와 소프트웨어의 주된 차이는 "동시 발생"으로, 하드웨어가 소프트웨어보다 훨씬 빠르게 해 준다. 하드웨어 가속은 계산을 많이 하는 소프트웨어 코드를 위해 고안된 것이다. 하드웨어 가속은 사소한 기능 장치부터 MPEG2와 같은 커다란 기능 블록까지 다양하다.
기본값
응용 소프트웨어에서 기본값을 사용할 경우 다음과 같은 두 가지 목적을 달성 할 수 있는데, 이러한 두 가지 목적은 종종 서로 충돌을 일으키기도 한다.
개개인의 성별과 같이, 주로 가장 많이 선택하는 옵션이 정해져 있지 않거나 다른 정보로 확인이 불가능 한 경우에는 기본값이 제공되지 않아야 한다. 하지만 어떤 소프트웨어에서는 기본값이 꼭 제공되어야 하는 경우도 있으므로 주의해야 한다.
소프트웨어 개발자
소프트웨어 개발자는 소프트웨어 개발 작업에 종사하는 사람을 말한다. 좁게는 소프트웨어 설계와 코딩, 넓게는 프로젝트 관리 업무를 수행하는 사람을 포함한다. 개별 프로그램 작업을 넘어서 응용 프로그램의 수준에서 전반적인 프로젝트에 기여하는 사람을 뜻하기도 한다.
비슷한 의미로 쓰는 다른 용어로는 소프트웨어 분석가와 소프트웨어 기술자가 있다.
TWAIN
TWAIN(Standard for image acquisition devices, 트웨인)은 이미지 스캐너 및 디지털 카메라와 같은 디지털 이미징 장치인 하드웨어와 응용 프로그램인 소프트웨어 간의 통신을 규제하는 응용 프로그래밍 인터페이스(API) 및 통신 프로토콜이다.
인터랙션 사이언스
국가간 IT분야에서의 국경의 경계선과 편차가 점차 없어지고 있으며, 그에 따라 그 산물로 할 수 있는 학문의 다양성이 중요시되고 있다. 특히 이것은 결과적으로 융합형 신기술과 상품 및 서비스 개발에 있어서 선진국과 후진국 간의 차이가 나타날 수 있는 결과로 나타날 것이기 때문에 더욱 중요시 되고 있다.
컴퓨터 과학
컴퓨터 과학의 하위 분야는 컴퓨터 프로그램 실행의 실용적인 기술과 컴퓨터 시스템의 응용 그리고 순수하게 이론적인 분야로 나뉠 수 있다. 몇몇 계산 문제의 기본적인 속성을 공부하는 계산 복잡도 이론과 같은 것은 매우 추상적이고, 이것과 다른 컴퓨터 그래픽스은 현실 세계 응용에 중점을 둔다. 또 다른 하위 분야는 계산 실행에 중점을 둔다.
예를 들어, 프로그래밍 언어 이론은 계산 서술의 접근을 공부하고, 컴퓨터 프로그래밍 학문 그 자체는 프로그래밍 언어와 복잡한 시스템 사용의 다양한 측면을 조사하고, 인간-컴퓨터 상호작용은 컴퓨터와 계산을 유용하고 인간들에게 보편적으로 접근이 쉽게 만드는 데 중점을 둔다.
서포트 벡터 머신
일반적으로, 서포트 벡터 머신은 분류 또는 회귀 분석에 사용 가능한 초평면() 또는 초평면들의 집합으로 구성되어 있다. 직관적으로, 초평면이 가장 가까운 학습 데이터 점과 큰 차이를 가지고 있으면 분류 오차()가 작기 때문에 좋은 분류를 위해서는 어떤 분류된 점에 대해서 가장 가까운 학습 데이터와 가장 먼 거리를 가지는 초평면을 찾아야 한다.
일반적으로 초기의 문제가 유한 차원 공간에서 다루어지는데, 종종 데이터가 선형 구분이 되지 않는 문제가 발생한다. 이러한 문제를 해결하기 위해 초기 문제의 유한 차원에서 더 높은 차원으로 대응시켜 분리를 쉽게 하는 방법이 제안되었다. 그 과정에서 계산량이 늘어나는 것을 막기 위해서, 각 문제에 적절한 커널 함수 formula_1를 정의한 SVM 구조를 설계하여 내적 연산을 초기 문제의 변수들을 사용해서 효과적으로 계산할 수 있도록 한다.
높은 차원 공간의 초평면은 점들의 집합과 상수 벡터의 내적 연산으로 정의된다. 초평면에 정의된 벡터들은 데이터 베이스 안에 나타나는 이미지 벡터 매개 변수들과의 선형적 결합이 되도록 선택된다. 이 선택된 초평면에서, 초평면에 대응된 점 formula_2는 다음과 같은 관계가 성립한다.
만약 formula_1가 formula_2 와 formula_6가 점점 멀어질 수록 작아진다면, 각각의 합은 테스트 점 formula_2와 그와 대응되는 데이터 점formula_8의 근접성의 정도를 나타내게 된다. 이러한 방식으로, 위 커널식의 합은 구별하고 싶은 집합안에 있는 데이터 점과 테스트 점간의 상대적인 근접성을 측정하는데 사용될 수 있다. 초기 공간에서 볼록하지 않는 집합안의 점 formula_2가 높은 차원으로 대응되었을 때 오히려 더 복잡하고 어려워질 수도 있는데 이런 부분을 주의해야 한다.
소프트웨어 설계
소프트웨어 설계(Software design)는 소프트웨어 해결책을 위한 문제해결과 계획 과정이다. 소프트웨어의 목적과 명세가 결정되면 개발자가 설계 하거나 설계자를 고용하여 해결책을 위한 계획을 개발하도록 한다. 저수준 요소와 알고리즘 구현 문제, 그리고 구조에 대한 조망이 포함된다.
디스패치 테이블
컴퓨터 과학에서 디스패치 테이블 ()은 메서드들을 가리키는 포인터들이나 메소드들의 테이블이다. 이런 테이블을 사용하는 것은 객체 지향 프로그래밍에서 늦은 바인딩을 구현하는 기본적인 기술이다.
소프트웨어 구조
소프트웨어 구조(software architecture)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.
클라이언트 서버 모델
클라이언트 서버 모델()은 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간에 작업을 분리해주는 분산 애플리케이션 구조이자 네트워크 아키텍처를 나타낸다. 웹 시스템도 확장된 '클라이언트 서버 시스템'으로 분류되나, 일반적으로는 클라이언트 서버 시스템이라고 하면 웹 시스템이 나오기 이전의, 사용자 PC에는 클라이언트가 설치되어 화면을 처리하고 서버에서는 자료를 처리하는 시스템을 일컫는다.
백도어
컴퓨터 시스템 (또는 암호화 시스템, 알고리즘)의 백도어(backdoor)는 일반적인 인증을 통과, 원격 접속을 보장하고 plaintext에의 접근을 취득하는 등의 행동을 들키지 않고 행하는 방법을 일컫는다. 백도어는 설치된 프로그램의 형태를 취하기도 하고, 기존 프로그램 또는 하드웨어의 변형일 수도 있다. 일반적으로 CCTV에 깔려서 정보를 빼어갈수도 있다.
데이터 소거
소프트웨어 기반 덮어쓰기는 응용 소프트웨어를 사용하여 여러 개의 0, 여러 개의 1, 또는 의미 없는 임의의 의사 데이터를 하드 디스크 드라이브 섹터 전반에 기록한다. 데이터 소거와 기타 덮어쓰기 방식과의 주된 차이점을 이야기하면, 후자의 경우 데이터를 온전하게 유지시켜서 데이터 누출, 신원 도용, 규제 순응 달성 실패의 위험을 안고 있다는 것이다. 비록 1차례의 덮어쓰기가 현대의 하드 디스크 드라이브에 충분하다고 널리 인식되고 있지만 수많은 데이터 소거 프로그램은 수차례의 덮어쓰기를 제공함으로써 정부 및 산업 표준을 지원한다. 양호한 소프트웨어는 데이터 제거에 대한 확인을 제공하며 이는 특정 기준의 충족에 필수적이다.
버퍼 (컴퓨터 과학)
버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다.
보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 이는 전자 통신의 버퍼와 비유할 수 있다. 버퍼는 하드웨어나 소프트웨어에 추가될 수 있지만 버퍼는 상당수가 소프트웨어에 추가된다. 버퍼는 보통 속도가 계속 바뀔 수 있으므로 데이터 수신, 처리 속도에 차이가 있다. (예: 프린터 스풀러)
컴퓨터 프로그래밍
서로 다른 프로그래밍 언어는 다른 프로그래밍 유형을 지원하기 때문에, 분야에 따라 적합한 언어가 존재한다. 또한 언어마다 프로그래머가 알고리즘을 구현할 때 그 구체적인 방법과 수준의 차이가 있기 때문에, 사용의 편의성과 성능 사이에서 적절한 타협이 이루어진다. 또한 프로그래밍의 언어 중 하나이며 컴퓨터에게 명령을 전달할 수 있다.
소프트웨어는 컴퓨터 프로그램과 데이터를 총칭하는 용어이다. 이에 수반한 문서 자료는 소프트웨어의 필수 요소로 간주되지만, 실제 프로그래밍 과정에 포함되는 것은 아니다.
음성 합성
텍스트 음성 변환 시스템은 프론트 엔드와 백엔드 두 부분으로 구성된다. 일반적으로 프론트 엔드는 사용자가 입력한 텍스트에서 기호화된 언어 표현 (symbolic linguistic representation)을 내보낸다. 백엔드는 합성된 음성의 파형을 내보낸다. 출력되는 음성이 얼마나 현실의 사람의 목소리를 닮아 있는가, 출력되는 음성을 얼마나 잘 알아들을 수 있는가로 평가한다.
로봇 미들웨어
로봇 미들웨어는 하드웨어인 로봇이 다른 종류의 기계들(예:PDA,컴퓨터)과 통신 혹은 기계들을 제어 하기 위한 프로그램이다. 로봇 미들웨어는 기계어로 작동되는 로봇 자신을 통제하면서 외부의 연결을 받고 그것의 기계어 혹은 스크립트 형식의 명령을 받아들이고 자신의 상태, 작업 결과를 반환해주는 프로그램이라 할 수 있다. 프로그램 계층에서는 이름 그대로 네이티브 수준 바로 위의 것이기 때문에 프로그래머는 최상위 계층 언어만 사용해서 하드웨어에 관한 직접적인 이해가 없이 기계어를 쓰지 않고 프로그래밍할 
수 있다.
소프트웨어 공학
그 이후로, 하나의 직업으로서, 또한 학문의 한 분야로서 꾸준히 품질, 비용, 유지 보수성, 빌드 속도가 개선된 소프트웨어를 창조하는데 전념해 왔다. 이 분야는 그 자매 분야인 공학에 비해 아직도 상대적으로 젊은 분야로, 소프트웨어 공학'이란 실제로 무엇이며 전통적인 공학의 정의에 부합하는지에 대한 논의가 이루어지고 있다. 소프트웨어를 단순히 프로그래밍으로만 보는 한계를 벗어나는 것으로부터 유기적으로 성장한 분야이다. 최근의 흐름으로는 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등이 있다.
후킹
후킹()은 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 이때 이러한 간섭된 함수 호출, 이벤트 또는 메시지를 처리하는 코드를 후크()라고 한다.
소프트웨어
컴퓨터 소프트웨어는 컴퓨터 하드웨어의 반대 의미로, 컴퓨터 하드웨어는 소프트웨어가 실행되고 저장되는 물리적 장치(물리 구조)이다.
정보 디자인
때때로 컴퓨터 과학(computer science)과 정보 기술(information technology), 정보 디자인이 비슷한 용어로 쓰이지만 정보 아키텍처 (information architecture)는 정보 시스템, 데이터베이스, 자료 구조의 디자인과 데이터 모델링, 프로세스 분석을 포함하는 개념이다.
관점 지향 프로그래밍
관심 지향 프로그래밍은 프로그램 로직을 명확한 부분들(이른바 "관심사")로 나누는 것을 수반한다. 거의 모든 프로그래밍 패러다임들은 관심사들을 별도의 독립적인 엔티티로 그룹화하고 캡슐화하는 것을 어느 정도는 지원하며, 이는 이러한 관심사들을 구현, 추상화, 합성하기 위해 사용할 수 있는 추상화(예: 함수, 프로시저, 모듈, 클래스, 메서드)를 제공함으로써 수행된다. 일부 관심사들은 프로그램 내의 여러 추상적 개념들에 영향을 미치며 이러한 형태의 구현체를 거역한다. 이러한 관심사들을 크러스 커팅 관심사(cross-cutting concerns)라고 부른다.
사이버펑크 파생물
사이버펑크와 마찬가지로, 후기사이버펑크는 스페이스 오페라 식의 먼 미래보다는 현실적인 가까운 미래를 묘사한다. 그래서 우주 여행과 관련된 기술보다는 지상에서 가능한 기술들의 사회적인 영향을 보여주려고 한다. 후기사이버펑크가 사이버펑크와 별개의 경향이라고 주장하는 이들은 보통 다음과 같은 기준으로 둘을 구분한다.
소프트웨어
이는 컴퓨터 과학과 소프트웨어 공학의 양대 산맥이 탄생하는 계기가 되었으며, 둘 다 소프트웨어 및 소프트웨어의 제작에 대해 연구한다. 컴퓨터 과학은 더 이론적인 반면(튜링의 수필이 컴퓨터 과학의 한 예이다), 소프트웨어 공학은 더 실용적인 부분에 초점을 둔다.
클라이언트 (컴퓨팅)
컴퓨터 네트워크에서 클라이언트(client, )는 네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 응용 프로그램이나 서비스를 말한다. 구체적으로 말하면 클라이언트-서버 구조에서 서버에서 그 서버가 제공하는 서비스를 요청하고, 또는 서비스 요청을 위해 필요 인자를 서버가 원하는 방식에 맞게 제공하며, 서버로부터 반환되는 응답에 사용자에게 적절한 방식으로 표현하는 기능을 가진 프로그램이나 시스템이다.
핸들 (컴퓨팅)
핸들(handle)은 자원(resource)에 대한 추상적인 참조이다. 핸들은 응용 소프트웨어가 데이터베이스나 운영 체제 같은 다른 시스템에서 관리되는 메모리 블록들이나 객체들을 참조하는데 사용된다. 리소스 핸들은 불투명한 식별자가 될 수도 있고(이 경우에 보통 리소스의 종류를 관리하기 위한 배열 인덱스나 테이블을 나타내는 정수 번호로 사용된다) 또는 더 많은 정보에 접근할 수 있게 해주는 포인터가 될 수도 있다.
소프트웨어 빌드
컴퓨터 소프트웨어 분야에서 소프트웨어 빌드(software build)는 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정을 말하거나 그에 대한 결과물을 일컫는다. 소프트웨어 빌드에 있어 가장 중요한 단계들 가운데 하나는 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정이다.
컴퓨터 하드웨어 포트
컴퓨터 하드웨어에서 컴퓨터 포트(computer port, )는 컴퓨터와 다른 컴퓨터, 장치 사이의 인터페이스 역할을 담당한다. 포트는 물리적으로 볼 때, 장비에 케이블이나 플러그를 연결하는 특별한 외부 단자라고 볼 수 있다. 전기적으로 볼 때에는, 외부 단자를 이루는 몇 개의 전도체는 장치들 사이에 신호 전송을 제공한다. 하드웨어 포트는 물리적으로 암수로 이루어져 있을 수 있다.
데이터 웨어하우스
주제 지향성(subject-orientation)으로 데이터를 주제별로 구성함으로써 최종 사용자(end user)와 전산에 약한 분석자라도 이해하기 쉬운 형태가 되는 것이고 통합성(integration)으로 데이터가 데이터 웨어하우스에 들어갈 때는 일관적인 형태(데이터의 일관된 이름짓기, 일관된 변수 측정, 일관된 코드화 구조 등)로 변환되는 것이다.
아파치 슬링
Sling은 "웹 응용 프로그램" 개발의 웹 측면에 중점을 두고 개발 패러다임을 통해 진정한 웹 응용 프로그램의 직관적인 RESTful 개발을 제시한다는 점에서 다른 많은 웹 응용 프로그램 프레임 워크와 차이가 있다. 다른 프레임 워크는 응용 프로그램 개발에 더 중점을 두고 있으므로 Sling을 이상적으로 확장 할 수 있습니다.
미리 보기
미리 보기(Preview)는 컴퓨터 환경과 무대 예술 환경으로 용도가 나뉜다.
오픈 소스 하드웨어
오픈 소스 하드웨어()는 오픈 소스 문화의 일부로 다음과 같은 것을 가리키는 말이다.오픈 소스 하드웨어는 제작자가 독자적으로 만든 사용권이 적용되는 하드웨어와 이미 있는 오픈 소스 소프트웨어 사용권이 적용되는 하드웨어로 나뉜다.
인터페이스 (컴퓨팅)
하드웨어 인터페이스는 다양한 버스, 기억 장치, 기타 입출력 장치와 같은 구성 요소들 중 다수에 존재한다. 하드웨어 인터페이스는 이들을 나열하기 위해 인터페이스와 프로토콜에 존재하는 기계적, 전기적, 논리적 신호에 의해 기술된다. (가끔 이를 시그널링이라 부른다)
프리웨어
프리웨어에는 퍼블릭 도메인인 소프트웨어나 자유 소프트웨어, 그리고 좀 더 제한이 있는 독점 소프트웨어가 모두 포함될 수 있다. 그러나 일반적으로 프리웨어라고 할 때는 대가 없이 사용할 수 있는 독점 소프트웨어를 가리키는 경우가 많으며, 똑같이 free('무료'와 '자유'의 뜻을 둘 다 가진 낱말)라는 영단어를 사용하는 자유 소프트웨어와는 구분된다.