Browse Definitions by Topic


Bug means an error in the program or in the system, because of which the software application gives unexpected behaviour. Most software errors occur because of mistakes made by the developers in its source code, or in its design.

Some errors occur due to incorrect work of the developer tools, for example, because of the compiler that generates the incorrect code. A program that contains a large number of errors severely limiting its performance is called unstable or, in the slang language, "buggy".

The term "bug" is usually used to indicate errors that manifest themselves at the stage of the software operation, in contrast, for example, from design errors or syntactic errors. The report containing the information about the bug is also called the bug report. The report on the critical error is called the crash report.

Software bugs are localized and eliminated during testing and debugging of the program.

Depending on the stage of software development, on which the bug is detected, there are:

Syntactic errors (recognized by the compiler and making compilation impossible) - for example, the absence or inconsistency of the opening and closing parentheses;

Warnings - for example, using an uninitialized variable. In this case, the compiler may notice that the programmer is doing something unusual (probably wrong), and reports this, but the programmer decides whether to ignore the message or not;

Runtime errors, semantic errors - for example subtracting variables instead of adding or segmentation errors.

Classification by importance:

  • Showstoppers (without correction of which further development is impossible or meaningless);
  • Serious;
  • Minor;

By the time of appearance:

  • Constantly, at each launch;
  • Sometimes ("floating" type);
  • Only on the client's device (depends on the client's local settings);

By place and direction:

  • UI errors;
  • Bug handling systems;
  • Calculation errors;
  • Flow control errors;
  • Errors in the processing or interpretation of data;
  • Increased load;
  • Version and identifier control errors;
  • Testing errors;

Depending on the nature of the error, program and runtime, the bug can occur immediately or vice versa - to remain unnoticed for a long time.

Also, the bug can be manifested in the form of a vulnerability that makes possible unauthorized access to the system. Program testing at each stage is a necessary part of any software development process.

Additional Terms

is the stage of software development, at which programmers detect, localize and eliminate errors.

There are two mutually complementary debugging technologies.

Using debuggers - programs that include a user interface for step-by-step program execution: operator-by-operator, function-by-function, with stops on some lines of source code or when a certain condition is reached.

The output of the current state of the program using statements located at the critical points of the program - on the screen, printer, loudspeaker or in a file. The output of debugging information to a file is called logging.

The place of debugging in the program development cycle

A typical development cycle, over the lifetime of the program, is repetitive and looks like this:

Programming - the introduction of new functionality into the program, correction of existing errors.

Testing (manual or automated, programmer, tester or user, in black box mode or modular) - detecting the fact of error.

Reproduction of the error - finding out the conditions under which the error happens. This may not be an easy task when programming parallel processes, and with some unusual bugs.

Debugging - finding the cause of the error.


The ability of the programmer to debug is probably the most important factor in detecting the source of the problem, but the debugging complexity depends heavily on the programming language and tools used, in particular, the debuggers.

Debugging tools

The debugger is a software tool that allows the programmer to monitor the execution of the program under study, stop and restart it, run at a slow pace, change the values in memory, and even, in some cases, return back in time.

Other useful tools in the hands of programmers may be:

Profilers. They allow one to determine how much time is spent on a piece of code. Analysis of coverage makes it possible to identify non-executable sections of the code.

API loggers allows one to track the interaction of the program and Windows API by writing Windows messages to the log.

Disassemblers - with this you can view the assembler code of the executable file

Sniffers helps to track the traffic generated by the program

The use of high-level programming languages usually simplifies debugging if such languages contain, for example, exception handling facilities that assists in finding the source of the problem. In low-level languages, errors can lead to inconspicuous problems, for example: memory corruption. Then it can be quite difficult to determine what was the original cause of the error. In these cases, complex tricks and means of debugging may be required.

Integrated Development Environment

Integrated development environment (IDE) - a set of software tools used by programmers to develop software, which simplifies the technical process of code creation.

The development environment includes:

  • Text editor,
  • Compiler and/or interpreter,
  • Build automation tools,
  • Debugger.

The IDP is usually the program in which all coding is carried out. It usually contains many functions for creating, modifying, compiling, deploying and debugging software.

Sometimes it also includes tools for integration with version control systems and a variety of features to simplify the dashboard of the programmer. IDEs are usually designed for several programming languages - such as IntelliJ IDEA, NetBeans, Eclipse, Xcode or Microsoft Visual Studio, but there are also IDEs for one particular programming language - for example, Visual Basic, Dev-C ++, Delphi.

