Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Sam Malek is active.

Publication


Featured researches published by Sam Malek.


dagstuhl seminar proceedings | 2013

Software Engineering for Self-Adaptive Systems: A Second Research Roadmap

Rogério de Lemos; Holger Giese; Hausi A. Müller; Mary Shaw; Jesper Andersson; Marin Litoiu; Bradley R. Schmerl; Gabriel Tamura; Norha M. Villegas; Thomas Vogel; Danny Weyns; Luciano Baresi; Basil Becker; Nelly Bencomo; Yuriy Brun; Bojan Cukic; Ron Desmarais; Schahram Dustdar; Gregor Engels; Kurt Geihs; Karl M. Göschka; Alessandra Gorla; Vincenzo Grassi; Paola Inverardi; Gabor Karsai; Jeff Kramer; Antónia Lopes; Jeff Magee; Sam Malek; Serge Mankovskii

The goal of this roadmap paper is to summarize the state-of-the-art and identify research challenges when developing, deploying and managing self-adaptive software systems. Instead of dealing with a wide range of topics associated with the field, we focus on four essential topics of self-adaptation: design space for self-adaptive solutions, software engineering processes for self-adaptive systems, from centralized to decentralized control, and practical run-time verification & validation for self-adaptive systems. For each topic, we present an overview, suggest future directions, and focus on selected challenges. This paper complements and extends a previous roadmap on software engineering for self-adaptive systems published in 2009 covering a different set of topics, and reflecting in part on the previous paper. This roadmap is one of the many results of the Dagstuhl Seminar 10431 on Software Engineering for Self-Adaptive Systems, which took place in October 2010.


IEEE Transactions on Software Engineering | 2005

A style-aware architectural middleware for resource-constrained, distributed systems

Sam Malek; Marija Mikic-Rakic; Nenad Medvidovic

A recent emergence of small, resource-constrained, and highly mobile computing platforms presents numerous new challenges for software developers. We refer to development in this new setting as programming-in-the-small-and-many (Prism). This paper provides a description and evaluation of Prism-MW, a middleware platform intended to support software architecture-based development in the Prism setting. Prism-MW provides efficient and scalable implementation-level support for the key aspects of Prism application architectures, including their architectural styles. Additionally, Prism-MW is extensible to support different application requirements suitable for the Prism setting. Prism-MW has been applied in a number of applications and used as an educational tool in graduate-level software architecture and embedded systems courses. Recently, Prism-MW has been successfully evaluated by a major industrial organization for use in one of their key distributed embedded systems. Our experience with the middleware indicates that the principles of architecture-based software development can be successfully, and flexibly, applied in the Prism setting.


Lecture Notes in Computer Science | 2013

On Patterns for Decentralized Control in Self-Adaptive Systems

Danny Weyns; Bradley R. Schmerl; Vincenzo Grassi; Sam Malek; Raffaela Mirandola; Christian Prehofer; Jochen Wuttke; Jesper Andersson; Holger Giese; Karl M. Göschka

Self-adaptation is typically realized using a control loop. One prominent approach for organizing a control loop in self-adaptive systems is by means of four components that are responsible for the primary functions of self-adaptation: Monitor, Analyze, Plan, and Execute, together forming a MAPE loop. When systems are large, complex, and heterogeneous, a single MAPE loop may not be sufficient for managing all adaptation in a system, so multiple MAPE loops may be introduced. In self-adaptive systems with multiple MAPE loops, decisions about how to decentralize each of the MAPE functions must be made. These decisions involve how and whether the corresponding functions from multiple loops are to be coordinated (e.g., planning components coordinating to prepare a plan for an adaptation). To foster comprehension of self-adaptive systems with multiple MAPE loops and support reuse of known solutions, it is crucial that we document common design approaches for engineers. As such systematic knowledge is currently lacking, it is timely to reflect on these systems to: (a) consolidate the knowledge in this area, and (b) to develop a systematic approach for describing different types of control in self-adaptive systems. We contribute with a simple notation for describing interacting MAPE loops, which we believe helps in achieving (b), and we use this notation to describe a number of existing patterns of interacting MAPE loops, to begin to fulfill (a). From our study, we outline numerous remaining research challenges in this area.


foundations of software engineering | 2010

FUSION: a framework for engineering self-tuning self-adaptive software systems

Ahmed M. Elkhodary; Naeem Esfahani; Sam Malek

Self-adaptive software systems are capable of adjusting their behavior at run-time to achieve certain objectives. Such systems typically employ analytical models specified at design-time to assess their characteristics at run-time and make the appropriate adaptation decisions. However, prior to systems deployment, engineers often cannot foresee the changes in the environment, requirements, and systems operational profile. Therefore, any analytical model used in this setting relies on underlying assumptions that if not held at run-time make the analysis and hence the adaptation decisions inaccurate. We present and evaluate FeatUre-oriented Self-adaptatION (FUSION) framework, which aims to solve this problem by learning the impact of adaptation decisions on the systems goals. The framework (1) allows for automatic online fine-tuning of the adaptation logic to unanticipated conditions, (2) reduces the upfront effort required for building such systems, and (3) makes the run-time analysis of such systems very efficient.


foundations of software engineering | 2014

EvoDroid: segmented evolutionary testing of Android apps

Riyadh Mahmood; Nariman Mirzaei; Sam Malek

Proliferation of Android devices and apps has created a demand for applicable automated software testing techniques. Prior research has primarily focused on either unit or GUI testing of Android apps, but not their end-to-end system testing in a systematic manner. We present EvoDroid, an evolutionary approach for system testing of Android apps. EvoDroid overcomes a key shortcoming of using evolutionary techniques for system testing, i.e., the inability to pass on genetic makeup of good individuals in the search. To that end, EvoDroid combines two novel techniques: (1) an Android-specific program analysis technique that identifies the segments of the code amenable to be searched independently, and (2) an evolutionary algorithm that given information of such segments performs a step-wise search for test cases reaching deep into the code. Our experiments have corroborated EvoDroid’s ability to achieve significantly higher code coverage than existing Android testing tools.


