Vulnerability Detection

Our research on Vulnerability Detection aims to help developers build secure software systems by learning from past security issues and their fixes. We specifically leverage program analysis and machine learning to detect, localize and ultimately fix vulnerabilities in software systems.

Key Research Areas:

  • Program Analysis
  • Deep Learning
  • Instance Learning
  • Contrastive Learning
  • Graph Neural Networks
  • Vulnerability Datasets

Research Contributions:

  • Frameworks for evaluating vulnerability detection techniques
  • GNN-based vulnerability detection models

DNN Modularization

Our research on modularization of deep neural networks (DNNs) focuses on developing methods and tools that decompose DNNs into reusable, interpretable, and adaptable modules. By applying software engineering principles to AI systems, we aim to improve the reusability, maintainability, and evolvability of modern deep learning models.

Key Research Areas:

  • Deep Learning
  • DNN Architecture
  • Analysis of DNN Internal Representations
  • DNN Structured Decomposition

Research Contributions:

  • Activation-driven training for building modular DNNs with reusable components
  • A PyTorch-based framework for end-to-end DNN modularization and reuse
  • Visualization tools to analyze the emergence of functional modules during DNN training

Software Modernization

Our research in architectural modeling and analysis focuses on developing techniques and tools for modeling and analyzing software architectures. We create formalisms, languages, and tools that help architects represent, visualize, and evaluate architectural designs to ensure quality attributes and system properties.

Key Research Areas:

  • Architectural Restructuring
  • Service Decomposition
  • Architecture Analysis and Evaluation Techniques
  • Quality Attribute Analysis of Service Decompositions
  • Architecture Visualization and Documentation

Research Contributions:

  • Development of architectural modeling languages
  • Techniques for analyzing architectural properties
  • Tools for architecture design and validation

Out-of-Distribution Detection

Our research in architectural modeling and analysis focuses on developing techniques and tools for modeling and analyzing software architectures. We create formalisms, languages, and tools that help architects represent, visualize, and evaluate architectural designs to ensure quality attributes and system properties.

Key Research Areas:

  • Deep Neural Networks

Research Contributions:

  • Development of out-of-distribution detection techniques

LLM-based Automated Code Generation

Our research in architectural modeling and analysis focuses on developing techniques and tools for modeling and analyzing software architectures. We create formalisms, languages, and tools that help architects represent, visualize, and evaluate architectural designs to ensure quality attributes and system properties.

Key Research Areas:

  • Evaluation Strategies to Assess Code Quality

Research Contributions:

  • Development of systematic evaluation framework of code correctness

Sustainable Architecture

Our research in architectural modeling and analysis focuses on developing techniques and tools for modeling and analyzing software architectures. We create formalisms, languages, and tools that help architects represent, visualize, and evaluate architectural designs to ensure quality attributes and system properties.

Key Research Areas:

  • Architectural Description Languages and Notations
  • Formal Modeling of Software Architectures
  • Architecture Analysis and Evaluation Techniques
  • Quality Attribute Analysis in Architecture
  • Architecture Visualization and Documentation

Research Contributions:

  • Development of architectural modeling languages
  • Techniques for analyzing architectural properties
  • Tools for architecture design and validation

Architectural Modeling and Analysis

Our research in architectural modeling and analysis focuses on developing techniques and tools for modeling and analyzing software architectures. We create formalisms, languages, and tools that help architects represent, visualize, and evaluate architectural designs to ensure quality attributes and system properties.

Key Research Areas:

  • Architectural Description Languages and Notations
  • Formal Modeling of Software Architectures
  • Architecture Analysis and Evaluation Techniques
  • Quality Attribute Analysis in Architecture
  • Architecture Visualization and Documentation

Research Contributions:

  • Development of architectural modeling languages
  • Techniques for analyzing architectural properties
  • Tools for architecture design and validation

Component-Based Development

Our research in component-based development explores methods for building software systems from reusable components. We investigate component composition, interaction patterns, and reuse strategies that enable developers to construct systems more efficiently and reliably.

Key Research Areas:

  • Component Composition and Integration
  • Component Interaction Patterns
  • Component Reuse Strategies
  • Component-Based System Design
  • Component Interfaces and Contracts

Research Contributions:

  • Frameworks for component composition
  • Techniques for component interaction analysis
  • Methods for effective component reuse

Distributed, Heterogeneous, and Resource-Constrained Systems

We address unique challenges in developing software architectures for distributed, heterogeneous, and resource-constrained devices. Our research explores how to design architectures that operate effectively across different platforms, devices, and environments with varying resource constraints.

Key Research Areas:

  • Architecture Design for Distributed Systems
  • Heterogeneous System Integration
  • Resource-Constrained Device Architectures
  • Cross-Platform Architectural Patterns
  • Adaptive Architectures for Varying Resources

Research Contributions:

  • Architectural patterns for distributed environments
  • Techniques for managing heterogeneous systems
  • Optimization strategies for resource-constrained devices

Architecture-Based Self-Adaptation

Our research in architecture-based self-adaptation investigates how software architectures can autonomously modify their behavior and structure in response to changing conditions, requirements, and environments. We develop techniques and frameworks that enable systems to adapt while maintaining architectural integrity.

Key Research Areas:

  • Self-Adaptive Architectural Patterns
  • Runtime Architecture Modification
  • Adaptation Strategies and Mechanisms
  • Maintaining Architectural Consistency During Adaptation
  • Adaptation Decision-Making Frameworks

Research Contributions:

  • Frameworks for self-adaptive architectures
  • Techniques for safe runtime adaptation
  • Methods for evaluating adaptation effectiveness

Event-Based Middleware Technologies

We investigate event-based middleware technologies that support architectural styles and patterns. Our research explores how event-driven architectures can be implemented, managed, and optimized to support scalable, loosely-coupled software systems.

Key Research Areas:

  • Event-Driven Architectural Patterns
  • Middleware for Event-Based Systems
  • Event Processing and Routing
  • Event-Based System Scalability
  • Integration of Event-Based Middleware with Architectures

Research Contributions:

  • Event-based middleware frameworks
  • Techniques for event processing optimization
  • Patterns for event-driven system design