-
Requirements Analysis
-
In this phase, our team works closely with key stakeholders to discover, analyse, define and briefly document the product requirements. We use Design Thinking threads to provide our clients with the best solutions to complex problems, through interactive and dynamic designs. It consists on empathising with clients, creating prototypes, gathering user feedback, and evaluating decisions, through an iterative approach. These practices avoid delays during implementation due to significant changes resulting from misunderstood users' needs and inappropriately defined requirements. Using this approach it is very likely that the final outcome meets client expectations.
-
Planning
-
Having defined the project scope in partnership with our clients, a high-level and long-term implementation roadmap is created with specific release points. Our forecast of the project evolution over a period of time will allow us to make date commitments and plan resources, keeping in mind that the key for agile planning is to not just plan up front but continually throughout the project. By continuous planning, our team can learn from the work we’re executing. The first sprint is planned in detail at its beginning and, later on, each upcoming release is planned at its corresponding moment.
-
Software Design & Architecture
-
Once the requirements are established, the design of the deliverables are conceptualised. We strive on designing software products that end users will be able to manage in an intuitive, simple and enjoyable way. We use a combination of approaches to design and structure our solutions thus containing diversity within the digital stack.
We use a Domain Driven Design (DDD) process for unfolding petroleum domain complexity. By establishing a common and ubiquitous language related to the domain model of the project, our team often finds communication throughout the entire development life cycle to be much easier. This approach also improves flexibility. Since DDD is based on object-oriented analysis and design, nearly everything within the domain model will be modular and encapsulated, thus enabling regular and continuous changes and improvements. Through DDD, we focus on creating a product that resonates well with the audience associated with its domain, rather than emphasizing on the UI/UX.
Our solutions are also Cloud-native. Cloud computing is ideal for complex upstream operations: its multi-vendor, multi-partner environment and large volumes of data require strict security and easy sharing options.
It is well known that cloud applications are best deployed as a collection of services. Our team integrates microservices into Service-oriented architecture (SOA) based systems by employing SOA at an enterprise scope, as it exposes services through standardized interfaces between applications, and Microservices Architecture at an application scope, as it focuses on the structure and components within an application. Domain specific use cases are isolated into small, independent, and reusable services that communicate over well-defined APIs. This architecture enables scalability and efficiency.
-
E&P Interoperability Compliance
-
Our products are also designed according to the industry best practices and international standards, for example: for petroleum production data management we use PRODML (XML-based standards). Our clients benefit when these standards are used by gaining increased interoperability and easy adoption, enabling them to effectively execute their E&P information sharing and business process integration strategies, through common data interfaces needed to ensure plug-and-play access to diverse hardware and software solutions.
Our clients can be confident that the application solution will run and integrate into their IT environments!
-
Implementation & Testing
-
Our implementation roadmap is delivered to clients with agreed upon milestones that have business-valuable features.
Our team follows a Test Driven Development (TDD) approach: tests are often written for a piece of required functionality inclusively before code implementation. The main goal of TDD is specification and not validation: it’s one way to think through the product requirements or design before writing functional code. Key benefits: high productivity achieved by narrowing focus, safer refactoring, fewer bugs, reduced time spent on rework, improved software quality, maintainable, flexible & easily extensible code, etc.
Our entire development team is responsible for executing tests, ensuring that all the requirements of the stakeholders are correctly implemented. Tests are automated, assuring consistent test coverage and reproducibility. Automating testing makes Continuous Integration and Continuous Delivery practices possible. Tests are carefully designed and executed exhaustively in order to provide the greatest confidence, security and quality possible to our customers.
-