Front-end and back-end are generalized terms that refer to the initial and the end stages of a process. The front-end is responsible for collecting input in various forms from the user and processing it to conform to a specification the back-end can use. The front-end is a kind of interface between the user and the back-end.In software architecture and software design, the front-end is the part of a software system that interacts directly with the user, and the back-end comprises the components that process the output from the front-end. The separation of software systems into "front-ends" and "back-ends" is an abstraction that serves to keep the different parts of the system separated.
Many programs are divided conceptually into front and back-ends, but in most cases, the "back-end" is hidden from the user. However, sometimes programs are written which serve simply as a front-end to another, already existing program, such as a graphical user interface (GUI) which is built on top of a command-line interface. This type of front-end is common in Unix GUIs, where individual programs are developed as many small programs, able to run independently or together. See graphical (desktop environment) and semi-graphical (such as ncurses) front-ends.