ASSIGNMENT -6
Designing Reusable classes
Summary:
This article was written by Ralph E.Johnson and Brian Foote which was discussed about the Designing of reusable classes and its importance in Object-Oriented programming languages and how can we make object oriented programming as reusable programming language. The initial part of the article discussed about the object oriented language attributes such as abstract classes, polymorphism and inheritance. This article will help us in understanding the importance of reusability concept in object oriented programming.
This article also discussed about Toolkits and frameworks of Object oriented programming and the difference between white-box framework and black-box framework.
…show more content…
These classes may be user defined classes or predefined classes which are defined library class. Frameworks can be designed from the another framework which will consists of sharing abstract classes in object oriented programming. Source framework is FOIBLE which is implemented based on Model View Controller architecture.
Frameworks support reusability concept in object oriented programming. Framework has many advantages in designing part of software development but designing of framework will consists of many abstract classes. Developer should have fair idea on abstract classes concepts and developers needs to be very well experienced in object oriented programming so that developers can develop efficient frameworks which we can use for reusability in object oriented programming language. In present market most of the frameworks developed based on MVC architecture only. Along with reusability of code, reusability of framework also increased now a days in object oriented programming language. In this article author discussed about white-box frameworks and black-box frameworks and compared both of these
…show more content…
Inheritance is one of the most influential concepts in object-oriented programming, and have a direct impact on how to design and write your Java classes. Inheritance is a very powerful mechanism. The concept of inheritance, is that when you write a class, you just have to determine how this class is different from some other category. Inheritance will give you automatic access to the information contained in the original class. When using inheritance, and all the categories that you write, that layer of other libraries that you use, and those of the categories as well as the standard benefit, are arranged in a strict
Open source software development is taking place all over the world where part of the community develops individual modules, becoming necessary to establish standards and common definitions for open source software. These standards are established to define interaction between modules to insure interoperability of software. Software components which follow specific open standards can be replaced with other standard-compliant product, which allows the user more freedom to choose the component best suited to his needs and is not bound to a particular product, as with commercial software (Chauhan)
Platforms are an important component of software engineering in that they are the basis in allowing the tools to be available on platforms which are less expensive and therefore allowing the tools to become more available. Platforms are defined as a hardware or emulated architecture. Platforms involve a hardware architecture and a software framework in order to allow applications be run by them. Before a system can be developed, the platform must be defined in order to figure out the appropriate software and hardware to be utilized. Each of the different platforms has slightly different requirements and means of maintenance. Also, the req...
A framework is a set of classes that supports reuse at larger granularity. It defines an object-oriented abstract design for a particular kind of application which enables not only source code reuse, but also design reuse [Johnson & Foote, 1988]. The framework abstract structure can be filled with classes from its own library or application-specific ones, providing flexibility for the developer to adapt its behavior to each application. Besides flexibility, a good framework also increases the team productivity and makes application maintenance easier [Fayad et al. 1999].
Somerville, I., 2004. Software Reuse. In: Sommerville, ed. Software Engineering. Harlow: Pearson Educational Limited, pp. 416-418.
The OODBMS is the product of merging object oriented programming ethics with database management ethics. Object oriented programming concepts such as encapsulation, polymorphism and inheritance are imposed as well as database management concepts such as the ACID properties (Atomicity, Consistency, Isolation and Durability) which show the way for system reliability, it also supports an ad hoc query language and secondary storage management systems, which is allocated for managing very large amounts of data. The Object Oriented Database program specially lists the following features as compulsory for a system to support before it can be called an OODBMS; Composite objects, Object uniqueness, Encapsulation, Types and Classes, Class or Type Hierarchies, Overriding, overloading and late binding, Computational fullness, Extensibility, Perseverance, Secondary storage management, Concurrency, Recuperation and an Ad Hoc Query capacity.
provide a form of abstraction as all the programmer has to do is know how to
When researching about design patterns in programming you instantly realize that they can be very useful in implementing a certain piece of code or just having it as a useful programming practice. Design patterns are created to solve common programming problems that keep on recurring in a certain context when designing a program. There are several types of design patterns that are all split into several groups. Some of these groups are Algorithm Strategy Patterns, Execution Patterns, Structural design patterns, Creational design patterns, Behavioral design patterns and Computational design patterns. Each of these sub groups of design patterns goes about solving a different type of problem. Design patterns can be beneficial because of the simple fact that they are solving programming problems that would usually surface when programming.
Component Based Architecture creates a system that is easily extensible, promotes software reuse and intuitively understandable. A component often relates to an object in Object Orientated Programming. The RUP provides a systematic way to build this kind of system, focusing on producing an early executable architecture before committing full resources on a project.
...e pool had lesser number of LOC (lines of code) and few other components though complex, were implemented using sound reuse design principles such as well-defined interface, clarity and understandability and documentation. Also, these components were implemented using well known frameworks such as Model-View-Controller (MVC) in java. The results gave an interesting insight into the relationship between complex software units implemented with good design principles and the ease of reuse. It was observed that components that were implemented with good design principles and that were build using standardized architectural styles and frameworks yielded a higher reusability quotient. Hence, in order to increase the reusability quotient of a software unit, it is necessary that it implements sound design principles and a proven reuse oriented software engineering approach.
In order to complete, many projects are finding it advantageous to use a lifecycle approach. One of the reasons software project management remains a challenge is that, as has been all too frequently observed, progress in software development has not kept pace with progress in hardware development. The gap between software and hardware development is partly explained by the lack of standard methods and tools to boost the software development process. In short, "The cobbler's children have no shoes."
Another type of polymorphism is called overloading. Overloading is a form of polymorphism that allows an object to have different meanings depending on context. It is most often used to reference operators that can behave differently because of the data type class or operands. This is best illustrated using X+Y. X+Y can mean different things depending on wheather x and y are simple intergers or complex data structures. Here is a clearer example:
obect orientated programming has many advantages, one of these is the fact that the objects created : Jeffrey L. Popyack (2012) "can easily be reused in other programs." The Saylor Foundation also states that object orientated programming allows “Improved software-development productivity" and "Improved software maintainability” through the modular structure of the development.
Another primary benefit of a reference architecture is to provide an understanding of the components of the architecture. This understanding allows users and developers to comprehend the implications of the architecture at a high level and also provides an understanding of the components that make up the architecture and the relationships between the components. A user community that desires to interchange components and to interoperate with systems requires such an understanding of the components. And therefore is a strong motivating force for the generation of reference architectures.
It is important to understand that patterns are not independent entities. The design patterns that are present at a high level of abstraction will influence the manner of applying other patterns at the lower levels of abstraction. In addition, patterns often collaborate with one another. The implication is the selection of an architectural pattern will likely influence the choice of component-level design patterns, which have the most effect (Pressman, 2010). Further, if selecting a specific interface design pattern, this can result in the need to use other patterns that collaborate with it.
Software engineering is important in today’s society because we use the products of software engineering almost daily. We use the products of software engineering in objects as simple as our car keys to objects as complicated as supercomputers. The past, present, and future of software engineering is quite interesting. This paper will provide information about this field of study and why software engineering is going to be around a while.