Friedrich Steimann's research while affiliated with FernUniversität in Hagen and other places

Publications (114)

Article
To let expressions evaluate to no or many objects, most object-oriented programming languages require the use of special constructs that encode these cases as single objects or values. While the requirement to treat these standard situations idiomatically seems to be broadly accepted, I argue that its alternative, letting expressions evaluate to an...
Conference Paper
Collaboration among programmers today mostly relies on file-based version control systems. These systems typically use optimistic locking to enable parallel work, meaning that competing edits (edit conflicts) are detected and have to be resolved at update or commit time. While merging edits can partly be automated, it is an error-prone task that ca...
Conference Paper
ion is broadly considered a key asset in the making of software. However, the author finds that uncritical belief in abstraction puts software development at a substantial risk of failure. His essay combines some personal observations with more general concerns regarding the potential fatality of abstraction.
Article
Constraint-based refactoring generalizes constraint-based type refactoring as introduced by Tip et al. [61] by extending the coverage of change from types to names, locations, accessibilities, and other properties of program elements. Starting with a generic specification of refactoring tools, we systematically develop constraint-based refactoring...
Conference Paper
For decades, the design and implementation of programming languages has been based on phrase structure grammars, which divide a program recursively into phrases (represented by nonterminals), leaving the words of the program (the terminals) as the atoms of this division. By contrast, dependency grammar suggests that dependency between words, not co...
Conference Paper
While contemporary projectional editors make sure that the edited programs conform to the programming language’s metamodel, they do not enforce that they are also well-formed, that is, that they obey the well-formedness rules defined for the language. We show how, based on a constraint-based capture of well-formedness, projectional editors can be...
Conference Paper
Refactoring is the process of changing a program in such a way that its design improves with respect to some specific goal, while its observable behaviour remains the same. Trivially, the latter includes the preservation of the program’s well-formedness, since arguably, a malformed program has no behaviour to be preserved. While the problem of refa...
Article
Attribute grammars decorate the nodes of a program's parse tree with attributes whose values are defined by equations encoding the (static) semantics of a programming language. We show how replacing the equations of an attribute grammar with equivalent constraints that can be solved by a constraint solver allows us to compute repairs of a malformed...
Conference Paper
Attribute grammars decorate the nodes of a program's parse tree with attributes whose values are defined by equations encoding the (static) semantics of a programming language. We show how replacing the equations of an attribute grammar with equivalent constraints that can be solved by a constraint solver allows us to compute repairs of a malformed...
Article
Programs may contain multiple faults, in which case their debugging can be parallelized. However, effective parallelization requires some guarantees that parallel debugging tasks do not address the same fault, an inherent problem of earlier, clustering-based approaches to parallel debugging. In this paper, we identify a number of fundamental trade-...
Conference Paper
Full-text available
Although model-driven engineering (MDE) is now an established approach for developing complex software systems, it has not been universally adopted by the software industry. In order to better understand the reasons for this, as well as to identify future opportunities for MDE, we carried out a week-long design thinking experiment with 15 MDE exper...
Article
In object-oriented programs, the relationship of an object to many objects is usually implemented using indirection through a collection. This is in contrast to a relationship to one object, which is usually implemented directly. However, using collections for relationships to many objects does not only mean that accessing the related objects alway...
Conference Paper
Model-driven engineering suggests that models are the primary artefacts of software development. This means that models may be refactored even after code has been generated from them, in which case the code must be changed to reflect the refactoring. However, as we show neither re-generating the code from the re-factored model nor applying an equiv...
Conference Paper
In object-oriented programs, the relationship of an object to many objects is usually implemented using a collection. This is in contrast to a relationship to one object, which is usually realized as a direct value. However, using collections for relationships to many objects does not only mean that accessing the related objects always requires acc...
Conference Paper
We define befactoring as the converse of refactoring, and discuss some issues concerning befactoring tool support as well as how both refactoring and befactoring are comprised under the more general notion of a controlled change.
Conference Paper
Model assist is a feature of modelling environments aiding their users with entering well-formed models into an editor. Current implementations of model assist are mostly hard-coded in the editor and duplicate the logic captured in the environment’s validation methods used for post hoc checking of models for well-formedness. We propose a fully decl...
Conference Paper
Resuming past work on coverage-based fault localization, we find that empirical assessments of its accuracy are subject to so many imponderables that they are of limited value. To improve on this situation, we have compiled a comprehensive list of threats to be considered when attempting such assessments in the future. In addition, we propose the e...
Article
Modelling languages such as the UML specify well-formedness as constraints on models. For the refactoring of a model to be correct, it must take these constraints into account and check that they are still satisfied after the refactoring has been performed—if not, execution of the refactoring must be refused. By replacing constraint checking with c...
Conference Paper
Coverage-based fault localization extends the utility of testing from detecting the presence of faults to their localization. While coverage-based fault localization has shown good evaluation results for the single fault case, its ability to localize several faults at once appears to be limited. In this paper, we show how two partitioning procedure...
Conference Paper
As with design patterns before, the naming and cataloguing of refactorings has contributed significantly to the recognition of the discipline. However, in practice concrete refactoring needs may deviate from what has been distilled as a named refactoring, and mapping these needs to a series of such refactorings --- if at all possible --- can be dif...
Conference Paper
Constraint-based refactoring tools as currently implemented generate their required constraint sets from the programs to be refactored, before any changes are performed. Constraint generation is thus unable to see --- and regard --- the changed structure of the refactored program, although this new structure may give rise to new constraints that ne...
Article
Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g. , pa...
Conference Paper
We generalize previous work on constraint-based refactoring and develop it into the definition of a constraint language allowing the specification of refactorings in a completely declarative way. We present a compiler that transforms specifications in our language to plug-ins for an IDE that, together with an accompanying framework providing the ne...
Conference Paper
Role objects are a widely recognized design pattern for representing objects that expose different properties in different contexts. By developing a tool that automatically refactors legacy code towards this pattern and by applying this tool to several programs, we have found not only that refactoring to role objects as currently defined produces c...
Conference Paper
The UML standard specifies well-formedness rules as constraints on UML models. To be correct, refactoring of a model must take these constraints into account and check that they are still satisfied after a refactoring has been performed — if not, the refactoring must be refused. With constraint-based refactoring, constraint checking is replaced by...
Article
Through implicit invocation, procedures are called without explicitly referencing them. Implicit announcement adds to this implicitness by not only keeping implicit which procedures are called, but also where or when -- under implicit invocation with implicit announcement, the call site contains no signs of that, or what it calls. Recently, aspect-...
Conference Paper
The efficacy of mutation analysis depends heavily on its capability to mutate programs in such a way that they remain executable and exhibit deviating behaviour. Whereas the former requires knowledge about the syntax and static semantics of the programming language, the latter requires some least understanding of its dynamic semantics, i.e., how ex...
Conference Paper
We propose the introduction of a special kind of traits that implement methods implicitly invoked when an event of a given type occurs. Events are announced explicitly in the source code at their place of origin, and classes publishing events, as well as traits subscribing to them, are explicitly marked as such. The result is greater independence o...
Conference Paper
Contemporary refactoring tools for JAVA aiding in the restructuring of programs have problems with respecting access modifiers such as public and private: while some tools provide hints that referenced elements may be- come inaccessible due to the intended restructuring, none we have tested pre- vent changes that alter the meaning of a program, and...
Conference Paper
Fault localization helps spotting faults in source code by exploiting automatically collected data. Deviating from other fault locators relying on hit spectra or test coverage information, we do not compute the likelihood of each possible fault location by evaluating its participation in failed and passed test cases, but rather search for each fail...
Conference Paper
Full-text available
Running unit tests suites with contemporary tools such as JUnit can show the presence of bugs, but not their locations. This is different from checking a program with a compiler, which always points the programmer to the most likely causes of the errors it detects. We argue that there is enough information in test suites and the programs under test...
Article
This report describes the "Roles'07 — Roles and Relationships" work- shop held at ECOOP'07 in Berlin on July 30 and 31, 2007. The aims and organi- zation of the workshop are described, and the main contributions of the presenta- tions and invited talks are summarized, so to have a useful survey of current issues in the field. The description of the...
Conference Paper
Access modifiers like public and private let the programmer control the accessibility of class members. Restricted accessibility supports encapsula- tion, i.e., the hiding of implementation details behind the interface of a class. However, what is an implementation detail and what makes the interface of a class is often subject to change: especiall...
Conference Paper
Because of the strong coupling of classes and the proliferation of unneeded class members induced by inheritance, the suggestion to use composition and delegation instead has become common- place. The presentation of a corresponding refactoring in the lit- erature may lead one to believe that such a transformation is a straightforward undertaking....
Article
Common conceptions of the notions of role, relationship, and collaboration in object-oriented programming and related disci- plines are briefly recalled and related to each other, working towards a view that allows it to fit them all together, eventually setting the cornerstones for the definition of a truly useful and widely accepted novel program...
Conference Paper
Full-text available
Models addressing both structure and behaviour of a system are usu- ally quite complex. Much of the complexity is caused by the necessity to distin- guish between different cases, such as legal vs. illegal constellations of objects, typical vs. rare scenarios, and normal vs. exceptional flows of control. The re- sult is an explosion of cases causin...
Conference Paper
Full-text available
In this paper, we present our approach to a visual refactoring tool, the Type Access Analyzer (TAA), which uses program analysis to detect code smells and for suggesting and performing refactorings related to typing. In particular, the TAA is intended to help the developers with consistently programming to interfaces.
Conference Paper
This report describes the “Roles‘07 — Roles and Relationships” workshop held at ECOOP‘07 in Berlin on July 30 and 31, 2007. The aims and organization of the workshop are described, and the main contributions of the presentations and invited talks are summarized, so to have a useful survey of current issues in the field. The description of the discu...
Article
Full-text available
Programs designed from scratch often start with just a set of classes. Classes can be instantiated and so deliver the objects that are the carriers of information and function. In languages like JAVA and C++, classes also define types, so that they are sufficient to write a fully functional, type-checked program. Abstract classes and interfaces, wh...
Conference Paper
Unit testing is essential in the agile context. A unit test case written long ago may uncover an error introduced only recently, at a time at which awareness of the test and the requirement it expresses may have long vanished. Popular unit testing frameworks such as JUnit may then detect the error at little more cost than the run of a static progra...
Conference Paper
The Declared Type Generalization Checker is a plug-in for Eclipse's Java Development Tools (JDT) that supports developers in systematically find- ing and using better fitting types in their programs. A type A is considered to fit better than a type B for a declaration element (variable) d if A is more general than B, that is, if A provides fewer me...
Article
Interface-based programming, i.e. the systematic use of interface types in variable dec- larations, serves the decoupling of classes and increases a program's changeability. To maximize this effect, interfaces should contain as few elements as possible. For the de- sign of minimal (i.e., maximally general) interfaces, an in-depth analysis of the pr...
Article
This report describes the "Roles'07--Roles and Relationships" workshop held at ECOOP'07 in Berlin on July 30 and 31, 2007. The aims and organization of the workshop are described, and the main contributions of the presentations and invited talks are summarized, so to have a useful survey of current issues in the field. The description of the discus...
Article
While Bachman's role data model is often cited, it appears that its contribution, the introduction of role types and their conception as unions of entity types that occupy the places of relationship types, has mostly been ignored. This is unfortunate since it has led to countless reinventions of the wheel, and sometimes even to regress. With this h...
Conference Paper
Aspect-Oriented Programming (AOP) and Aspect-Oriented Software Development (AOSD) endeavor to aid programmers in the separation of concerns, specifically crosscutting concerns, as an advance in modularization. AOP does so using primarily language changes, while AOSD uses a combination of language, environment, and methodology. But the concepts of o...
Conference Paper
Aspect-oriented programming is considered a promising new technology. As object-oriented programming did before, it is be- ginning to pervade all areas of software engineering. With its growing popularity, practitioners and academics alike are wonder- ing whether they should start looking into it, or otherwise risk having missed an important develo...
Conference Paper
Full-text available
Using small, context-specific interfaces in variable declarations serves the decoupling of classes and increases a program's flexi- bility. To minimize its interface, a thorough analysis of the proto- col needed from a variable is required. Currently available refac- torings for the extraction of interfaces leave the programmer alone with the decis...
Article
Full-text available
We suggest a framework for UML diagram validation and execution that takes advan- tage of some of the practical restrictions induced by diagrammatic representations (as compared to Turing equivalent programming languages) by exploiting possible gains in decidability. In particu- lar, within our framework we can prove that an object interaction come...
Conference Paper
Infinite recursion is a known problem of aspect-oriented programming with AspectJ: if no special precautions are taken, aspects advising aspects can eas- ily and unintentionally advise themselves. We present a compiler for an extension of the AspectJ programming language that avoids self reference by associating as- pects with levels, and by automa...
Conference Paper
Full-text available
Die objektorientierte Modellierung ist als eine Sammlung bewährter, aber nicht unbedingt zur kombinierten Verwendung bestimmter Notationen und Formalismen entstanden. So besteht bis heute ein Bedarf an Ansätzen zur Integra- tion der verschiedenen, durch die Einzelformalismen gewährten Sichten auf ein modelliertes System. In dieser Arbeit präsentier...
Article
Unless explicitly prevented, aspects can apply to themselves and can therefore change their own behaviour. This self-adaptation can lead to syntactically correct programs that express antino-mies, i.e., that are meaningless (have no intuitive semantics). Drawing the parallel to mathematical logic, we suggest adopting the classical solution presente...
Article
Full-text available
Despite the considerable effort invested by industry and academia in modeling standards such as UML (Unified Modeling Language), software modeling has long played a subordinate role in commercial software development. Although modeling is generally perceived as state of the art and thus as something that ought to be done, its appreciation seems to...
Conference Paper
Proponents of aspect orientation have successfully seeded the impression that aspects — like objects — are so fundamental a notion that they should pervade all phases and artefacts of the software development process. Aspect orientation has therefore proliferated from programming to design to analysis to requirements, sparing neither software proce...
Article
Full-text available
Modern software architectures heavily promote the use of interfaces. Originally conceived as a means to separate specification from implementation, popular programming languages toady accommodate interfaces as special kinds of types that can be used - in place of classes - in variable declarations. While it is clear that these interfaces offer poly...
Article
Object-oriented programs consist of classes some of which are technical, some of which are domain-specific (or application-specific) in nature. Technical classes such as String, Vector, and Exception are used in literally all programs: they are general purpose ("helper") classes whose use is not restricted to any particular problem. Other classes s...
Conference Paper
Full-text available
Interfaces as defined in the Java programming language can enhance both decoupling and comprehensibility of large code bases. Several researchers have pointed out this key role of interfaces in object-oriented programming, but so far only little insight as to how interfaces are actually used in practice has been made avilable. We fill this gap by a...
Conference Paper
Mit der Standardisierung der Unified Modeling Language (UML) wurde der Versuch unternommen, für die Softwareentwicklung eine normierte graphische Spezifikationsform einzuführen, die für alle Projektbeteiligten verständlich ist und somit eine Überprüfung von Vollständigkeit und Korrektheit der darin festgehalte- nen Produktanforderungen sowie deren...
Conference Paper
The success of object-oriented software modelling depends to a large extent on the ability to create adequate abstractions. While abstraction itself must remain an intellectual process, a modelling language can support or hinder this process by offering different kinds or dimensions of abstraction. For in- stance, adhering to the object-oriented pa...
Article
JAVA'S interface construct is widely perceived as a weak surrogate for multiple inheritance. Consequently, it should come as no surprise that despite their potential for writing highly decoupled code, interfaces are used rather sparingly. We have devised a conceptual framework for the utilization of interfaces in JAVA programs, and suggest tool sup...
Article
The classical view of a register-based abstract machine is a barrier for understanding the execution of object-oriented programs. We visualize program execution based on the object-oriented paradigm with its objects and the message flows between them. For this we propose a visualisation for intuitive understanding of object-oriented based program e...
Conference Paper
Rather than teaching XP as a software development method, we have found that some of XP's core practices are actually viable learning scenarios. By combining these practices into a set of regulations, we have organized a well-received 200 h software practical regularly conducted during the 4th se- mester of an applied informatics curriculum.
Article
We suggest a framework for UML diagram validation and execution that takes advantage of some of UML's restrictions (as compared to Turing equivalent programming languages) by exploiting possible gains in decidability.
Article
Full-text available
Current hypermedia modeling techniques such as OOHDM, RMM or WebML rely on class-based domain models to guide the hyper-media construction process. In this paper we discuss the notion of role-oriented models as particularly suited for capturing differ-ent semantic contexts of hypermedia interfaces. The key idea is to allow resources to fill differe...
Conference Paper
Full-text available
JAVA's interface construct is widely perceived as a weak surrogate for multiple inheritance. Consequently, it should come as no surprise that despite their potential for writing highly decoupled code, interfaces are used rather sparingly. We have devised a conceptual framework for the utilization of interfaces in JAVA programs, and suggest tool sup...
Article
tics curriculum. Students were asked to divide up into ten equal-size groups, and each group was subsequently provided with four exercises, each comprised of six more or less independent tasks. Students were encouraged to process their tasks as pair programmers (two tasks for one pair) but could also solve them alone (one task per individual). Afte...
Conference Paper
Full-text available
UML's current core semantics suffers both from excessive complexity and from being overly general. Resultant is a language definition that is difficult to master and to repair. This is the more disturbing as the current core and its extensions do very little to integrate statics and dynamics, even though the inseparability of these is a property of...
Article
this paper is based on Hellwig's Dependency Unification Grammar (DUG) (Hellwig 1986). We merely add a framework for automatic translation of DUG rules to Horn clauses that makes DUGs as easy to implement as classic DCGs
Article
Interfaces are a prominent OO programming concept, since they allow the decoupling of specification and implementation. Roles, on the other hand, are a popular OO modeling concept. For example, UML has rolenames, classifier roles, association roles, and association end roles. Although roles and interfaces appear unrelated at first glance, it is sho...
Article
Since its inception fuzzy set theory has been regarded as a formalism suitable to deal with the imprecision intrinsic to many medical problems. Based on a literature survey on the first 30 years, we investigate the impact fuzzy set theory has had on the work in medical AI and point out what it is most appreciated for.
Article
Families are groups of classes that are related by genus, that is, by having one common ancestor. Typical examples of families are numbers, collections and geometrical shapes, which are usually realized as subhierarchies of a global class hierarchy. The Family pattern adds virtual instance creation to these subhierarchies and suggests that certain...
Article
The duality of objects and relationships is so deeply embedded in our thinking that almost all modelling languages include it as a fundamental distinction. Yet there is evidence that the two are naturally complemented by a third, equally fundamental notion: that of roles. Although definitions of the role concept abound in the literature, we maintai...
Article
Class Hierarchies This rule is not as arbitrary as it may seem. In fact, it only paraphrases a common constraint on subtyping, namely that the extension of a supertype is totally covered by the extensions of its subtypes, thus rendering the supertype a mere abstraction. For example, applied to the class hierarchy of Figure 1a, it is implied that al...
Article
Interfaces are a prominent OO programming concept, since they allow the decoupling of specification and implementation. Roles, on the other hand, are a popular OO modeling concept. For example, UML has rolenames, classifier roles, association roles, and association end roles. Although roles and interfaces appear unrelated at first glance, it is sho...
Article
ppropriate new subtypes. Intuitively, however, the role of a concept is a different property than its generic type, so that combining both in one hierarchy may appear awkward; another solution is to separate role and concept and maintain different taxonomies, as does the GALEN approach [Rector]. Problem #2: specialization of CCGs The specialization...
Article
: The theory of conceptual structures serves as a common basis for natural language processing and medical concept representation. We present a PROLOG-based formalization of dependency grammar that can accommodate conceptual structures in its dependency rules. First results indicate that this formalization provides an operational basis for the impl...
Conference Paper
UML's current definition of the role concept comes with many problems, not the least being that it is difficult to understand and communicate. This paper proposes a revised UML metamodel building on a much simpler role definition. Moreover, it replaces the rather unusual notions of association role and association end role as well as the rarely use...
Conference Paper
UML’s current definition of the role concept comes with many problems, not the least being that it is difficult to understand and communicate. This paper proposes a revised UML metamodel building on a much simpler role definition. Moreover, it replaces the rather unusual notions of association role and association end role as well as the rarely use...
Article
iness is sometimes at conflict with the rigor of formal analysis, as the following example demonstrates. * Address: +49 511 7629712; e-mail: steimann@acm.org 0933-3657/97/$17.00 1997 Elsevier Science B.V. All rights reserved. PII S0933-3657(97)00019-5 F. Steimann / Artificial Intelligence in Medicine 11 (1997) 1 -- 7 2 If the low blood pressure of...
Article
: Despite all standardization efforts, medical diagnosis is still considered an art. Much of this status is owed to the fact that medical diagnosis requires a proficiency in coping with uncertainty simply not found in today's computing machinery. Offering a generic and powerful framework for the remodelling of existing systems and the paradigms the...
Article
: The information model chosen by the ISO for the management of open systems is object-oriented. We provide an effective mapping from the structural and behavioural specification of the managed objects of open systems to a compact logical form suitable for model-based diagnosis. Based thereon, we present an efficient algorithm that localizes faults...
Article
Modelle helfen, Probleme zu lösen, indem sie es erlauben, die Ausschnitte der Realität, aus denen die Probleme stammen, zu simulieren. Um ein Modell der Realität zu erstellen, benötigt man zweierlei: 1.) die Kenntnis der (wissenschaftlichen) Disziplin, die sich mit der Natur des jeweiligen Problems befaßt, die also die Konstituenten des Problems, i...
Article
The theory of conceptual structures serves as a common basis for natural language processing and medical concept representation. We present a PROLOG-based formalization of dependency grammar that can accommodate conceptual structures in its dependency rules. First results indicate that this formalization provides an operational basis for the implem...
Article
Full-text available
this paper we focus on a special issue of temporal abstraction: the detection of fuzzy trends. The event of detection is reported to stage two, a fuzzified deterministic automaton capable of assigning diagnoses to sequences of fuzzy events. For the purpose of evaluation, ICU data of an eight month old female suffering from adult respiratory distres...
Article
Full-text available
: The total computerisation of medical records is on its way. However, information systems developed for organisational and business applications are designed to fit in rigid, schematic environments which have very little in common with medical settings; here, the time at which an observation was made and the course of parameters play an essential...
Article
: Based on an example taken from Toxoplasma serology it is shown that employment of formal logic and its symbolic descendants are not always the best choice for supporting medical diagnosis. 1. Introduction Despite a recent tendency towards multidisciplinary education, the vast majority of researchers working in the field of medical informatics is...
Article
Among the diagnostic problems requiring a retrospective assessment of the time an event occurred is that of screening for primary infection with Toxoplasma gondii acquired during pregnancy. We suggest a method to derive the possible times of onset of infection from a small sequence of serological samples by matching them against the knowledge about...

