Projects

Current Projects

 

Untitled

SEALANT is an integrated technique that protects vulnerable ICC paths on which malicious interapp attacks can take place at runtime. SEALANT automatically identifies vulnerable ICC paths between a given set of apps. It then inspects each intent sent via those paths to detect potential attacks, and enables end-users to block the attacks before they actually take place. Learn more…

DEvA

DEvA is the first static analysis technique to detect event races in Android applications and event-based systems. This technique outperformed existing approaches.  By employing this technique, we were able to find several unknown bugs in several Android applications and libraires, and also in many non-Android event-based systems. Learn more …

CoDesign_Logo_Med

CoDesign is a highly extensible, event-based, collaborative software modeling framework that provides real-time synchronization and model consistency checking via multiple third-party plug-ins. In CoDesign, model changes are automatically propagated to geographically distributed users, and users are automatically notified of various types of conflicts upon concurrent modifications. CoDesign’s architecture is particularly focused on achieving high levels of extensibility and scalability. Learn more …

software_rejuvenation_logo

According to a recent study by Cambridge University, software bugs cost the global economy $312B annually. Finding and fixing bugs, i.e., software system maintenance, dominates other software development activities. In order to obtain the proper context for maintenance, engineers need to understand a software system’s underlying architectural design. However, continued understanding of the architecture of a system that may be in use for 20-30 years is challenged by the common, related phenomena of architectural drift and erosion.  Drift and erosion are caused by careless, partially thought through, and unintended addition, removal, and/or modification of design decisions over time. Eventually, the implemented system’s underlying architecture is badly degraded and its code has become very complex, or the system’s architecture is out of sync with the documentation and/or the engineers’ understanding of that architecture. This makes system maintenance prohibitively difficult and costly.

To deal with this, software systems must undergo periodic rejuvenation.  Software system rejuvenation is the two-step process of
(1) determining a system’s actual underlying architecture from the system’s implementation (also known as architecture recovery), followed by
(2) using that recovered architecture to initiate a clean-up of the code (also known as implementation refactoring).

Learn more…

Previous Projects

Tile_Logo_Med

The tile style is a biologically-inspired architectural style for distributing computation on large insecure networks such as the Internet. The tile style allows one to use a large network to solve a computational problem without telling the nodes on the network the algorithms and input to that computation. For example, one can use the tile style to decode an encrypted message with the help of the Intenet, without anyone on the Internet knowing the encryption and the encoded and decoded messages. Learn more…

 

SWSA_Logo_Med

The in silico process is a scientific methodology which relies on computer processing and simulation as the primary means of experimentation. Scientific workflows are an area of computer science research poised to greatly impact the way scientists conduct in silico research. They are not widely applied, though, because current workflow systems require scientists to manage engineering aspects of workflow design as well as the science being conducted. SWSA is a domain specific software architecture for scientific software in workflow systems that can abstract engineering aspects of workflow design from the scientist while giving design guidance for the composition of algorithms, reducing time-to-integration.

 

XTEAM_Logo_Med

The eXtensible Tool-chain for Evaluation of Architectural Models (XTEAM) implements a model-driven engineering (MDE) approach to software architecture that combines extensible modeling languages based on architectural constructs with a model interpreter framework that enables rapid implementation of customized dynamic analyses at the architectural level. XTEAM consists of a suite of architecture description language (ADL) extensions and model transformation engines targeted specifically for highly distributed, resource-constrained, and mobile computing environments. XTEAM model transformations generate system simulations that provide a dynamic, scenario- and risk-driven view of the executing system. XTEAM provides the extensibility to easily accommodate both new modeling language features and new architectural analyses. Learn more…

 

Disco_Logo_Med

Ever-growing amounts of data that must be distributed from data providers to consumers across the world (especially in scientific domains) necessitate a greater understanding of the software architectural implications of choosing data movement technologies. Currently, this understanding is mired in the minds of software architects who have “been there before,” and who rely on past intuition and choices, failing to properly document their rationale and context. To recify this situation, we have developed a software architecture-based decision making framework called DISCO for selecting data movement technologies, or software connectors. DISCO effectively captures (traditionally undocumented) insight, observation and ultimately architectural knowledge about the connectors, demonstrating the effectiveness of using such information to accurately encode the connector selection decision making process. Learn more…

 

