Propostas Submetidos

DEI - FCTUC
Gerado a 2024-05-17 04:29:46 (Europe/Lisbon).
Voltar

Titulo Estágio

Correctness by Design in large-scale software systems

Áreas de especialidade

Engenharia de Software

Engenharia de Software

Local do Estágio

Hybrid: Remote and Lisbon or Porto office; (BNP Paribas Colombo Office - R. Galileu Galilei 2, 1500-392 Lisboa, Portugal) (BNP Paribas Urbo Office - URBO Business Centre Rua Henrique Pousão, 900, Pisos 4 e 5 4460-284, Sra. da Hora, Matosinhos, Portugal)

Enquadramento

BNP Paribas’ Global Markets (GM) department offers a broad range of products and services in the global interest rates, credit, currency, equities & commodity markets to help their franchise of client find effective ways to raise and invest capital as well as manage their exposure to risk. It has scale and reach to conduct business anywhere in the world and deliver products denominated in almost all of the world’s currencies.
The GM Quantitative Research (GMQR) division is in charge of the modelling, pricing and risk management developments for the entire offering of products of the GM activity, having in their remit extensive large-scale code base of analytics software libraries (the bigger code bases’ reach the order of a few millions lines of code) developed in a different programming languages (e.g.: C++, Ada, Python, C#, Java, Go, Rust, Haskell, etc.), and some are targeted to be run in multiple OS (e.g. Windows, Linux). The division is composed by almost 200 people, spread across the world with people in EMEA (London, Paris, Lisbon, Porto, Brussels, and Frankfurt), AMER (New York and Sao Paolo) and APAC (Singapore and Hong Kong).

This thesis will be performed in collaboration of the GMQR Compute team, who is responsible to manage, develop, deliver, maintain and support of GMQR cross-asset analytics software libraries, is responsible to all computational aspects of the GMQR division, and to oversight of the computational resources for the Front Office of GM.
The analytics developed by the GMQR division are used in indicative pricing tools (developed by GMQR and used internally by traders, structurers, sales and externally by other banks), or official risk engines, booking systems, and pricing tools (developed by GMQR, and/or IT teams), are required to have multiple stages of testing (internal testing done by GMQR, second stage testing done by the main IT host systems), and are required to be validated by the RISK department, and by internal and external auditors. Every day several bugs might be introduced in the code base, and each bug might represent millions of euros of loss, if they are discovered too late in the build, develop and deploy tool chain.

Objetivo

The main objective of the thesis is to apply techniques aimed at guaranteeing correct by design code in BNP Paribas' Fixed Income Software Library, which is a large-scaled software system. This is split into:
> Onboard a subset static analysis in the main build configurations from the currently separated long time consuming static analysis build. The goal is to perform and analysis that measure the impact on build time and on expected bugs detected on an early stage, to act as an active blocker from issues to enter the master branch. To achieve this goal, existing techniques might need to be adapted, or new techniques might need to be developed.
> Proposal and implementation of a framework to perform dynamic analysis checks on the full set of non-regression tests (to be run over 10k tests). The objective is to develop a framework that is able to identify problems with different time scales (e.g. expected to identify x types of issues within 24h, y types of issues within a week time frame, etc)
> Implementation of code coverage techniques to the Fixed Income Library

Plano de Trabalhos - Semestre 1

The work plan for the 1st semester would be way too extensive if done in a high level of detail. It is only expected that the student covers briefly the topics mentioned in points 1-3 so that the student can discuss and create a feasible work plan with the help of the supervisor
1. Research and concrete definition of the state of the art on:
o Static Analysis Techniques
o Dynamic Analysis Techniques (e.g. Address Sanitizers, Undefined Behavior Sanitizers, etc)
o Coverage (e.g. Injection-based / perf event-based techniques)
2. Overview on windows and linux internals similarities and differences
o Linux/Unix literature (e.g. [1][2][3][4][5][6])
o Windows Internals / sysinternals literature (e.g. [7][8][9])
3. Planning and proposal of the work plan for the second semester

Plano de Trabalhos - Semestre 2

In the second semester it is expected that the work plan is followed
1. Familiarization with BNP Paribas Fixed Income Framework
1.1. Build-Test-Release Chain
1.2. Existing Static Analysis setup outside the main build configuration
1.3. Existing Dynamic Analysis solutions for unit test
2. Implementation of the proposed solution
2.1. Onboarding static analysis checks within main build configuration
2.2. Development of dynamic analysis framework for non-regression tests
2.3. Development of tooling to perform code coverage and apply it to non-regression framework
3. Impact analysis on the implemented solution and enhancements after analysis and feedback from the team
3.1. Static Analysis: Build time loss vs amount of bugs caught at an early stage
3.2. Non-Regression Framework: Analysis on computational requirements to perform the checks, and issues expected to be caught per time frame
3.3. Code coverage: Analysis on the computational impact required to apply the coverage in testing, and estimation of what could be the impact of applying the same techniques within production environment
4. Writing the Thesis Report

** The student might be asked to present the work either in the Paris, Lisbon, London or the Paris' BNP Paribas office at the bank's expense

Condições

The student will be able to work remotely, and/or physically in Lisbon or Porto office and will be paid 1150/month for 3.5 months (or the equivalent spread out by 9 months).
Additional conditions might be given to the student.

Observações

[1] The UNIX Time-Sharing System, D. M. Ritchie, K. Thompson
[2] The Design of the UNIX Operating System, M. Bach
[3] Advanced Programming in the Unix Environment, W. Richard Stevens
[4] The Linux Kernel (The Linux Kernel (tldp.org))
[5] Linux System Programming, R. Love
[6] Linux Kernel in a Nutshell, G Kroah-Hartman
[7] Windows Internals (Part 1 and Part 2), P. Yosifovich, A. Ionescu, M. Russinovich, D. Solomon
[8] Sysinternals website (Sysinternals - Sysinternals | Microsoft Learn)
[9] Mark Russinovich blog (Mark's Blog | Microsoft Learn)

Orientador

Pedro Alexandre Malva Correia
pedro.correia@bnpparibas.com 📩