Software Engineering Techniques Applied to Agricultural Systems: An Object-Oriented and UML Approach (Applied Optimization)