Glide_Logo_Med

GLIDE provides a suite of grid services (e.g. resource discovery, resource description and search and retrieval) layered on top of an event-based middleware for resource-constrained devices. Programmers use GLIDE’s Product Server component to abstract away interfaces to heterogeneous underlying resources (e.g. websites, file systems and storage systems). Profile Server components describe the type and location of resources in a GLIDE system deployment. Query Servers are GLIDE components which are used to integrate and aggregate resources that satisfy a particular query, and deliver the aggregrate resources back to the requestor. Since GLIDE was developed using the Prism middleware, programmers and designers can design their grid systems at the architectural level. Learn more…

 

ADaPT_Logo_Med

Researchers with deep knowledge of scientific domains are becoming more interested in developing highly-adaptive and irregular (asymmetrical) parallel computations, leading to development challenges for both delivery of data for computation and mapping of processes to physical resources. Using software engineering principles, we have developed a new communications protocol and architectural style for asymmetrical parallel computations called ADaPT. Utilizing the support of architecturally-aware middleware, ADaPT provides an efficient solution in terms of message passing and load balancing. Additionally, developers using ADaPT gain significant windfall from good practices in software engineering, including implementation-level support of architectural artifacts and separation of computational loci from communication protocols.LRP-614 >> C2010-508 >> PEGACSA71V1 >> HP2-Z34 >> NS0-506 >> 9L0-521 >> N10-006 >> 1Z0-507 >> HP0-S42 >> 9A0-142 >> CISSP-ISSMP >> 300-320 >> 070-457 >> 1Z0-808 >> C_TB1200_90 >> 70-347 >> 352-001 >> HP2-N46 >> OMG-OCUP-100 >> 1Z0-117 >> NSE4 >> C2060-220 >> GCIH >> 210-060 >> M70-201 >> C2180-401 >> 101-400 >> 70-461 >> 1Z0-533 >> JN0-690 >> M2090-626 >> JN0-322 >> OG0-092 >> 010-151 >> JN0-100 >> MB2-708 >> CSSGB >> 400-101 >> MB6-700 >> M70-301 >> BH0-006 >> C2090-311 >> OG0-093 >> 70-487 >> EX0-117 >> SSCP >> 1Z1-060 >> 70-534 >> JN0-694 >> 200-125 200-125 200-125 200-125 200-125JN0-63370-464250-319MB2-707M2090-733C_TPLM30_661Z0-2281Z1-5071Z0-2419L0-0121Z0-051210-4511Z0-05870-494200-120HD0-100210-065C9510-317EX200HP0-M101220-802

300-320  
220-902  
NS0-157  
70-532  
101-400  
70-413  
70-461  
400-101  
300-208  
CCA-500  
EX300  
1Z0-804  
200-125  ,
102-400  
AWS-SYSOPS  
EX300  
200-101  
300-115  
220-801  
100-105  ,
CCA-500  
70-410  
9L0-066  
70-178  
2V0-621D  
100-101  
JK0-022  
ITILFND  
70-417  
NS0-157  
220-802  
AWS-SYSOPS  
70-462  
350-030  
300-135  
ITILFND  
HP0-S42  
101  
210-060  
350-001  
70-246  
300-320  
220-802  
200-310  
2V0-621D  
1Z0-060  
350-029  
101-400  
MB2-704  
70-417  
70-534  
MB6-703  
200-125   ,
220-902   ,
100-105   ,
220-902   ,
300-101   ,
220-902   ,
810-403   ,
200-105   ,
642-996   ,
300-075   ,
300-070   ,
642-996   ,
300-115   ,
642-996   ,
MB2-712   ,
642-997   ,
300-115   ,
300-208   ,
300-365   ,
300-365   ,
SY0-401   ,
SY0-401   ,