- Service-Oriented Software Reuse
- Reuse Measurement and Improvement
- Domain Engineering in Agile Environments
- Open Source, Crowd Source and Systematic Reuse
Services Computing is a recently emerged discipline, studying how to build and leverage software as a service to facilitate software reusability, scalability, availability, and interoperability. As a major implementation technology, Web services are Internet-based programmable application components published using standard interface description languages and universally available via uniform communication protocols. Services Computing forms a key technical foundation of Cloud Computing, whose goal is to provide XaaS (Everything as a Service) to share resources among the cloud service consumers, cloud partners, and cloud vendors in the cloud value chain. The Open Source movement has permanently changed the software reuse landscape, by providing code-open open source software as development tools and execution environments.
Our recent research topics focus on, but limited to:
- Semantic Service Discovery
- Collaborative Scientific Workflows
- Software Reuse Assessment & Recommendation
- Service-Oriented Architecture (SOA)
- Social Network-Empowered Service Recommendation
- Net-Centric Collaboration
- Service Composition
- Web/Cloud Services Testing
- Software Rapid Prototyping
- A Community-Driven Scientific Workflow Recommendations and Reuse Infrastructure: In recent years, scientists have learned how to codify data processing tools into reusable software modules that can be chained into multi-step executable workflows. However, although computing technologies continue to improve, adoption via the sharing and reuse of modules and workflows remains a big challenge. We aim to tackle this challenge from a novel angle, to study how to leverage peer scientists’ best practice to help facilitate the discovery and reuse of modules developed by others. Social networking theory and analysis techniques are employed to offer advice on module reuse. The research will tackle two fundamental research questions: What implicit knowledge, derived from social network analysis, may be extracted to help scientists better understand existing workflows and modules? and how can such implicit knowledge be used to aid module and workflow reuse?
- Multi-Tenant Tool Supporting Collaborative Scientific Workflow Composition and Management as a Service: Existing workflow tools are all single user-oriented. Using such a tool to support collaborative design of a common workflow is difficult. To address these challenges, we have been designing and developing a sustainable software system with the capability of supporting collaborative scientific workflow composition and management, as a key component to support synchronous/asynchronous collaboration through the Internet. Reproducibility, scalability, productivity, and visualization are four major targets demanding fundamental infrastructural support.
This research aims to develop new ways of assessing an organizations capabilities and inventory of avaiable (candidate) reusuable assets.
- Monitoring and Assessing Software Reuse: We aim to leverage the latest technology and our research results to develop techniques and tooling on top of the current software development platform, to help quantitatively monitor and assess software reuse at organizations. Past software usage behaviors will be extracted and visualized into networked graphs; social network-empowered algorithms will be developed to analyze and illustrate existing software reuse; new reusable workproducts will be identified and recommended to serve new business goals. This project will help organizations deepen the understanding of their current software reuse status and interoperability, and open up new vistas for organizations to further facilitate software reuse and distributed process development.
This research aims to apply the perspectives of agile software development and lean approaches to simplify and improvde the process of domain engineering. In general, domain engineering combines some aspects of requirements engineering and software architecture, with a focus on identifying commonality and variability patterns, and determining how this can be effectively expressed using frameworks, components, generators and other variability mechanisms.
We have previously observed that the crowd-sourcing approach used by TopCoder (and others) to develop high-quality components seems to bridge or integrate some aspects of open source communities and some flavors of systematic reuse. In this project, we propose to examine the similarities and differences between the various approaches with the goal of extracting best practices and process desiderata. This work will be prformed will work with colleagues in the CMU Center for Open Source Investigations (COSI).