Integrated development environments were created in order to maximize the productivity of  developers through tightly coupled components with simple user interfaces. This allows the programmer to do less action to switch to different modes. However, since the IDE is a complex software package, the development environment can qualitatively accelerate the software coding process only after special training.

The goal of the integrated environment is to combine various utilities in one module, allowing the programmer to focus on solving the algorithmic problem and avoiding the loss of time when performing typical technical actions. Thus, the productivity of the developer increases.

Tight integration of development tasks can further improve productivity by introducing additional functions in the intermediate stages of work. For example, the IDE allows  to analyze the code and thereby provide instant feedback and notify about syntax errors.

Most modern IDEs are graphic. But the first IDEs were used even before the operating systems with a graphical interface became widely used - they were based on a textual interface using functional and hot keys for calling various functions.

Work in such environment helps professional programmers to implement coding work more effectively, providing the better program in shorter time.

Attention and expertise in such an environment help professional programmers to implement coding work more effectively, providing the better program code in shorter time.


is a widely used term for a layer or a set of technology software to provide interoperability between different applications, systems, and components.

There are several main types of middleware software:

  • a distributed object system (DOS), or distributed object technology (DOT)
  • database access middleware
  • transaction monitors
  • remote procedure call (RPC)
  • message-oriented middleware (MOM)

Among modern private interpretations, the most commonly used meanings of the term middleware are as follows:

  • A layer for interaction between client software and databases;
  • For the interaction of system and application software;
  • A layer between operating systems and application software,
  • A tool for the interaction of applications with a network, ensuring unification between programs;
  • Software for the synergy of various components of programs and databases.

In the most general case, the term middleware is often used to refer to the infrastructure: web servers, application servers, transaction monitors, service software, and content management systems.

Middleware is the core of modern IT solutions based on XML, SOAP, web services and service-oriented architecture.


The classification includes middleware, which is adjusted for specific apps.

Data Access middleware

Data Access middleware can interact with diverse data sources. In this category middleware are process transactions, database gateways and distributed transaction/procedure systems.

Desktop middleware

Desktop middleware can make variations in the presentation of information requested by the user for tracking and assistance apps, control any delivery service and provide backup and other background operations. Others may be maintenance and graphics, ordering, service directories, management of database information, process management, scheduling of work, service events notification, software installation management, encryption services and access control.

Web-based middleware

This type of middleware assists the user with web browsing, the use of interfaces that allow him to find pages of interest and detect changes of the user interest based on his search history. It provides an identification service for a large number of apps and communication between processes independent of the operating system, network protocol and hardware platform.

Real-time middleware

Real-time middleware is characterized by the fact that the information may be correct in one moment and may not be in another. Real-time middleware supports time-sensitive requests and planning policies. This is done with services that improve the efficiency of user applications.
The information that passes through a middleware in real time has increased dramatically with the introduction of the internet, wireless networks, and new applications based on dissemination.

Additional Terms of Programming
See more words
Command Line Interface

Command line interface (CLI) - a kind of textual interface between a person and a computer, in which computer instructions are given mainly by typing text strings (commands) from the keyboard, on UNIX-systems it is possible to use a mouse. Also known as the console user interface.

The command-line interface, often mentioned as command-line user interface, is contrasted with the menu-based control systems of the program, as well as to various implementations of the graphic user interface (GUI).

The output format of the information in the command-line interface is not regulated; usually, this is a simple text output, but it can also be graphic, audio, etc.


  • Small memory consumption compared to the menu system.
  • In modern software, there is a large number of commands, many of which are extremely rare. Therefore, even in some programs with a graphical interface, the command line is used: the command set (provided that the user knows this command) is much faster than, for example, navigating through the menu.
  • A natural extension of the command line interface is the batch interface. In essence its a sequence of commands written to a file of ordinary text format, after which the file can be executed in the program, which will lead to the same (in most cases) effect, as if these commands were entered one by one on the command line. Examples - .bat-files in DOS and Windows, shell-scripts in Unix-systems.

If the program is fully or almost completely managed by commands from the command line interface, and supports a batch interface, a skilful combination of the command line interface with a graphical interface provides the user with very powerful capabilities.


  • The command-line interface is not user-friendly for those, who have begun familiarizing themselves with the computer with a graphical mode, due to the almost unavailable discoverability.
  • The need to study the syntax of commands and memorize abbreviations is complicated, because each command can have its own designations.
  • Without auto-completion, entering long and special characters from the keyboard can be difficult.
  • No analog input. For example, adjusting the volume with the sounded slider allows you to set the appropriate volume faster than a command like aumix -v 90.


