Why OCI?

OCI software engineers possess extensive OO industry experience and offer leading-edge experience in advanced OO technologies. Many of our staff have written textbooks on the technologies we employ. A third of our staff have advanced degrees (PhD and MS). A large percentage also teach our classes. Many publish articles on web sites and are referenced in other articles. Reasoning and communication skills are a significant factor in our hiring decisions.

Our staff also take advantage of our 60 some classes to maintain and enhance their skills.

OCI clients range from global Fortune 500 companies, to start ups, seeking a technical edge. Our specialty is assisting clients in assimilating new technology. Often this is by means of inserting middleware between existing systems and new ones. Sometimes called domain frameworks, this kind of software helps clients minimize disruption as their systems evolve.

How do we compete with Off-shore?

Many businesses feel today that they must go offshore to save money. We don't agree. 

A low hourly rate can often mask the true cost of a long drawn out project. Plus the total cost of ownership for software is driven by the cost  of change. Software must be able evolve at the speed of business. Well designed software is designed to accommodate change. Savings from low initial development costs may be offset by later, higher costs associated with extending the software.

We believe the primary role of information systems is to help generate revenue or save money. So the real issue is "Time to Payback". At what point is the investment in the project paying back. Cost savings, or new revenues that justify an IT project are often several times the cost (3 to 1, 5 to 1 etc.). For this reason delivering a project, just a few months earlier, can pull in savings that overwhelm the cost, before the market changes and the cost savings are not as good.  Cost benefits analyses often get overtaken by events. Time is of the essence, in assuring benefits are in fact obtained.   

Conversely: projects delayed, (in their implementation), may never fully realise their investment, as time often diminishes the competitive value of the new technology.

Today, low off-shore rates appear to be a challenge, but hourly cost is only part of the picture. We know that US software consulting companies can still compete very effectively with value: In OCI's case....

  • We do it by not being a "reseller" or vendor specific shop. We work only for the client. We have no other agendas.
  • We engage in knowledge transfer to the client. The more they understand the more they appreciate what is happening and participate as partners. Eventually they  will own the system, so they must understand it.
  • We deliver frequently, to ensure that as requirements change we get their quick feedback. Requirements is a living document reflecting changing business conditions.
  • We design projects with 4-8 month horizons. Clients must see a fast and early payback. Where projects are concerned, too long.... is too late.
  • We architect for open systems so that clients can select from a wider source than one supplier.
  • We design systems so as to minimize change in one area, impacting another. Our approach encapsulates risk.
  • We provide our staff with constant training to maintain our edge in the latest in techniques and skills.
  • We use lots of open source /free software to avoid expensive proprietary software, or projects having to commit to vendors and their products, while the design approach is still being evaluated.
  • We grow our staff by mentoring with seasoned engineers and have a high retention rate. All our staff know each others capabilities, so we work as a team. Often, when recalled to a second engagement we can staff it with many of the same engineers, who now have client domain expertise. 
  • We collocate our team members during the delivery/shakedown to ensure good interaction and transition. (Our staff are already in the US and thus have no visa restrictions.)  
  • We provide "after delivery" product support including 24 by 7 support. 

We work with clients at every stage of the project. The following are some of the many areas we can provide skilled staff.

Project Planning and Estimating

It is our goal to give you a realistic estimate of the cost of your project before we start work. Further we will incorporate your work team from the start to promote ownership and visibility into the project schedule. We can provide project planning and management as required. Frequent progress meetings and inclusion of updated requirements means we can constantly assess how well we are doing at meeting your time and budget goals.  

Technology Transfer

You, the client, are the eventual owner of the implementation. It is essential that you feel as much ownership in the solution as we do. With that objective in mind, we provide you with the technical information and a degree of understanding, such that you can support the project long after we have left.

Only when clients have full undertanding of the problem and solutions offered can they truly appreciate our value proposition.

Performance Tuning

In light of today’s compressed development cycles, multi-tiered architectures, and complex technologies, many organizations are challenged to get stable enterprise applications out the door in a timely manner.

Often when they do, they discover they do not scale, or meet response times.

Devoting a small, but continuing, amount of energy throughout the development process to identify, and then correct, performance issues dramatically lowers the risks and costs associated with delivering functional but poorly performing applications.

Testing and Validation

You cannot improve what you cannot measure. Reviews and tests are critical part of our "no surprises" development process. Our staff build into the project plan the rigorous testing and quality assurance reviews to guarantee the software is implemented in consonance with the requirements. We have adopted the best coding practices for the OO languages we use. We test extensively to verify your projects meet both the functional and performance requirements.

