Network


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

Hotspot


Dive into the research topics where Maayan Goldstein is active.

Publication


Featured researches published by Maayan Goldstein.


integrated network management | 2007

PANACEA Towards a Self-healing Development Framework

David Breitgand; Maayan Goldstein; Ealan Henis; Onn Shehory; Yaron Weinsberg

Self-healing capabilities allow software systems to overcome problems occurring during testing and run time, and thus improve overall system behavior. The PANACEA framework introduced in this paper provides a design methodology as well as ready-to-use healing elements aimed at enhancing software systems with self-healing capabilities both at design time and at run time. The PANACEA approach is based on inserting self- healing elements into the system at design and coding time, to be used later for healing at testing and run time. Specifically, the Panacea framework is based on inserting annotations into the system code at design and coding time, to later on serve as an interface for runtime monitoring, managing, configuring and healing of the annotated system components. The current embodiment of PANACEA includes several generic components that provide self-healing capabilities suited for a variety of application types. The PANACEA runtime environment automatically activates and invokes these components in order to optimize and heal the application. The PANACEA framework provides an innovative programming model that enables development of advanced self-healing applications. PANACEA introduces a paradigm shift in which software is made self-healing by design. This paradigm shift, however, is graceful since developers are not required to master neither new programming skills, nor languages. As our initial experiments demonstrate, PANACEA introduces a very small performance overhead, and scales well.


next generation information technologies and systems | 2009

System Grokking: a novel approach for software understanding, validation, and evolution

Maayan Goldstein; Dany Moshkovich

The complexity of software systems is continuously growing across a wide range of application domains. System architects are often faced with large complex systems and systems whose semantics may be difficult to understand, hidden, or even still evolving. Raising the level of abstraction of such systems can significantly improve their usability. We introduce System Grokking - a software architect assistance technology designed to support incremental and iterative user-driven understanding, validation, and evolution of complex software systems through higher levels of abstraction. The System Grokking technology enables semi-automatic discovery, manipulation, and visualization of groups of domain-specific software elements and the relationships between them to represent high-level structural and behavioral abstractions.


international conference on software maintenance | 2010

Modernizing legacy software using a System Grokking technology

Yanjindulam Dajsuren; Maayan Goldstein; Dany Moshkovich

Reverse engineering is an essential part of the modernization process that enables the evolution of existing software assets. The extraction of state machines out of existing code is an important aspect of the reverse engineering process. However, none of the reverse engineering tools fully support an automatic extraction of state machines.


IEEE Transactions on Network and Service Management | 2011

Efficient Control of False Negative and False Positive Errors with Separate Adaptive Thresholds

David Breitgand; Maayan Goldstein; Ealan Henis; Onn Shehory

Component level performance thresholds are widely used as a basic means for performance management. As the complexity of managed applications increases, manual threshold maintenance becomes a difficult task. Complexity arises from having a large number of application components and their operational metrics, dynamically changing workloads, and compound relationships between application components. To alleviate this problem, we advocate that component level thresholds should be computed, managed and optimized automatically and autonomously. To this end, we have designed and implemented a performance threshold management application that automatically and dynamically computes two separate component level thresholds: one for controlling Type I errors and another for controlling Type II errors. Our solution additionally facilitates metric selection thus minimizing management overheads. We present the theoretical foundation for this autonomic threshold management application, describe a specific algorithm and its implementation, and evaluate it using real-life scenarios and production data sets. As our present study shows, with proper parameter tuning, our on-line dynamic solution is capable of nearly optimal performance thresholds calculation.


foundations of software engineering | 2013

Where is the business logic

Yael Dubinsky; Yishai A. Feldman; Maayan Goldstein

One of the challenges in maintaining legacy systems is to be able to locate business logic in the code, and isolate it for different purposes, including implementing requested changes, refactoring, eliminating duplication, unit testing, and extracting business logic into a rule engine. Our new idea is an iterative method to identify the business logic in the code and visualize this information to gain better understanding of the logic distribution in the code, as well as developing a domain-specific business vocabulary. This new method combines and extends several existing technologies, including search, aggregation, and visualization. We evaluated the visualization method on a large-scale application and found that it yields useful results, provided an appropriate vocabulary is available.


mining software repositories | 2012

An empirical investigation of changes in some software properties over time

Joseph Gil; Maayan Goldstein; Dany Moshkovich

