Page 128 - DCAP308_OBJECT_ORIENTED_ANALYSIS_AND_DESIGN
P. 128

Object Oriented Analysis and Design




                    Notes          flawed. One myth about UML and OOAD is that you need a complete design in order to write
                                   code. But that is not right.

                                       !

                                     Caution You just need enough of the design to get you started.



                                     Did u know? Designing and implementing software one usage scenario at a time, so that
                                     users can provide feedback on the end product, is a smart way of fleshing out a better
                                     design.

                                   10.2.1 Issues in Complexity Modelling and Abstraction

                                   Divide and Rule has been a fruitful technique of mastering complexity since ancient time. When
                                   designing complex software system it is essential to decompose it into smaller and smaller parts
                                   each of which we may then redefine independently. Object technologies leads to reuse and reuse
                                   leads to faster software development and higher quality software products.
                                   As Brooks suggests, “The complexity of software is an essential property, not an accidental one”.
                                   We observe that this inherent complexity derives from four elements: the complexity of the
                                   problem domain, the difficulty of managing the development process, the flexibility possible
                                   through software, and the problems of characterizing the behavior of discrete systems.
                                   The problems we try to solve in software often involve elements of inescapable complexity, in
                                   which we find a myriad of competing, perhaps even contradictory, requirements. The external
                                   complexity usually springs from the “communication gap” that exists between the users of a
                                   system and its developers: Users generally find it very hard to give precise expression to their
                                   needs in a form that developers can understand. In some cases, users may have only vague ideas
                                   of what they want in a software system. This is not so much the fault of either the users or the
                                   developers of a system; rather, it occurs because each group generally lacks expertise in the
                                   domain of the other.

                                   A further complication is that the requirements of a software system often change during its
                                   development, largely because after seeing early products, such as design documents and
                                   prototypes, and then using a system once it is installed and operational are forcing functions
                                   that lead users to better understand and articulate their real needs. At the same time, this process
                                   helps developers master the problem domain, enabling them to ask better questions that
                                   illuminate the dark corners of a system’s desired behavior.
                                   The fundamental task of the software development team is to shield users from this vast and
                                   often arbitrary external complexity. Software offers the ultimate flexibility, so it is possible for
                                   a developer to express almost any kind of abstraction. Engineers try to design the systems with
                                   a separation of concerns, so that the behavior in one part of a system has minimal impact on the
                                   behavior in another.

                                   Generally, complexity takes the form of a hierarchy, whereby a complex system is composed of
                                   interrelated subsystems that have in turn their own subsystems, and so on, until some lowest
                                   level of elementary components is reached. It is important to realize that the architecture of a
                                   complex system is a function of its components as well as the hierarchic relationships among
                                   these components.
                                   Complex systems have common patterns. These patterns may involve the reuse of small
                                   components of larger structures






          122                               LOVELY PROFESSIONAL UNIVERSITY
   123   124   125   126   127   128   129   130   131   132   133