We can also help you analyze and document the performance of the various software products you may be evaluating, to make sure they meet your criteria.

By using regression testing we can minimize surprises and disruption to your production systems as new versions are introduced.

Our experience with OO development techniques enables us to help you redefine your process and take advantage of OO for parallel development. We also have experience with open source software tools, which can enhance aspects of your process in a cost effective manner.

Embedded Systems Development

OCI development labs include many RTOS and board level target systems enabling us to do projects requiring special hardware and software combinations, and cross platform development.

We are now seeing more use of DSPs and FPGAs as clients look for very specific hardware leverage for their software solutions. Not only can OCI develop on targets but we can create cross-platform development environments that facilitate the easy movement of developers and their code from hosts to targets.

Mixed Language Frameworks

OCI engineers can combine Java,C# and C++ applications through CORBA, RMI, IIOP/IIOP.net and XML to give clients a suite of interoperable elements that match their needs, from the easy to develop Java GUI/client environment, all the way to the most demanding, mission critical, deterministic server behavior available with C++.

Legacy applications (C, COBOL, Ada) can also be included by the use of wrappers and other techniques. You do not need to throw away investments that are still useful just because some aspects of the system are using contemporary technologies.

Technology Investigations

Our senior staff is skilled at evaluating and profiling the real capabilities of new technologies. Based on early requirements sets from clients, we develop rapid prototypes, under contract, to calibrate the maturity of these new technologies.

Architectural Partnership

Opening your Systems: The purpose of any architecture is to accommodate change. OCI architects work with clients to define systems that employ a combination of open standards and architectural principles. Such open approaches protect your investments of the past, while leaving open your options for the future. OCI's goal is to ensure open systems for you. OCI provides additional architectural support to the client at the start of new projects. This enables clients to leverage our experience, to achieve results more quickly and to identify those risk factors that are not always obvious. Together we can plan mitigating tactics such as alternative approaches, prototyping, training or parallel development. 

Model Driven Architecture

The benefits of MDA are significant to business leaders and developers alike. MDA provides a solid framework that frees system infrastructures to evolve in response to a never-ending parade of platforms, changing business needs, while preserving and leveraging existing technology investments.

As some companies move coding off-shore to reduce costs, others choose to automate their code development, using model based code generation to speed up code development and gain strategic advantage. MDA enables management of complex dependencies allowing elaborate systems to evolve without loss of control.

OCI has used such techniques for the development of some large sophisticated systems.

Click here for more information on MDA.

Multi-threading

Background

Power and heat limitations in server rooms are driving hardware manufacturers to exploit multi-chip, and multi-core approaches. In general, multi-core microprocessors allow a computing device to exhibit some form of thread level parallelism (TLP) without including multiple microprocessors in separate physical packages. This form of TLP is often known as chip-level processing or CMP. This novel packaging technique can often improve performance without demanding more heat and causing a demand for more cooling.

The more functionality that stays on the chip, the more efficient the process. (Going off the chip increases path time and thus latency.)  If the compiler and operating system can combine to can take full advantage or opportunities for parallelism in the code there can be dramatic yields in performance.  

Conversely there is a drawback. If the application was not designed with multi-threading in mind there could be  adverse affects. Race conditions being the most common.

The Problem

A majority of mission critical software was not written with multi-threading in mind. There was little perceived benefit if there was no hardware capability to utilize it. Now that the capability is becoming prevalent, issues are emerging.

  1. The software cannot fully leverage the hardware. The investment is not producing the expected yield. Performance is not as forecast.
  2. Software that had run satisfactorily for years is suddenly becoming unstable.
  3. License charges for proprietary software may be rising on multi-core systems without an offsetting improvement in application behavior.
  4. There may be inadaquate documentation covering the multi-threading model employed resulting in a difficult debugging process as the developers try to uncover the real behavior in this new environment.
  5. Skills for design and development of multi-threaded systems are sadly lacking. Existing systems must analyzed and then redesigned to be thread safe. Solving race conditions, one at a time, is not time/cost effective. 

OCI can help!

Large scale, real-time distributed systems can have many of the same issues found in the multi-core systems, if they have not been designed with threading mind. OCI is experienced with the opportunities and pitfalls afforded by multi threading. 

Frameworks such as ACE, Boost and CORBA can support large scale implementations through their use of patterns that support thread safe programming. 

OCI consultants can help you with debugging your applications and refocusing their design on a multi core approach. Conatct sales for more details.

Copyright © 2006 Object Computing, Inc. All rights reserved. | Privacy Policy