Front-end (computing)
   HOME

TheInfoList



OR:

In
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, the terms frontend and backend (or sometimes referred to as back end or back-end) refer to the
separation of concerns In computer science, separation of concerns is a design principle for separating a computer program into distinct sections. Each section addresses a separate '' concern'', a set of information that affects the code of a computer program. A concern ...
between the
presentation layer In the seven-layer OSI model of computer networking, the presentation layer is layer 6 and serves as the data translator for the network. It is sometimes called the syntax layer. Description Within the service layering semantics of the OSI netw ...
(''frontend''), and the
data access layer A data access layer (DAL) in computer software is a layer of a computer program which provides simplified access to data stored in persistent storage of some kind, such as an entity-relational database. This acronym is prevalently used in Microsof ...
(''backend'') of a piece of
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
, or the physical infrastructure or hardware. In the
client–server model The client–server model is a distributed application structure that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate ove ...
, the
client Client(s) or The Client may refer to: * Client (business) * Client (computing), hardware or software that accesses a remote service on another computer * Customer or client, a recipient of goods or services in return for monetary or other valuabl ...
is usually considered the frontend and the
server Server may refer to: Computing *Server (computing), a computer program or a device that provides functionality for other programs or devices, called clients Role * Waiting staff, those who work at a restaurant or a bar attending customers and su ...
is usually considered the backend, even when some presentation work is actually done on the server itself.


Introduction

In
software architecture Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. ...
, there may be many
layers Layer or layered may refer to: Arts, entertainment, and media * ''Layers'' (Kungs album) * ''Layers'' (Les McCann album) * ''Layers'' (Royce da 5'9" album) *"Layers", the title track of Royce da 5'9"'s sixth studio album *Layer, a female Maveric ...
between the hardware and end user. The ''front'' is an abstraction, simplifying the underlying component by providing a
user-friendly Usability can be described as the capacity of a system to provide a condition for its users to perform the tasks safely, effectively, and efficiently while enjoying the experience. In software engineering, usability is the degree to which a soft ...
interface, while the ''back'' usually handles data storage and
business logic In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed. It is contrasted with the remainder of the software that might ...
. In telecommunication, the ''front'' can be considered a device or service, while the ''back'' is the infrastructure that supports provision of service. A rule of thumb is that the client-side (or "frontend") is any component manipulated by the user. The server-side (or "backend") code usually resides on the
server Server may refer to: Computing *Server (computing), a computer program or a device that provides functionality for other programs or devices, called clients Role * Waiting staff, those who work at a restaurant or a bar attending customers and su ...
, often far removed physically from the user.


Software definitions

In content management systems, the terms ''frontend'' and ''backend'' may refer to the end-user facing views of the CMS and the administrative views, respectively. In speech synthesis, the frontend refers to the part of the synthesis system that converts the input text into a symbolic phonetics, phonetic representation, and the backend converts the symbolic phonetic representation into actual sounds. For major computer subsystems, a graphical file manager is a frontend to the computer's file system, and a Shell (computing), shell interfaces with the operating system. The frontend faces the user, and the backend launches the programs of the operating system in response. In compilers, the Compilers#Frontend, frontend Translator (computing), translates a computer programming source code into an intermediate representation, and the backend works with the intermediate representation to produce code in a computer output language. The backend usually Program optimization, optimizes to produce code that runs faster. The front-end/back-end distinction can separate the Parsing, parser section that deals with source code and the backend that Code generation (compiler), generates code and optimizes. Some designs, such as GNU Compiler Collection, GCC, offer choices between multiple frontends (parsing different source Programming language, languages) or backends (generating code for different target Central processing unit, processors). Using the command-line interface (CLI) requires the acquisition of special terminology and memorization of Command (computing), commands, so a graphical user interface (GUI) acts as a frontend desktop environment instead.


Web development as an example

Another way to understand the difference between the two is to understand the knowledge required of a front-end vs. a back-end software developer. The list below focuses on web development as an example.


Both

* Version control tools such as Git, Mercurial, or Apache Subversion, Subversion * File transfer tools and protocols such as FTP or rsync


Front-end focused

* Markup and web languages such as HTML, CSS, JavaScript, and ancillary libraries commonly used in those languages such as Sass (stylesheet language), Sass or jQuery * Asynchronous I/O, Asynchronous request handling and Ajax (programming), AJAX * Single-page applications (with frameworks like React (JavaScript library), React, Angular (web framework), Angular or Vue.js) * Web performance (largest contentful paint, time to interactive, 60 Frame rate, FPS animations and interactions, memory usage, etc.) * Responsive web design * Cross-browser compatibility issues and workarounds * Software testing, End-to-end testing with a headless browser * Build automation to transform and bundle JavaScript files, reduce image sizes and other processes using tools such as Webpack and Gulp.js * Search engine optimization * Web accessibility, Accessibility concerns * Basic usage of image editing tools such as GIMP or Adobe Photoshop, Photoshop * User Interface


Back-end focused

* Scripting languages like PHP, Python (programming language), Python, Ruby (programming language), Ruby, Perl, Node.js, or Compiled languages like C Sharp (programming language), C#, Java (programming language), Java or Go (programming language), Go * Automated Testing Framework, Automated testing frameworks for the language being used * Application Data Access * Application Business Logic * Database administrator, Database administration * Scalability * High availability * Security concerns, authentication and authorization * Software Architecture * Data transformation * Backup methods and software Note that both positions, despite possibly working on one product, have a very distinct set of skills.


API

The frontend communicates with backend through an API. In the case of Web API, web and mobile frontends, the API is often based on HTTP request/response. The API is sometimes designed using the "Backend for Frontend" (BFF) pattern, that serves responses to ease the processing on frontend side.


Hardware definitions

In computer network, network computing, ''frontend'' can refer to any Networking hardware, hardware that optimizes or protects network traffic. It is called Denial of service#Application frontend hardware, application front-end hardware because it is placed on the network's DMZ (computing), outward-facing frontend or boundary. Network traffic passes through the front-end hardware before entering the network. In processor design, ''frontend design'' would be the initial description of the behavior of a circuit in a hardware description language such as Verilog, while ''backend design'' would be the process of mapping that behavior to physical transistors on a Die (integrated circuit), die.


See also


References

{{DEFAULTSORT:Front And Back Ends Software architecture Software engineering terminology