1,756 research outputs found

    An Introduction to Slice-Based Cohesion and Coupling Metrics

    Get PDF
    This report provides an overview of slice-based software metrics. It brings together information about the development of the metrics from Weiser’s original idea that program slices may be used in the measurement of program complexity, with alternative slice-based measures proposed by other researchers. In particular, it details two aspects of slice-based metric calculation not covered elsewhere in the literature: output variables and worked examples of the calculations. First, output variables are explained, their use explored and standard reference terms and usage proposed. Calculating slice-based metrics requires a clear understanding of ‘output variables’ because they form the basis for extracting the program slices on which the calculations depend. This report includes a survey of the variation in the definition of output variables used by different research groups and suggests standard terms of reference for these variables. Our study identifies four elements which are combined in the definition of output variables. These are the function return value, modified global variables, modified reference parameters and variables printed or otherwise output by the module. Second, slice-based metric calculations are explained with the aid of worked examples, to assist newcomers to the field. Step-by-step calculations of slice-based cohesion and coupling metrics based on the vertices output by the static analysis tool CodeSurfer (R) are presented and compared with line-based calculations

    Analysis of Slice-Based Metrics for Aspect-Oriented Programs

    Get PDF
    To improve separation of concerns in software design and implementation, the technique of Aspect-Oriented Programming (AOP) was introduced. But AOP has a lot of features like aspects, advices, point-cuts, join-points etc., and because of these the usage of the existing intermediate graph representations is rendered useless. In our work we have defined a new intermediate graph representation for AOP. The construction of SDG is automated by analysing the bytecode of aspect-oriented programs that incorporates the representation of aspect-oriented features. After constructing the SDG, we propose a slicing algorithm that uses the intermediate graph and computes slices for a given AOP. Program slicing has numerous applications in software engineering activities like debugging, testing, maintenance, model checking etc. To implement our proposed slicing technique, we have developed a prototype tool that takes an AOP as input and compute its slices using our proposed slicing algorithm. To evaluate our proposed technique, we have considered some case studies by taking open source projects. The comparative study of our proposed slicing algorithm with some existing algorithms show that our approach is an efficient and scalable approach of slicing for different applications with respect to aspect-oriented programs. Software metrics are used to measure certain aspects of software. Using the slicing approach we have computed eight software metrics which quantitatively and qualitatively analyse the whole aspect project. We have compiled a metrics suite for AOP and an automated prototype tool is developed for helping the process of SDLC

    A new cohesion metric and restructuring technique for object oriented paradigm

    Get PDF
    When software systems grow large during maintenance, they may lose their quality and become complex to read, understood and maintained. Developing a software system usually requires teams of developers working in concert to provide a finished product in a reasonable amount of time. What that means is many people may read each component of the software system such as a class in object oriented programming environment

    Using Program Slicing to Identify Faults in Software

    Get PDF
    This study explores the relationship between program slices and faults. The aim is to investigate whether the characteristics of program slices can be used to identify fault-prone software components. Slicing metrics and dependence clusters are used to characterise the slicing profile of a software component, then the relationship between the slicing profile of the component and the faults in that component are then analysed. Faults can increase the likelihood of a system becoming unstable causing problems for the development and evolution of the system. Identifying faultprone components is difficult and reliable predictors of faultproneness not easily identifiable. Program slicing is an established software engineering technique for the detection and correction of specific faults. An investigation is carried out into whether the use of program slicing can be extended as a reliable tool to predict fault-prone software components. Preliminary results are promising suggesting that slicing may offer valuable insights into fault-proneness

    Identifying Extract Class and Extract Method Refactoring Opportunities Through Analysis of Variable Declarations and Uses

    Get PDF
    For small software systems, with perhaps a few thousand lines of code, software structure is largely an esthetic issue. When software systems grow large, including perhaps a million or more lines of source code, their structures become much more important. Developing a large system requires teams of developers working in concert to provide a finished product in a reasonable amount of time. That means that many people will read each component to use, test or modify towards accomplishing new features. In the software development life cycle, the maintenance phase is a dominant stage that impacts production cost of the system dramatically. This is mainly because, for a successful system, the maintenance phase lasts until the system\u27s retirement and includes crucial operations such as enhancing performance, fixing newly discovered bugs and adopting/expending the software to meet new user requirements. Moreover, a software component may be modified or fixed by someone who is not the original author of that component. In this case, all the operations conducted during maintenance or initial development may lead to insertion of code into a unit that may be unrelated to the original design concept of that unit. As software systems become large and complex they grow too long to read and understand completely by a single person. After their initial implementations, maintenance operations tend to make the system even less maintainable, increasing the time and effort needed for future maintenance. In this research, we are interested in finding ways to successfully detect code defects and propose solutions to increase the overall maintainability of software systems that are larger than any one person can completely comprehend from its code alone. This process of refactoring software impacts the total production cost of the system positively by improving the quality of software code such as its comprehensibility and readability. To reduce the total development cost for a system, we suggest three main re-factorings. These novel forms of refactoring techniques aim to eliminate code defects such as large classes and long methods. The main goal of these re-factorings is to create smaller and cohesive software units with clear intentions to improve the maintainability of software. We provide analysis and visualization tools to help a user identify candidate code fragments to be extracted as separate unites. With these automation tools, developers do not have to manually inspect a foreign code base to detect possible refactoring opportunities. Through the visual representations we provide, one can observe all suggested re-factorings effectively on large scale software systems and decide whether a particular refactoring needs to be applied. To show the effectiveness of our techniques, we also provide some experiments conducted using these tools and techniques both on our own project\u27s source code and other open-source projects

    Expert System for Nutrition Care Process of Older Adults

    Get PDF
    This paper presents an expert system for a nutrition care process tailored for the specific needs of elders. Dietary knowledge is defined by nutritionists and encoded as Nutrition Care Process Ontology, and then used as underlining base and standardized model for the nutrition care planning. An inference engine is developed on top of the ontology, providing semantic reasoning infrastructure and mechanisms for evaluating the rules defined for assessing short and long term elders’ self-feeding behaviours, to identify unhealthy dietary patterns and detect the early instauration of malnutrition. Our expert system provides personalized intervention plans covering nutrition education, diet prescription and food ordering adapted to the older adult’s specific nutritional needs, health conditions and food preferences. In-lab evaluation results are presented proving the usefulness and quality of the expert system as well as the computational efficiency, coupling and cohesion of the defined ontology

    ConSUS: A light-weight program conditioner

    Get PDF
    Program conditioning consists of identifying and removing a set of statements which cannot be executed when a condition of interest holds at some point in a program. It has been applied to problems in maintenance, testing, re-use and re-engineering. All current approaches to program conditioning rely upon both symbolic execution and reasoning about symbolic predicates. The reasoning can be performed by a ‘heavy duty’ theorem prover but this may impose unrealistic performance constraints. This paper reports on a lightweight approach to theorem proving using the FermaT Simplify decision procedure. This is used as a component to ConSUS, a program conditioning system for the Wide Spectrum Language WSL. The paper describes the symbolic execution algorithm used by ConSUS, which prunes as it conditions. The paper also provides empirical evidence that conditioning produces a significant reduction in program size and, although exponential in the worst case, the conditioning system has low degree polynomial behaviour in many cases, thereby making it scalable to unit level applications of program conditioning

    Evaluating Wall Shear Stress Indices to Uncover Stimuli for Restenosis and Malapposition in Stented Coronary Arteries

    Get PDF
    The cause of coronary artery neointimal thickening leading to restenosis in ~10% of drug-eluting stents is unknown. Although research suggests adverse values of traditional wall shear stress (WSS) indices may contribute, studies to date have not accounted for stent geometry, which dictates local WSS patterns influencing drug concentration. Recently proposed WSS indices such as WSS variability and WSS exposure time (WSSET) may shed further light on restenosis or, the opposite effect, resorption. The objective of this investigation was to locally evaluate traditional and recently proposed post-stenting metrics and their respective impact on restenosis or resorption. This study used de-identified data from 29 patients, randomized to thin-strut Promus Element, thin-strut Xience Prime, or thick-strut Nobori stents. All patients underwent optical coherence (OCT) and coronary computed tomography (CT) angiography post-stenting as well as at a 9-month follow-up. WSS metrics were calculated from computational fluid dynamics simulations of patient-specific 3D arteries, reconstructed by the fusion of OCT and CT angiography data, and normalized to WSS in the proximal unstented region. The change in lumen area (CLA) from post-stenting to follow-up was calculated using co-registered OCT pairs (469 pairs), corresponding to OCT imaging locations. The WSS results were compared with CLA using two-step cluster analysis. Results showed that low WSS is a precursor to neointimal thickening, resulting in restenosis, confirming previous research. The Nobori stent was most prominent in the cluster with low WSS, potentially induced by the large radial thickness of the Nobori stent. Furthermore, high WSSET showed a relationship to restenosis. The combination of TAWSS combined with post-stenting WSS variability was shown to be directly related to CLA, which characterized vessel resorption. When vessel resorption occurs, regions of malapposition, uncovered struts or malapposed struts may develop. These are undesirable features, which potentially result in late stent thrombosis. In all, the results from this collection of multiple local analyses provide insight into potential predictive indices of local artery restenosis and resorption after stenting. If confirmed through future prospective studies, these indices may improve the efficacy of drug-eluting stents, thereby improving the quality of life for patients with coronary artery disease

    Automatically assessing and improving code readability and understandability

    Get PDF
    corecore