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.
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.
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.
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.
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.