Software metrics are easy to define, but not so easy to justify. It is hard to prove that a metric is valid, i.e., that measured numerical values imply anything on the vaguely defined, yet crucial software properties such as complexity and maintainability. This paper employs statistical analysis and tests to check some plausible assumptions on the behavior of software and metrics measured for this software in retrospective on its versions evolution history. Among those are the reliability assumption implicit in the application of any code metric, and the assumption that the magnitude of change, i.e., increase or decrease of its size, in a software artifact is correlated with changes to its version number. Putting a suite of 36 metrics to the trial, we confirm most of the assumptions on a large repository of software artifacts. Surprisingly, we show that a substantial portion of the reliability of some metrics can be observed even in random changes to architecture. Another surprising result is that Boolean-valued metrics tend to flip their values more often in minor software version increments than in major increments.


international conference on software engineering | 2010

Improving throughput via slowdowns

Maayan Goldstein; Onn Shehory; Rachel Tzoref-Brill; Shmuel Ur

Many service-oriented systems are not well equipped to guarantee that service time is optimized. We have specifically examined two industrial systems which implement service-oriented architectures in real, field environments. We discovered that both were not engineered to properly address surges in service request rate. In the absence of an integral solution, it is difficult and costly to (re-) engineer such a solution in the field. The challenge faced by this study was to deliver a low cost solution, without re-engineering the target systems. This paper introduces such a generic solution. The solution slows-down some components to deliver improvement in request service time. It was implemented, tested, and successfully applied to two industrial systems with no need to modify their logic or architecture. Experiments with those systems exhibited significant improvement in performance. These results have validated our solution and its industrial applicability across systems and environments.


integrated network management | 2009

Performance management via adaptive thresholds with separate control of false positive and false negative errors

David Breitgand; Maayan Goldstein; Ealan Henis; Onn Shehory

Component level performance thresholds are widely used as a basic means for performance management. As the complexity of managed systems increases, manual threshold maintenance becomes a difficult task. This may result from a) a large number of system components and their operational metrics, b) dynamically changing workloads, and c) complex dependencies between system components. To alleviate this problem, we advocate that component level thresholds should be computed, managed and optimized automatically and autonomously. To this end, we have designed and implemented a performance threshold management sub-system that automatically and dynamically computes two separate component level thresholds: one for controlling Type I errors and another for controlling Type II errors. We present the theoretical foundation for this autonomic threshold management system, describe a specific algorithm and its implementation, and evaluate it using real-life scenarios and production data sets. As our present study shows, with proper parameter tuning, our on-line dynamic solution is capable of nearly optimal performance thresholds calculation.


international conference on software engineering | 2014

Improving software through automatic untangling of cyclic dependencies

Maayan Goldstein; Dany Moshkovich

Cyclic dependencies among software components are considered an architectural problem that increases the development time and prevents proper reuse. One cause for the existence of such dependencies is the improper organization of elements into components. Optimal reorganization of the components that resolves the cyclic dependencies in large and complex software systems is extremely difficult to perform manually and is not computationally feasible to perform automatically. We present an approach for automatic untangling of cyclic dependencies among components for cycles of any size, having direct or transitive dependencies on one another. Our approach aims at minimizing the modifications to the original structure of the system, while taking into account various architectural properties. We evaluate our solution on twelve open source and three industrial applications. We demonstrate its applicability and value through architectural metrics and feedback from system architects.


evaluation and usability of programming languages and tools | 2011

How much information do software metrics contain

Yossi Gil; Maayan Goldstein; Dany Moshkovich

Software metrics computation and presentation are considered an important feature of many software design and development tools. The System Grokking Technology developed by IBM research enables investigation, validation and evolution of complex software systems at the level of abstraction suitable for human comprehension. As part of our ongoing effort to improve the tool and offer more useful abstractions we considered adorning the presented information with software metrics. The difficulty in doing that is in selecting among the legions of metrics competing for both scarce screen space and for the architects attention. In this paper, we describe a new criterion for evaluating the competing metrics based on a normalized version of Shannons information theoretical content. We also give values of these in a large software corpus and for a large set of metrics. Based on our measurements and this criterion, we can recommend the presentation of two metrics: module centrality, as measured by a variant of Googles classical page ranking algorithm, and module size, as measured by Chidamber and Kemerers WMC metric.

Collaboration


Dive into the Maayan Goldstein's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Joseph Gil

Technion – Israel Institute of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge