The design of a software application is a blueprint of the system (Jalote, 1997)
Historically, the original concern while building a software product was mostly related to programming issues alone. As time passed and applications became more and more sophisticated, the concern increasingly started to shift toward the design issues (Graham & Wills, 2007). In general, designing an application begins when some set of requirements are available. The resulting design would be a solution that satisfies those requirements. Yet, the requirements might change whilst developing the solution, so it is important to be able to integrate any changes dynamically throughout the design cycle (C. Martin, 2002). To design the application, the designer usually, follows some design methodologies and uses some design and building tools.