Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Physically-based visual simulation on graphics hardware
Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware
Automatic Detection of Design Problems in Object-Oriented Reengineering
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Multiagent diffusion and distributed optimization
AAMAS '03 Proceedings of the second international joint conference on Autonomous agents and multiagent systems
Subtext: uncovering the simplicity of programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Collaborative diffusion: programming antiobjects
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Coordinating microscopic robots in viscous fluids
Autonomous Agents and Multi-Agent Systems
Agent coordination by trade-off between locally diffusion effects and socially structural influences
Proceedings of the 6th international joint conference on Autonomous agents and multiagent systems
Towards harmony-oriented programming
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Hi-index | 0.00 |
Software evolution draws its complexity from a variety of factors, including extensibility, maintainability, and the difficulty of changing a program's design. It is widely accepted that even well-designed object-oriented programs can become brittle as they evolve, because their design has to be fixed at some point, and the more their implementation has progressed, the more difficult it becomes to adjust object interfaces and relationships. We assert that the complexity of software evolution can be reduced by relaxing strong encapsulation and information hiding, and introducing concepts such as continuous information flow. These principles are captured in harmony-oriented programming, a paradigm inspired by concepts of Asian philosophy, such as harmony, resonance, and fields of interactions. This paper illustrates the constructs of harmony-oriented programming and several studies aimed at showing that, in comparison with traditional object-oriented programming, harmony-oriented programming is a more suitable approach for dealing with software evolution effectively.