April 14, 2008   Sign In |  About ebizQ |  Contact Us |  Join ebizQ Gold Club

ITGumbo: spicing IT up

IT Copywrite

Technology and application of technology.

ebizQ presents ITGumbo: a spicy blog network where vendors and IT professionals share ideas about creating Business Agility.

Abstraction in software engineering

"Teaching UML is Teaching Software Engineering is Teaching Abstraction" - (Engles, Hausmann, Lohmann & Sauer).

This statement is argued here. Unified Modeling Language (UML) is a language to package concept elements such as class, package, datatype, operations, etc. into models. UML presents visual illustration of the system artifacts and their relationships. Abstraction is required to identify the system artifacts for modeling; abstraction is required to separate metalanguage core constructs and concerns into layers; abstraction is required to partition conceptual areas within layers. UML is a method to construct system models from the core of Model Driven Architecture. Abstraction is a method that is required to construct elements of the common core. Abstraction is a general idea that is not based on a physical, practical data. In software engineering SDLC processes abstraction is the method that is used to simplify and generalize the processes before concrete models can be built. Abstraction is used to list the findings from the cognitive knowledge both tacit and explicit knowledge. The steps to abstraction can be described as:

  • A given problem is first simplified by considering simple factors of a complex problem.
  • A given problem is generalized by extracting common properties and features from problem statements.

Abstraction is therefore used to filter the irrelevant requirements, simplify complex design and leave unnecessary implementation details to reduce time to market and development cost. A loosely coupled design is not analogous to an abstract design. Abstraction steps of simplification and generalization can be applied to a tightly coupled design to make it modular.

How can one develop abstraction skills and apply abstraction?

Building cognitive knowledge is part of every-day activity. Abstraction can be learned by practice of analysis and application of this cognitive knowledge. Reverse engineering is used to study complex projects in order to build newer projects. The cognitive knowledge gained is used to build abstract models. This is a quick-fix method in order to avoid long brain-storming and study sessions; analytic skills are still required to filter the relevant information. Commenting the code after testing the code can lead to logical & structural changes in the design or code; an abstract algorithm or flow-chart may be used to avoid the re-work, the statements from the abstract design can be inserted for comments. The application of abstraction in the SDLC processes and implementation of SDLC processes in sequence is the best practice for successful project. A simple abstraction method is described as:

The project statement is a well-drafted sentence that has been composed carefully with an important significance of every word in it. To derive an abstract requirements model, reverse the process of sentence composition, identify the grammar terms. Verb - What needs to be done? Noun - the object of reference for abstraction. Qualifiers noun, verb, adverb & adjective - How to do? Apply this method to every new sentence formed until all terms are resolved.

Example:
Sentence - Write a Software Engineering blog.
Verb - write, Noun - Software Engineering, Qualifier - blog.
Abstraction - an instance of a Software Engineering write-up.
Concrete Requirement - an instance of a Software Engineering write-up that must be of type blog.

To conclude: UML is a method that uses abstraction and hence UML practice can strengthen abstraction skills. But UML is not software engineering and cannot replace software engineering course.


References:
Kramer, Jeff. (April 2007) Is abstraction the key to computing. Communications of the ACM. 50(4), 36-42.
Engles, Gregor., Hausmann, Hendrik, Jan., Lohmann, Marc. and Sauer, Stefan. Teaching UML is Teaching Software Engineering is Teaching Abstraction.
Advertisement

0 TrackBacks

Listed below are links to blogs that reference "Abstraction in software engineering".

TrackBack URL for this entry: http://itgumbo.com/microsite/MT/mt-tb.cgi/1449

Leave a comment