- Logic, programming, and type systems
- Software System Performance and Reliability
- Parallel Computing and Optimization Techniques
- Formal Methods in Verification
- Cloud Computing and Resource Management
- IoT and Edge/Fog Computing
- Software Testing and Debugging Techniques
- Shoulder and Clavicle Injuries
- Embedded Systems Design Techniques
- Natural Language Processing Techniques
- Service-Oriented Architecture and Web Services
- Network Security and Intrusion Detection
- Advanced Malware Detection Techniques
- Shoulder Injury and Treatment
- Software Engineering Research
- Advanced Software Engineering Methodologies
IBM Research - India
2022-2024
Indian Institute of Technology Bombay
2014-2017
Dealing with ageing software is a reality of the industry, and even open source systems. This great opportunity for engineering researchers to apply traditional techniques program analysis solve problems refactoring modernization. The generative AI advancements have opened up whole new world possibilities tasks such as code generation, translation, bug fixing among others. Industry keen on exploring scalable solutions refactoring, automated testing now automatic generation.
With the growing sizes of data structures allocated in heap, understanding actual use heap memory is critically important for minimizing cache misses and reclaiming unused memory. A static analysis aimed at this difficult because locations are unnamed. Using allocation sites to name them creates very few distinctions making it identify that not used. Heap liveness using access graphs solves problem by (a) a storeless model naming with paths, (b) representing unbounded sets paths (which...
For decades, mainframe systems have been vital in enterprise computing, supporting essential applications across industries like banking, retail, and healthcare. To harness these legacy facilitate their reuse, there is increasing interest using Application Programming Interfaces (APIs) to expose data functionalities, enabling the creation of new applications. However, identifying exposing APIs for various business use cases presents significant challenges, including understanding code,...
Enterprises in their journey to the cloud, want decompose monolith applications into microservices maximize cloud benefits. Current research focuses a lot on how partition smaller clusters that perform well across standard metrics like coupling, cohesion etc. However, there is little done taking partitions, identifying dependencies between microservices, exploring ways further reduce dependencies, and making appropriate code changes enable robust communication without changing application...
When microservices are written from scratch, APIs usually made stateless. However, when an existing monolith application is decomposed into microservices, it may not be possible to make all the Therefore, objects transferred via contain pointers. Consequently, data transfer API i.e., a client address space server space, reconstruction at server, and returning become non-trivial operations.Conventionally, between done using JSON, which serializes pointers values that they point to. Once in...
A points-to analysis computes a sound abstraction of heap memory conventionally using name-based that summarizes runtime by grouping locations the names allocation sites: All concrete allocated same statement are grouped together. The in group treated alike i.e., pointer to any one location is assumed point every leading an over-approximation relations.
The original liveness based flow and context sensitive points-to analysis (LFCPA) is restricted to scalar pointer variables pointees on stack static memory. In this paper, we extend it support heap memory expressions involving structures, unions, arrays, arithmetic. key idea behind these extensions involves constructing bounded names for locations in terms of compile time constants (names fixed offsets), introducing sound approximations when not possible do so. We achieve by defining a...
Enterprises in their journey to the cloud, want decompose monolith applications into microservices maximize cloud benefits. Current research focuses a lot on how partition smaller clusters that perform well across standard metrics like coupling, cohesion, etc. However, there is little done taking partitions, identifying dependencies between microservices, exploring ways further reduce dependencies, and making appropriate code changes enable robust communication without modifying application...
A points-to analysis computes a sound abstraction of heap memory conventionally using name-based that summarizes runtime by grouping locations the names allocation sites: All concrete allocated same statement are grouped together. The in group treated alike i.e., pointer to any one location is assumed point every leading an over-approximation relations. We propose access-based partitions each into equivalence classes at program additional criterion sets access paths (chains indirections)...