|
|

|
QuickLinks:
|
Why OCI?
|
Back to top |
|
OCI software engineers possess extensive object oriented industry experience and offer leading-edge experience in advanced object oriented technologies. Many of our staff have written textbooks on the technologies and methodologies we employ in practice. A third of our staff have advanced degrees (M.S. and Ph.D.). A large percentage develop and deliver our training classes. Many publish articles and are referenced by other authors. Reasoning and communication skills are significant criteria in our hiring decisions.
Our engineers refresh and enhance their skills constantly through individual self-paced study, as well as by taking advantage of our training curricula that includes over 45 classes.
OCI clients range from global Fortune 500 companies to start ups seeking a technical edge. We specialize by helping clients assimilate new technology. In many cases this involves inserting middleware between existing systems and new ones. Sometimes called domain frameworks, this approach helps clients minimize disruption and downtime as their systems evolve.
|
Project Planning and Estimating
|
Back to top |
|
OCI provides realistic cost and time estimates for your project before we start work. Furthermore, we incorporate your work team from the start in order to promote ownership, knowledge transfer, and visibility into the project as a whole. In addition, we provide project planning and management as required. Frequent status meetings — incorporating requirements updates and progress reporting — promote continuous project health assessment as a measure of how well we meet your schedule and budget goals.
|
Technology Transfer
|
Back to top |
|
You, the client, are the owner of your project and the solutions that take it to successful deployment. OCI understands you have a significant stake in ownership of the implementation, and we share that with you as an equal stakeholder. With that objective in mind, we provide you the appropriate levels of technical information and understanding, enabling you to support your project long after we have left.
When clients fully understand the solutions and knowledge transfer offered by OCI, they learn to truly appreciate the extent and scope of our value proposition.
|
Performance Tuning
|
Back to top |
|
In light of today’s compressed development cycles, multi-tiered architectures, and complex technologies, deploying stable enterprise applications in a timely manner challenges many organizations.
As a result, they discover problems with scaling, or failing to meet required response times. Devoting a small, but continuing, amount of energy throughout the development process to identify and correct performance issues dramatically lowers risks and costs associated with delivering functional, but poorly performing, applications.
|
Testing and Validation
|
Back to top |
|
You cannot improve what you cannot measure and test. Reviews and tests are a critical part of our "no surprises" development process. We include rigorous testing and quality assurance reviews in project plans to help ensure software is implemented correctly according to requirements. We incorporate best practices for technologies and languages we use. We test often and extensively to verify that projects meet functional and performance requirements.
By using the best regression testing techniques, we minimize defects and disruption to your production systems as they evolve with changing requirements. Our experience with object-oriented development techniques enables us to help you redefine your process and take advantage of object-oriented methodologies for parallel development. Our extensive experience with open source software and tools enables us to add improvements to life-cycle development processes in a cost effective manner.
We can also help analyze and document performance of the various software products evaluated, to help ensure they are appropriate and meet your criteria.
|
Embedded Systems Development
|
Back to top |
|
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 now see more use of DSPs and FPGAs as clients look to leverage specific hardware for their software solutions. Not only can OCI develop on those targets but we can create cross-platform development environments that facilitate the easy movement of developers and their code from hosts to targets.
|
Mobile Computing Solutions
|
Back to to |
|
The cell phone or mobile device is emerging as the target of choice for businesses that need to stay on top. OCI is experienced at developing mobile solutions. We have been developing for the mobile market (connected and/or intermittently connected) since the early days of PDAs: WinCE, WinMobile, Windows Mobile etc. More recently we have seen an upsurge in requests for the Android platform which is gaining momentum.
Android is shrewdly positioning itself as a developer friendly device by its open nature (Java, JVM and its associated open source communities), and by obtaining wide support from both handset manufacturers and service providers/carriers. There are none of the admistrative hoops to jump through in order to host a private application on an Android handset. (Or feel that you are jailbreaking when you do because of the vendor's attitude and relucatnce to make it easy.)
Many development houses try to use the cellphone purely as a web access device. This use of the browser-only capability limits many of the features that might be available if they leveraged the underlying Android libraries to their fullest extent. OCI is skilled at tapping into the full breadth of the Android offerings. This means we are able to provide the user with the richest experience, minimizing bandwidth consumption, and thus reducing response latency.
Leveraging the phone capabilities can enable additional levels of security:
- Use of an application can be tied to a specific phone hardware ID which is unique and registered with a trusted host.
- The application may not be downloaded or updated without checking that ID and comparing with that stored on the host.
- The application may be geographically constrained so that it checks the GPS to see if it should operate in that locale.
- The application may have time constraits and perhaps expires within a given time period, unless it has checked in and revalidated itself with the host, or perhaps it only operates within specific time windows.
- The user can of course be still required to log in through a password protected account so that possesion of the device is not enough, in and of itself, to access the application and system services.
- Multiple failed attempts at logging-in can result in application and account disabling, until the sysadmin revalidates.
- Information can be locally stored, and forwarded later, in the event of temporary signal loss.
Many company applications are now hosted on employee-owned mobile devices. This security model provides a further level of protection in case other users of the phone are tempted to try out an app.
Further hardening of the system can be also achieved through traditional key management and data encryption. This does result in additional overhead but it might just be the price you will pay for peace of mind.
OCI can do full development for you, or if you wish, we offer Android developer training classes and mentoring to ramp up your team.
|
Mixed Language Frameworks
|
Back to top |
|
OCI engineers combine Java, C#, and C++ applications through CORBA, RMI/IIOP, DDS, J2EE, .NET, XML, and other technologies to give clients a suite of interoperable elements that match their needs, Java client-side applications to the most demanding, mission critical, deterministic server behavior available with C++, and everything in between.
The use of wrappers and and other techniques facilitates support for including legacy applications (C, COBOL, Ada). There is no reason to abandon investments that continue to be useful and relevant if other aspects of a system use contemporary technologies. OCI has the experience to make them seamless and interoperable.
|
Technology Investigations
|
Back to top |
|
Our senior-level skills include 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
|
Back to top |
|
Opening your systems: The purpose of any architecture is to accommodate change. OCI architects work with clients to define systems employing a combination of open standards and architectural principles. These open approaches protect your past investments while leaving open your options for the future. OCI goals include ensuring open systems for you. We provide architectural support to clients from the start of new projects. This enables them to leverage our experience, achieve results more quickly, and to identify risk factors that are not always obvious. Together we can plan mitigating tactics such as alternative approaches, prototyping, training, and parallel development.
|
Model Driven Architecture
|
Back to top |
|
Model Driven Architecture (MDA) yields significant benefits 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 and 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 code development and gain strategic advantages. MDA enables management of complex dependencies, allowing elaborate systems to evolve without loss of control.
OCI uses MDA techniques for the development of large, sophisticated systems.
|
Multi-threading
|
Back to top |
|
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 computing devices to exhibit some form of thread-level parallelism (TLP), without using multiple microprocessors in separate physical packages. This form of TLP is known as chip-level processing or CMP. This novel packaging technique improves performance in many cases, without generating increased demands for greater cooling capacity.
The more functionality that stays on the chip, the more efficient the process. Going off the chip increases path time, and thus latency. Compilers working in conjunction with the operating system to utilize opportunities for parallelism in code can provide dramatic yields in performance.
Conversely, there are potential drawbacks. When applications are not designed with multi-threading in mind there adverse affects may result. Race conditions and deadlocks represent the most common and most detrimental pitfalls of ad-hoc multi-threaded code.
The Problem
A majority of mission critical software is not written with multi-threading in mind. The perceived benefits may be low where hardware capability to utilize it is absent. As these capabilities becoming more prevalent, problems with concurrency issues emerge.
- The software does not fully leverage the hardware. The investment doesn't produce expected yields. Performance fails to meet expectations.
- Software that ran satisfactorily for years becomes unstable suddenly.
- License charges for proprietary software may increase on multi-core systems without an offsetting improvements in applications to justify cost.
- Inadequate documentation covering the multi-threading model employed results in difficult debugging processes as developers try to expose the real behavior in this new environment.
- Skills for design and development of multi-threaded systems are sadly lacking. Existing systems require analysis and redesign to become thread safe. Solving race conditions, one at a time, is not time/cost effective.
OCI can help!
Large scale, real-time distributed systems exhibit many of the same issues found in multi-core systems if they have not been designed with threading in mind. OCI is experienced with the opportunities and pitfalls characteristic of multi-threading problems.
Frameworks such as ACE, Boost and CORBA support large scale implementations through their use of patterns that support thread safe programming. OCI consultants can help with debugging applications and refocusing design on multi-core approaches.
|
How do we compete with Off-shore?
|
Back to top |
|
Many businesses feel today that they must go offshore to save money. OCI provides better alternatives.
Low labor rates may mask the true cost of a long drawn-out project. Furthermore, tolerance to change and the cost of change drives the true cost of ownership for software. Software must adapt and evolve at the speed of business. Well-designed software accommodates change with reasonable effort. Savings from lower initial development costs might change to relative losses after higher costs, associated with subsequent enhancement and maintenance, are factored in.
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 does one achieve a return on investment (ROI). 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 early, might result in savings that overtake the cost, and before the market changes and the cost savings can't be realized as forecast. Cost benefits analyses often get overtaken by events. Time is of the essence for assuring benefits are obtained. Conversely, delayed projects may never fully realize their investment, as time often diminishes the competitive value of new technology.
Today, low off-shore rates seem very tempting, but hourly cost is only one of many things to consider. We know that U.S.-based software consulting companies have capabilities to compete very effectively with value. In the case of OCI ,
- We do it by not being a "reseller" or vendor-specific shop. We work for the client. We have no other agenda.
- We engage in knowledge transfer with the client. The more they understand the more they appreciate what is happening and participate as partners. They own the system, so they must understand it.
- We deliver frequently, to ensure that as requirements change we obtain timely feedback. Requirements, as a living document, reflect changing business conditions that need appropriate response times.
- We design projects with 4-8 month horizons. Clients see a fast and early payback. Where projects are concerned, too long means too late.
- We architect for open systems to prevent tying clients to single source suppliers.
- We design systems so that changes don't propagate and cause unnecessary impact to otherwise unaffected components. Our approach minimizes risk and incidental costs.
- We provide our staff with ongoing training and professional development to maintain our edge with the most current techniques and skills.
- We leverage open source and free software extensively from project onset to avoid expensive solutions, such as commitments to single vendors and proprietary products.
- We maintain high levels of staff retention. All our staff know each others capabilities, so we work as a team and mentor each other to develop skills. When recalled to a subsequent engagement with a client, we frequently staff it with engineers from before, with the benefit of retaining prior client domain expertise.
- We collocate team members from OCI during delivery/shakedown to ensure good interaction and transition. Our staff are already in the U.S. and have no visa restrictions.
- We provide "after delivery" product support, including 24/7 support.
- We work with clients during every stage of a project.
|
| Back to top |