Citations

... Their in-memory representation is comparable to the approach we developed in this paper. One important difference relates to the interaction between C#'s value types and interfaces, the latter being tied to reference semantics, sometimes leading to counter-intuitive situations (Steimann 2021). Swift addresses that issue with value witnesses, implementing different copy behaviors for reference types and value types. ...
... They further provide flexible and customizable locking policy settings to balance conflict prevention and concurrent work [Fan et al. 2017a,b]. Steimann and Kurowsky [2019] propose transactional editing by enforcing the notions of consistency and isolation from the transactional database in the context of collaborative programming. By formalizing code editing as a set of primitive edit operations and deriving the write-and read-locks for them, they achieve fine-grained locking in collaborative programming and global consistency before committing. ...
... Fatal Abstraction, Friedrich Steimann-Fernuniversität in Hagen, Germany; the essay was published in the Onward! proceedings, the extended abstract in this journal [4]. ...
Citing conference paper
... 21 Much of the research that has been conducted about refactorings has focused on making refactoring tools correct and usable. With respect to these tools, researchers have looked at improving correctness 22 by means of different implementation techniques, 18,[23][24][25] checking a minimal set of preconditions, 19 and removing bugs. 26 Researchers have also investigated how to increase the speed of use 27 and investigated overall usability. ...
... A well-typed ASG G = (N , Z ) (and the program or model that it represents) is well-formed iff all rules r ∈ R applied to G evaluate to true. ASGs with holes are well-formed if the residual of their partial evaluation [42] is satisfiable, that is, if there exist well-typed assignments to the unassigned attributes that satisfy the residual (and make the resulting ASG without holes well-formed; see Section 3.6 for details). The required well-typedness of the ASG guarantees that the rules can be evaluated. ...
... Further, in [32], the authors investigated robust editing using projectional editors, i.e., editing a well-formed program results in a well-formed program. Two DSLs are used by the authors. ...
... parser are closer to what would have been defined by a dependency grammar, since each of the statements may have its own behaviour and its own way of arranging its constituents. Recently Steimann was advocating that perhaps that is indeed a better way to define software languages [20]. On the concrete level, he proposed the use of "langrams" which define syntactic categories and contain a lexicon of entries. ...
... Therefore, as second step, for each candidate refactoring, pre-and postconditions of the refactoring are also evaluated. Nevertheless, it is proven that manual and even automated refactorings do not follow strict pre-and post-condition requirements [27]. Therefore, detecting a refactoring only if all pre-and postconditions are valid makes the approach less effective, and considering weaker conditions results many false positive instances. ...
... However, some works have identified the uses of access modifiers that are not restrictive enough. Bouillon et al (2008) present a tool that checks for over-exposed methods in Java applications. Similar to ours, their tool determines the best access modifier by analyzing the references to each method. ...
... Muslu et al. [46] proposed to detect consequences of the code quick fixes but without exploring paths and cycles. Steimann et al. [60] proposed to repair malformd programs. They explored the consequences (side effects) of the repairs successively, i.e., compute in advance paths of repairs. ...