Page 134 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 134

Principles of Software Engineering



                   Notes         As we move from requirements towards the development of the solution for the user
                                 requirements, a new form of abstraction takes place. The new form of abstraction is necessitated
                                 due  to the fact that the solution  world  includes  the computing machines  and  other logical
                                 constructs that may not exist in the original user requirements. One of the first artifacts from the
                                 solution side is the software architecture and high level design of the software system. At this
                                 point, the abstraction, once again, should not include all the details. The inter-transformation
                                 of the requirements models of abstraction to the design models of abstraction is shown as the
                                 horizontal arrow. Note that the box labelled “Design Models of Abstraction” is the result of
                                 two types of transformations:
                                    1.  Inter-transformation from the requirements domain and
                                    2.  Intra-transformation within the design solution domain.
                                 The “Implementation Models of Abstraction” box is represents the packaging/loading models of
                                 the processes, information and control of the mechanical execution of the solution in the form of
                                 source code to satisfy the functionalities and the system attributes described in the requirements
                                 and design documents. Thus it is a result of the inter-transformations from requirements models
                                 of abstraction through the design models of abstractions and the intra-transformations from the
                                 actual software execution domain.
                                 The “Implementation Code” box is the specification of this abstraction. The actual execution of
                                 the Implementation Code and the interactions with the users formulate the final deployment of
                                 the source code abstraction or the “Executing Software System” box. Thus the employment of
                                 various abstractions and the transformations of these abstract entities are crucial, integral parts
                                 of software engineering.
                                    •  Abstraction is a tool that permits a designer to consider a component at an abstract level
                                      without worrying about the details of the implementation of the component.
                                    •  An abstraction of a component describes the external behaviour of that component without
                                      bothering with the internal details that produce the behaviour.
                                    •  Abstraction is an indispensable part of the design process and is essential for problem
                                      partitioning.
                                 There are two common abstraction mechanisms for software systems:
                                 Functional Abstraction: A module is specified by the function it performs.
                                 For  example,  a  module  to  compute  the  log  of  a  value  can  be  abstractly  represented  by  the
                                 function log. Similarly, a module to sort an input array can be represented by the specification
                                 of sorting. Functional abstraction is the basis of partitioning in function-oriented approaches.
                                 The decomposition of the system is in terms of functional modules.
                                 Data Abstraction:  Any  entity in  the real  world  provides  some  services  to the environment
                                 to which it belongs. Data is not treated simply as objects, but is treated as objects with some
                                 predefined operations on them. The operations defined on a data object are the only operations
                                 that can be performed on those objects.

                                 6.4 Modularity

                                 The genuine power of partitioning comes if a system is partitioned into modules so that the
                                 modules are solvable and adjustable unconnectedly. It will be even better if the modules are also
                                 separately compliable (then changes in a module will not require recompilation of the whole
                                 system). A system is considered modular if it consists of circumspect components so that each
                                 component can be implemented separately, and a change to one component has minimal impact
                                 on other components. Modularity is a clearly a desirable property in a system. Modularity helps
                                 in system debugging—isolating the system problem to a component is easier if the system is
                                 modular; in system repair—changing a part of the system is easy as it affects few other parts;
                                 and in system building–a modular system can be easily built by “putting its modules together.”


        128                               LOVELY PROFESSIONAL UNIVERSITY
   129   130   131   132   133   134   135   136   137   138   139