formal methods | 2012

FORMS: Unifying reference model for formal specification of distributed self-adaptive systems

Danny Weyns; Sam Malek; Jesper Andersson

The challenges of pervasive and mobile computing environments, which are highly dynamic and unpredictable, have motivated the development of self-adaptive software systems. Although noteworthy successes have been achieved on many fronts, the construction of such systems remains significantly more challenging than traditional systems. We argue this is partially because researchers and practitioners have been struggling with the lack of a precise vocabulary for describing and reasoning about the key architectural characteristics of self-adaptive systems. Further exacerbating the situation is the fact that existing frameworks and guidelines do not provide an encompassing perspective of the different types of concerns in this setting. In this article, we present a comprehensive reference model, entitled FOrmal Reference Model for Self-adaptation (FORMS), that targets both issues. FORMS provides rigor in the manner such systems can be described and reasoned about. It consists of a small number of formally specified modeling elements that correspond to the key concerns in the design of self-adaptive software systems, and a set of relationships that guide their composition. We demonstrate FORMSs ability to precisely describe and reason about the architectural characteristics of distributed self-adaptive software systems through its application to several existing systems. FORMSs expressive power gives it a potential for documenting reusable architectural solutions (e.g., architectural patterns) to commonly encountered problems in this area.


ACM Sigsoft Software Engineering Notes | 2012

Testing android apps through symbolic execution

Nariman Mirzaei; Sam Malek; Corina S. Păsăreanu; Naeem Esfahani; Riyadh Mahmood

There is a growing need for automated testing techniques aimed at Android apps. A critical challenge is the systematic generation of test cases. One method of systematically generating test cases for Java programs is symbolic execution. But applying symbolic execution tools, such as Symbolic Pathfinder (SPF), to generate test cases for Android apps is challenged by the fact that Android apps run on the Dalvik Virtual Machine (DVM) instead of JVM. In addition, Android apps are event driven and susceptible to path-divergence due to their reliance on an application development framework. This paper provides an overview of a two-pronged approach to alleviate these issues. First, we have developed a model of Android libraries in Java Pathfinder (JPF) to enable execution of Android apps in a way that addresses the issues of incompatibility with JVM and path-divergence. Second, we have leveraged program analysis techniques to correlate events with their handlers for automatically generating Android-specific drivers that simulate all valid events.


IEEE Software | 2011

SASSY: A Framework for Self-Architecting Service-Oriented Systems

Daniel A. Menascé; Hassan Gomaa; Sam Malek; João Pedro Sousa

Making architectural decisions manually in the presence of quality-of-service trade-offs can be complicated. The SASSY (Self-architecting Software Systems) framework automatically generates candidate software architectures and selects the one that best serves stakeholder-defined, scenario-based quality-of-service (QoS) goals. This lets domain experts concentrate on functional and QoS requirements. SASSY reduces the effort of composing service-oriented systems by automatically generating the QoS-optimized architecture and rapidly reconfiguring it at runtime. Self-architecting occurs during initial system deployment and at runtime, thus making systems self-adaptive, self-healing, self-managing, and self-optimizing.


foundations of software engineering | 2011

Taming uncertainty in self-adaptive software

Naeem Esfahani; Ehsan Kouroshfar; Sam Malek

Self-adaptation endows a software system with the ability to satisfy certain objectives by automatically modifying its behavior. While many promising approaches for the construction of self-adaptive software systems have been developed, the majority of them ignore the uncertainty underlying the adaptation decisions. This has been one of the key obstacles to wide-spread adoption of self-adaption techniques in risk-averse real-world settings. In this paper, we describe an approach, called POssIbilistic SElf-aDaptation (POISED), for tackling the challenge posed by uncertainty in making adaptation decisions. POISED builds on possibility theory to assess both the positive and negative consequences of uncertainty. It makes adaptation decisions that result in the best range of potential behavior. We demonstrate POISEDs application to the problem of improving a software systems quality of service via runtime reconfiguration of its customizable software components. We have extensively evaluated POISED using a prototype of a robotic software system.


Lecture Notes in Computer Science | 2005

Improving availability in large, distributed component-based systems via redeployment

Marija Mikic-Rakic; Sam Malek; Nenad Medvidovic

In distributed and mobile environments, the connections among the hosts on which a software system is running are often unstable. As a result of connectivity losses, the overall availability of the system decreases. The distribution of software components onto hardware nodes (i.e., the systems deployment architecture) may be ill-suited for the given target hardware en-vironment and may need to be altered to improve the software systems avail-ability. The critical difficulty in achieving this task lies in the fact that deter-mining a software systems deployment that will maximize its availability is an exponentially complex problem. In this paper, we present a fast approximative solution for this problem, and assess its performance. In addition to significantly improving availability, our solution, in general, also reduces the overall interaction latency in the system. We evaluate our solution on a large number of automatically generated application scenarios.

Collaboration


Dive into the Sam Malek's collaboration.

Top Co-Authors

Avatar

Nenad Medvidovic

University of Southern California

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Danny Weyns

Katholieke Universiteit Leuven

View shared research outputs
Top Co-Authors

Avatar

Hamid Bagheri

University of Nebraska–Lincoln

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Joshua Garcia

University of California

View shared research outputs
Top Co-Authors

Avatar

Marija Mikic-Rakic

University of Southern California

View shared research outputs
Top Co-Authors

Avatar

Chiyoung Seo

University of Southern California

View shared research outputs
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge