In software engineering there are two main concepts in design phase which are abstraction
and decomposition
but I can't get the differences between them?
Both concepts are analysis & design basic techniques. There are interrelated and normally used together during software development. We use them even though we are not always aware of it. Deeper understanding of these concepts helps to be more accurate and effective in A&D.
Abstraction in general is process of consciously ignoring some aspects of a subject under analysis in order to better understand other aspects of it. In other words, it kind of simplification of a subject. In software in particular, analysis & design are all about abstraction.
Decomposition is an application of the old good principle "divide and conquer" to software development. It is a technique of classifying, structuring and grouping complex elements in order to end up with more atomic ones, organized in certain fashion and easier to manage. In all phases there are lots of examples:
Abstraction is somehow more generic principle than decomposition, kind of "father of all principles" :)
Abstraction is one of the fundamental principles of object oriented programming. Abstraction allows us to name objects that are not directly instantiated but serve as a basis for creating objects with some common attributes or properties. For example: in the context of computer accessories Data Storage Device is an abstract term because it can either be a USB pen drive, hard disk, or RAM. But a USB pen drive or hard disks are concrete objects because their attributes and behaviors are easily identifiable, which is not the case for Data Storage Device, being an abstract object for computer accessories. So, abstraction is used to generalize objects into one category in the design phase. For example in a travel management system you can use Vehicle as an abstract object or entity that generalizes how you travel from one place to another .
Decomposition is a way to break down your systems into modules in such a way that each module provides different functionality, but may affect other modules also. To understand decomposition quite clearly, you should first understand the concepts of association, composition, and aggregation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With