Scrum is a repetitive framework for software and product development. It can be compared to a game - company is a team owner, employees are team players and the game itself is desired product waiting to be enhanced. When the game is on we can clearly see what is wrong and what is acceptable. Scrum methodology is a way to spot deficiency and improve. Scrum methodology shows how to play the game and sets some ground rules. Scrum helps to coordinate massive production process - especially when company has many "teams" and control is essential.
During the Scrum process faults are uncovered but the process itself is time-consuming. First step is to divide work force into small teams and make them learn how to cope with each other. Second step is to improve skills of the "players". First part takes about a year to conduct, second part - little bit longer, about three to five years. Then Scrum methodology shows results, which is exposing flaws in development, correcting them and process again and again until the product is flawless.
Scrum methodology considers inevitably that certain obstacles are on the way to perfection during production process. These random obstacles cause long-term plans useless, so Scrum proposes to induce cycle-like project, introducing Sprints, to overcome any difficulties in the race towards the final goal.
Having such problems as too high costs of production, non-functionality, customers leaving your company to other vendor leads to certain point where you might consider using Scrum to improve those aspects. Scrum also provides serious amount of help in building projects.