Shahram Esmaeilsabzali
University of Waterloo
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Shahram Esmaeilsabzali.
programming language design and implementation | 2012
Jeffrey Fischer; Rupak Majumdar; Shahram Esmaeilsabzali
Many modern applications are built by combining independently developed packages and services that are distributed over many machines with complex inter-dependencies. The assembly, installation, and management of such applications is hard, and usually performed either manually or by writing customized scripts. We present Engage, a system for configuring, installing, and managing complex application stacks. Engage consists of three components: a domain-specific model to describe component metadata and inter-component dependencies; a constraint-based algorithm that takes a partial installation specification and computes a full installation plan; and a runtime system that co-ordinates the deployment of the application across multiple machines and manages the deployed system. By explicitly modeling configuration metadata and inter-component dependencies, Engage enables static checking of application configurations and automated, constraint-driven, generation of installation plans across multiple machines. This reduces the tedious manual process of application configuration, installation, and management. We have implemented Engage and we have used it to successfully host a number of applications. We describe our experiences in using Engage to manage a generic platform that hosts Django applications in the cloud or on premises.
Requirements Engineering | 2010
Shahram Esmaeilsabzali; Nancy A. Day; Joanne M. Atlee; Jianwei Niu
With the popularity of model-driven methodologies and the abundance of modelling languages, a major question for a requirements engineer is: which language is suitable for modelling a system under study? We address this question from a semantic point-of-view for big-step modelling languages (BSMLs). BSMLs are a class of popular behavioural modelling languages in which a model can respond to an input by executing multiple transitions, possibly concurrently. We deconstruct the operational semantics of a large class of BSMLs into eight high-level, mostly orthogonal semantic aspects and their common semantic options. We analyse the characteristics of each semantic option. We use feature diagrams to present the design space of BSML semantics that arises from our deconstruction, as well as to taxonomize the syntactic features of BSMLs that exhibit semantic variations. We enumerate the dependencies between syntactic and semantic features. We also discuss the effects of certain combinations of semantic options when used together in a BSML semantics. Our goal is to empower a requirements engineer to compare and choose an appropriate BSML from the plethora of existing BSMLs, or to articulate the semantic features of a new desired BSML when such a BSML does not exist.
fundamental approaches to software engineering | 2010
Shahram Esmaeilsabzali; Nancy A. Day
A big-step modelling language (BSML) is a language in which a model can respond to an environmental input via a sequence of small steps, each of which may consist of the concurrent execution of a set of transitions. BSMLs are a popular class of modelling languages that are regularly reincarnated in different syntactic and semantic variations. In our previous work, we deconstructed the semantics of many existing BSMLs into eight high-level, conceptually intuitive semantic aspects and their semantic options, which together constitute a semantic design space for BSMLs. In this work, we describe a parametric semantic definition schema based on this deconstruction for defining formally the semantics of a wide range of BSMLs. A semantic definition in our framework is prescriptive in that the high-level semantic aspects of a BSML are manifested clearly as orthogonal parts of the semantic definition. Our goal is to produce a formal semantic definition that is accessible to various stakeholders of the semantics.
Seventh IEEE International Conference on E-Commerce Technology Workshops | 2005
Shahram Esmaeilsabzali; Kate Larson
Web services are software artifacts that can be accessed over the Internet. They can be seen as pay-per-view functionalities that are exposed by some service providers. If there are multiple providers for a Web service, then both the quality and price of the service become key factors when determining which provider to choose. We consider the problem of service allocation for multiple correlated Web services that can be serviced by potentially different Web service providers. We model this problem in a game-theoretic setting and design a reverse auction where optimal service allocation for the service requester is guaranteed. We also present an optimal strategy for the service provider when choosing its quality of service.
Electronic Notes in Theoretical Computer Science | 2006
Shahram Esmaeilsabzali; Farhad Mavaddat; Nancy A. Day
Many formalisms use interleaving to model concurrency. To describe some system behaviours appropriately, we need to limit interleaving. For example, in component-based systems, we wish to limit interleaving to force the inputs to a method to arrive together in order. We introduce interface automata with complex actions (IACA), which add complex actions to de Alfaro and Henzingers interface automata (IA). A complex action is a sequence of actions that may not be interleaved with actions from other components. The composition and refinement operations are more involved in IACA compared to IA, and we must sacrifice associativity of composition. However, we argue that the advantages of having complex actions make it a useful formalism.
Proceedings of the 2006 international workshop on Economics driven software engineering research | 2006
Shahram Esmaeilsabzali; Nancy A. Day
We consider Web service providers, which have a finite capacity, and requests for their services, which arrive sequentially overtime, and propose an online algorithm for selecting from such requests and charging for such requests. We show that differentvariations of this problem, both as online and offline (when we know all requests a priori), are hard problems. We initially start with two naive variations of the problem and show these variations are too hard to be solved. Then, we propose an online algorithm for a variation of the problem where we make some statistical assumptions about the requests that Web service providers receive over time.
requirements engineering | 2009
Shahram Esmaeilsabzali; Nancy A. Day; Joanne M. Atlee; Jianwei Niu
With the popularity of model-driven methodologies, and the abundance of modelling languages, a major question for a requirements engineer is: which language is suitable for modelling a system under study? We address this question from a semantic point-of-view for big-step modelling languages (BSMLs). BSMLs are a class of popular behavioural modelling languages in which a model can respond to an input by executing multiple, possibly concurrent, transitions. We deconstruct the operational semantics of a large class of BSMLs into high-level, orthogonal semantic aspects, and analyze the relative advantages and disadvantages of the common semantic options for each of these aspects. Our goal is to empower a requirements engineer to compare and choose an appropriate BSML.
generative programming and component engineering | 2011
Shahram Esmaeilsabzali; Bernd Fischer; Joanne M. Atlee
The output of a code generator is assumed to be correct and not usually intended to be read or modified; yet programmers are often interested in this, e.g., to monitor a system property. Here, we consider code customization for a family of code generators associated with big-step executable modelling languages (e.g., statecharts). We introduce a customization language that allows us to express customization scenarios for the generated code independently of a specific big-step execution semantics. These customization scenarios are all different forms of runtime monitors, which lend themselves to a principled, uniform implementation for observation and code extension. A monitor is given in terms of the enabledness and execution of the transitions of a model and a reachability relation between two states of the execution of the model during a big step. For each monitor, we generate the aspect code that is incorporated into the output of a code generator to implement the monitor at the generated-code level. Thus, we provide means for code analysis through using the vocabulary of a model, rather than the detail of the generated code. Our technique not only requires the code generators to reveal only limited information about their code generation mechanisms, but also keeps the structure of the generated code intact. We demonstrate how various useful properties of a model, or a language, can be checked using our monitors.
fundamental approaches to software engineering | 2011
Shahram Esmaeilsabzali; Nancy A. Day
A semantic quality attribute of a modelling language is a desired semantic characteristic that is common to all models specified in that language. A modeller can enjoy the luxury of not having to model the invariants of the behaviour that are implicitly enforced by the semantic quality attributes. In this paper, we introduce three semantic quality attributes for the family of big-step modelling languages (BSMLs). In a BSML, a models reaction to an environmental input is a sequence of small steps, each of which can consist of the execution of a set of transitions from multiple concurrent components. Each of our three semantic quality attributes specifies a desired property about how the sequence of small steps form a big step. We systematically enumerate the range of BSML semantics that satisfy each semantic quality attribute.
fundamental approaches to software engineering | 2014
Shahram Esmaeilsabzali; Rupak Majumdar; Thomas Wies; Damien Zufferey
A hallmark of object-oriented programming is the ability to perform computation through a set of interacting objects. A common manifestation of this style is the notion of a package, which groups a set of commonly used classes together. A challenge in using a package is to ensure that a client follows the implicit protocol of the package when calling its methods. Violations of the protocol can cause a runtime error or latent invariant violations. These protocols can extend across different, potentially unboundedly many, objects, and are specified informally in the documentation. As a result, ensuring that a client does not violate the protocol is hard. We introduce dynamic package interfaces (DPI), a formalism to explicitly capture the protocol of a package. The DPI of a package is a finite set of rules that together specify how any set of interacting objects of the package can evolve through method calls and under what conditions an error can happen. We have developed a dynamic tool that automatically computes an approximation of the DPI of a package, given a set of abstraction predicates. A key property of DPI is that the unbounded number of configurations of objects of a package are summarized finitely in an abstract domain. This uses the observation that many packages behave monotonically: the semantics of a method call over a configuration does not essentially change if more objects are added to the configuration. We have exploited monotonicity and have devised heuristics to obtain succinct yet general DPIs. We have used our tool to compute DPIs for several commonly used Java packages with complex protocols, such as JDBC, HashSet, and ArrayList