A viewshed analysis can be performed using one of many GIS programs, such as GRASS GIS (r.los, r.viewshed), LuciadLightspeed, LuciadMobile, SAGA GIS (Visibility), TNT Mips, ArcMap, Maptitude, ERDAS IMAGINE.
The viewshed analysis can also have a limited viewing angle.