67 resultados para SCG
Resumo:
Polymorphism, along with inheritance, is one of the most important features in object-oriented languages, but it is also one of the biggest obstacles to source code comprehension. Depending on the run-time type of the receiver of a message, any one of a number of possible methods may be invoked. Several algorithms for creating accurate call-graphs using static analysis already exist, however, they consume significant time and memory resources. We propose an approach that will combine static and dynamic analysis and yield the best possible precision with a minimal trade-off between used resources and accuracy.
Resumo:
Detecting bugs as early as possible plays an important role in ensuring software quality before shipping. We argue that mining previous bug fixes can produce good knowledge about why bugs happen and how they are fixed. In this paper, we mine the change history of 717 open source projects to extract bug-fix patterns. We also manually inspect many of the bugs we found to get insights into the contexts and reasons behind those bugs. For instance, we found out that missing null checks and missing initializations are very recurrent and we believe that they can be automatically detected and fixed.
Resumo:
Code clone detection helps connect developers across projects, if we do it on a large scale. The cornerstones that allow clone detection to work on a large scale are: (1) bad hashing (2) lightweight parsing using regular expressions and (3) MapReduce pipelines. Bad hashing means to determine whether or not two artifacts are similar by checking whether their hashes are identical. We show a bad hashing scheme that works well on source code. Lightweight parsing using regular expressions is our technique of obtaining entire parse trees from regular expressions, robustly and efficiently. We detail the algorithm and implementation of one such regular expression engine. MapReduce pipelines are a way of expressing a computation such that it can automatically and simply be parallelized. We detail the design and implementation of one such MapReduce pipeline that is efficient and debuggable. We show a clone detector that combines these cornerstones to detect code clones across all projects, across all versions of each project.
Resumo:
Software developers are often unsure of the exact name of the method they need to use to invoke the desired behavior in a given context. This results in a process of searching for the correct method name in documentation, which can be lengthy and distracting to the developer. We can decrease the method search time by enhancing the documentation of a class with the most frequently used methods. Usage frequency data for methods is gathered by analyzing other projects from the same ecosystem - written in the same language and sharing dependencies. We implemented a proof of concept of the approach for Pharo Smalltalk and Java. In Pharo Smalltalk, methods are commonly searched for using a code browser tool called "Nautilus", and in Java using a web browser displaying HTML based documentation - Javadoc. We developed plugins for both browsers and gathered method usage data from open source projects, in order to increase developer productivity by reducing method search time. A small initial evaluation has been conducted showing promising results in improving developer productivity.
Resumo:
Software developers are often unsure of the exact name of the API method they need to use to invoke the desired behavior. Most state-of-the-art documentation browsers present API artefacts in alphabetical order. Albeit easy to implement, alphabetical order does not help much: if the developer knew the name of the required method, he could have just searched for it in the first place. In a context where multiple projects use the same API, and their source code is available, we can improve the API presentation by organizing the elements in the order in which they are more likely to be used by the developer. Usage frequency data for methods is gathered by analyzing other projects from the same ecosystem and this data is used then to improve tools. We present a preliminary study on the potential of this approach to improve the API presentation by reducing the time it takes to find the method that implements a given feature. We also briefly present our experience with two proof-of-concept tools implemented for Smalltalk and Java.
Resumo:
Dynamically typed languages lack information about the types of variables in the source code. Developers care about this information as it supports program comprehension. Ba- sic type inference techniques are helpful, but may yield many false positives or negatives. We propose to mine information from the software ecosys- tem on how frequently given types are inferred unambigu- ously to improve the quality of type inference for a single system. This paper presents an approach to augment existing type inference techniques by supplementing the informa- tion available in the source code of a project with data from other projects written in the same language. For all available projects, we track how often messages are sent to instance variables throughout the source code. Predictions for the type of a variable are made based on the messages sent to it. The evaluation of a proof-of-concept prototype shows that this approach works well for types that are sufficiently popular, like those from the standard librarie, and tends to create false positives for unpopular or domain specific types. The false positives are, in most cases, fairly easily identifiable. Also, the evaluation data shows a substantial increase in the number of correctly inferred types when compared to the non-augmented type inference.
Resumo:
Scoping behavioral variations to dynamic extents is useful to support non-functional requirements that otherwise result in cross-cutting code. Unfortunately, such variations are difficult to achieve with traditional reflection or aspects. We show that with a modification of dynamic proxies, called delegation proxies, it becomes possible to reflectively implement variations that propagate to all objects accessed in the dynamic extent of a message send. We demonstrate our approach with examples of variations scoped to dynamic extents that help simplify code related to safety, reliability, and monitoring.
Resumo:
The precise arraying of functional entities in morphologically well-defined shapes remains one of the key challenges in the processing of organic molecules1. Among various π-conjugated species, pyrene exhibits a set of unique properties, which make it an attractive compound for the utilization in materials science2. In this contribution we report on properties of self-assembled structures prepared from amphiphilic pyrene trimers (Py3) consisting of phosphodiester-linked pyrenes. Depending on the geometry of a pyrene core substitution (1.6-, 1.8-, or 2.7- type, see Scheme), the thermally-controlled self-assembly allows the preparation of supramolecular architectures of different morphologies in a bottom-up approach: two-dimensional (2D) nanosheets3 are formed in case of 1.6- and 2.7-substitution4 whereas one-dimensional (1D) fibers are built from 1.8- substituted isomers. The morphologies of the assemblies are established by AFM and TEM, and the results are further correlated with spectroscopic and scattering data. Two-dimensional assemblies consist of an inner layer of hydrophobic pyrenes, sandwiched between a net of phosphates. Due to the repulsion of the negative charges, the 2D assemblies exist mostly as free-standing sheets. An internal alignment of pyrenes leads to strong exciton coupling with an unprecedented observation (simultaneous development of J- and H-bands from two different electronic transitions). Despite the similarity in spectroscopic properties, the structural parameters of the 2D aggregates drastically depend on the preparation procedure. Under certain conditions extra-large sheets (thickness of 2 nm, aspect ratio area/thickness ~107) in aqueous solution are formed4B. Finally, one-dimensional assemblies are formed as micrometer-long and nanometer-thick fibers. Both, planar and linear structures are intriguing objects for the creation of conductive nanowires that may find interest for applications in supramolecular electronics.
Resumo:
Spiders, like all arthropods, exclusively rely on an innate immune system localized in the hemocytes to protect against pathogen invasion. In the hemocytes of the wandering spider Cupiennius salei (C. salei), defensin expression was found to be constitutive. Defensins belong to the group of antimicrobial peptides, which appear in most taxonomic groups, and play an essential role in innate immunity. It has further been reported that during the primary immune answer of C. salei, the peptide content of hemocytes changes markedly, which may indicate the release of defensins from the hemocytes. However, no data on the peptide levels in C. salei hemolymph has so far been published. Formerly, the involvement in the primary immune answer was considered the only function of defensins. However, recent findings strongly suggest that the importance of defensins goes far beyond. There is evidence for defensins contributing to the adaptive immune response, to angiogenesis, and furthermore to tissue repair, i.e. to a variety of essential processes in living organisms. To date, only very little is known about the identity of C. salei defensins and their detailed mode of action. The goal of the work presented herein is the identification of hitherto unknown C. salei defensins in hemocytes and the hemolymph. Moreover, the levels of defensin expression under differential conditions are compared by the means of liquid chromatography-tandem mass spectrometry (LC-MS/MS).
Resumo:
Cancer is one of the most severe and widespread diseases and an ideal treatment has not yet been found. In the last decades, cisplatinum was commonly applied in cancer therapy with very good results. However, serious side effects and resistant tumors necessitated the development of new antineoplastic agents, such as metallocenes dihalides. These are metal-based compounds exhibiting two cyclopentadienyl ligands and a cis-dihalide motif. They resemble the cis-chloro configuration of cisplatinum, which propounds a similar mode of action. Metallocenes comprising one of the transition metals titanium, molybdenum, vanadium, niobium, and zirconium as the metal center have been shown to be effective against several cancer cell lines. Evidence for the accumulation of metallocenes in the nucleus implied that DNA is one of the major targets. Although several studies reported adduct formation of metallocenes with nuclear DNA, as yet substantial information about the general binding pattern and the binding to higher-order structures is lacking. Mass spectrometry can fill this gap as it constitutes a powerful technique to investigate the formation of organometallic adducts. Presented data demonstrate that the two agents titanocene dichloride and molybdenocene dichloride bind to single-stranded DNA and RNA. Distinct fragment ions formed upon collision-induced dissociation help to unravel preferential binding sites within the oligonucleotides. Moreover, adducts with duplexes and quadruplexes shed light on the molecular mechanism of action.
Resumo:
Antisense oligonucleotides are medical agents for the treatment of genetic diseases that are designed to interact specifically with mRNA. This interaction either induces enzymatic degradation of the targeted RNA or modifies processing pathways, e.g. by inducing alternative splicing of the pre-mRNA. The latter mechanism applies to the treatment of Duchenne muscular dystrophy with a sugar-modified DNA analogue called tricyclo-DNA (tcDNA). In tcDNA the ribose sugar-moiety is extended to a three-membered ring system, which augments the binding affinity and the selectivity of the antisense oligonucleotide for its target. The advent of chemically modified nucleic acids for antisense therapy presents a challenge to diagnostic tools, which must be able to cope with a variety of structural analogues. Mass spectrometry meets this demand for non-enzyme based sequencing methods ideally, because the technique is largely unaffected by structural modifications of the analyte. Sequence coverage of a fully modified tcDNA 15mer can be obtained in a single tandem mass spectrometric experiment. Beyond sequencing experiments, tandem mass spectrometry was applied to elucidate the gas-phase structure and stability of tcDNA:DNA and tcDNA:RNA hybrid duplexes. Most remarkable is the formation of truncated duplexes upon collision-induced dissociation of these structures. Our data suggest that the cleavage site within the duplex is directed by the modified sugar-moiety. Moreover, the formation of truncated duplexes manifests the exceptional stability of the hybrid duplexes in the gas-phase. This stability arises from the modified sugar-moiety, which locks the tcDNA single strand into a conformation that is similar to RNA in A-form duplexes. The conformational particularity of tcDNA in the gas-phase was confirmed by ion mobility-mass spectrometry experiments on tcDNA, DNA, and RNA.
Resumo:
Architectural decisions are often encoded in the form of constraints and guidelines. Non-functional requirements can be ensured by checking the conformance of the implementation against this kind of invariant. Conformance checking is often a costly and error-prone process that involves the use of multiple tools, differing in effectiveness, complexity and scope of applicability. To reduce the overall effort entailed by this activity, we propose a novel approach that supports verification of human- readable declarative rules through the use of adapted off-the-shelf tools. Our approach consists of a rule specification DSL, called Dicto, and a tool coordination framework, called Probo. The approach has been implemented in a soon to be evaluated prototype.
Resumo:
Software erosion can be controlled by periodically checking for consistency between the de facto architecture and its theoretical counterpart. Studies show that this process is often not automated and that developers still rely heavily on manual reviews, despite the availability of a large number of tools. This is partially due to the high cost involved in setting up and maintaining tool-specific and incompatible test specifications that replicate otherwise documented invariants. To reduce this cost, our approach consists in unifying the functionality provided by existing tools under the umbrella of a common business-readable DSL. By using a declarative language, we are able to write tool-agnostic rules that are simple enough to be understood by non-technical stakeholders and, at the same time, can be interpreted as a rigorous specification for checking architecture conformance
Resumo:
Software architecture erodes over time and needs to be constantly monitored to be kept consistent with its original intended design. Consistency is rarely monitored using automated techniques. The cost associated to such an activity is typically not considered proportional to its benefits. To improve this situation, we propose Dicto, a uniform DSL for specifying architectural invariants. This language is designed to reduce the cost of consistency checking by offering a framework in which existing validation tools can be matched to newly-defined language constructs. In this paper we discuss how such a DSL can be qualitatively and qualitatively evaluated in practice.