Language USA  USA

Architecture / Design

Supported from our private and secure Offshore Development Centers in San Diego, Beijing and Xi”an, China, Objectiva’s experienced product architects collaborate closely with clients to deliver innovative software architecture and design. Utilizing object modeling, object-oriented design, analysis and programming, we pursue a breadth-first approach that emphasizes developing a solid architecture and object-oriented design supporting a working software product. The product is based on the design in the early stages of a project, followed by a refining of the related objects 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:

  • Behavioral model: translates the functional requirements into behaviors that can be visualized in terms of use cases and activity diagrams
  • Logical model: defines the classes that implement the desired behavior and the state diagrams of these classes
  • Component model: shows the collection of classes into software components and the dependencies/interactions among these components
  • Deployment model: maps the software components onto the hardware on which the software product will run

Objectiva uses 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 unnecessarily re-invent. 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 software proudcts we use industry standards and platforms like J2EE, Microsoft .NET, and application servers as a basis for the software, and then build custom objects on top of that.