Since the beginnings of software development, companies have tried to refine the process of going from an idea to a design, and eventually to a working implementation that realizes the idea. In the modern area of web application development, most companies use page-based design, but your company could very well benefit from switching to a more component-based design.
Page-based design is the traditional way of building web applications. You look at the application as a group of web pages. Each page has a purpose as well as a finite set of functionality that you must first design and then code and test.
The way this typically works is that designers create page mockups, based on input from either internal users or from customers. The development team afterward breaks down the design into specific programming tasks and assigns these tasks to developers. Finally, a quality assurance (QA) team tests to make sure that the completed pages match the specifications of the mockups. If issues arise in this step, then the code must be refined, and perhaps the design as well.
What makes this approach problematic is that the design team must articulate all possible functionality of the individual page components, which can be time-consuming not just for designers, but for developers and QA analysts, too. It can also lead to a lot of duplicative work when similar components are used across web pages.
In component-based design, your team first creates a core set of components that will be used across both pages and applications. Your designers make mockups of these components, and your developers create code libraries that implement these mockups. Finally, your QA team tests to make sure that the code matches the specs.
Once this is done, designers never again have to describe how common individual components work, nor do developers have to code them, and QA never again has to test them at a core level. Instead, designers can now focus on page functionality, and so can your developers and your QA team. The entire development process has become streamlined and more efficient.
Component-based design can lead to faster development times, and, just as importantly, better software.