In the system analysis or object-oriented analysis phase of software development, the system requirements are determined, the classes are identified and the relationships among classes are identified.
The three analysis techniques that are used in conjunction with each other for object-oriented analysis are object modelling, dynamic modelling, and functional modelling.
Object modelling develops the static structure of the software system in terms of objects. It identifies the objects, the classes into which the objects can be grouped into and the relationships between the objects. It also identifies the main attributes and operations that characterize each class.
The process of object modelling can be visualized in the following steps −
- Identify objects and group into classes
- Identify the relationships among classes
- Create user object model diagram
- Define user object attributes
- Define the operations that should be performed on the classes
- Review glossary
After the static behavior of the system is analyzed, its behavior with respect to time and external changes needs to be examined. This is the purpose of dynamic modelling.
Dynamic Modelling can be defined as “a way of describing how an individual object responds to events, either internal events triggered by other objects, or external events triggered by the outside world”.
The process of dynamic modelling can be visualized in the following steps −
- Identify states of each object
- Identify events and analyze the applicability of actions
- Construct dynamic model diagram, comprising of state transition diagrams
- Express each state in terms of object attributes
- Validate the state–transition diagrams drawn
Functional Modelling is the final component of object-oriented analysis. The functional model shows the processes that are performed within an object and how the data changes as it moves between methods. It specifies the meaning of the operations of object modelling and the actions of dynamic modelling. The functional model corresponds to the data flow diagram of traditional structured analysis.
The process of functional modelling can be visualized in the following steps −
- Identify all the inputs and outputs
- Construct data flow diagrams showing functional dependencies
- State the purpose of each function
- Identify constraints
- Specify optimization criteria
Structured Analysis vs. Object Oriented Analysis
The Structured Analysis/Structured Design (SASD) approach is the traditional approach of software development based upon the waterfall model. The phases of development of a system using SASD are:
- Feasibility Study
- Requirement Analysis and Specification
- System Design
- Post-implementation Review
Now, we will look at the relative advantages and disadvantages of structured analysis approach and object-oriented analysis approach.
Advantages/Disadvantages of Object Oriented Analysis
|Focuses on data rather than the procedures as in Structured Analysis.||Functionality is restricted within objects. This may pose a problem for systems which are intrinsically procedural or computational in nature.|
|The principles of encapsulation and data hiding help the developer to develop systems that cannot be tampered by other parts of the system.||It cannot identify which objects would generate an optimal system design.|
|The principles of encapsulation and data hiding help the developer to develop systems that cannot be tampered by other parts of the system.||The object-oriented models do not easily show the communications between the objects in the system.|
|It allows effective management of software complexity by the virtue of modularity.||All the interfaces between the objects cannot be represented in a single diagram.|
|It can be upgraded from small to large systems at a greater ease than in systems following structured analysis.|
Advantages/Disadvantages of Structured Analysis
|As it follows a top-down approach in contrast to bottom-up approach of object-oriented analysis, it can be more easily comprehended than OOA.||In traditional structured analysis models, one phase should be completed before the next phase. This poses a problem in design, particularly if errors crop up or requirements change.|
|It is based upon functionality. The overall purpose is identified and then functional decomposition is done for developing the software. The emphasis not only gives a better understanding of the system but also generates more complete systems.||The initial cost of constructing the system is high, since the whole system needs to be designed at once leaving very little option to add functionality later.|
|The specifications in it are written in simple English language, and hence can be more easily analyzed by non-technical personnel.||It does not support reusability of code. So, the time and cost of development is inherently high.|