Archive
Talking @ NDC 2011
I am really looking forward to going to the Norwegian Developers Conference this summer, and very exciting to be given the chance to speak at the conference together with two of my colleagues.
This is the abstract of our talk:
Modernizing a large desktop application through vertical porting
Schlumberger’s market–leading desktop seismic–to–simulation software Petrel® helps geophysicists, geologists, and reservoir engineers maximize oil and gas reservoir performance. The first version of Petrel was launched in 1998 and was developed using C++. During the past years, Petrel has gradually adopted C# and .NET technologies through a new managed API, called Ocean, which is built on top of the legacy C++ core and facilitates plugin development. However, significant parts of Petrel still use a stack consisting of C++ for business objects and C++⁄CLI with Windows Forms for the UI (which is also used in the pure C# parts). In order to utilize new technologies such as WPF, increase developer productivity and decrease maintenance cost, replacing the old C++ and C++⁄CLI stack with a pure C# stack as much as possible is desirable.
In this talk, we describe how we did a vertical port of a subsystem in Petrel, the Seismic Attribute system, from a C++⁄CLI⁄Windows Forms stack to a new managed architecture using C# and WPF. Doing a port vertically means porting the entire subsystem at once rather than porting each layer separately. The Seismic Attribute system consists of user interfaces, storage, advanced algorithms and an external interface which enables plugin development of new algorithms with custom user interfaces. Porting the old C++⁄CLI–based system to a new managed architecture is thus no small undertaking.
We will describe the considerations which led to us doing the vertical port versus keeping the legacy system, the WPF–based Model–View–ViewModel (MVVM) design of the new system, how we integrated our new architecture with the rest of Petrel, how we collaborated with teams doing ports of other parts of Petrel, new innovations resulting from the porting work, and – most importantly – mistakes and lessons learned.