Modern Developer’s Design Patterns Series
What is an Abstraction?
A definition of “Abstraction” in a dictionary is:
The process of formulating Generalized Ideas or
Concepts by Extracting
Common Qualities from Specific Examples
A definition of “Abstraction” put in the Computer Science paradigm is:
An Abstraction is the process by which
Data and Programs are defined with a Representation
similar in form to its meaning, its semantics,
while Hiding the Implementation Details
The Key Concepts from the Two Definitions:
Abstractions are Conceptual Representations of something Real, a Concrete thing
Abstractions represent Data, a State Class Object, or a Program, a Behavior Class Object
Both Data and Programs concretes are Things, nouns
Abstractions support the Object Oriented Programming Pillar: Encapsulation through Data Hiding
Abstractions allow developers to design and develop to Common Conceptual Representations of Concrete Implementations without have to understand the Details of the Concrete Implementation
Abstractions are Software Solutions that
…. Loosely Couple Modules
…… From the Dependencies it Requires
Designing to Abstractions supports a lower Total Cost of Ownership (TCO) of a deployed solution by creating an environment friendly to Business Change Requests over the Software Development Life Cycle (SDLC).
Designing to the “What” of a Requirement
Understanding “What” you want to accomplish before you decide “How” to do something seems logical.
Too often the pressures of Management to “Just Get Coding” preëmpt logic.
Many managers and above have the mistaken belief that they are only getting their moneys worth from developers if they are writing code.
This Ready, Fire, Aim Directive is Illogical
… But Often Reality in Most Projects
There has very rarely, if ever, been a building in the United States built without a detailed set of plans that define the “What” long before a single construction task is performed.
Somehow Software Projects missed that “Memo” as more that 80% of all Business Driven Technology Solutions are started with little or no planning documentation.
Many Businesses try to get a Dollars Worth of Work
… For Sixty Cents
…… And Ultimately Pay Five Dollars for their Efforts
Good Design and Planning upfront
using the Concepts of Abstractions
will cost the Client less Money and Time to Develop
and Far Less Time and Money to Maintain in the Future
Abstractions At Work
Code Examples of Designing to Abstractions
+Our Deep Dive Abstraction: Automobiles
The Automobile Showcase Application coming soon!
Wisdom Pearl # 113 – Understanding Success
Have a Crystal Clear Understanding of Your Destination
… Or You Might Drive Right By It
The following two tabs change content below.
I am a Principal Architect at Liquid Hub in the Philadelphia area specializing in Agile Practices as a Certified Scrum Master (CSM). I use Test Driven Development (TDD) and Acceptance Test Driven Development (ATDD) with Behavior Driven Development (BDD) as my bridge to Agile User Stories Acceptance Criteria in a Domain Driven Design (DDD) implementing true RESTful services