Coad and Yourdon
Coad and Yourdon
Coad and Yourdon introduced their Object-Oriented Analysis (OOA) methodology in the late 1980s,
focusing on developing an analysis model for software systems. This model consists of five key steps
that help in identifying and structuring objects within a system.
This step involves analyzing the application domain and system environment to determine
the relevant objects.
The system is broken down into objects that represent real-world entities.
2. Identification of Structures
Structures define relationships among objects, mainly focusing on two key relationships:
3. Definition of Subjects
4. Definition of Attributes
Each attribute is placed at the appropriate level in the inheritance hierarchy to ensure
proper reuse and organization.
Example:
o A "Vehicle" class might have attributes like speed and fuelCapacity, which can be
inherited by subclasses like "Car" and "Bike".
5. Definition of Services (Methods)
Services (also known as methods) define the operations that an object can perform.
Example:
o A "Car" object might have a startEngine() method that interacts with the "Engine"
object.
The methodology uses graphical notation to represent objects, relationships, attributes, and
services.
The graphical representation is not standardized, but it helps in visualizing the system.
Conclusion
Coad and Yourdon’s OOA methodology provided a foundational approach to object-oriented system
analysis. Despite its limitations, it influenced modern object-oriented design techniques, such as
UML (Unified Modeling Language).
Grady Booch introduced his Object-Oriented Design (OOD) methodology in 1991, aiming to provide
a structured approach to designing and implementing object-oriented systems. The methodology
emphasizes an incremental and iterative life cycle, focusing on continuous refinement and evolution
of the system.
1. Iterative and Incremental – The development process is broken into multiple iterations,
refining the system over time.
The macro process defines the major activities throughout the system development life cycle. It
consists of the following phases:
A. Requirements Phase
Techniques Used:
o Context diagrams
o Prototyping
B. Analysis Phase
Key Activities:
C. Design Phase
Focus: Defining the system’s architecture (“how” the system will work).
Key Activities:
o Release planning
D. Evolutionary Phase
Key Activities:
E. Maintenance Phase
Key Activities:
o Bug fixes
o Performance improvements
o System upgrades
The micro process focuses on the detailed steps involved in object-oriented design, following a
recursive approach:
o Operations (methods)
o The iterative nature may lead to overlapping phases, making it difficult to manage
large projects.
Conclusion
The Booch methodology played a significant role in shaping modern object-oriented software
engineering. By integrating analysis, design, and implementation, and emphasizing iteration, it laid
the foundation for later methodologies like Unified Modeling Language (UML).
James Rumbaugh developed the Object Modeling Technique (OMT) in 1990, focusing on a
structured approach to software analysis, design, and implementation. The methodology consists of
four phases, each contributing to the development of an object-oriented system.
1. Phases of OMT
A. Analysis Phase
The goal of this phase is to understand the problem domain by breaking it into three key
models:
Uses Data Flow Diagrams (DFDs) to describe how data moves through the system.
o Communication protocols
o Operations (methods)
D. Implementation Phase
Converts the object-oriented design into actual code.
Limitations of OMT
1. Complexity in Large Systems – The approach can become overwhelming for very large
applications.
2. No Unified Notation – The methodology lacks a standard graphical representation like UML.
3. Focus on Data More than Behavior – Compared to other methodologies, OMT emphasizes
structure over behavior.
Conclusion
Rumbaugh’s Object Modeling Technique (OMT) is a systematic and structured approach to object-
oriented software development. It provides a clear separation between analysis, design, and
implementation, making it effective for large-scale system development. However, its complexity
led to further improvements in object-oriented methodologies, eventually influencing Unified
Modeling Language (UML).
Introduced by Ivar Jacobson, OOSE (1999) aims to provide a comprehensive architecture for
software development, overcoming the limitations of previous methodologies.
2. Analysis Model
3. Design Model
4. Implementation Model
5. Test Model
Strengths of OOSE
Conclusion
Jacobson’s OOSE methodology introduced use cases as a key aspect of software engineering. It
bridges analysis, design, and implementation, making it one of the most influential methodologies
in object-oriented software engineering. 🚀
Object-Oriented Modeling – Key Points
2. Importance of Modeling
These methodologies were combined to form the Unified Modeling Language (UML).
Dynamic Modeling – Captures events and states for object interactions over time.
6. Conclusion
Modeling from multiple perspectives ensures a clear and detailed understanding of the
system. 🚀
User: Uses the system (e.g., library staff in a Library Management System).
Process: The method used to create the product (includes activities like designing, coding,
testing).
1.5.3 Actor, Use Case, Use Case Model, and Use Case Scenario
Use Case Model: Represents actors, use cases, and their relationships.
QA: Prevents defects by enforcing good software practices (e.g., reviews, audits).
Verification (Static Testing): Ensures documents and code meet requirements (reviews,
inspections).
Validation (Dynamic Testing): Tests if the system meets the expected functionality (actual
execution).
Uses DFDs, ER diagrams, structured Uses UML diagrams (use case, class, sequence diagrams,
charts. etc.).
Uses DFDs for processes and attributes. Uses classes to define attributes and operations.
Conclusion
Developers and customers are adopting object-oriented methodologies and languages (C++,
Java, etc.). 🚀
2. Effective Requirement Elicitation – Uses the use case approach to ensure traceability and
verifiability of requirements, aiding in better testing and acceptance.
3. Visual Modelling – Uses UML to create models that simplify understanding, visualization,
and documentation of real-world problems.
6. Change Control & Management – Provides structured guidelines for tracking and managing
changes, essential for iterative development.
7. Automated Testing – Encourages the use of automated tools for functional and non-
functional testing, reducing effort, time, and resources. 🚀
2. Dynamic Structure – Represents iterative development, showing how activities evolve over
time.
1. Roles – Defines responsibilities in the project. A person can have multiple roles. Example:
o Designer (Creates class design)
o Class design
o Class Model
o Test Plan
o Source Code
o User Manual
o Business Modeling
o Requirements
o Implementation
o Testing
o Deployment
💡 Key Takeaway: RUP provides a structured, iterative framework ensuring well-organized software
development with clear roles, activities, and continuous quality control. 🚀
The dynamic structure of RUP is organized along a time-based approach and consists of four main
phases:
1. Inception Phase
Artifacts Produced:
2. Elaboration Phase
Artifacts Produced:
3. Construction Phase
Artifacts Produced:
User Manuals.
4. Transition Phase
Train end-users.
Artifacts Produced:
Release Notes.
Key Takeaways
Key Principles of XP
✅ Customer Collaboration – The customer (domain expert) is part of the development team.
✅ Flexibility – Requirement changes are welcomed, unlike rigid traditional methods.
✅ Early & Frequent Deliveries – A working software is delivered within weeks.
✅ Teamwork & Communication – Team cohesion is more important than processes.
✅ Distributed Leadership – Decision-making is shared, not just project manager-led.
1. User Stories 📜
2. Release Planning
3. Iteration Planning 🔄
User stories selected for the current iteration are broken into tasks.
5. Acceptance Testing ✅
1️⃣ 80-20 Rule – 80% of profits come from 20% of the work.
2️⃣ Pair Programming – Two developers work together, not a teacher-student setup.
3️⃣ Iteration < Few Weeks – Iterations must be short.
4️⃣ No Consecutive Overtime – Developers cannot work overtime two weeks in a row.
5️⃣ Spikes for Exploration – Used to explore complex requirements.
6️⃣ Refactoring is Continuous – Improves design without changing functionality.
7️⃣ Class Responsibility Collaboration (CRC) Cards – Used to design system interactions.
8️⃣ The Whole Team Owns the Architecture – Not just architects or leads.
Advantages of XP ✅
Disadvantages of XP ❌
Final Thoughts
The Fountain Model is an iterative and overlapping software development model that emphasizes
reusability and flexibility in object-oriented development. It allows changes to be made between
class specification and requirement specification without freezing requirements early in the
development cycle.
Final Thoughts
The Fountain Model is best suited for object-oriented software development, where flexibility and
reusability are key. However, the lack of a structured flow can lead to an undisciplined approach if
not carefully managed. 🚀