Page 133 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 133
Unit 6: Functional Design
Abstraction in software analysis, design and development is to reduce the complexity to a Notes
certain level so that the “relevant” aspects of the requirements, design and development may
be easily articulated and understood. This starts with the requirements definition through the
actual code implementation. In the three major activities of requirements definition, of design
definition, and of implementation code definition, there are different degrees of abstraction
based on what is considered relevant and necessary. The general relationships of the individual
world domain, the abstractions of those domain entities. The bold, vertical arrows represent the
intra-transformations occurring within each individual world domain of requirements, design,
and implementation. The horizontal arrows represent the inter-transformations occurring across
those domains. In software engineering, we are concerned with both the horizontal and the
vertical transformations. (See Figure 6.1)
Figure 6.1: Relationships Among Abstraction, Software Artifacts,
and Individual World Domains
Specifications Requirements Design Implementation
of Document Document Code
abstractions
abstractions Requirements Design Implementation
Models of Models of Models of
Abstraction Abstraction Abstraction
Individual world User Design Executing
domains Needs/Wants Solutions Software
System
Abstraction used in the form of a verb, as represented with bold vertical arrows in individual
world domain to abstractions, would include the notion of simplification. Simplification represents
the concept of categorizing and grouping domain entities into components and relating those
components. We simplify by:
(i) Reduction and
(ii) Generalization.
By reduction, we mean the elimination of the details. Generalization, on the other hand, is the
identification and specification of common and important characteristics. Through these two
specific subtasks of reduction and generalization we carry out the task of abstraction. The process
of abstraction, we aim to simplify or decrease the complexity of the domain of software design
solution by reducing the details and by generalization. One may view the well established
concept of modularization in software engineering as a specific technique within the broader
context of abstraction.
The employment of abstraction in software engineering where we aim to reduce complexity
is certainly not just limited to the domain of software design. At the early stage of software
development, the requirements represent the needs and wants of the users and customers. The
user requirement is represented in some form of the user business flow, user functional needs,
user information flow, user information representation, user information interface, etc. Each
of these categories is an abstraction of the user world. Different degrees of abstraction may be
employed Depending on the amount of details that need to be portrayed in the requirements.
This intra-transformation is represented by the vertical arrow from user needs/wants domain
to requirements models of abstraction.
LOVELY PROFESSIONAL UNIVERSITY 127