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

Coad and Yourdon

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

Coad and Yourdon

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

1.

Coad and Yourdon’s Object-Oriented Analysis (OOA) Methodology – Detailed Explanation

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.

1. Identification of Classes and Objects

 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.

 Each object has its state (attributes) and behavior (methods/services).

 The behavior of each object is documented for further processing.

2. Identification of Structures

 Structures define relationships among objects, mainly focusing on two key relationships:

1. Is-a Relationship (Generalization-Specialization or Gen-Spec Structure)

 Defines class inheritance (e.g., a "Car" is a type of "Vehicle").

2. Whole-Part Relationship (Composition & Aggregation)

 Defines containment relationships (e.g., an "Engine" is part of a "Car").

 These relationships help in organizing objects hierarchically and understanding their


dependencies.

3. Definition of Subjects

 Subjects group related objects and structures into meaningful categories.

 Helps in partitioning a system into smaller, more manageable components.

 A subject may represent a module or a subsystem within a larger system.

4. Definition of Attributes

 Attributes represent data members of a class, storing object-specific information.

 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.

 This step also involves defining object interactions through messages.

 Messages can contain parameters for communication between objects.

 Example:

o A "Car" object might have a startEngine() method that interacts with the "Engine"
object.

Graphical Representation of Coad and Yourdon’s OOA Model

 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.

Limitations of Coad and Yourdon’s OOA

1. No Systematic Approach to Identify Objects and Classes

o Unlike newer methodologies, there is no defined rule for identifying objects.

2. Lack of Interface Definition

o The methodology does not explicitly define interfaces between objects.

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).

Booch Methodology – Detailed Explanation

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.

Key Characteristics of Booch Methodology

1. Iterative and Incremental – The development process is broken into multiple iterations,
refining the system over time.

2. Combines Analysis, Design, and Implementation – Unlike linear approaches, Booch


integrates all phases in a continuous process.

3. Focus on Identifying Interfaces – Interfaces are explicitly considered at multiple levels.

4. Divided into Two Processes:

o Macro Process (High-Level Development Process)

o Micro Process (Detailed Object-Oriented Design Process)

1. Macro Process (High-Level Development Phases)

The macro process defines the major activities throughout the system development life cycle. It
consists of the following phases:

A. Requirements Phase

 Purpose: Establish core system requirements.

 Techniques Used:

o Context diagrams

o Prototyping

 Outcome: A set of fundamental system requirements.

B. Analysis Phase

 Focus: Understanding system functionality (“what” the system should do).

 Key Activities:

o Requirement gathering and prioritization

o Constructing use cases

o Identifying and assessing risks

C. Design Phase

 Focus: Defining the system’s architecture (“how” the system will work).

 Key Activities:

o Identifying horizontal layers (e.g., UI, business logic, data layer)


o Mapping classes to subsystems

o Release planning

o Associating risks with releases

D. Evolutionary Phase

 Focus: Incremental system implementation.

 Key Activities:

o Each release introduces additional functionality

o Refinement and iteration based on feedback

E. Maintenance Phase

 Focus: Post-deployment activities.

 Key Activities:

o Bug fixes

o Performance improvements

o System upgrades

2. Micro Process (Detailed Object-Oriented Design Steps)

The micro process focuses on the detailed steps involved in object-oriented design, following a
recursive approach:

Step 1: Identification of Classes and Objects

 Find objects and classes at specific levels of abstraction.

 Define the role and behavior of each class.

Step 2: Identification of Semantics of Classes and Objects

 Determine the meaning of classes in terms of:

o Attributes (data members)

o Operations (methods)

 Establish how one object uses another.

Step 3: Identification of Relationships

 Define how classes and objects interact.

 Identify key relationships:

1. Inheritance (is-a relationship) – A class derives from another.

2. Uses (dependency relationship) – One class depends on another.


3. Instance-of (object instantiation) – Object belongs to a class.

Step 4: Specification of Interfaces and Implementation

 Define class interfaces (public methods and properties).

 Specify data types for attributes.

 Establish operation signatures (method parameters and return types).

