0% found this document useful (0 votes)
10 views

L1 9-9-2024

The document outlines a course on Object Oriented Analysis and Design (OOAD) as part of a Computer Science program, focusing on fundamental concepts of Object Orientation and UML within the Software Development Life Cycle. It details course objectives, contents, and methodologies, including analysis and design principles, modeling techniques, and software testing. Additionally, it emphasizes the core principles of object orientation such as abstraction, encapsulation, inheritance, and polymorphism.

Uploaded by

idk42985
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

L1 9-9-2024

The document outlines a course on Object Oriented Analysis and Design (OOAD) as part of a Computer Science program, focusing on fundamental concepts of Object Orientation and UML within the Software Development Life Cycle. It details course objectives, contents, and methodologies, including analysis and design principles, modeling techniques, and software testing. Additionally, it emphasizes the core principles of object orientation such as abstraction, encapsulation, inheritance, and polymorphism.

Uploaded by

idk42985
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 18

BS Computer Science

Batch-25
Semester 5
Fall 2024

Object Oriented Analysis and Design

Lecture1 9-9-2024
Introduction to the course
This course is taught as CS core course as part of Software Engineering foundation
courses.
It focuses on the fundamental concepts of Object Orientation and UML as part of the
Software Development Life Cycle. The course looks into core activities and artifacts of
Object Orientation and UML to be used with various software development methodologies.
Course learning outcomes :
-To learn aspects of Object-oriented analysis and design.

-To be able to analyze complex computing/ real world


problems using object-oriented principles.

-To be able to design computing/real world problems as


object-oriented problems using object-oriented
techniques.
Course Contents
Software development life cycle (SDLC), Understanding large scale project perspective,
Object Oriented Analysis and Development concepts. Analysis vs Object Oriented Analysis (OOA), Object Modeling,
Object Modeling Technique (OMT), Unified Modeling Language (UML) for modeling, using UML modeling tools,
OOA: Requirement gathering and development, Requirements categories FURPS+, Modeling and analyzing
requirements, Analysis modeling (Scenarios, Use Case, User Stories). Requirement prioritization, verifying and
validating requirements, Requirement specification,
Object Oriented Design (OOD): Principles of OOD, SOLID (Single-responsibility Principle, Open-Closed Principle,
Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle), Identifying objects
and entities, Designing Data Model (ERD), Relationships and associations. Mapping concepts, O/R Mapping, Shadow
information and scaffolding, Mapping metadata, Mapping inheritance, Mapping object relationships, Mapping
relational database relationships.
UML modeling (structured and behavior diagrams. Concept of static, dynamic and functional model), Structural
diagrams and use, Behavioral diagrams and use,
User Interface (UI) design process, State machines,
Architectural analysis, Architectural styles,
Software implementation, Use of right tools for implementation, Selecting algorithms,
Software testing:Test Case design, Levels of testing: Unit testing, Integration testing, Acceptance testing, Regression
testing, Testing object-oriented systems, Use-case based testing, Class diagram based testing, Sequence diagram-
based testing, Writing and using basic unit tests, Concept of deployment and cutover, Basic deployment tasks.
Recommended Books
1. Eriksson, H. (2004). UML 2 toolkit (Latest ed.). Indianapolis, IN: Wiley Publishing.
2. Stephens, R. (2015). Beginning software engineering (Latest ed.). Indianapolis: Wrox Publishing.
3. Ambler, S. W., & Lines, M. (2012). Disciplined Agile Delivery: A Practitioner's Guide to Agile
Software Delivery in the Enterprise (1st Ed.). IBM Press.
4. Larman, C. (2005). Applying UML and patterns: an introduction to object-oriented analysis and
design and iterative development (3rd Ed.). Upper Saddle River, NJ: Prentice Hall Professional
Technical Reference.
5. McConnell, S. (2004). Code complete: a practical handbook of software
construction (2nd Ed.). Redmond (Washington): Microsoft Press.
Programming languages
• Any programming language (Java, Python or Ruby) can be used for OO
examples
Course sessional marks grading
• There will be course capstone project or 60% weightage of total
sessional marks
• 2% Attendance
• 2% Quizz
Introduction to Object Orientation
• Object-oriented systems development emphasizes building modular,
self-contained modules that facilitate reusability, modifiability, and
scalability.
Object-Oriented Analysis And
Design (OOAD)
• It’s a structured method for analyzing, designing a system by applying the object-
orientated concepts, and developing a set of graphical system models during the
development life cycle of the software.
• The Object-Oriented Development Lifecycle
• Object-Oriented Analysis (OOA): This phase focuses on identifying and describing
objects or concepts within the problem domain.
• Object-Oriented Design (OOD): In OOD, structures are developed to define software
objects and their interactions. It involves defining classes, specifying attributes, and
determining how objects collaborate to fulfill system requirements.
• Object-Oriented Programming (OOP): OOP involves implementing the designed objects
in a programming language. It translates the abstract design into executable code,
where classes are instantiated as objects, and methods are invoked to perform specific
tasks.
OOAD In The SDLC

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
Object-Oriented Analysis
In the object-oriented analysis, we …
1.Elicit requirements: Define what does the software need to do, and what’s the problem
the software trying to solve.
2.Specify requirements: Describe the requirements, usually, using use cases (and
scenarios) or user stories.
3.Conceptual model: Identify the important objects, refine them, and define their
relationships and behavior and draw them in a simple diagram.
Object-Oriented Design

