2018 IEEE 12th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2018
A Novel Method to Compute the mv of the states of FA Motivation Fuzzy automata Out method Results... more A Novel Method to Compute the mv of the states of FA Motivation Fuzzy automata Out method Results Conclusions Outline 1 Motivation 2 Fuzzy automata 3 Out method 4 Results Motivation Fuzzy automata Out method Results Conclusions Crisp versus fuzzy automata Crisp automata are used 1 for formal languages 2 for hardware applications, in almost any device from everyday life
2018 IEEE 12th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2018
Software engineers can do tasks of maintenance and evolution of complex software systems only aft... more Software engineers can do tasks of maintenance and evolution of complex software systems only after they understand well the existing code. Our goal is to build automatic tools to help program comprehension by detecting and recommending the most important classes of the system. In this work we identify all the attributes that characterize important classes in object oriented systems and evaluate which attributes can be used with best results for identifying these classes.
2019 IEEE 13th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2019
Emerging software engineering approaches support the idea that general methods and tools for depe... more Emerging software engineering approaches support the idea that general methods and tools for dependency management should take into account not only structural dependencies but also logical dependencies. Logical dependencies between modules of a software system can be diagnosed when these modules repeatedly change together during the evolution of the system. In this work we identify a set of factors that can be used to filter the co-changes such that true logical dependencies are identified. We present preliminary results obtained through an experimental study on a set of open source software projects with their historical evolution, and outline additional factors which need to be investigated in future work.
2019 IEEE 13th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2019
Nowadays, software projects from different industrial sectors tend to grow from tens of classes t... more Nowadays, software projects from different industrial sectors tend to grow from tens of classes towards sizes of hundreds or even thousands of classes. Key classes or hotspots are the most important classes in a project. They represent the starting point for any maintenance operation. In this context key classes detection is an important software engineering task, especially in projects where documentation is poor or missing totally. In the state of the art there are several key classes classifiers based on different representations and algorithms. We focus on the empirical parameters of a classifier based on weighted graph representation of the source code combined with a Page Rank algorithm which give the best results compared to previous works results available online. The empirical parameters represent weights assigned to several relations between classes like: inheritance between two classes, interface implementation between a class and an interface etc. Initially the parameter...
2019 23rd International Conference on System Theory, Control and Computing (ICSTCC), 2019
Object-oriented software maintenance consumes a considerable amount of resources, and a large par... more Object-oriented software maintenance consumes a considerable amount of resources, and a large part is allocated to code understanding. Code understanding is supported by appropriate documentation, and in the initial phases it relies on high-level documentation presenting the systems architecture. Such an architectural overview document presents the most important classes of the system, the key classes. Very often such architectural documentation is missing and it must be restored. Research develops methods for key class detection starting from code analysis.A successful key class classifier is based on weighted graph representation of the classes and their dependency relationships. The graph weights scheme is an important factor in the performance of the classifier. Previous works used an empirically determined weights scheme vector ArchRec from an architecture reconstruction experiment. In this work we investigate if the performance of the key class classifier can be improved by us...
Emerging software engineering approaches support the idea that logical dependencies should be inc... more Emerging software engineering approaches support the idea that logical dependencies should be included next to structural dependencies in general methods and tools for dependency management. However, logical dependencies are still hard to identify, as not all co-changes during the system evolution represent true logical dependencies. Our work identifies a set of factors that can be used to filter the recordings of class co-changes in order to find valid logical dependencies. In order to find the characteristics of logical dependencies, we analyze the quantitative relationships between the sets of logical and structural dependencies and their intersection and differences. We present results obtained through an experimental study on a set of 27 open source software projects written in Java and C# with their historical evolutions which sum up to over 70000 commit transactions. Identifying valid logical dependencies from co-changing classes will enhance dependency models used in various...
Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software Engineering, 2015
Maintenance of complex software systems can be done by software engineers only after they underst... more Maintenance of complex software systems can be done by software engineers only after they understand well the existing code. Program comprehension is supported by documentation-either developer documentation or reverse engineered. What is most often missing is a short document providing the new user with useful information to start with-an executive summary. In this work we propose a tool to automatically extract such a summary, by identifying the most important classes of a system. Our approach relies on techniques of static analysis of dependencies and graph-based ranking. Experiments on a set of real systems show good results.
Clustering is very often used for the purpose of automatic software architecture reconstruction. ... more Clustering is very often used for the purpose of automatic software architecture reconstruction. This work investigates the importance of taking into account different factors for the similarity metric, besides the traditional factor based on direct coupling/cohesion: indirect coupling as computed from the topology of the dependency graph, and global architectural layering resulting from the orientation of dependencies. We experiment with using these factors, individually or combined, for defining the similarity metrics within a set of clustering algorithms.
ABSTRACT In the component based software engineering approach, a software system is viewed as an ... more ABSTRACT In the component based software engineering approach, a software system is viewed as an assembly of reusable independently developed components. In order to produce automated tools to support the selection and assembly of components, rigorous specifications of components and performant retrieval and selection strategies based on these specifications are needed. In this article we propose a fuzzy logic based solution for the specification and retrieval of components.
Reverse engineering creates models of software systems, at a higher level of abstraction or in a ... more Reverse engineering creates models of software systems, at a higher level of abstraction or in a form suitable to a particular analysis. This article presents a meta-model that provides a unitary way of describing primary dependency structures in software systems. It extracts and conceptualizes similarities between different programming languages which, moreover, belong to any of the object-oriented as well as the procedural programming paradigms. The proposed meta-model is validated by the implementation of different tools for model extraction from programs written in Java, C# (CIL) and ANSI C. The utility of the proposed metamodel is shown by supporting a number of different analysis applications such as architectural reconstruction, impact analysis, modularization analysis, refactoring decisions.
Communications in Computer and Information Science, 2013
Many techniques used for discovering faults and vulnerabilities in distributed systems and servic... more Many techniques used for discovering faults and vulnerabilities in distributed systems and services require as inputs formal behavioral models of the systems under validation. Such models are traditionally written by hand, according to the specifications which are known, leading to a gap between the real systems which have to be validated and their abstract models. A method to bridge this gap is to develop tools that automatically extract the models directly from the implementations of distributed systems and services. We propose here a general model extraction solution, applicable to several service technologies. At the core of our solution we develop a method for transforming the control flow graph of an abstract communicating system into its corresponding behavioral model represented as an Extended Finite State Machine. We then illustrate our method for extracting models from services implemented using different concrete technologies such as Java RMI, Web services and HTTP Web applications and servlets.
Communications in Computer and Information Science, 2016
An essential prerequisite before engaging in any maintenance activities of complex software syste... more An essential prerequisite before engaging in any maintenance activities of complex software systems is the good comprehension of the existing code. Program comprehension is supported by documentation, which can be either developer documentation or documentation obtained by reverse engineering. In both cases, but especially in the case of reverse engineered documentation, this means a large amount of detailed documents that have to be carefully studied. Processing such large and detailed information can be made easier if there is an executive summary-a short document pointing to the most important elements of the system. In our work we propose a tool to automatically extract such a summary, by identifying the most important classes of the system. Our approach consists of modeling the static dependencies of the system as a graph and applying a graph ranking algorithm. How we build the dependency graph is the key for the success of the approach. We empirically determine how different dependency types should be taken into account in building the system graph. The proposed approach has been validated by experiments on a set of open source real systems.
Formal behavioral models of software services are used as input by analysis tools which check the... more Formal behavioral models of software services are used as input by analysis tools which check their properties on hand of the given models. However, there is a gap between the real systems which have to be validated and their abstract models. This work proposes to bridge this gap by tools which extract behavioral models from software services implementations. The method proposed here aims at ensuring a general solution, applicable to several service technologies. The core of this solution consists of transforming the control flow graph of a communicating system into its corresponding behavioral model represented as an EFSM (Extended Finite State Machine). The extracted EFSM model can be automatically translated into an entity description in a formal security specification language for distributed systems. This will enable the use of formal analysis tools for real service implementations.
Software architecture is a model of the software system expressed at a high level of abstraction.... more Software architecture is a model of the software system expressed at a high level of abstraction. The architectural view of a system raises the level of abstraction, hiding details of implementation, algorithms, and data representation and concentrating on the interaction ...
2018 IEEE 12th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2018
A Novel Method to Compute the mv of the states of FA Motivation Fuzzy automata Out method Results... more A Novel Method to Compute the mv of the states of FA Motivation Fuzzy automata Out method Results Conclusions Outline 1 Motivation 2 Fuzzy automata 3 Out method 4 Results Motivation Fuzzy automata Out method Results Conclusions Crisp versus fuzzy automata Crisp automata are used 1 for formal languages 2 for hardware applications, in almost any device from everyday life
2018 IEEE 12th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2018
Software engineers can do tasks of maintenance and evolution of complex software systems only aft... more Software engineers can do tasks of maintenance and evolution of complex software systems only after they understand well the existing code. Our goal is to build automatic tools to help program comprehension by detecting and recommending the most important classes of the system. In this work we identify all the attributes that characterize important classes in object oriented systems and evaluate which attributes can be used with best results for identifying these classes.
2019 IEEE 13th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2019
Emerging software engineering approaches support the idea that general methods and tools for depe... more Emerging software engineering approaches support the idea that general methods and tools for dependency management should take into account not only structural dependencies but also logical dependencies. Logical dependencies between modules of a software system can be diagnosed when these modules repeatedly change together during the evolution of the system. In this work we identify a set of factors that can be used to filter the co-changes such that true logical dependencies are identified. We present preliminary results obtained through an experimental study on a set of open source software projects with their historical evolution, and outline additional factors which need to be investigated in future work.
2019 IEEE 13th International Symposium on Applied Computational Intelligence and Informatics (SACI), 2019
Nowadays, software projects from different industrial sectors tend to grow from tens of classes t... more Nowadays, software projects from different industrial sectors tend to grow from tens of classes towards sizes of hundreds or even thousands of classes. Key classes or hotspots are the most important classes in a project. They represent the starting point for any maintenance operation. In this context key classes detection is an important software engineering task, especially in projects where documentation is poor or missing totally. In the state of the art there are several key classes classifiers based on different representations and algorithms. We focus on the empirical parameters of a classifier based on weighted graph representation of the source code combined with a Page Rank algorithm which give the best results compared to previous works results available online. The empirical parameters represent weights assigned to several relations between classes like: inheritance between two classes, interface implementation between a class and an interface etc. Initially the parameter...
2019 23rd International Conference on System Theory, Control and Computing (ICSTCC), 2019
Object-oriented software maintenance consumes a considerable amount of resources, and a large par... more Object-oriented software maintenance consumes a considerable amount of resources, and a large part is allocated to code understanding. Code understanding is supported by appropriate documentation, and in the initial phases it relies on high-level documentation presenting the systems architecture. Such an architectural overview document presents the most important classes of the system, the key classes. Very often such architectural documentation is missing and it must be restored. Research develops methods for key class detection starting from code analysis.A successful key class classifier is based on weighted graph representation of the classes and their dependency relationships. The graph weights scheme is an important factor in the performance of the classifier. Previous works used an empirically determined weights scheme vector ArchRec from an architecture reconstruction experiment. In this work we investigate if the performance of the key class classifier can be improved by us...
Emerging software engineering approaches support the idea that logical dependencies should be inc... more Emerging software engineering approaches support the idea that logical dependencies should be included next to structural dependencies in general methods and tools for dependency management. However, logical dependencies are still hard to identify, as not all co-changes during the system evolution represent true logical dependencies. Our work identifies a set of factors that can be used to filter the recordings of class co-changes in order to find valid logical dependencies. In order to find the characteristics of logical dependencies, we analyze the quantitative relationships between the sets of logical and structural dependencies and their intersection and differences. We present results obtained through an experimental study on a set of 27 open source software projects written in Java and C# with their historical evolutions which sum up to over 70000 commit transactions. Identifying valid logical dependencies from co-changing classes will enhance dependency models used in various...
Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software Engineering, 2015
Maintenance of complex software systems can be done by software engineers only after they underst... more Maintenance of complex software systems can be done by software engineers only after they understand well the existing code. Program comprehension is supported by documentation-either developer documentation or reverse engineered. What is most often missing is a short document providing the new user with useful information to start with-an executive summary. In this work we propose a tool to automatically extract such a summary, by identifying the most important classes of a system. Our approach relies on techniques of static analysis of dependencies and graph-based ranking. Experiments on a set of real systems show good results.
Clustering is very often used for the purpose of automatic software architecture reconstruction. ... more Clustering is very often used for the purpose of automatic software architecture reconstruction. This work investigates the importance of taking into account different factors for the similarity metric, besides the traditional factor based on direct coupling/cohesion: indirect coupling as computed from the topology of the dependency graph, and global architectural layering resulting from the orientation of dependencies. We experiment with using these factors, individually or combined, for defining the similarity metrics within a set of clustering algorithms.
ABSTRACT In the component based software engineering approach, a software system is viewed as an ... more ABSTRACT In the component based software engineering approach, a software system is viewed as an assembly of reusable independently developed components. In order to produce automated tools to support the selection and assembly of components, rigorous specifications of components and performant retrieval and selection strategies based on these specifications are needed. In this article we propose a fuzzy logic based solution for the specification and retrieval of components.
Reverse engineering creates models of software systems, at a higher level of abstraction or in a ... more Reverse engineering creates models of software systems, at a higher level of abstraction or in a form suitable to a particular analysis. This article presents a meta-model that provides a unitary way of describing primary dependency structures in software systems. It extracts and conceptualizes similarities between different programming languages which, moreover, belong to any of the object-oriented as well as the procedural programming paradigms. The proposed meta-model is validated by the implementation of different tools for model extraction from programs written in Java, C# (CIL) and ANSI C. The utility of the proposed metamodel is shown by supporting a number of different analysis applications such as architectural reconstruction, impact analysis, modularization analysis, refactoring decisions.
Communications in Computer and Information Science, 2013
Many techniques used for discovering faults and vulnerabilities in distributed systems and servic... more Many techniques used for discovering faults and vulnerabilities in distributed systems and services require as inputs formal behavioral models of the systems under validation. Such models are traditionally written by hand, according to the specifications which are known, leading to a gap between the real systems which have to be validated and their abstract models. A method to bridge this gap is to develop tools that automatically extract the models directly from the implementations of distributed systems and services. We propose here a general model extraction solution, applicable to several service technologies. At the core of our solution we develop a method for transforming the control flow graph of an abstract communicating system into its corresponding behavioral model represented as an Extended Finite State Machine. We then illustrate our method for extracting models from services implemented using different concrete technologies such as Java RMI, Web services and HTTP Web applications and servlets.
Communications in Computer and Information Science, 2016
An essential prerequisite before engaging in any maintenance activities of complex software syste... more An essential prerequisite before engaging in any maintenance activities of complex software systems is the good comprehension of the existing code. Program comprehension is supported by documentation, which can be either developer documentation or documentation obtained by reverse engineering. In both cases, but especially in the case of reverse engineered documentation, this means a large amount of detailed documents that have to be carefully studied. Processing such large and detailed information can be made easier if there is an executive summary-a short document pointing to the most important elements of the system. In our work we propose a tool to automatically extract such a summary, by identifying the most important classes of the system. Our approach consists of modeling the static dependencies of the system as a graph and applying a graph ranking algorithm. How we build the dependency graph is the key for the success of the approach. We empirically determine how different dependency types should be taken into account in building the system graph. The proposed approach has been validated by experiments on a set of open source real systems.
Formal behavioral models of software services are used as input by analysis tools which check the... more Formal behavioral models of software services are used as input by analysis tools which check their properties on hand of the given models. However, there is a gap between the real systems which have to be validated and their abstract models. This work proposes to bridge this gap by tools which extract behavioral models from software services implementations. The method proposed here aims at ensuring a general solution, applicable to several service technologies. The core of this solution consists of transforming the control flow graph of a communicating system into its corresponding behavioral model represented as an EFSM (Extended Finite State Machine). The extracted EFSM model can be automatically translated into an entity description in a formal security specification language for distributed systems. This will enable the use of formal analysis tools for real service implementations.
Software architecture is a model of the software system expressed at a high level of abstraction.... more Software architecture is a model of the software system expressed at a high level of abstraction. The architectural view of a system raises the level of abstraction, hiding details of implementation, algorithms, and data representation and concentrating on the interaction ...
Uploads
Papers by Ioana Sora