OOSE Unit-1
OOSE Unit-1
OOSE Unit-1
Introduction: Review of Software life cycle stages, Software Processes. Introduction to OOAD, comparison with Functional approach
to software development. Overview of UML: Use Case Diagrams, Class Diagrams, Interaction Diagrams, State Machine Diagrams,
Activity Diagrams Modelling Concepts: Systems, Models, and Views. Data Types - Abstract Data Types, Instances. Classes - Abstract
Classes, Objects, Event Classes, Events, Messages. Object- Oriented Modelling- Falsification and Prototyping
A Deeper View into UML: Static Modelling, Dynamic Modelling, Logical Architecture. Dynamic Modelling: Use Case Diagrams,
Class Diagrams, Interaction Diagrams, State Machine Diagrams, Activity Diagrams, Diagram Organization, Diagram Extensions.
Analysis Concepts: Object Models and Dynamic Models. Entity, Boundary, Control Objects. Generalization and Specialization
Analysis Activities: Requirements Model: From Use Cases to Objects Identifying Entity Objects, Boundary Objects, Control Object.
Mapping Use Cases to Objects with Sequence Diagrams, Modelling Interactions among Objects with CRC Cards. Identifying
Associations, Aggregates, Attributes, Modelling State- Dependent Behaviour of Individual Objects, Modelling Inheritance
Relationships between Objects. Reviewing the Analysis Model, Analysis Summary
DR. GANESHKUMAR N, DEPT. OF CSE 4
Syllabus
UNIT 3 System Design and Static Modelling
System Design: Decomposing the System. System Design Concepts: Subsystems and Classes, Services and Subsystem Interfaces,
Coupling and Cohesion, Layers and Partitions, Architectural Styles. System Design Activities: From Objects to Subsystems, Analysis
Model for a Route Planning System, Identifying Design Goals, Identifying Subsystems. Static Modelling: Package Diagrams, Composite
Structures, Component Diagrams, Deployment Diagrams. System Design Activities: Addressing Design Goals: Mapping Subsystems to
Processors and Components, Identifying and Storing Persistent Data, Providing Access Control, Designing the Global Control Flow,
Identifying Services, Boundary Conditions, Reviewing System Design
Object Design: Design Patterns, Reusing Pattern Solutions. Reuse Concepts. Reuse Activities: Selecting Design Patterns and Components,
Encapsulating Data Stores with the Bridge Pattern, Encapsulating Legacy Components with the Adapter Pattern, Encapsulating Context
with the Strategy Pattern, Encapsulating Platforms with the Abstract Factory Pattern, Encapsulating Control Flow with the Command
Pattern, Encapsulating Hierarchies with the Composite Design Pattern, Heuristics for Selecting Design Patterns, Identifying and Adjusting
Application Frameworks Object Design: Specifying Interfaces. Interface Specification Concepts: Class Implementer, Class Extender, Class
User, Types, Signatures, Visibility. Contracts: Invariants, Preconditions, Post conditions, Object Constraint Language. OCL Collections :
Sets, Bags, and Sequences. OCL Quantifiers: for All and exists
DR. GANESHKUMAR N, DEPT. OF CSE 5
Syllabus
UNIT 5 Implementation: Coding & Testing
Mapping Models to Code. Mapping Concepts: Model Transformation, Refactoring, Forward Engineering, Reverse Engineering,
Transformation Principles. Mapping Activities : Optimizing the Object Design Model, Mapping Associations to Collections,
Mapping Contracts to Exceptions, Mapping Object Models to a Persistent Storage Schema. Testing: An Overview of Testing.
Testing Concepts: Faults, Erroneous States, and Failures, Test Cases, Test Stubs and Drivers, Corrections. Testing Activities:
Component Inspection, Usability Testing, Unit Testing, Integration Testing, System Testing. Managing Testing: Planning Testing
activities, Documenting Testing, Assigning Responsibilities, Regression Testing, Automating Testing. Documenting Architecture:
Architectural views: logical, deployment, security, data, behavioural.
Demonstrate use of a software tool to support the planning, analysis and design phases
T1: Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering Using UML,
Patterns, and Java, Prentice-Hall.
T2: Michael R. Blaha and James R Rumbaugh, Object-Oriented Modelling and Design with
UML, Prentice Hall
T3: Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and the Unified Process, Prentice-Hall.
Definition of Engineering
Process of solving the problems by applying the knowledge of science and math.
Engineering is a process of designing and building something that serves a
particular purpose and find a cost effective solution to a problem.
Activities:
Gather and analyze requirements from stakeholders.
Define system functionalities and constraints.
Document user expectations and system specifications.
Activities:
Design the overall architecture of the system.
Define data structures, software modules, and interfaces.
Create detailed specifications for components.
Activities:
Write code based on the design specifications.
Conduct unit testing to ensure individual components work correctly.
Integrate components into a complete system.
Activities:
Conduct various testing levels (unit, integration, system, acceptance).
Identify and fix defects.
Validate that the software meets user expectations.
Activities:
Plan and execute the installation of the software.
Train end-users and support personnel.
Monitor and troubleshoot any issues during initial use.
Activities:
Fix defects and address user-reported issues.
Enhance features or add new features based on user feedback.
Update documentation.
Main characteristics:
Also called classic software life cycle or sequential
model
Process activities (phases/stages) are clearly
separated
After a number of iterations, phases of the life
cycle (such as specification and design) are “frozen”
Main characteristics:
The phases of the software construction are
interleaved
Feedback from the user is used throughout
the entire process
The software product is refined through
many versions
Disadvantages:
Quick fixes may be involved
“Invisible” process, not well-supported by documentation
The system’s structure can be corrupted by continuous change
Special tools and techniques may be necessary
Applicability:
When requirements are not well understood
When the client and the developer agree on a “rapid prototype” that will be thrown away
Good for small and medium-sized software systems
DR. GANESHKUMAR N, DEPT. OF CSE 24
Reuse-oriented Development model
This approach is based on the existence of a significant number of reusable components.
The system development process focuses on integrating these components into a system
rather than developing them from scratch.
Testing & Turnover: Many of the programming components have already been tested since
RAD emphasis reuse. This reduces the overall testing time. But the new part must be
tested, and all interfaces must be fully exercised.
Disadvantages
Very rigid and least flexible.
Not a good for a complex project.
Software is developed during the implementation stage, so no early prototypes of the software are produced.
If any changes happen in the midway, then the test documents along with the required documents, has to be
updated.
Disadvantages
Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.
DR. GANESHKUMAR N, DEPT. OF CSE 41
Object-Oriented Analysis and Design (OOAD)
Object-Oriented Analysis and Design (OOAD) is a systematic methodology for analyzing,
modeling, and designing software systems based on the principles of the Object-Oriented
Paradigm.
It focuses on representing a system as a collection of interacting objects, each encapsulating
data and behavior, and emphasizes concepts such as classes, inheritance, encapsulation, and
polymorphism.
Components:
Objects: Instances of classes that encapsulate both data (attributes) and behavior (methods).
Classes: Blueprints or templates defining the structure and behavior of objects.
Encapsulation: The bundling of data and methods within a class to promote information hiding
and reduce complexity.
DR. GANESHKUMAR N, DEPT. OF CSE 42
Object-Oriented Analysis and Design (OOAD)
Inheritance: The mechanism that allows a class to inherit properties and behaviors from another class,
promoting code reuse and hierarchy.
Polymorphism: The ability of objects of different classes to be treated as objects of a common base class,
supporting flexibility and adaptability.
Abstraction: Simplifying complex systems by focusing on essential characteristics while ignoring unnecessary
details.
Use Case Modeling: Identifying and defining interactions between users (actors) and the system to capture
functional requirements.
Unified Modeling Language (UML): A standardized visual modeling language providing diagrams to represent
various aspects of a system's architecture and behavior.
Object-Oriented Analysis (OOA): Defining requirements and constraints for the system based on the
identification and analysis of objects.
Object-Oriented Design (OOD): Translating requirements into a design plan encompassing classes,
relationships, and interactions.
DR. GANESHKUMAR N, DEPT. OF CSE 43
DR. GANESHKUMAR N, DEPT. OF CSE 44
Comparison with Functional approach to software development
The basic abstractions, which are given to the user, are real world The basic abstractions are not the real world functions but are the data
Abstraction
functions. abstraction where the real world entities are represented.
Functions are grouped together by which a higher level function is Function are grouped together on the basis of the data they operate
Function
obtained. since the classes are associated with their methods.
carried out using structured analysis and structured design i.e, data
execute Carried out using UML
flow diagram
Begins basis Begins by considering the use case diagrams and the scenarios. Begins by identifying objects and classes.
In function oriented design we decompose in function/procedure
Decompose We decompose in class level.
level.
This approach is mainly used for evolving system which mimics a
Use This approach is mainly used for computation sensitive application.
business or business case.
UML stands for Unified Modeling Language, is a standardized general-purpose visual modeling
language in the field of Software Engineering used for specifying, visualizing, constructing, and
documenting the primary artifacts of the software system
UML is a notation that resulted from the unification of OMT-Object Modeling Technique and
OOSE-Object-Oriented Software Engineering.
UML provides a set of graphical notations and diagrams that help developers, analysts, and
stakeholders to communicate and understand the structure, behavior, and functionality of a system.
It was developed by the Object Management Group (OMG) and has become a widely adopted
standard in the field of software development.
The functional model, represented in UML with use case diagrams, describes the functionality of the system from the
user’s point of view.
The object model, represented in UML with class diagrams, describes the structure of the system in terms of objects,
attributes, associations, and operations.
The dynamic model, represented in UML with interaction diagrams, state machine diagrams, and activity diagrams,
describes the internal behavior of the system.
Interaction diagrams describe behavior as a sequence of messages exchanged among a set of objects, whereas state
machine diagrams describe behavior in terms of states of an individual object and the possible transitions between
states.
DR. GANESHKUMAR N, DEPT. OF CSE 52
Use Case Diagrams
Use cases are used during requirements elicitation and analysis to
represent the functionality of the system.
Elements:
Actor:
Represents an external entity that interacts with the system.
Can be a user, another system, or any external element.
Shown as stick figures or blocks outside the system boundary.
Use Case:
Represents a specific functionality or behavior of the system.
Describes a set of interactions between the system and external
entities (actors).
Shown as ovals inside the system boundary.
System Boundary:
Represents the boundary of the system being modeled.
Contains actors and use cases.
DR. GANESHKUMAR N, DEPT. OF CSE 53
Association:
Represents a relationship between an actor and a use case.
Indicates that the actor is involved in the described functionality.
Include Relationship:
Describes the inclusion of one use case by another.
Represents the fact that the behavior of the included use case is incorporated into the behavior of the base
use case.
Extend Relationship:
Describes optional or exceptional behavior that can extend the behavior of a base use case.
The numbers on the ends of associations denote the number of links each SimpleWatch object can have with
an object of a given class. For example, a SimpleWatch has exactly two PushButtons, one Display, two
Batteries, and one Time. Similarly, all PushButton, Display, Time, and Battery objects are associated with
exactly one SimpleWatch object. DR. GANESHKUMAR N, DEPT. OF CSE 56
Example
Activities are modeling elements that represent the execution of a set of operations.
The execution of an activity can be triggered by the completion of other activities, by the
availability of objects, or by external events.
Activity diagrams are similar to flowchart diagrams which can be used to represent control
flow (i.e., the order in which operations occur) and data flow (i.e., the objects that are
exchanged among operations).
If we did not use models, but instead started coding the system right away, we would have
to specify all the details of the user interface before the client could provide us with
feedback. Thus we would lose much time and resources when the client then introduces
changes.
Models can be graphical representations or mathematical abstractions of a software
system.
DR. GANESHKUMAR N, DEPT. OF CSE 66
Modeling allows us to deal with complexity through a divide-and-conquer approach:
For each type of problem we want to solve, we build a model that only focuses on the
issues relevant to the problem.
We first build a model of the environment and functionality that the system must provide, at
a level that is understandable by the client.
Refine model, adding more details about the forms that the system should display, the layout
of the user interface, and the response of the system to exceptional cases.
The set of all models built during development is called the system model.
It denotes a set of values that are members of the data type (i.e., the instances of the data
type) and defines the structure and the operations valid in all instances of the data type.
For example, if "Car" is a class, a specific car object is an instance of that class.
Abstract classes cannot be instantiated and may contain abstract methods (methods
without implementation).
They serve as a blueprint for other classes and are meant to be sub classed.
Inheritance relationship serves only to model shared attributes and operations, i.e, if the
generalization is not meant to be instantiated, the resulting class is called an abstract
class.
Abstract classes often represent generalized concepts in the application domain, and
their names are italicized.
Prototyping: Creating a quick and simple version of a product to be built, for the purposes
of evaluation (and falsification. )