• The analysis phase identifies the objects, their relationship, and


behavior using the conceptual model (an abstract definition for the
objects).

• In the object-oriented design, we …


• Describe the classes and their relationships using class diagram.
• Describe the interaction between the objects using sequence
diagram.
• Apply software design principles and design patterns.
System Modeling

• System modeling is the process of developing models of the system, with


each model representing a different perspectives of that system.
• The most important aspect about a system model is that it leaves out detail;
It’s an abstract representation of the system.
• The models are usually based on graphical notation, which is almost always
based on the notations in the Unified Modeling Language (UML). Other
models of the system like mathematical model; a detailed system
description.
• Models are used during the analysis process to help to elicit the
requirements, during the design process to describe the system to engineers,
and after implementation to document the system structure and operation.
Unified Modeling Language (UML)

• The unified modeling language become the standard modeling


language for object-oriented modeling. It has many diagrams,
Core Principles/elements of Object Orientation

Abstraction: Abstraction involves representing only the essential aspects of a system while hiding
irrelevant details.
• Abstraction is defined as a simplified description or specification of a system that emphasizes some of
the system details or properties while suppressing others. A good abstraction is one that emphasizes
details that are significant to the reader or user and suppress details that are, not so significant,
immaterial. An abstraction denotes the essential characteristics of an object that distinguishes it from
all other kinds of objects and thus provides crisply defined conceptual boundaries on the perspective
of the viewer. An abstraction focuses on the outside view of an object, Abstraction focuses up on the
essential characteristics of some object, relative to the perspective of the viewer. From the most to the
least useful, these kinds of abstraction include following.- Entity abstraction: An object that represents
a useful model of a problem domain or solution domain entity.- Action abstraction: An object that
provides a generalized set of operations all of which program the same kind of function.
• Encapsulation: Encapsulation involves bundling data and methods into a single unit (class) and
restricting access to the internal state of objects. It promotes information hiding, data integrity, and
modular design.
• are specialized subclasses.
• Inheritance: Inheritance allows classes to inherit attributes and behaviors from
parent classes, enabling code reuse and promoting hierarchy and specialization.
• Examples of Hierarchy: Single Inheritance defines a relationship among classes.
Where one classes shares structure or behaviors defined in one (single in
heritance) or more class (multiple inheritance) & thus represents a hierarchy of
abstractions in which a subclass inherits from one or more super classes.
Consider the different kinds of growing plans we might use in the Hydroponics
Gardening System. FruitGrowingPlan Growing planIn this case, FruitGrowingPlan
is more specialized, and GrowingPlant is more general. The same could be said
for GrainGrowingPlan or VegetableGrowingPlan, that is,GrainGrowingPlant “is a”
kind of Growing Plant, and VegetableGrowingPlant “is a” kind of GrowingPlant.
Here, GrowingPlant is the more general superclass, and the others
• Polymorphism: Polymorphism enables objects to exhibit different
behaviors based on their context or inputs. It allows for flexibility and
extensibility by enabling the same method to behave differently in
different contexts.
The models of Object Oriented
Development:
The models of object oriented analysis and design reflect the
importance of explicitly capturing both the class and object hierarchies
of the system under design.
These models also cover important design decisions that we must
consider in developing a complex system.
• Five attributes of well formed complex systems are given in figure

You might also like