Limitations of Booch Methodology

1. No Formal Notation for Visual Diagrams

o Unlike UML, Booch does not provide standardized graphical representations.

2. Complexity in Large Systems

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).

Rumbaugh Methodology (Object Modeling Technique - OMT) – Detailed Explanation

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:

1. Object Model (Static Aspect)

 Represents the structure of the system.

 Identifies objects, classes, and inheritance relationships.


 Captures how different objects are related.

2. Dynamic Model (Behavioral Aspect)

 Describes how objects change state over time.

 Defines state diagrams to represent transitions between different states.

 Identifies events and actions that trigger state changes.

3. Functional Model (Operational Aspect)

 Focuses on what the system does in terms of data flow.

 Represents system operations and transformations.

 Uses Data Flow Diagrams (DFDs) to describe how data moves through the system.

📌 Outcome of Analysis Phase: A well-defined problem statement with an understanding of objects,


their interactions, and system functionality.

B. System Design Phase

 Focuses on creating a high-level architecture of the system.

 Takes into account factors like:

o Database Management System (DBMS)

o Communication protocols

o Hardware and software constraints

 Helps in defining the overall structure of the application.

📌 Outcome: A blueprint of the system, identifying components and their interactions.

C. Object Design Phase

 Defines objects in detail by specifying:

o Attributes (data members)

o Operations (methods)

o Algorithms used for processing.

 Identifies additional objects that may be required for system functionality.

 Ensures proper mapping between system design and implementation.

📌 Outcome: A refined object-oriented design with detailed object specifications.

D. Implementation Phase
 Converts the object-oriented design into actual code.

 Follows coding standards and best practices.

 Implements system modules step by step, ensuring correct functionality.

📌 Outcome: A working system ready for testing and deployment.

Key Features of Rumbaugh’s OMT

1. Three-Model Approach (Object, Dynamic, Functional) – Ensures a comprehensive


understanding of the system.

2. Well-Structured Phases – Clearly separates analysis, design, and implementation.

3. Data Flow Representation – Helps in visualizing system operations.

4. State Transition Modeling – Ensures that object behavior is properly captured.

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).

Jacobson Methodology (Object-Oriented Software Engineering - OOSE) – Key Points

Introduced by Ivar Jacobson, OOSE (1999) aims to provide a comprehensive architecture for
software development, overcoming the limitations of previous methodologies.

Five Models of OOSE


1. Requirement Model

o Captures system functionality using use cases and actors.

o Defines interfaces between use cases.

2. Analysis Model

o Develops an ideal, robust, and modifiable object structure.

o Identifies interface objects, database-related objects (entity objects), and control


objects.

o Groups objects into subsystems.

3. Design Model

o Refines objects considering the implementation environment.

o Objects are called blocks at this stage.

4. Implementation Model

o Converts blocks into modules for actual coding.

5. Test Model

o Validates and verifies the system functionality.

o Ensures proper integration of modules.

Strengths of OOSE

✅ Focus on Behavior – Stronger in behavioral aspects than other methodologies.


✅ Use Case-Driven Approach – Introduced the use case methodology, later adopted by UML.
✅ Subsystem-Based Design – Helps in modular development for scalability.

Comparison with Other Methodologies

 OOA (Coad & Yourdon) – Lacks design of interfaces and notations.

 OOD (Booch) – Stronger in design but weaker in analysis.

 OMT (Rumbaugh) – Stronger in analysis but weaker in design.

 OOSE (Jacobson) – Best in behavioral modeling, especially with use cases.

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

1. Definition and Purpose

 Object-Oriented Modeling (OOM) is a technique to visualize real-world objects in a


structured way.

 Helps in understanding problems, documenting requirements, and designing high-quality


systems.

 Leads to robust, maintainable, and well-structured programs.

 Models must be verified to ensure they capture the customer’s requirements.

 These models can later be transformed into source code.

2. Importance of Modeling

✅ Visualizes complex relationships in software.