Historically, the main areas of application of the command line interface were on computer terminals  in 1960-1980s, for MS-DOS, Unix operational systems and later on on Apple DOS. Now it’s used for chats, computer games and program testing.


is an application store accessed via iTunes containing various apps for iPhone smartphones, iPod Touch, iPad tablets, and also for Mac personal computers and allowing to buy them or download for free. Similar to Google Play for Android applications.

  • The App Store offers more than 1.5 million apps for iPhone and iPod Touch and about 1 million for the iPad;
  • The number of downloads exceeded 100 billion;
  • The user base is about 575 million.
  • Applications are divided into many categories, including games and social networking apps.

Costs for an App range from $ 0.99 to $ 9.99, and significantly more for professional software. However, most apps are distributed through the App Store for free.

The store is supervised by Apple experts. Each application is equipped with a special electronic certificate. If somebody starts to commit illegal actions with the purchased program, they will remove it from the database, and developers will be "severely reprimanded".

Revenues from sales of apps are distributed as follows - the authors receive 70%, Apple collects 30% of the share in order to maintain the store. Officially, Apple claims that they don’t intend to make money on sales. Developers also have an opportunity to release free apps. It is also interesting that all purchased programs can be registered in iTunes to download all the new updates.

In the iPod Touch, the App Store service works when you connect to the Internet via Wi-Fi. So users can buy and download apps through the wireless network from anywhere. Applications are available either for free or have a certain cost which is charged from the user's account in the iTunes Store.

The App Store will promptly notify the user about the latest updates, which happens regularly. The App Store service is available in iTunes for both Macs and personal computers, wherein apps are synchronized with the iPhone or iPod Touch via a USB interface.

Content Management System (CMS)

Content management system (CMS) - information system or a computer program with simple and convenient user interface, used to provide and organize a joint process of creating, editing and managing content without special programming knowledge.

Main functions

  • Providing tools for creating content, and organizing collaborative work;
  • Content management: storage, version control, compliance with access mode, flow control of documents, etc.;
  • Publishing;
  • The presentation of information in a form convenient for navigation and searching.

The content management system can contain a wide variety of data: documents, films, photographs, phone numbers, scientific data, and so on. Such a system is often used to store, manage, review and publish documentation.

Version control is one of its main advantages when the content is changed by a group of people.


In general, content management systems are divided into:

  • The Enterprise Content Management System (ECMS)
  • Web Content Management System (WCMS)

The term CMS replaced WCMS, becoming a synonym for the website management system.

Such CMS allows you to manage the text and graphic content of a website, providing the user with an interface for working with the content of the site, convenient tools for storing and publishing information, and automating the processes of placing information in databases and issuing it to HTML.

There are many ready-made content management systems, including free ones. They can be divided into three types according to the mode of operation:

  • Generate pages on request. Systems of this type work on the basis of the link "Editing module → Database → Presentation module". The presentation module generates a page with content when it is requested, based on information from the database. The information in the database is modified using the editing module. Pages are newly created by the server at each request, which in turn creates an additional load on the system resources.
  • Generate pages when editing. Systems of this type serve for editing pages that, when making changes to the content of the site, create a set of static pages.
  • The mixed type. As the name implies, it combines the advantages of the previous two. Can be implemented by caching - the presentation module generates the page once, in the future it is loaded several times faster from the cache. The cache can be updated automatically, after a certain time period or when making changes to certain sections of the site, or manually by the administrator's command. Another approach is to save certain information blocks at the stage of editing and build a page from these blocks when the user requests the corresponding page.

Most of the modern CMS are implemented as a visual (WYSIWYG) editor - a program that creates HTML code from a special simplified markup that allows the user to easily format the text.

View all IT-related terms
Results for "DEV"
Logo Magora LTD
Get in touch
Do you agree to the personal data processing?

Logo Magora LTD
Thank you very much.

Your registration to the webinar on the 24th of May at 4 p.m. GMT was successfuly completed.
We will send you a reminder on the day before the event.
Magora team
Registration for a webinar

"GDPR compliance: Workflow Automation"
Date: 24.05.2018 Time: 4 p.m. GMT
Do you agree to the personal data processing?