In Object-oriented design, the software is designed as a collection of interacting objects. Each object is a reusable entity. The design is maintainable and localizes the errors. Object-oriented design characteristics are reusability, encapsulation, and abstraction.
Steps in Object-Oriented Design (O.O.D):
The very purpose of design is to create an architecture for the evolving implementation. The OOD model (or map) identifies real-world objects of the problem domain (located as a part of OOA activity) into objects of the solution domain. It creates an overall structure and computations model of the system between class objects. Architectural planning comprises a logical decomposition-representing clustering class and a physical decomposition representing clustering of modules plus the allocation of functions (i.e., to define operations on classes).
Therefore, various activities associated with OOD can be carried out with the following steps:
- Review the problem domain/application domain objects as identified in the Analysis phase.
- Specify class dependencies and/or relationships inheritance / Containment. Use relationships.
- Organize and/or create Class hierarchies (the structure)
- Design the classes.
- Design member functions.
- Design Driver program (i.e., main() function code in c++ say).
Object-oriented Design Methodology: An alternative approach
OO design methodology emphasizes identifying classes and relationships among them. It also validates the class definitions using dynamic and functional modeling. Identify Classes and relationships among them. Here the initial class diagram will be defined with respect to the problem domain and identify the following components:
- the structures between classes (i.e., aggregation & inheritance relationships).
- attributes of different classes.
- association among different classes.
- object types in the given problem (application) area.
- services each class is supposed to offer in order to support the proposed software system’s functionality.
Thus we will get here initial -module level design.
Dynamic Modeling:
Develop a dynamic model & use it to define the operations. Here this step is intended to produce a dynamic model of the proposed software system to be developed. For which the state of different objects and how they change (instances) when an event occurs (invocation) will have to be specified to model the dynamic behavior of the proposed software system. The net effects of events on classes and hence object states can be modeled using the state transition diagrams.
Functional Modeling:
Develop the Functional Model & use it to define the operations of classes. Here this step provides a mapping from input values to output of the system as a functional view of the system. Functional modeling presents how the output values of the system are computed from the given input data values.
Accordingly, the functional model of a system can be prepared using a Data Flow diagram (DFD), and all processes that are taking place in the system (to reflect system functionality) can be represented as operations on classes.
Identify and Define Internal Classes and Objects:
Here in this step algorithms and optimization issues will be considered as a part of the final design implementation. The external classes designed so far with respect to problem domain requirement specifications may satisfy end-user requirements and hence support the desired functionality of the system, including user interactions with the system.
But internal class design and objects to that effect are needed to fulfill the lowest level (derailed) operations and to simplify the complexity of the overall system design (at the top level). Therefore almost all external classes will be critically evaluated on this site and thereby whether the same class structure fulfills the final design requirements or a few more classes descending class hierarchies as inter classes to support lower-end system operations) may be required” – will be confirmed in this step.
Thus system design will get completed and ready for detailed design implementation. For which each and every class including internal classes (as is necessary) and their operations will be verified & cross-checked for its (system satisfactory implementation, at this step.
Optimization of the Design: Optimize & Package:
The final step of the design methodology will have to consider issues such as design deviations, if any, from the original logical structure architecture software system of the proposed system.
- In other words, the final system design will have to undergo one or the other optimization process. For which system designer can employ one or more optimization techniques on the final system design keeping view of modified design issues.
- Thus optimized system design will be ready at this step and serve as input to the implementation of the detailed design.
To conclude, design methodology steps and/or approaches to design methodology serve as design guidelines for the designer to help in the design activity.
Questions:
1. What are the steps in OO design?
3 Responses
Identifying the classes, characterizing them, and then defining the associated actions.
Organize the class structure.
Design the classes.
Design member functions.
Design Driver program
1. What are the steps in OO design?
Object-oriented Design Methodology
Dynamic Modeling
Functional Modeling:Â
Identify and Define Internal Classes and Objects
Optimization of the Design: Optimize & Package