Object oriented methods
What Are Object Oriented Methods?
Object oriented methods are systematic approaches to software analysis, design, and development organized around the concept of objects: discrete units that combine data and the procedures that operate on that data. The methods provide structured techniques for decomposing a problem domain into interacting objects, specifying their attributes, behaviors, and relationships, and then realizing that specification as working software. They emerged in the 1980s as a response to the limitations of structured and procedural methodologies, which modeled systems as flows of data through functions but struggled to represent complex real-world domains with interdependent state and behavior.
The field draws on the programming-language advances of Simula, Smalltalk, and C++, but it extends beyond coding into a full lifecycle of notation, process, and tooling. Object oriented methods encompass requirements modeling, architectural design, detailed design, testing strategies, and the measurement of design quality.
Analysis and Design Methodologies
Object oriented analysis (OOA) identifies the objects, classes, and relationships that model the problem domain, while object oriented design (OOD) transforms that model into a concrete specification suitable for implementation. Among the most influential methodologies are the Booch method, Rumbaugh's Object Modeling Technique (OMT), and Jacobson's Objectory, which were unified in the mid-1990s to produce the Unified Modeling Language (UML). UML provides a standardized notation for class diagrams, sequence diagrams, state machines, and component diagrams, giving practitioners a common language for communicating design decisions. IEEE research comparing object-oriented and conventional analysis and design methodologies found that OO approaches require incremental adoption effort but yield measurably better design reuse and adaptability for systems subject to evolving requirements.
Design Patterns and Reuse
One of the most productive outcomes of the object oriented methods movement is the catalogue of design patterns: named, reusable solutions to recurring structural and behavioral problems in software design. The 1995 book by Gamma, Helm, Johnson, and Vlissides identified 23 foundational patterns organized into creational, structural, and behavioral categories. Patterns such as Observer, Factory Method, and Strategy describe arrangements of classes and objects that decouple components and enable independent extension without modifying existing code. They represent distilled design knowledge rather than executable code, and their value is in providing a shared vocabulary that reduces design communication overhead between practitioners. Object oriented programming languages such as Java, C#, Python, and C++ provide the language mechanisms (inheritance, interfaces, polymorphism) through which patterns are implemented, and object oriented databases can persist the resulting object graphs. IEEE conference research on design patterns in object oriented analysis and design examines how pattern application improves modularity metrics in production systems.
Metrics and Quality Assessment
Measuring the quality of an object oriented design requires metrics tailored to the OO constructs that structured approaches did not have: class coupling, inheritance depth, response set, and cohesion at the method and class level. The Chidamber and Kemerer metric suite, published in the IEEE Transactions on Software Engineering, defines six widely adopted measures including Weighted Methods per Class (WMC), Depth of Inheritance Tree (DIT), and Coupling Between Object Classes (CBO). High CBO values indicate tight inter-class dependencies that make the system fragile under change, while low cohesion within a class often signals a poorly bounded responsibility. Automated static analysis tools now compute these metrics over large codebases in continuous integration pipelines, providing developers with early warning of structural degradation. These metrics apply equally to object oriented software systems and to the schema designs of object oriented databases, linking the two related disciplines under a common quality framework.
Applications
Object oriented methods have applications in a range of fields, including:
- Large-scale enterprise software development using UML and iterative design processes
- Embedded systems design where hardware and software subsystems are modeled as cooperating objects
- Web application architecture using model-view-controller and related OO patterns
- Hardware/software co-design where object models span both domains
- Software testing and quality assurance using OO metrics and coverage analysis