Page 12 - DCAP308_OBJECT_ORIENTED_ANALYSIS_AND_DESIGN
P. 12

Object Oriented Analysis and Design




                    Notes          1.2 Object-oriented Development

                                   Object Oriented Development is a new way of thinking about software based on abstractions
                                   that exist in the real world as well as in the program. Object Oriented Development is a method
                                   of design encompassing the process of object-oriented decomposition and a notation for depicting
                                   logical and physical as well as static and dynamic models of the system under design.
                                   In this context development refers to the software life cycle; analysis, design, and implementation.
                                   The essence of OO development is the identification and organization of application concepts,
                                   rather than their final representation in a programming language. It is observed that the hard
                                   part of software development is the manipulation of its essence, owing to the inherent complexity
                                   of the problem, rather than the accidents of its mapping into a particular language.
                                   The traditional view of a computer program is that of a process that has been encoded in a form
                                   that can be executed on a computer. This view originated from the fact that the first computers
                                   were developed mainly to automate a well-defined process (i.e., an algorithm) for numerical
                                   computation, and dates back to the first stored-program computers. Accordingly, the software
                                   creation process was seen as a translation from a description in some ‘natural’ language to a
                                   sequence of operations that could be executed on a computer. As many would argue, this paradigm
                                   is still the best way to introduce the notion of programming to a beginner, but as systems
                                   became more complex, its effectiveness in developing solutions became suspect. This change of
                                   perspective on part of the software developers happened over a period of time and was fuelled
                                   by several factors including the high cost of development and the constant efforts to find uses for
                                   software in new domains. One could safely argue that the software applications developed in
                                   later years had two differentiating characteristics:

                                       Behaviour that was hard to characterize as a process
                                       Requirements of reliability, performance, and cost that the original developers did not face
                                   The ‘process-centred’ approach used to software development is called top-down functional
                                   decomposition. The first step in such a design was to recognise what the process had to deliver
                                   (in terms of input and output of the program), which was followed by decomposition of the
                                   process into functional modules. Structures to store data were defined and the computation was
                                   carried out by invoking the modules, which performed some computation on the stored data
                                   elements. The life of a process-centred design was short because changes to the process
                                   specification (something relatively uncommon with numerical algorithms when compared
                                   with business applications) required a change in the entire program. This in turn resulted in an
                                   inability to reuse existing code without considerable overhead. As a result, software designers
                                   began to scrutinise their own approaches and also study design processes and principles that
                                   were being employed by engineers in other disciplines. Cross-pollination of ideas from other
                                   engineering disciplines started soon after, and the disciplines of ‘software design’ and ‘software
                                   engineering’ came into existence.

                                   In this connection, it is interesting to note the process used for designing simple electromechanical
                                   systems. For several decades now, it has been fairly easy for people with limited knowledge of
                                   engineering principles to design and put together simple systems in their backyards and garages.
                                   So much so, it has become a hobby that even a ten-year old could pursue. The reasons for this
                                   success are easy to see:
                                       easily understandable designs
                                       similar (standard) solutions for a host of problems
                                       an easily accessible and well-defined ‘library’ of ‘building-blocks’

                                       interchangeability of components across systems, etc.



          6                                 LOVELY PROFESSIONAL UNIVERSITY
   7   8   9   10   11   12   13   14   15   16   17