This paper presents Firecrow – a tool for Web application analysis and reuse. The tool’s primary function is to support reuse of client-side features, but it can also be used for feature identification, web application slicing, and generation of usage scenarios, i.e. sequences of user actions that cause the manifestation of application behaviors. The tool is in prototype stage and is accessible through a plug-in to the Firefox browser, but it can also be used as a library from other browsers (e.g. Chrome, Safari, and PhantomJs).
Web applications are one of the fastest growing types of software systems today. Structurally, they are composed out of two parts: the server-side, used for data-access and business logic, and the client-side used as a user-interface. In recent years, thanks to fast, modern web browsers and advanced scripting techniques, developers are building complex interfaces, and the client-side is playing an increasingly important role.From the user's perspective, the client-side offers a number of features. A feature is an abstract notion representing a distinguishable part of the system behavior. Similar features are often used in a large number of web applications, and facilitating their reuse would offer considerable benefits. However, the client-side technology stack does not offer any widely used structured reuse method, and code responsible for a feature is usually copy-pasted to the new application. Copy-paste reuse can be complex and error prone - usually it is hard to identify exactly the code responsible for a certain feature and introduce it into the new application without errors.The primary focus of the research described in this PhD thesis is to provide methods and tools for automatizing reuse in client-side web application development. This overarching problem leads to a number of sub-problems: i) how to identify code responsible for a particular feature; ii) how to include the code that implements a feature into an already existing application without breaking neither the code of the feature nor of the application; and iii) how to automatically generate sequences of user actions that accurately capture the behavior of a feature? In order to tackle these problems we have made the following contributions: i) a client-side dependency graph that is capable of capturing dependencies that exist in client-side web applications, ii) a method capable of identifying the exact code and resources that implement a particular feature, iii) a method that can introduce code from one application into another without introducing errors, and iv) a method for generating usage scenarios that cause the manifestation of a feature. Each contribution was evaluated a suite of web applications, and the evaluations have shown that each method is capable of performing its intended purpose.
A client-side application offers a number of features, and similar features are often used in a large number of web applications - facilitating reuse could offer considerable benefits in terms of faster development. Unfortunately, due to the specifics of prevailing technologies, the techniques and tools used to support reuse are not as advanced as in other software engineering disciplines -- the main method of reuse is still copy-pasting code. Copy-paste reuse can introduce a number of different types of errors that are time-consuming to detect and fix. In this paper we present a method for performing feature reuse in client-side web applications. We identify problems that occur when introducing code from one application into another application, present a set of algorithms that detect and fix those problems and perform the actual code merging. We have evaluated the approach on a web application suite, and the evaluation has shown that the method is capable of performing feature reuse.
Web applications are one of the fastest growing types of software systems today. Structurally, they are composed out of two parts: the server side, used for data-access and business logic, and the client-side used as a user-interface. In recent years, with developers building complex interfaces, the client side is playing an increasingly important role. Unfortunately, the techniques and tools used to support development are not as advanced as in other disciplines. From the userÂ’s perspective, the client-side offers a number of features that are relatively easy to distinguish. However, the same cannot be said for their implementation details. This makes code understanding, maintenance, and reuse difficult. The goal of the work presented in this paper is to improve reusability, maintainability and performance of client-side web applications by identifying the code that implements a particular feature. We have evaluated the approach based on three different experiments: extracting features, extracting library functionalities, and page optimization. The evaluation shows that the method is able to identify the implementation details of individual features, and that by extracting the identified code considerable savings in terms of code size and increased performance can be achieved.
This article addresses a formal model of a distributed computation multi-agent system. This model has evolved from the experimental research on using multi-agent systems as a ground for developing fuzzy cognitive maps. The main paper contribution is a distributed computation multi-agent system definition and mathematical formalization based on automata theory. This mathematical formalization is tested by developing distributed computation multi-agent systems for fuzzy cognitive maps and artificial neural networks – two typical distributed computation systems. Fuzzy cognitive maps are distributed computation systems used for qualitative modeling and behavior simulation, while artificial neural networks are used for modeling and simulating complex systems by creating a non-linear statistical data model. An artificial neural network encapsulates in its structure data patterns that are hidden in the data used to create the network. Both of these systems are well suited for formal model testing. We have used evolutionary incremental development as an agent design method which has shown to be a good approach to develop multi-agent systems according to the formal model of a distributed computation multi-agent system.
Client-side web applications are highly-dynamic event-driven GUI applications where the majority of code is executed as a response to user-generated events. Many software engineering activities (e.g. testing) require sequences of actions (i.e. usage scenarios) that execute the application code with high coverage. these usage scenarios is a difficult and time-consuming activity. This is especially true when generating usage scenarios for a particular feature because it requires in-depth knowledge of application behavior and understanding of the underlying implementation. In this paper we present a method for automatic generation of feature usage scenarios. The method is based on dynamic analysis and systematic exploration of the application's event and value space. We have evaluated the approach in a case study, and the evaluation shows that the method is capable of identifying usage scenarios for a particular feature. We have also performed the evaluation on a suite of web applications, and the results show that an increase in coverage can be achieved, when compared to the initial coverage obtained by loading the page and executing registered events.
In 2012, the International Symposium on Component-based Software Engineering (CBSE) is being organized for the 15th time. This is a great opportunity to take a step back and reflect on the impact of the symposium over these 15 years. Several interesting questions immediately come to mind: What were the main topics of interest in the community? What is the maturity of the field? What is the research CBSE Symposia impact? Who are the mots involved researches and researchers centers? In order to answer these questions we have performed a systematic review of 318 papers published under CBSE. In this paper we provide answers about the impact of the event, list and categorize the most frequent topics, and give some statistical data about the event during this period.
Highly interactive web applications that offer user experience and responsiveness of standard desktop applications are becoming prevalent in the web application domain. However, with these benefits come certain drawbacks. For example, the event-based architectural style, and poor support for code organization, often lead to a situation where code responsible for a certain behavior is intermixed with irrelevant code. This makes development, debugging and reuse difﬁcult. One way of locating code implementing a certain behavior is program slicing, a method that, given a subset of a program’s behavior, reduces the program to a minimal form that still produces that behavior. In this paper we present a semi- automatic client-side web application slicing method, describe the web page dependency graph, and show how it can be used to extract only the code implementing a certain behavior.
Fuzzy Cognitive Map (FCM) is a qualitative modelling and behaviour simulation method that can utilize imprecise and incomplete information, like one found on the web, to model different systems. Knowledge mapping from such information to a FCM can be accomplished with documentary coding method. This paper shows how this can be done, presenting a FCM map that models internet spreading rate in different countries. Obtained map can simulate the system behaviour and can be used as a decision support tool. The quality of proposed approach, that uses documentary coding to build FCM models from imprecise and incomplete knowledge about system domain, is compared with multiple linear regression statistical method for building models for prediction and explanation. The conclusion made in the paper from the results obtained in the presented example is that when dealing with imprecise and incomplete information about system the FCM method gives robust system model.
Web applications are complex systems that are in the core of many businesses. However, their development is, contrary to other domains, not characterized by rigorous software engineering methods. The consequence is that many web applications are poorly structured and are not adequately documented, which leads to difficult maintenance. One way for dealing with web application complexity is their modeling on a higher level of abstraction. This also provides the possibility to cope with continuous evolution of web applications. In this paper we present phpModeler, a tool for reverse engineering of legacy PHP web applications. It generates static UML diagrams showing resources that each web page is using, web page’s functions and dependencies it has on other web pages. Once the models have been created, phpModeler can analyze them and generate dependency models for each entity in every web page model. phpModeler can also be used to highlight the difference between page models – a feature that, when combined with an SVN repository shows the way how a web page has evolved over time. Tool usability has been tested on a case study application - iForestFire.
Settling down the software architecture for embedded system is a complex and time consuming task. Specific concerns that are generally issued from implementation details must be captured in the software architecture and assessed to ensure system correctness. The matter is further complicated by the inherent complexity and heterogeneity of the targeted systems, platforms and concerns. In addition, tools capable of conjointly catering for the complete design-verification deployment cycle, extra-functional properties and reuse are currently lacking. To address this, we have developed Pride, an integrated development environment for component-based development of embedded systems. Pride is based on an architecture relying on components with well-defined semantics that serve as the central development entity, and as means to support and aggregate various analysis and verification techniques throughout the development - from early specification to synthesis and deployment. Pride also provides generic support for integrating extra-functional properties into architectural definitions.
Highly interactive web applications that offer user experience and responsiveness of desktop applications are becoming increasingly popular. They are often composed out of visually distinctive user-interface (UI) elements that encapsulate a certain behavior – the so called UI controls. Similar controls are often used in a large number of web pages, and facilitating their reuse would offer considerable benefits. Unfortunately, because of a very short time-to- market, and a fast pace of technology development, preparing controls for reuse is usually not a primary concern. The focus of my research will be to circumvent this limitation by developing a method, and the accompanying tool for supporting web UI control reuse.
Highly interactive web applications that offer user experience and responsiveness of desktop applications are becoming increasingly popular. They are often composed out of visually distinctive user-interface (UI) elements that encapsulate a certain behavior - the so called UI controls. Similar controls are often used in a large number of web pages, and facilitating their reuse could offer considerable benefits. Unfortunately, because of a very short time-to- market, and a fast pace of technology development, preparing controls for reuse is usually not a primary concern. In this paper we present a semi- automatic method, and the accompanying tool, for extracting and reusing web controls. The developer selects the control and performs a series of interactions that represent the behavior he/she wishes to reuse. In the background, the execution is analyzed and all code and resources necessary for the stand-alone functioning of the control are extracted. Optionally, the user can immediately reuse the extracted control by automatically embedding it in an already existing page.
Web applications that are highly dynamic and interactive on the client side are becoming increasingly popular. As with any other type of applications, reuse offers considerable benefits. In this paper we present our first results on extracting easily reusable web user-interface controls. We have developed a tool called Firecrow that facilitates the extraction of reusable client side controls by dynamically analyzing a series of interactions, carried out by the developer, in order to extract the source code and the resources necessary for the reuse of the desired web user-interface control.
This paper presents phpModeler, a tool for reverse engineering of legacy php web applications that generates static UML diagrams showing resources the current web page is using, its functions and dependencies it has on other web pages. Once the models describing individual web pages have been generated, phpModeler can analyze them and generate dependency models that for each entity in every page model show all entities dependent on it. phpModeler can also be used to highlight the difference between page models – a feature that, when combined with a SVN repository shows the way how the current web page has evolved over time. phpModeler is a plugin for the Eclipse IDE.