In soft­ware engi­neer­ing, a bug is an error in a soft­ware appli­ca­tion. It may cause the appli­ca­tion to behave in an unin­tended man­ner or quit unex­pect­edly. Most often bugs are caused by syn­tax or logic errors within the source code of the appli­ca­tion.

They may be intro­duced by mis­take at any stage of the soft­ware devel­op­ment process, or caused by over­sights and mis­un­der­stand­ings dur­ing spec­i­fi­ca­tion, design, cod­ing, data entry or doc­u­men­ta­tion.

Because bugs neg­a­tively affect the usabil­ity of an appli­ca­tion and some­times may even have the poten­tial to cause seri­ous dam­ages to its users, test­ing and qual­ity assur­ance is an impor­tant part of the soft­ware devel­op­ment process. The scrutiny of test­ing and qual­ity assur­ance may vary for dif­fer­ent soft­ware appli­ca­tion types. But it usu­ally com­prises auto­mated and man­ual tests as source code analy­sis, unit test­ing, bench­mark and bound­ary test­ing, func­tional test­ing, end-to-end test­ing, regres­sion test­ing and mon­i­tor­ing the appli­ca­tion while it is run­ning.

An addi­tional way of ensur­ing qual­ity and iden­ti­fy­ing bugs in soft­ware appli­ca­tions is to releas­ing early ver­sions of the soft­ware to a selected group of users as alpha and beta ver­sions or release can­di­dates. These users test all parts of the pro­gram within real-life con­di­tions to ensure it works accu­rately.

Bugs are com­monly tracked and man­aged using issue track­ing sys­tems. They allow for proper doc­u­men­ta­tion, cat­e­go­riza­tion, and to mon­i­tor the progress made to cor­rect­ing ("fix­ing") the faulty code. The issue track­ing sys­tem of SHORELESS is called SHORELESS TIM and is acces­si­ble at https://tim.shore­less.lim­ited.

Unfor­tu­nately, even after soft­ware has been tested thor­oughly, some bugs may have not been iden­ti­fied when the soft­ware is released to its users, or they were iden­ti­fied, but for any rea­son not yet cor­rected before release ("known bugs"). Such bugs might be fixed with patches, main­te­nance releases, hot­fixes or a later major release.