11 research outputs found

    A Software Evolution Process Model: Analysis of Software Failure Causes

    Get PDF
    This paper presents a study on the degree of impact of several components on the evolvability of software systems. In particular, it focuses on failure rates, testing, and other factors which force the evolution of a software system. Also, it studies the evolution of software systems in the presence of various failure scenarios. Unlike previous studies based on the system dynamic (SD) model, this study is modeled on the basis of actor-network theory (ANT) of software evolution, using the system dynamic environment. The main index used in this study is the destabilization period after the recovery from any failure scenario. The results show that more testing and quick recovery after failure are keys to a fast system return to stability

    A Software Evolution Process Model: Analysis of Software Failure Causes

    Get PDF
    This paper presents a study on the degree of impact of several components on the evolvability of software systems. In particular, it focuses on failure rates, testing, and other factors which force the evolution of a software system. Also, it studies the evolution of software systems in the presence of various failure scenarios. Unlike previous studies based on the system dynamic (SD) model, this study is modeled on the basis of actor-network theory (ANT) of software evolution, using the system dynamic environment. The main index used in this study is the destabilization period after the recovery from any failure scenario. The results show that more testing and quick recovery after failure are keys to a fast system return to stability

    An Algorithm for the Generation of Segmented Parametric Software Estimation Models and Its Empirical Evaluation

    Get PDF
    Parametric software effort estimation techniques use mathematical cost-estimation relationships derived from historical project databases, usually obtained through standard curve regression techniques. Nonetheless, project databases -- especially in the case of consortium-created compilations like the ISBSG --, collect highly heterogeneous data, coming from projects that diverge in size, process and personnel skills, among other factors. This results in that a single parametric model is seldom able to capture the diversity of the sources, in turn resulting in poor overall quality. Segmented parametric estimation models use local regression to derive one model per each segment of data with similar characteristics, improving the overall predictive quality of parametrics. Further, the process of obtaining segmented models can be expressed in the form of a generic algorithm that can be used to produce candidate models in an automated process of calibration from the project database at hand. This paper describes the rationale for such algorithmic scheme along with the empirical evaluation of a concrete version that uses the EM clustering algorithm combined with the common parametric exponential model of size-effort, and standard quality-of-adjustment criteria. Results point out to the adequacy of the technique as an extension of existing single-relation models

    Proses Refactoring Paket Menggunakan Teknik Clustering

    Get PDF
    Salah satu tantangan terbesar dalam persoalan Rekayasa Perangkat Lunak adalah ketika dihadapkan pada kondisi adanya kompleksitas internal perangkat lunak. Salah satu cara yang dapat digunakan untuk mengatasi persoalan kompleksitas pada perangkat lunak adalah dengan melakukan refactoring. Refactoring perangkat lunak merupakan sebuah teknik untuk melakukan perubahan struktur internal perangkat lunak tanpa merubah perilaku eksternal dari perangkat lunak itu sendiri. Banyak bagian dari perangkat lunak yang dapat direfactoring, salah satunya adalah paket. Proses refactoring pada level paket dilakukan dengan tujuan untuk meningkatkan hubungan keterkaitan (interdependensi) kelas-kelas dalam satu paket (intra package cohesion). kelas-kelas yang sebelumnya sudah berada dalam paketnya masing-masing akan di restrukturisasi. Kelas-kelas akan dikelompokkan menjadi satu paket berdasarkan pada hubungan kedekatan. Hubungan kedekatan antar kelas ini yang digunakan sebagai ukuran (similarity measure) antara kelas satu dengan kelas lainnya, sehingga kelas yang memiliki hubungan kedekatan tinggi akan ditempatkan dalam satu kelompok paket. Untuk mendukung proses pengelompokan kelas-kelas ini diperlukan suatu teknik yang dikenal dengan clustering. Metode yang digunakan untuk melakukan proses pengelompokan kelas-kelas dengan menggunakan metode SLINK (Single Linkage) dengan harapan akan memberikan hasil cluster baru yang akan berpengaruh pada peningkatan kohesi paket. =================================================================================================== One of the big challenges on Software Engineering is when we faced with the internal complexity. The way that can be used to overcome it is to do refactoring process. Refactoring is a technique to make changes internal structure without changing external behaviour. Many part of software can be refactoring, one of them is refactoring at the level package. The aims refactoring at the level package is to improve intra package relation, its call with package cohesion. classes that previously located in the package will be restructured. The classes will be grouped into one package based on closes relation. The close Relation between classes is used as a measure (similarity measure) between pair class, so classes that have high close relation will be placed in a one package. To support of the process, required a technique known as clustering. The method used to carry out the grouping process class by using SLINK (Single Linkage) with the hope of a new cluster can giving results that impact on improving cohesion package. Keywords: Clustering, Package , Refactoring, SLINK, Similarity Measuremen

    Évaluation de la cohésion des classes : une nouvelle approche basée sur la classification

    Get PDF

    Preserving the Quality of Architectural Tactics in Source Code

    Get PDF
    In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, to devise and compare alternative architectural design solutions, and ultimately to make a series of design decisions in order to satisfy each of the quality concerns. Unfortunately, anecdotal evidence has shown that architectural knowledge tends to be tacit in nature, stored in the heads of people, and lost over time. Therefore, developers often lack comprehensive knowledge of underlying architectural design decisions and inadvertently degrade the quality of the architecture while performing maintenance activities. In practice, this problem can be addressed through preserving the relationships between the requirements, architectural design decisions and their implementations in the source code, and then using this information to keep developers aware of critical architectural aspects of the code. This dissertation presents a novel approach that utilizes machine learning techniques to recover and preserve the relationships between architecturally significant requirements, architectural decisions and their realizations in the implemented code. Our approach for recovering architectural decisions includes the two primary stages of training and classification. In the first stage, the classifier is trained using code snippets of different architectural decisions collected from various software systems. During this phase, the classifier learns the terms that developers typically use to implement each architectural decision. These ``indicator terms\u27\u27 represent method names, variable names, comments, or the development APIs that developers inevitably use to implement various architectural decisions. A probabilistic weight is then computed for each potential indicator term with respect to each type of architectural decision. The weight estimates how strongly an indicator term represents a specific architectural tactics/decisions. For example, a term such as \emph{pulse} is highly representative of the heartbeat tactic but occurs infrequently in the authentication. After learning the indicator terms, the classifier can compute the likelihood that any given source file implements a specific architectural decision. The classifier was evaluated through several different experiments including classical cross-validation over code snippets of 50 open source projects and on the entire source code of a large scale software system. Results showed that classifier can reliably recognize a wide range of architectural decisions. The technique introduced in this dissertation is used to develop the Archie tool suite. Archie is a plug-in for Eclipse and is designed to detect wide range of architectural design decisions in the code and to protect them from potential degradation during maintenance activities. It has several features for performing change impact analysis of architectural concerns at both the code and design level and proactively keep developers informed of underlying architectural decisions during maintenance activities. Archie is at the stage of technology transfer at the US Department of Homeland Security where it is purely used to detect and monitor security choices. Furthermore, this outcome is integrated into the Department of Homeland Security\u27s Software Assurance Market Place (SWAMP) to advance research and development of secure software systems
    corecore