✅ Organizes and documents system design.
✅ Helps in requirement analysis and understanding.
✅ Aids in producing well-structured, maintainable systems.

3. Evolution of Object-Oriented Modeling

 Three major methodologies contributed to OOM:

1. OOD (Booch) – Focused on incremental development and design techniques.

2. OMT (Rumbaugh) – Emphasized analysis and modeling of system behavior.

3. OOSE (Jacobson) – Introduced use case-driven development for behavioral


modeling.

 These methodologies were combined to form the Unified Modeling Language (UML).

4. Introduction to Unified Modeling Language (UML)

 UML is a standardized language for visual modeling in software engineering.

 Developed from the best concepts of Booch, Rumbaugh, and Jacobson.

 Adopted by Object Management Group (OMG) in 1997.

 Allows developers to specify, visualize, construct, and document system components.

 Models both static and dynamic aspects of a system.

5. UML Modeling Aspects


 Static Modeling – Defines objects and their relationships.

 Dynamic Modeling – Captures events and states for object interactions over time.

6. Conclusion

 OOM provides a systematic approach to software development.

 UML unifies previous methodologies into a comprehensive visual modeling language.

 Modeling from multiple perspectives ensures a clear and detailed understanding of the
system. 🚀

1.5 Some Terminologies in Object-Oriented Software Engineering

1.5.1 Customers, Developers, and Users

 Customer: Requests, approves, and pays for the system.

 Developer: Builds the system (supplier side).

 User: Uses the system (e.g., library staff in a Library Management System).

1.5.2 Product and Process

 Product: Final deliverable (SRS document, code, test reports, manuals).

 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

 Actor: A role interacting with the system (e.g., student, librarian).

 Use Case: Describes how a user interacts with the system.

 Use Case Model: Represents actors, use cases, and their relationships.

 Use Case Scenario: A specific execution path of a use case.


1.5.4 System and Subsystems

 System: An organized structure with inputs, outputs, and processes.

 Subsystem: A smaller part of a system to reduce complexity (e.g., accounts, sales in a


company).

1.5.5 Class, Responsibility, and Collaboration

 Class: A blueprint containing attributes and operations.

 Responsibility: Attributes and operations of a class.

 Collaboration: Relationship between classes to achieve functionality.

1.5.6 Measures, Metrics, and Measurement

 Measure: A numerical value representing a software property (e.g., number of bugs).

 Measurement: The act of collecting measures.

 Metric: A quantitative measure to assess software quality.

1.5.7 Software Quality and Reliability

 Software Quality: Ensures good design and adherence to specifications.

 Software Reliability: Probability of failure-free operation over time.

1.5.8 Quality Assurance (QA) and Quality Control (QC)

 QA: Prevents defects by enforcing good software practices (e.g., reviews, audits).

 QC: Detects and fixes defects (e.g., software testing).

1.5.9 Verification and Validation

 Verification (Static Testing): Ensures documents and code meet requirements (reviews,
inspections).

 Validation (Dynamic Testing): Tests if the system meets the expected functionality (actual
execution).

 Formula: Testing = Verification + Validation

1.5.10 Fault, Error, Bug, and Failure

 Error/Bug/Defect: Mistake in the code.


 Fault: Representation of an error in code, diagrams, or models.

 Failure: When the system behaves unexpectedly due to a fault.

1.5.11 States and Events

 State: A system’s condition at a point in time.

 Event: An input that triggers a state change.

1.5.12 Traditional vs. Object-Oriented Approach

Traditional Approach Object-Oriented Approach

Process-centric system view. Object-centric system view.

Uses DFDs, ER diagrams, structured Uses UML diagrams (use case, class, sequence diagrams,
charts. etc.).

Source code may not be reusable. Focuses on reusable code.

Uses DFDs for processes and attributes. Uses classes to define attributes and operations.

Top-down approach. Bottom-up approach.

Non-iterative. Highly iterative.

