To be successful in the oil and gas industry, software products must be open and extensible to allow oil companies, who fervently protect their intellectual property from competitors, implement proprietary workflows, integrate their own algorithms, or leverage their home-grown computation engines. However, introducing extensibility to software products that were not built with extensibility in mind typically requires extensive re-engineering. More so, even products that were designed to be modular cannot afford to simply publish their internal APIs as they would trade extensibility for agility, ability to rapidly respond to market needs and consequently lose to competition. API stability is not easy to achieve for rapidly evolving products. It requires forward thinking design decisions and strict usage of API patterns that can evolve without jeopardizing investments in plugin code. Introduced in 2007, the Ocean* software development framework enables seamless integration of a company's specialized applications or intellectual property inside the Petrel* E&P software platform. It allows geoscientists to focus on new workflows to solve oil and gas challenges, and developers to focus on innovation rather than on infrastructure. Ocean was a major contributor to the commercial success of Petrel. Based on this success, Schlumberger decided to build Ocean framework for other commercial software products as well. As these are well established, but rapidly growing, software products, introducing a stable layer of APIs into the ever evolving codebase presents a challenge comparable to replacement of jet engine without landing the aircraft. Jan will present lessons learnt from retrofitting plugin extensibility into existing software products. Namely, this will include the architectural considerations and different plugin models, technology choices, different deployment challenges, assuring API stability and backward compatibility, testing strategy and process best practices for development of high quality evolvable APIs. |