Object Oriented Analysis and Design (OOAD)
Object-oriented
analysis and design (OOAD) is a popular technical approach to analyzing,
designing an application, system, or business by applying the object-oriented
paradigm and visual modeling throughout the development life cycles to foster
better stakeholder communication and product quality.
According
to the popular guide Unified Process, OOAD in modern software engineering is
best conducted in an iterative and incremental way. Iteration by iteration, the
outputs of OOAD activities, analysis models for OOA and design models for OOD
respectively, will be refined and evolve continuously driven by key factors
like risks and business value
The
software life cycle is typically divided up into stages going from abstract
descriptions of the problem to designs then to code and testing and finally to
deployment. The earliest stages of this process are analysis and design. The
analysis phase is also often called "requirements acquisition".
1 The Waterfall Model
OOAD is
conducted in an iterative and incremental manner, as formulated by the Unified
Process.
In some
approaches to software development known collectively as waterfall models the
boundaries between each stage are meant to be fairly rigid and sequential. The
term "waterfall" was coined for such methodologies to signify that
progress went sequentially in one direction only, i.e., once analysis was
complete then and only then was design begun and it was rare (and considered a
source of error) when a design issue required a change in the analysis model or
when a coding issue required a change in design.
The
alternative to waterfall models is iterative models. This distinction was
popularized by Barry Boehm in a very influential paper on his Spiral Model for
iterative software development. With iterative models it is possible to do work
in various stages of the model in parallel. So for example it is possible and
not seen as a source of error to work on analysis, design, and even code all on
the same day and to have issues from one stage impact issues from another. The
emphasis on iterative models is that software development is a
knowledge-intensive process and that things like analysis can't really be
completely understood without understanding design issues, that coding issues
can affect design, that testing can yield information about how the code or
even the design should be modified, etc.
Although
it is possible to do object-oriented development using a waterfall model in
practice most object-oriented systems are developed with an iterative approach.
As a result in object-oriented processes "analysis and design" are
often considered at the same time.
The
object-oriented paradigm emphasizes modularity and re-usability. The goal of an
object-oriented approach is to satisfy the "open closed principle". A
module is open if it supports extension. If the module provides standardized
ways to add new behaviors or describe new states. In the object-oriented
paradigm this is often accomplished by creating a new subclass of an existing
class. A module is closed if it has a well defined stable interface that all
other modules must use and that limits the interaction and potential errors
that can be introduced into one module by changes in another. In the
object-oriented paradigm this is accomplished by defining methods that invoke
services on objects. Methods can be either public or private, i.e., certain
behaviors that are unique to the object are not exposed to other objects. This
reduces a source of many common errors in computer programming.
The
software life cycle is typically divided up into stages going from abstract
descriptions of the problem to designs then to code and testing and finally to
deployment. The earliest stages of this process are analysis and design. The
distinction between analysis and design is often described as "what vs.
how". In analysis developer‘s work with users and domain experts to define
what the system is supposed to do. Implementation details are supposed to be
mostly or totally (depending on the particular method) ignored at this phase.
The goal of the analysis phase is to create a functional model of the system
regardless of constraints such as appropriate technology. In object-oriented
analysis this is typically done via use cases and abstract definitions of the
most important objects. The subsequent design phase refines the analysis model
and makes the needed technology and other implementation choices. In
object-oriented design the emphasis is on describing the various objects, their
data, behavior, and interactions. The design model should have all the details
required so that programmers can implement the design in code.
2 Object-oriented analysis
The
purpose of any analysis activity in the software life-cycle is to create a
model of the system's functional requirements that is independent of
implementation constraints.
The main
difference between object-oriented analysis and other forms of analysis is that
by the object-oriented approach we organize requirements around objects, which
integrate both behaviors (processes) and states (data) modeled after real world
objects that the system interacts with. In other or traditional analysis
methodologies, the two aspects: processes and data are considered separately.
For example, data may be modeled by ER diagrams, and behaviors by flow charts
or structure charts.
The
primary tasks in object-oriented analysis (OOA) are:
Find the objects
Organize the objects
Describe how the objects interact
Define the behavior of the objects
Define the internals of the objects
Common
models used in OOA are use cases and object models. Use cases describe
scenarios for standard domain functions that the system must accomplish. Object
models describe the names, class relations (e.g. Circle is a subclass of
Shape), operations, and properties of the main objects. User-interface mockups
or prototypes can also be created to help understanding.
3 Object-oriented design
During
object-oriented design (OOD), a developer applies implementation constraints to
the conceptual model produced in object-oriented analysis. Such constraints
could include the hardware and software platforms, the performance
requirements, persistent storage and transaction, usability of the system, and
limitations imposed by budgets and time. Concepts in the analysis model which
is technology independent are mapped onto implementing classes and interfaces
resulting in a model of the solution domain, i.e., a detailed description of
how the system is to be built on concrete technologies.
Important
topics during OOD also include the design of software architectures by applying
architectural patterns and design patterns with object-oriented design
principles.
4 Object-oriented modeling
Object-oriented
modeling (OOM) is a common approach to modeling applications, systems, and
business domains by using the object-oriented paradigm throughout the entire
development life cycles. OOM is a main technique heavily used by both OOA and
OOD activities in modern software engineering.
Object-oriented
modeling typically divides into two aspects of work: the modeling of dynamic
behaviors like business processes and use cases, and the modeling of static
structures like classes and components. OOA and OOD are the two distinct
abstract levels (i.e. the analysis level and the design level) during OOM. The
Unified Modeling Language (UML) and Sys ML are the two popular international
standard languages used for object-oriented modeling.
The benefits
of OOM are:
Efficient and effective communication
Users
typically have difficulties in understanding comprehensive documents and
programming language codes well. Visual model diagrams can be more
understandable and can allow users and stakeholders to give developers feedback
on the appropriate requirements and structure of the system. A key goal of the
object-oriented approach is to decrease the "semantic gap" between
the system and the real world, and to have the system be constructed using terminology
that is almost the same as the stakeholders use in everyday business.
Object-oriented modeling is an essential tool to facilitate this.
Useful and stable abstraction
Modeling
helps coding. A goal of most modern software methodologies is to first address
"what" questions and then address "how" questions, i.e.
first determine the functionality the system is to provide without
consideration of implementation constraints, and then consider how to make
specific solutions to these abstract requirements, and refine them into
detailed designs and codes by constraints such as technology and budget.
Object-oriented modeling enables this by producing abstract and accessible
descriptions of both system requirements and designs, i.e. models that define
their essential structures and behaviors like processes and objects, which are
important and valuable development assets with higher abstraction levels above
concrete and complex source code.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.