System development Methodologies
Many times, we work on projects without any requisite practices or approach as to how the job should be done. Depending on the language being used as well as the system architecture in question, it is always good practice to have a system development methodology.
A methodology is an algorithm, which includes formulas as well as a set of practices. It does not set out to provide solutions, but rather sets out to create an understanding of which method can be applied to a particular case.
The preferred methodology for most projects that are done therefore is through Object-oriented analysis and design (OOAD). Object-oriented analysis and design (OOAD) is a software development approach that analyses a system as a group of interacting objects. Software objects are conceptually similar to real-world objects, they too consist of state and related behavior. Basically, an object exposes its behavior through methods or functions.
The idea behind the selection of this methodology is to facilitate development of system components in a way that they are flexible and can be easily reused. It also facilitates changing of system requirements to improve functionality during the system lifetime. Concepts in the analysis model which is technology independent, are mapped onto implementing classes and interfaces resulting in a model of the solution domain, i.e., a detailed description of how the system is to be built on concrete technologies.
Object-oriented analysis and design enables the standardization of objects which increases design understanding and decreases the risk associated with project development.
Some of the pros of this methodology are:
Maintainability- Object-Oriented programming methods make code more maintainable. Identifying the source of errors becomes easier because objects are self-contained. The principles of good Object-Oriented Programming design contribute to an application’s maintainability.
Reusable-Because objects contain both data and functions that act on data, objects can be thought of as self-contained “boxes” (encapsulation).This feature makes it easy to reuse code in systems anywhere it suites.
Scalability is the ability of a system, network, or process, to handle growing amount of work in a capable manner or its ability to be enlarged to accommodate that growth. As an object’s interface provides a road-map for reusing the object in new software, it also provides you with all the information you need to replace the object without affecting other code. This makes it easy to replace old and aging code with faster algorithms and newer technology.
My next post shall give an exclusive breakdown of differences between object-oriented analysis and design and structure-oriented analysis and design.