Conclusion

 Object-Oriented Software Engineering is gaining popularity.

 Companies are shifting towards object-oriented processes.

 Developers and customers are adopting object-oriented methodologies and languages (C++,
Java, etc.). 🚀

Summary of Rational Unified Process (RUP) - Key Points


1. Iterative Software Development – Software is built in multiple iterations, allowing
continuous feedback, reducing risks, and improving quality.

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.

4. Reusable Components – Supports component-based software engineering, promoting the


reuse of well-tested components for efficiency.

5. Ensuring Quality – Focuses on continuous quality assessment, defect prevention, and


measurement-based techniques to build reliable and maintainable software.

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. 🚀

Rational Unified Process (RUP) - Overview

Two Structures of RUP

1. Static Structure – Describes the process in terms of:

o Roles (who does the work)

o Activities (how the work is done)

o Artifacts (what is produced)

o Disciplines (broad areas of work)

o Workflows (sequence of activities)

2. Dynamic Structure – Represents iterative development, showing how activities evolve over
time.

o Implementation starts later in the development.

o Requirements are mostly predefined, but new ones can be added.

o Testing occurs throughout the development cycle.

o Deployment happens in later stages.

Key Elements of RUP

1. Roles – Defines responsibilities in the project. A person can have multiple roles. Example:
o Designer (Creates class design)

o Use Case Creator (Identifies system interactions)

o Project Manager (Plans and oversees the project)

2. Activities – Work done to produce outputs (artifacts). Examples:

o Effort estimation & scheduling

o Class design

o Reviewing SRS document

o Creating test plans and cases

3. Artifacts – Outputs produced during the development process. Examples:

o Software Requirements Specification (SRS)

o Use Case Model

o Class Model

o Test Plan

o Source Code

o User Manual

4. Disciplines – Organizes activities into six major areas:

o Business Modeling

o Requirements

o Analysis & Design

o Implementation

o Testing

o Deployment

5. Workflows – Defines a sequence of activities to achieve a particular goal.

💡 Key Takeaway: RUP provides a structured, iterative framework ensuring well-organized software
development with clear roles, activities, and continuous quality control. 🚀

Dynamic Structure of RUP

The dynamic structure of RUP is organized along a time-based approach and consists of four main
phases:
1. Inception Phase

Purpose: Establish the project’s feasibility and high-level scope.


Key Activities:

 Define project scope and boundaries.

 Estimate cost and schedule.

 Identify key actors and use cases.

 Develop an iteration plan (which use cases to implement in each iteration).

 Identify high-level risks.

Artifacts Produced:

 Vision Document (project scope and constraints).

 Business Case (initial risk assessment).

 Software Development Plan (phase objectives and duration).

 Iteration Plan (which use cases are covered in each iteration).

 Use Case Model (major actors and system interactions).

 Project Repository (for configuration management).

 Prototype (optional, for better understanding of the project).

2. Elaboration Phase

Purpose: Plan and design the software architecture.


Key Activities:

 Establish and validate the architectural baseline.

 Address significant risks.

 Design use case models and review requirements.

 Identify reusable components and form procurement policies.

 Develop prototypes for key system functionalities.

 Prepare detailed iteration plans.

Artifacts Produced:

 Executable Architectural Prototypes (explore system functionality).

 Updated Risk List (handling non-functional requirements).

 Software Architecture Description (use case and design elements).

 Design Model & Data Model (system structure representation).

 Implementation Model (key components and their interactions).


 Test Plan & Test Automation Architecture.

3. Construction Phase

Purpose: Develop and test the actual product.


Key Activities:

 Optimize resources by avoiding redundant coding.

 Ensure quality assessment and verification.

 Conduct unit testing, integration testing, and system testing.

Artifacts Produced:

 Final Software Product.

 User Manuals.

 Updated Design Model (new and modified design elements).

 Test Outline & Test Suite (preserved for future maintenance).

4. Transition Phase

Purpose: Deploy the product and transition it to users.


Key Activities:

 Release final product to customers.

 Train end-users.

 Perform bug fixes and enhancements (beta releases, patches).

 Provide customer support and maintenance.

