OBJECT ORIENTED ANALYSIS &DESIGN
CS-812
MSIT-2K20
DR. RAFIA MUMTAZ
ABOUT ME
Collaborations
Dr. Rafia Mumtaz ▪ University of Leeds, UK
PhD – University of Surrey, UK, 2010 ▪ University of West of Scotland, UK
Postdoc – University of Surrey, UK, 2011 ▪ University of NorthUmbria, Newcastle, UK
Head of Information Technology, NUST-SEECS ▪ Queen Mary University of London, UK
Director Internet of Things Lab, NUST-SEECS ▪ University of Malaga, Spain
▪ University of Politecnico Di torino, Italy
▪ National Agriculture Research Council, Pakistan
Research Areas
Total Research Grants
• Remote Sensing & GIS
• Internet of Things ▪ 34.38 Million Rs. (HEC, DAAD, GCRF, ERASMUS+)
• Machine Learning & Data Analytic
Student Supervision
Publications PhD: 3 ongoing, MS: 5(5 ongoing) UG: 11(21 on
going)
• IF Journals: 15 | Book Chapters: 3
• N-IF Journals: 3 | Patents 1 (7 Filed)
Research Award
• Conference : 15 NUST-SEECS Best Researcher Award 2018
ABOUT THECOURSE
CS‐ 812 Object Oriented Analysis & Design
KG = Software Engineering
Core course / Mandatory
3 credit hours (No labs)
Timings:
3 lectures in a week
Monday 5:00 PM – 5:50 PM
Thursday 5:00 PM – 6:50 PM
Consulting Hours:Tuesday 5:00 PM – 6:00 PM
Venue:
Class Room # 5
ABOUT THE COURSE
Thiscoursewillbe divided into threeparts:
In the first part, students will be provided with the concepts and practices of object oriented
programming paradigm
Students will be given a tour on UML modeling including: the creation of object models, UML
notation and the application of UML in OOAD process.
In the second part, students will learn software design processes and principals, and will be
able to appreciate the importance of design patterns inSDLC
In the third part, students know OO ‐ development lifecycle. They will also learn modern
methods of software engineering and design patterns for implementing a real world project.
The course will also discuss ArchitecturalPatternand some advanced topics
COURSE OBJECTIVES
Familiarize with concepts and methods of software analysis and design
Learn the use of design principles
Learn how to perform OO analysis and OO design
Learn Design patterns and apply them to a given problem
Learn Architectural patterns and apply them to a given problem
5
LEARNING RESOURCES
Reading Material
Text Book: 1. The Object-Oriented Thought Process, Matt Weisfeld 5th Edition, Addison Wesley, 2019
2. Design Patterns: Elements of Reusable Object-Oriented Software by Ralph Johnson, John Vlissides,
Richard Helm, and Erich Gamma (GoF), 1994
3. Software Design: From Programming to Architecture by Eric J. Braude, 2003
Reference 1. Software Engineering: A Practitioner's Approach by R.S. Pressman, 8th ed., McGraw-Hill Book Co.,
Books: NY, 2014,
2. Software Engineering, by Ian Sommerville 10th ed. Addison-Wesley, 2016
3. Object-Oriented Software Engineering: Practical Software Development using UML and Java by
Timothy C. Lethbridge and Robert Laganière, 2004.
Lecture Notes / Slides
Others
Handouts
ASSESSMENT
Assignments 10%
Choose a real worldsystem
Perform OOAD
Deliver as Projectreport
Project 10%
Make groups(2‐3)
Application development using OOAD
C++/C#, Visual Studio .Net platform(preferred)
Presentation/demonstration at the end of thecourse
Midterm Exam 30%
ESE 50%
WEEK 1
Course overview, Introduction to Object oriented thinking and design
Elements of Object Oriented Design / Object Oriented Programming
Software Design Paradigm
LEARNING OBJECTIVES
In this lecture you will learn
To compare and contrast analysis and design
To define object-oriented analysis and design (OOA/D)
Three important things to develop a good sense of OO thought process
Characteristics of OO paradigm
OBJECT‐ORIENTEDTHINKING
Object‐oriented thinking involves:
examining the problems or concepts at hand
breaking them down into parts, and
representing key concepts through objects in your software
By using objects to represent things in your code, the code stays
organized, flexible, and reusable
OBJECT‐ORIENTEDTHINKING
Organized
• Objects keep code organized by putting related details and specific functions
in distinct, easy‐to‐find places
Flexible
• Objects keep code flexible, so details can be easily changed in a modular way
within the object, without affecting the rest of the code
Reusable
• Objects allow code to be reused, as they reduce the amount ofcode that needs
to be created, and keeps programs simple
OBJECT‐ORIENTEDTHINKING
It is good practice to prepare for object‐oriented design by
accustoming yourself to thinking about the world around you in terms
of objects, and the attributes those objects might have
What objects are around you? What kinds of details and behaviors they
have?
OBJECT‐ORIENTEDTHINKING
Objects are self‐aware in software production,e.g.,
a mobile phone “knows” itsspecifications
Similarly, an object such as a chair would know its dimensions and
location.
OBJECT‐ORIENTEDTHINKING
Three important things you can do to develop a good sense of the OO
thought process:
Knowing the difference between the interface and implementation
Thinking more abstractly
Giving the user the minimal interface possible
OBJECT‐ORIENTEDTHINKING
Interface vs. Implementation
Building a strong OO design is to understand the difference
between the interface and the implementation
When designing a class,know:
what the user needs to know?
what the user does not need to know?
OBJECT‐ORIENTEDTHINKING
Interface vs. Implementation
E.g., the interface between a driver and the car includes: steering wheel, gas pedal,
brake, and ignition switch; however all the implementations are hidden from thedriver
Change in implementation
OBJECT‐ORIENTEDTHINKING
Interface vs. Implementation
Properly constructed classes are designed in two
parts—the interface and the implementation.
Most important is to identify the users of the
class
Services presented to an end user constitute the
interface
OBJECT‐ORIENTEDTHINKING
Thinking more abstractly
In order to design reusable classes one must tend to have interfaces
that are more abstract thanconcrete
Concrete interfaces tend to be very specific
whereas abstract interfaces are moregeneral
OBJECT‐ORIENTEDTHINKING
Minimal interfaces
When designing a class, the rule of thumb is to always provide the user with as little
knowledge of the inner workings of the class as possible
OBJECT‐ORIENTEDTHINKING
Analysis emphasizes an investigation of the problem and
requirements, rather than a solution.
For example, if a new computerized library information system is
desired, how will it be used?
Analysis
"Analysis" is a broad term, best qualified, as in requirements
analysis (an investigation of the requirements) or object analysis
(an investigation of the domain objects)
OBJECT‐ORIENTEDTHINKING
Procedure of identifying software engineering requirements
and developing software specifications in terms of a
software system’s object model, which comprises of
Object‐ interacting objects
Oriented
Analysis Emphasis on finding and describing the objects or concepts in
the problem domain
For example, in the case of the library information system, some
of the concepts include Book, Library, and Patron
OBJECT‐ORIENTEDTHINKING
Requirements are organized around objects, which integrate
both data and functions.
OBJECT‐ They are modelled after real-world objects that the system
ORIENTED interacts with
ANALYSIS In traditional analysis methodologies, the two aspects -
functions and data - are considered separately.
OBJECT‐ORIENTEDTHINKING
Object‐ IDENTIFYING OBJECTS
Oriented Organizing the objects by
Analysis ‐ creating object model diagram
Primary Defining the internals ofthe
tasks objects, or objectattributes
Defining the behavior ofthe
objects, i.e., object actions
Describing how the objects 23
interact
OBJECT‐ORIENTEDTHINKING
Design emphasizes a conceptual solution that fulfills the
requirements, rather than its implementation
Design For example, a description of a database schema and software
objects. Ultimately, designs can be implemented
24
OBJECT‐ORIENTED DESIGN
Involves implementation of the conceptual model produced
Object during object‐oriented analysis
Oriented
Emphasis on defining software objects and how they collaborate
Design to fulfill the requirements
For example, in the library system, a Book software object may
have a title attribute and a getChapter method
Finally, during implementation or object-oriented programming,
design objects are implemented, such as a Book class in Java
25
OBJECT‐ORIENTED DESIGN
In OOD,
Object
Concepts in the analysis model, which are
Oriented
technology−independent, are mapped onto implementing
Design classes
Constraints are identified and interfaces are designed,
Resulting in a model for the solution domain, i.e., a
detailed description of how the system is to be built on
concrete technologies
26
OBJECT‐ORIENTEDTHINKING
RESTRUCTURING THE CLASS
DATA (IF NECESSARY),
OOD
(Implementation Implementation of methods,
Details) i.e., internal data structures
and algorithms,
Implementation of control
Implementation
27 of associations
OBJECT ORIENTED PROGRAMMING (OOP)
• OOP is a programming paradigm based upon objects (having both
data and methods) that aims to incorporate the advantages of
modularity and reusability
• Objects, which are usually instances of classes, are used to
interact with one another to design applications and computer
programs
28
CHARACTERISTICS / ATTRIBUTES OFOO PARADIGM
Encapsulation and
Message Passing
Characteristics
Data hiding
/Attributes of
OO Paradigm
Inheritance Polymorphism
Relationships
• Generalization and Specialization
• Links and Association
• Aggregation or Composition
SUMMARY
In this lecture we have covered
Basic concepts of OO thinking
Compared and contrast analysis and design
Defined object-oriented analysis and design (OOA/D)
Explored three areas that can get you started on the path to thinking in an OO way
Difference between OOA and traditional approaches
Characteristics of OO paradigm
READING MATERIAL
Chapter 1: Craig Larman, Applying UML and Patterns: An Introduction to Object-
Oriented Analysis and Design, and the Unified Process. 2nd Edition.
Chapter 2:The Object-Oriented Thought Process, 3rd Edition
REFERENCES
The Object-Oriented Thought Process, 3rd Edition, 2nd Chapter, How to Think in Terms of Objects,
https://www.tutorialspoint.com/object_oriented_analysis_design/ooad_object_oriented_paradigm.htm
Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design,
and the Unified Process. 2nd Edition.
https://www.scribd.com/document/402664349/3cef0bd88cf5c57529dba8223c1d8890-Object-
Oriented-Design-Course-Notes-pdf