77 research outputs found
Computing change of invariants to support software evolution
Software is always evolving. In the recent years, the development community has shifted towards Agile development paradigm resulting in faster release cycle. This emphasis on speed is, generally, accompanied by an increase in the number of bugs and reduced focus on updating non-functional software artifacts like specification document. Recent studies have found that developers find it difficult to determine whether a change might break code elsewhere in the program, resulting in 25% of bugs fixes to be incorrect or buggy. A method to capture the semantic changes between different versions of a program is vital in understanding the impact of the change and in preventing bugs.
An invariant is a condition that is always true at a given program point. Invariants are used to specify the requirements and desired behavior of a program at any program point. The difference in invariants between different program versions can be used to capture the changes made to the program. In this thesis, we use the change of invariants as a way to capture the semantic changes over different program versions. We designed a static demand-driven algorithm for automatically computing the change of invariants between different versions of a program. To evaluate the algorithm and its ability to capture semantic changes over different program versions, we built a prototype framework called Hydrogen. Our experimental results show that Hydrogen is able to compute the change of invariants between different versions of the programs, and the computed change of invariants can be used for understanding changes and generating assertions to prevent similar bugs in future
Reproducing Failures in Fault Signatures
Software often fails in the field, however reproducing and debugging field
failures is very challenging: the failure-inducing input may be missing, and
the program setup can be complicated and hard to reproduce by the developers.
In this paper, we propose to generate fault signatures from the failure
locations and the original source code to reproduce the faults in small
executable programs. We say that a fault signature reproduces the fault in the
original program if the two failed in the same location, triggered the same
error conditions after executing the same selective sequences of
failure-inducing statements. A fault signature aims to contain only sufficient
statements that can reproduce the faults. That way, it provides some context to
inform how a fault is developed and also avoids unnecessary complexity and
setups that may block fault diagnosis. To compute fault signatures from the
failures, we applied a path-sensitive static analysis tool to generate a path
that leads to the fault, and then applied an existing syntactic patching tool
to convert the path into an executable program. Our evaluation on real-world
bugs from Corebench, BugBench, and Manybugs shows that fault signatures can
reproduce the fault for the original programs. Because fault signatures are
less complex, automatic test input generation tools generated failure-inducing
inputs that could not be generated by using the entire programs. Some
failure-inducing inputs can be directly transferred to the original programs.
Our experimental data are publicly available at
https://doi.org/10.5281/zenodo.5430155
Robotic Partial Nephrectomy with the Da Vinci Xi
Purpose. The surgical expertise to perform robotic partial nephrectomy is heavily dependent on technology. The Da Vinci Xi (XI) is the latest robotic surgical platform with significant advancements compared to its predecessor. We describe our operative technique and experience with the XI system for robotic partial nephrectomy (RPN). Materials and Methods. Patients with clinical T1 renal masses were offered RPN with the XI. We used laser targeting, autopositioning, and a novel “in-line” port placement to perform RPN. Results. 15 patients underwent RPN with the XI. There were no intraoperative complications and no operative conversions. Mean console time was 101.3 minutes (range 44–176 minutes). Mean ischemia time was 17.5 minutes and estimated blood loss was 120 mLs. 12 of 15 patients had renal cell carcinoma. Two patients had oncocytoma and one had benign cystic disease. All patients had negative surgical margins and pathologic T1 disease. Two postoperative complications were encountered, including one patient who developed a pseudoaneurysm and one readmitted for presumed urinary tract infection. Conclusions. RPN with the XI system can be safely performed. Combining our surgical technique with the technological advancements on the XI offers patients acceptable pathologic and perioperative outcomes
What do we need to know to safely store CO2 beneath our shelf seas? Stakeholder workshop report
This report summarises the content and discussion of an Agile Initiative workshop held at the University of Oxford on March 1st 2024, discussing “what do we need to know to safely store CO2 in our UK continental shelf seas?
Circadian Behaviour in Neuroglobin Deficient Mice
Neuroglobin (Ngb), a neuron-specific oxygen-binding globin with an unknown function, has been proposed to play a key role in neuronal survival. We have previously shown Ngb to be highly expressed in the rat suprachiasmatic nucleus (SCN). The present study addresses the effect of Ngb deficiency on circadian behavior. Ngb-deficient and wild-type (wt) mice were placed in running wheels and their activity rhythms, endogenous period and response to light stimuli were investigated. The effect of Ngb deficiency on the expression of Period1 (Per1) and the immediate early gene Fos was determined after light stimulation at night and the neurochemical phenotype of Ngb expressing neurons in wt mice was characterized. Loss of Ngb function had no effect on overall circadian entrainment, but resulted in a significantly larger phase delay of circadian rhythm upon light stimulation at early night. A light-induced increase in Per1, but not Fos, gene expression was observed in Ngb-deficient mice. Ngb expressing neurons which co-stored Gastrin Releasing Peptide (GRP) and were innervated from the eye and the geniculo-hypothalamic tract expressed FOS after light stimulation. No PER1 expression was observed in Ngb-positive neurons. The present study demonstrates for the first time that the genetic elimination of Ngb does not affect core clock function but evokes an increased behavioural response to light concomitant with increased Per1 gene expression in the SCN at early night
Circadian Integration of Glutamatergic Signals by Little SAAS in Novel Suprachiasmatic Circuits
Neuropeptides are critical integrative elements within the central circadian clock in the suprachiasmatic nucleus (SCN), where they mediate both cell-to-cell synchronization and phase adjustments that cause light entrainment. Forward peptidomics identified little SAAS, derived from the proSAAS prohormone, among novel SCN peptides, but its role in the SCN is poorly understood.Little SAAS localization and co-expression with established SCN neuropeptides were evaluated by immunohistochemistry using highly specific antisera and stereological analysis. Functional context was assessed relative to c-FOS induction in light-stimulated animals and on neuronal circadian rhythms in glutamate-stimulated brain slices. We found that little SAAS-expressing neurons comprise the third most abundant neuropeptidergic class (16.4%) with unusual functional circuit contexts. Little SAAS is localized within the densely retinorecipient central SCN of both rat and mouse, but not the retinohypothalamic tract (RHT). Some little SAAS colocalizes with vasoactive intestinal polypeptide (VIP) or gastrin-releasing peptide (GRP), known mediators of light signals, but not arginine vasopressin (AVP). Nearly 50% of little SAAS neurons express c-FOS in response to light exposure in early night. Blockade of signals that relay light information, via NMDA receptors or VIP- and GRP-cognate receptors, has no effect on phase delays of circadian rhythms induced by little SAAS.Little SAAS relays signals downstream of light/glutamatergic signaling from eye to SCN, and independent of VIP and GRP action. These findings suggest that little SAAS forms a third SCN neuropeptidergic system, processing light information and activating phase-shifts within novel circuits of the central circadian clock
A Study on the Use of Computers to Increase Instructional Efficiency
The importance of education both in its quantitative and qualitative aspects is more pressing today than ever before. As a result, the educational profession is under great pressure to increase its productivity. The profession is being asked to train the mass of our young people to higher standards than ever before, to put an end to conditions that are responsible for drop-outs, and to develop techniques to re-educate those adults whose education is either inadequate or obsolete. But there are many obstacles to be overcome in the accomplishment of those goals. The following are some of them: the limited supply of trained teachers; shortage of facilities; lack of adequate techniques; and lack of institutions
Analyzing code fragments for faults
It appears to be a fact of life that no matter how much effort is spent on testing a program, software defects are continually introduced and removed during the development process. Numerous static and dynamic code analysis based techniques exist to help the developers quickly locate and fix these faults. However, in spite of existence of advanced techniques like path-sensitive static analysis tools, fuzzers, automated fault localization, and program repairs, a significant amount of developer's time is still spent in locating, understanding and fixing faults.
In this thesis, we developed code fragment analysis techniques to address these challenges. The code fragments consists of noncontinuous statements extracted from the original programs, with respect to some desired property. These code fragments can then be made executable to help gain further insight on the property. First, we identified a set of challenges for extracting and building such statements and devised solutions for them. Then, we used our findings to automatically validate path-sensitive static analysis warnings by converting the paths reported by the tools into code fragments. These code fragments are then dynamically executed to check for the existence of the static warnings reported by the tools.
We found that code fragments are able to validate static warnings by exposing their dynamic symptoms. Hence, we created as-small-as-possible executable code fragments that can reproduce the faults called fault signatures. We found that the smaller size and complexity of the fault signatures helped fuzzers to generate crashing inputs for faults that are harder to reproduce using the original programs. As the next step, we generated fault signatures for crashes reported by fuzzers. We then used them to identify "unique" faults and deduplicate the crashing inputs reported by the fuzzers. We found that using fault signatures correctly grouped the crashing inputs for unique faults and outperformed the state-of-the-art fuzzer based deduplication methods by as much as 75 times.
Finally, we analyzed features of code fragments and used diffs generated from vulnerability fixing patches to actively train a machine learning model that identifies statements that contribute towards the bug fix. This model was then used to produce a large dataset of line-level vulnerability labels that can be used by other deep-learning based approaches for tasks like identifying vulnerable lines, bug detection, and fault localization. We found that using our dataset improved the performance of LineVul, a state-of-the-art vulnerability detection model, in terms of both the number of detected vulnerable functions/statements and their accuracy
Computing change of invariants to support software evolution
Software is always evolving. In the recent years, the development community has shifted towards Agile development paradigm resulting in faster release cycle. This emphasis on speed is, generally, accompanied by an increase in the number of bugs and reduced focus on updating non-functional software artifacts like specification document. Recent studies have found that developers find it difficult to determine whether a change might break code elsewhere in the program, resulting in 25% of bugs fixes to be incorrect or buggy. A method to capture the semantic changes between different versions of a program is vital in understanding the impact of the change and in preventing bugs.
An invariant is a condition that is always true at a given program point. Invariants are used to specify the requirements and desired behavior of a program at any program point. The difference in invariants between different program versions can be used to capture the changes made to the program. In this thesis, we use the change of invariants as a way to capture the semantic changes over different program versions. We designed a static demand-driven algorithm for automatically computing the change of invariants between different versions of a program. To evaluate the algorithm and its ability to capture semantic changes over different program versions, we built a prototype framework called Hydrogen. Our experimental results show that Hydrogen is able to compute the change of invariants between different versions of the programs, and the computed change of invariants can be used for understanding changes and generating assertions to prevent similar bugs in future.</p
- …