Artifacts Produced:

 Beta Test Reports.

 Release Notes.

 Training & Support Materials.

Key Takeaways

✅ Iterative Process – Each phase is revisited multiple times for improvements.


✅ Customer Feedback – Continuous refinement based on user feedback.
✅ Quality Assurance – Testing occurs at every phase to minimize defects.
✅ Scalability & Flexibility – Ensures adaptable and reusable software solutions.

🚀 RUP helps deliver high-quality, maintainable software with minimal risk!

Extreme Programming (XP)


Extreme Programming (XP) was introduced in the mid-1990s and is based on Agile principles. It
focuses on customer satisfaction, rapid feedback, and continuous improvement through iterative
development and automated testing.

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.

XP Life Cycle & Phases

1. User Stories 📜

 Requirements are collected as user stories written by the customer.

 These are short, simple descriptions of functionality (without excessive details).

 Used in release planning and for creating acceptance test cases.

2. Release Planning

 Developers estimate effort needed for user stories.

 Customers prioritize stories and finalize the release plan.

 If a story is too large, it's split into smaller sub-stories.

3. Iteration Planning 🔄

 User stories selected for the current iteration are broken into tasks.

 Tasks are assigned to developers based on importance.

 A working product is produced at the end of each iteration.

4. Development & Unit Testing 💻

 Pair Programming – Two developers work together on the same computer.

 Refactoring – Removing redundant code and improving design.

 Automated Unit Tests – Written before code is developed.

 Continuous Integration – Code is integrated every few hours.

5. Acceptance Testing ✅

 Ensures the developed features meet customer requirements.

 Uses black-box testing techniques.

 Customer runs acceptance tests; failed tests are fixed immediately.


6. Working Product Release 🚀

 After passing acceptance tests, the customer decides when to release.

 Frequent releases ensure continuous feedback and improvement.

XP Rules & Best Practices

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 ✅

✔ Fast & Flexible – Ideal for rapidly changing requirements.


✔ Customer Involvement – Ensures the product meets user needs.
✔ High Software Quality – Through continuous testing and refactoring.
✔ Better Collaboration – Encourages teamwork and communication.

Disadvantages of XP ❌

❌ Not Suitable for Large Teams – Requires close communication.


❌ High Customer Involvement Needed – Difficult if the customer is unavailable.
❌ Less Documentation – Not ideal for projects requiring detailed documentation.
❌ Complex Projects Face Challenges – Hard to implement for highly complex systems.

Final Thoughts

Extreme Programming (XP) is a lightweight, iterative, and customer-focused approach to software


development. It works best for small to medium projects where flexibility, rapid feedback, and
frequent releases are needed. However, it is not suitable for highly complex projects requiring
extensive documentation or where customer involvement is limited. 🚀
Fountain Model 🌊

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.

Key Features of the Fountain Model

✅ Overlapping Phases – Different phases overlap rather than being sequential.


✅ Iterations Within Phases – Allows revisiting earlier phases as needed.
✅ No Requirement Freezing – Changes can be made at any stage.
✅ Focus on Reusability – Encourages reuse of existing components.
✅ Object-Oriented Approach – Phases apply to individual classes, not just the whole system.

Structure of the Fountain Model

1️⃣ Overlapping Phases – Depicted by circles in the model.


2️⃣ Iterations Within Phases – Shown by arrows inside circles.
3️⃣ Maintenance Phase is Smallest – Indicating reduced effort due to reusability.

Advantages of the Fountain Model ✅

✔ Flexibility – Changes can be made at any stage.


✔ Encourages Reusability – Reduces development time & cost.
✔ Good for Object-Oriented Systems – Phases apply to individual classes, making it modular.

Disadvantages of the Fountain Model ❌

❌ Lack of Discipline – Developers might randomly move between phases.


❌ Not Suitable for All Projects – Works best for object-oriented systems, not procedural ones.
❌ Complexity – Managing overlapping phases can be challenging.

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. 🚀

You might also like