1 |
Specification, implementation and verification of refactoringsSchaefer, Max January 2010 (has links)
Refactoring is the process of reorganising or restructuring code by means of behaviour-preserving program transformations, themselves called refactorings. Most modern development environments come with built-in support for refactoring in the form of automated refactorings that the user can perform at the push of a button. Implementing refactorings is notoriously complex, however, and even state-of-the-art implementations have very low standards of correctness and can introduce subtle changes of behaviour into refactored programs. In this thesis, we develop concepts and techniques that make it possible to give concise, modular specifications of refactorings. These specifications are precise enough to cover all details of the object language, and thus give rise to full featured, high-quality refactoring implementations. Their modularity, on the other hand, makes them amenable to formal proof, and hence opens the door to the rigorous verification of refactorings. We discuss a disciplined approach to maintaining name bindings and avoiding name capture by treating the binding from a name to the declaration it refers to as a dependency that the refactoring has to preserve. This approach readily generalises to other types of dependencies for capturing control flow, data flow and synchronisation behaviour. To implement complex refactorings, it is often helpful for the refactoring to internally work on a richer language with language extensions that make the transformation easier to express. We show how this allows the decomposition of refactorings into small microrefactorings that can be specified, implemented and verified in isolation. We evaluate our approach by giving specifications and implementations of many commonly used refactorings that are concise, yet match the implementations in the popular Java development environment Eclipse in terms of features, and outperform them in terms of correctness. We give detailed informal correctness proofs for some of our specifications, which are greatly aided by their modular structure. Finally, we discuss a rigorous formalisation of the central name binding framework used by most of our specifications in the theorem prover Coq, and show how its correctness can be established mechanically.
|
2 |
What`s in a name: towards literary onomastics in Kiswahili literatureWamitila, Kyallo Wadi 23 August 2012 (has links) (PDF)
A mention of name in literature is almost always likely to recall the question Juliet posed to Romeo about his family name Montague in William Shakespeare´s Romeo and Juliet. In reading creative works we tend to identify characters basically by the names given to them. It is on this basic premise that some character analysis methods tend to define characters by taking recourse to their names and sometimes identifying them in metaphorical terms or as speaking names. Names play a very central and important role in any reading exercise and so would certainly the names given to characters be of importance to us. These are linguistic or semiotic signs that play a very crucial role in the overall linguistic structure of a literary text or its signification. Decoding of the names therefore becomes an important critical engagement in as far as it helps the reader in his deciphering of the text in which the names are. Characters´ names, as this article will show, can be used artistically to achieve a number of goals like encoding a central trait in a particular character´s signification, embracing crucial thematic motifs, ideological toning as well as even showing the particular writer´s point of view. Some of these qualities are easily lost in translation.
|
3 |
What`s in a name: towards literary onomastics in Kiswahili literatureWamitila, Kyallo Wadi 23 August 2012 (has links)
A mention of name in literature is almost always likely to recall the question Juliet posed to Romeo about his family name Montague in William Shakespeare´s Romeo and Juliet. In reading creative works we tend to identify characters basically by the names given to them. It is on this basic premise that some character analysis methods tend to define characters by taking recourse to their names and sometimes identifying them in metaphorical terms or as speaking names. Names play a very central and important role in any reading exercise and so would certainly the names given to characters be of importance to us. These are linguistic or semiotic signs that play a very crucial role in the overall linguistic structure of a literary text or its signification. Decoding of the names therefore becomes an important critical engagement in as far as it helps the reader in his deciphering of the text in which the names are. Characters´ names, as this article will show, can be used artistically to achieve a number of goals like encoding a central trait in a particular character´s signification, embracing crucial thematic motifs, ideological toning as well as even showing the particular writer´s point of view. Some of these qualities are easily lost in translation.
|
Page generated in 0.0467 seconds