You are on page 1of 23

Object Oriented Analysis

& Design
CHAPTER 1
Book
Applying UML and Patterns by Craig Larman
Grading Criteria
Assignment – 15 Marks
Quizzes- 10 Marks
Presentation- 05
Mid Term- 30 Marks
Final Exam-40 Marks
Course Overview
OOAD
Software Life cycles
Agile software development process
Requirements and use cases
Software quality and quality assurance
Risk management
UML modelling
patterns
Software process improvement
Its about thinking in terms of objects
Analyzing the problem in terms of objects i.e. object oriented analysis
Designing the problem with objects as units i.e. object oriented design
Use of tools and technologies that support OOAD
Lecture Overview
Introduction to:

 What is software design

 Object oriented analysis

 Object oriented design

 UML

 Software development process


What is Software Design
Software design is the process of turning the wishes and requirements of a customer into
working code that is stable and maintainable in the long run, and can be evolved and can
become part of a larger system

What is Software Architecture ?


Architecture is the study of boxes and lines
The relationship between the requirements of the user and the ability to build a system that
will deliver those requirements.

What is suboptimal solutions?


Software Architecture & Design
SOFTWARE ARCHITECTURE SOFTWARE DESIGN
Trade off
One of the key challenges in software architecture is the tendency to have to trade off
between speed and quality,
If I boil it down, right?
I think there's a tendency for the customer in the business to want their, their software, to
want their results as soon as possible.
And there's a tendency for the engineering team to want to build, the most robust,
thoroughly designed, thoroughly implemented system possible
Biggest issue
So our biggest issue that we face is understanding the client's problem.
What is it they really want to do? And in many cases the client actually doesn't know
what they want to do either. They come in with only a partial understanding, a vague kind
of sense that they could be doing things better.
But often, one of our first task is to actually help them understand, with more precision,
what their business is.
Software architect's job
A software architect's job is to be the interface between the product and the customer
and the engineering teams
Introduction to OOAD
The proverb “owning a hammer doesn’t make one an architect” is especially true with respect
to object technology.
Knowing an object language is necessary but insufficient to create object systems Its about
analysing system requirements in terms of objects and allocating responsibilities to class
objects.
How would these objects collaborate with each other.
OOA
It emphasizes on finding requirements and problems rather than solutions.
Object oriented analysis is a process of analyzing requirements in an object oriented paradigm.
It approves some of the requirements while discards others.
The requirements are represented in the form of Use cases and personas to make more sense
based on this OOA the OOD is built.
Use Case
Use case consists of a paragraph or so text that presents a scenario of a single system
requirement.
It is written in simple English that would help realize the importance of the requirement and its
contribution to the over all system.
There can be many use cases for a system representing its various requirements.
It is not an OO activity but it helps in the development of OOD.
Use Case
Example
 Use Case “Login to System”
 When the User tries to access the system, the systems asks for a username and password. On
provision of the correct username and password , the user is allowed to enter the
system.
OOD
It emphasizes on the conceptual solution in software or hardware that fulfils the requirements.
It does not give any implementation details
Design ideas normally exclude low level details that are obvious to the intended customers .
Ultimately designs can be implemented in code to give its true and complete realization
OOA vs OOD
In OOA there is an emphasis on finding and describing objects or concepts in the problem
domain
For example, in flight information system some of the objects are flights, planes and pilot
During OOD there is emphasis on defining software objects and how they collaborate with each
other to fulfill requirements
For example, a flight object may have attributes like flight duration, departure time, arrival
time, source, destination etc.
UML
UML is a standard diagramming notation
UML is not OOAD or a method it is just a diagramming notation
It is useless to learn UML but not really know how to create an excellent OO design or evaluate
and improve an existing one
To know how to design is a separate skill
UML Diagrams
Use case diagram
Activity diagram
Sequence diagram
Partial domain model
Domain model
Class diagram
Collaboration diagram
UML Perspective
Conceptual perspective
◦The diagrams are interpreted as describing things in a situation of the real world or domain of
interest
Specification perspective
◦The diagrams (using same notations) describe software abstraction or components with
specifications and interfaces but no commitment to a particular implementation
Implementation perspective
◦Software implementation in a particular technology
Development Process
Given the requirements and possible activities that are to be implemented the question is how
to proceed
In this case, an agile (light, flexible) approach is used as sample of iterative development
process
Agile development process is relatively new approach and is very successful
Assigning responsibilities to objects
It is the most critical activity
This activity has to be performed either while drawing UML diagrams or programming
It strongly influences the robustness, maintainability and reusability of the software
components
Iterative Development Process
Iterative development process is an agile development process
During this process development is organized into a series of short, fixed-length mini-projects
called iterations
The outcome of each iteration is tested, integrated as executable partial system
Each iteration includes its own requirements analysis, design, implementation and testing
activities
It is also called iterative and incremental development
Also called iterative and evolutionary development (feedback and adaptation)

You might also like