UNO Home Computer Science Home


Software Engineering Research Group

Software Engineering research at UNO currently includes service-oriented computing, component-based software frameworks and software integration, domain-specific Web services, computer supported cooperative work, software patterns and pattern languages.

Service-Oriented Computing

Service-oriented computing (SOC) is the advances of distributed software in the Internet era. A fundamental difference of SOC from the traditional software is that the SOC serves open systems that encompass external, unknown applications based on a set of protocols rather than a set of complete prior knowledge of the entire system. The central requirement of SOC is interoperability. The Web service technology is the most successful implementation of the service-oriented architecture (SOA).

The Web services are based on industrial standards. However, the functional correctness of the Web service applications is beyond what any standard can govern. Testing Web service applications is difficult because they are distributed applications with numerous runtime behaviors that are different from traditional applications. A popular standard for Web services workflow specification, BPEL4WS, offers Turing-complete language for describing service assemblies. This made automatic verification of BPEL4WS intractable. In general, the problem of whether two Web services behave correctly with all possible messages is more difficult than the current existing techniques based on message's syntactic aspects. Dr. Tu' team is currently working on testing by simulation for Web service systems, regression test selection for Web service systems, and analysis of dynamic behavior of composite services in SOA.

The research led by Dr. Tu at the Visual Computing Research Laboratory (VCRL) have also been addressing a number of aspects in SOC such as interconnectivity of client applications and conversational Web services across firewalls, and remote events transmitted by Web services.

Web Services for Geographic Information Systems (GIS)

A surge of Geographic Information System (GIS) Web services have been provided by enterprises in the public and private sectors, which have been making their large spatial data archives available over the Internet. Logically, geographic locations are a natural convergence platform with which the information from different perspectives is combined. However, accomplishing such a convergence is a challenging task because of at least four factors: First, the GIS services, such as geospatial queries processing, typically requires intensive computation due the nature of the underlying complexity of the geospatial models. Second, GIS services often transmit very large volumes of data sets. Third, the geospatial queries are typically involved in extensive GIS domain knowledge and are semantically rich. Fourth, the "clients" of GIS web services are often heavy-duty software tools such as the GIS or CAD desktop applications which were traditionally stand-alone. These aspects have made GIS Web services much more difficult than the ordinary business transactions for which the Web services were originally intended.

The research activities directed by Drs. Abdelguerfi and Tu in this area are supported by the Visual Computing Research Laboratory (VCRL) which is equipped with a wide variety of GIS software such as the ArcGIS suite, ArcSDE server, and ArcIMS as well as the GeoMedia pack. At VCRL, a number of GIS projects were carried out for government agencies such as Army Corp of Engineers at New Orleans, and private companies such as Florida Power and Light Company and CDM Inc.

Component-Based Frameworks and Software Integration

The focus of a large part of software industry and research efforts has been shifting from new software development to the integration of existing components that perform new tasks. The rapidly growing Internet applications further intensified this trend, because Web service systems typically depend upon a large set of services implemented in distributed components, supported by specialized vendors. T he required final software products by the customers (governments and companies) are no longer closed, monolith systems, but instead component-based products that can be integrated with other products available with standard technologies.

One of Dr. Tu's research interests is in the area of the predictable assembly model to develop a component composition theory for reasoning about the functional properties of component assemblies based on the properties of components. This problem can be reduced to the form: Given a set of components C, predict property P of an assembly A of these components. Currently, developers are unable to make such predictions. A solution to such a problem involves a prediction theory that is based on certain assumptions about the environment and requires information about the components. T he long-term success of component-based development depends on the ability to predict the quality of component-based systems.

Computer Supported Cooperative Work (CSCW)

Distributed multi-user applications allow a group of geographically dispersed users to work together on a common task, such as editing a document. Most often this is achieved by presenting users with the abstraction of a common shared artifact, such as a shared document. The main difficulty in developing such applications comes from the wide variety of scenarios in which collaborators may use the same application.

The main thrust of Dr. Roussev's research in this area is the development of infrastructure mechanisms that can be incrementally adapted and tuned to the needs of the application. The main challenge in implementing a generic object sharing mechanism comes from the apparent conflict between data encapsulation, which mandates that the internal state of an object should remain hidden, and the need to share this state among a set of distributed replicas. The essential approach is based on software engineering analysis of the single-user code, which enables the infrastructure to automatically recognize the structure of the shared object and present suitable sharing policies. Currently, the work is being extended using aspect-oriented techniques to further improve the efficiency and performance of the developed framwork.

Pattern-Based Techniques and Pattern Languages

Fundamental to any science or engineering discipline is a common vocabulary for expressing its concepts, and a language for relating them together. The goal of patterns within the software community is to create a body of literature to help software developers resolve recurring problems encountered throughout all of software development. Patterns help create a shared language for communicating insight and experience about these problems and their solutions. Formally codifying these solutions and their relationships lets us successfully capture the body of knowledge which defines our understanding of good architectures that meet the needs of their users. Forming a common pattern language for conveying the structures and mechanisms of our architectures allows us to intelligibly reason about them. The primary focus is not so much on technology as it is on creating a culture to document and support sound engineering architecture and design.

Among the research activities Dr. Nino is engaged in this area include pattern mining; here we look for software patterns principally in the area of library API design. This effort has lead us to the current development of a Java-based API designed around patterns. The use of patterns arise in the early phase of system design activity, where patterns are used as a common design language. In the implementation phase programmers usually need to start from scratch for the implementation of the patterns identified. Hence our efforts also include the inclusion of implementation of patterns to serve as part of the API for others to use them readily.

Other efforts of Dr. Nino in these area include the discovery of patterns in Computer Science education; in particular we are engaged in the discovery of non-software patterns but of activity patterns for software development in the teaching of software engineering. Here we are interested not only in patterns in the software lifecycle but in patterns for effective software team dynamics.

The concept of encapsulation in object-oriented programming seems to be at odds with the notion of automation - encapsulation hides information about the application while automation requires making assumptions about the application semantics. Several object-tools address this problem by forcing programmers to break encapsulation or use system-defined types. Dr. Roussev's research considers an alternative approach that allows automation to be provided for encapsulated programmer-defined types. This approach makes the tool rely on programmer-chosen conventions for describing code, which are meta-data about object semantics that bridge the gap between the notions of arbitrary programmer-defined operations supported by object-based programming languages and universal read/write operations required by many tools. This idea has been used to provide automation in three different domains: collaborative systems, ubiquitous computing, and XML-based object serialization.

Sample publications: