What is abstraction? How it is used in designing software products? Let us learn about usefulness of abstraction in this post.
In popular parlance, abstraction is thought as filtering out unwanted information or substance and keeping only the information or substance which is needed. For example, in chemical industry we remove impurities from a substance to make the substance pure.
When we need to build a software product, we need to ensure that the software product can be used for many purposes. This way, it can be ensured that a large number of people can use the software product. For example, even though a word processing software program does word processing but different people need different kinds of word processing. Some people need to create tables to categorized their data in their word processing work. Some other set of people need to embed images in their word processing to emphasize their text. Some other set of people need to provide classification of their text using numbered or bulletted information. The point here is that there are many types of need in word processing.
A software vendor who wants to create a word processing software product must need to provide facilities in the software product so that all kinds of word processing needs of users can be met. At the same time, all these facilities should be provided in such a manner that the user can use them without much problem. So it is important that the user interface is well organized and all these facilities can be used easily by the user.
One way to provide a good interface is to provide similar facilities together in one place. For example numbering text or bulletting text are similar in nature. So they should be provided in one place – near to each other. This can be done by providing commands (tool icons or menus in graphical user interfaces) next to each other for these similar facilities. You can have a main menu to format text and then there could be sub-menus inside this main menu to do these similar tasks.
When software designers design the software product; they keep in mind that similar software product features can be created from the same base piece of software product. So they first build an abstract software component and later implement it in different ways to create software products which do similar but different tasks.
The method to find out similar product features is known as abstraction. Abstraction is important because it results in code reuse. The same base software component can be used to create many types of similar but different product features. Code reuse results not only in more productivity for software developers but it also helps in creating better software products with less number of software defects. Such software products are also easier to maintain.