Skip to content
Skip to main content

About this free course

Download this course

Share this free course

Approaches to software development
Approaches to software development

Start this free course now. Just create an account and sign in. Enrol and complete the course for a free statement of participation or digital badge if available.


Abstraction is a particular way of viewing a complex problem to arrive at some useful decomposition of that problem. The idea is to group together similar objects or situations and, while ignoring their differences, focus on one particular and common aspect of the problem that all these objects/situations possess and/or reflect. The key task in developing a software system is to decide upon the most suitable abstractions in the problem domain.

We can say that we have achieved a useful abstraction in a particular module if the potential software clients of that module do not need to know more than is contained in its interface. For example, a dedicated module to deal with date handling is a useful abstraction. The fact that it may be complex to implement is immaterial to clients that use the services defined in its interface.