Our name, Objectiva, is inspired by our focus on object modeling, object-oriented design, analysis and programming. We pursue a breadth-first approach that emphasizes developing a solid architecture and object-oriented design that allows implementing a working software system based on the design in the early stages of a project, and then refining the objects that make up the system gradually to obtain all required functionality. We consider the software architecture and design the core of a software product; the architecture can be viewed from four complementary models:
We use the Universal Modeling Language (UML) and UML modeling tools to model these four views of the architecture. The development of these models becomes the means through which we gather and analyze requirements, refine the design, and link the design pieces to the code. Having a UML model of the architecture also allows us to approve requirements and design pieces, and yet be able to refine and evolve them during coding without losing trace of how the refinement affects the code.
The UML models become a primary means of documenting the object-oriented design and communicating with developers, testers, technical writers, and business stakeholders about how the software product will deliver the needed functionality.
Within the UML models, our design methodology focuses on defining interfaces among objects and components first then designing the internals of each object. We also apply the 80/20 rule to get 80% of the functionality working in 20% of the time rather than obsessing about a single object and risk not delivering the software. We achieve this by making sure not to re-invent the wheel. For example, we use design patterns that fit the requirements of a project to establish a basis for the software design rather than developing every design from scratch.
For enterprise software systems, we use industry standards and platforms like J2EE, Microsoft .NET, and application servers as a basis for the enterprise software and then build custom objects on top of that.