Clustering Techniques for Software Engineering

Author(s):  
Shohag Barman ◽  
Hira Lal Gope ◽  
M M Manjurul Islam ◽  
Md Mehedi Hasan ◽  
Umme Salma

<p>Software industries face a common problem which is the maintenance cost of industrial software systems. There are lots of reasons behind this problem. One of the possible reasons is the high maintenance cost due to lack of knowledge about understanding the software systems that are too large, and complex. Software clustering is an efficient technique to deal with such kind of problems that arise from the sheer size and complexity of large software systems. Day by day the size and complexity of industrial software systems are rapidly increasing. So, it will be a challenging task for managing software systems. Software clustering can be very helpful to understand the larger software system, decompose them into smaller and easy to maintenance. In this paper, we want to give research direction in the area of software clustering in order to develop efficient clustering techniques for software engineering. Besides, we want to describe the most recent clustering techniques and their strength as well as weakness. In addition, we propose genetic algorithm based software modularization clustering method. The result section demonstrated that proposed method can effectively produce good module structure and it outperforms the state of the art methods. </p>

2012 ◽  
Vol 2012 ◽  
pp. 1-18 ◽  
Author(s):  
Mark Shtern ◽  
Vassilios Tzerpos

The size and complexity of industrial strength software systems are constantly increasing. This means that the task of managing a large software project is becoming even more challenging, especially in light of high turnover of experienced personnel. Software clustering approaches can help with the task of understanding large, complex software systems by automatically decomposing them into smaller, easier-to-manage subsystems. The main objective of this paper is to identify important research directions in the area of software clustering that require further attention in order to develop more effective and efficient clustering methodologies for software engineering. To that end, we first present the state of the art in software clustering research. We discuss the clustering methods that have received the most attention from the research community and outline their strengths and weaknesses. Our paper describes each phase of a clustering algorithm separately. We also present the most important approaches for evaluating the effectiveness of software clustering.


2016 ◽  
Vol 17 (3) ◽  
pp. 913-938 ◽  
Author(s):  
Daniela Rabiser ◽  
Herbert Prähofer ◽  
Paul Grünbacher ◽  
Michael Petruzelka ◽  
Klaus Eder ◽  
...  

2020 ◽  
Vol 23 (2) ◽  
Author(s):  
Sebastián Pizard ◽  
Diego Vallespir

Background: Software engineering has been formalized to a greater extent since 2000; this can be seen in the development of different bodies of knowledge. Objective: This work aims to contribute to organizing software engineering education knowledge, a sub-area in which formalization is still necessary.Method: We propose a process for the construction of controlled vocabularies. We instantiated this process twice; first, using automatic clustering techniques to analyze over 1,000 articles; and then, we focused on concepts related to teaching techniques and methods.Findings: We present a taxonomy with 60 terms organized in three facets at its highest level. The `teaching approaches and methods' category covers 26 terms with their definitions and most relevant references.Implications: The taxonomy can be used by teachers and researchers to understand the breadth of the field, to place their research initiatives in a broader context and to conduct more rigorous searches in the literature. We believe it is necessary to continue working on the taxonomy's expansion and also to carry out validation activities, if possible, including experts' validation.


2020 ◽  
Author(s):  
Willian N. Oizumi ◽  
Alessandro F. Garcia

Design problems affect most software projects and make their maintenance expensive and impeditive. Thus, the identification of potential design problems in the source code – which is very often the only available and upto-date artifact in a project – becomes essential in long-living software systems. This identification task is challenging as the reification of design problems in the source code tend to be scattered through several code elements. However, stateof-the-art techniques do not provide enough information to effectively help developers in this task. In this work, we address this challenge by proposing a new technique to support developers in revealing design problems. This technique synthesizes information about potential design problems, which are materialized in the implementation under the form of syntactic and semantic anomaly agglomerations. Our evaluation shows that the proposed synthesis technique helps to reveal more than 1200 design problems across 7 industry-strength systems, with a median precision of 71% and a median recall of 78%. The relevance of our work has been widely recognized by the software engineering community through 2 awards and 7 publications in international and national venues.


Author(s):  
Hiba Al Sghaier

Software engineering is one of computer science branches, it comprises of building and developing software systems and applications. Software engineering is a discipline that has a constant growth in research in aim to identify new technologies and adopt it in different areas; there is a considerable investment on software engineering trends at the current time due to the availability of mobile technologies. With millions of billions of smart devices that are connected to the internet, all industries around the world are rapidly becoming a technology driven industries. Software engineers are aware of programming languages that are employed to develop software systems, by applying engineering principles to development process; they can design customized software systems for individual or organizational customers. The new trends in software engineering are numerous, Cloud Computing, machine learning, deep learning, big Data, mobile Computing. Nevertheless, there are many more other research trends in software engineering's field that have been intensively explored and implemented in many different industries. In this paper, authors try to summarize the most fields that are integrated with software engineering recently.


Author(s):  
Marko Ikonen ◽  
Pekka Abrahamsson

Success in industrial software development projects is critical in the sense of economic survival for companies acting as software suppliers. If the structure or decision-making mechanism is heavyweight, the suppliers will encounter problems when improving their performance due to their inadequate ability to change. This, however, offers an opportunity for more flexible organizations that are able to proactively survive in a volatile software business environment. Taking such an advantage, regardless, requires understanding the components of success holistically. Research on project success regarding software engineering is still fragmented and focuses on the isolated relationships of success. This article operationalizes the concept of project success based on a literature survey and an empirical validation. As a result, an indicative project success model for software engineering projects is proposed. The resulting model is evaluated empirically in a large multinational software corporation setting. The results show the model provides a valuable tool for KIBS organizations to increase their capabilities in running successful projects as well as to find targets for improvements in these projects.


Author(s):  
Pankaj Kamthan

The movement towards agility is one of the most significant changes in industrial software engineering over the past decade. In the practice of agile methodologies, there are different types of knowledge that is created, communicated, and consumed. For the benefit of the stakeholders involved, there is a pressing need to manage this knowledge, both during development and beyond deployment of a software system. This chapter proposes a framework comprising related conceptual models as means for understanding the use of Wiki for managing knowledge in agile software development. In doing so, Wiki is considered beyond that of a technology or a tool, as a facilitator of knowledge, and placed in a larger context of the Social Web environment. For the sake of practicality, a number of illustrative examples are given, and implications of deploying a Wiki are highlighted.


Author(s):  
Rita Suzana Pitangueira Maciel ◽  
Ana Patrícia F. Magalhães Mascarenhas ◽  
Ramon Araújo Gomes ◽  
João Pedro D. B. de Queiroz

The adoption of Model-Driven Development (MDD) is increasing and it is widely recognized as an important approach for building software systems. In addition to traditional development process models, an MDD process requires the selection of metamodels and mapping rules for the generation of the transformation chain which produces models and application code. However, existing support tools and transformation engines for MDD do not address different kinds of software process activities, such as application modeling and testing, to guide the developers. Furthermore, they do not enable process modeling nor the (semi) automated execution of activities during process enactment. MoDErNE (Model Driven Process-Centered Software Engineering Environment) uses process-centered software engineering environment concepts to improve MDD process specification and enactment by using a metamodeling foundation. This chapter presents model driven development concept issues and the MoDErNE approach and environment. MoDErNE aims to facilitate MDD process specification and enactment.


Author(s):  
Tarek Zernadji ◽  
Raida Elmansouri ◽  
Allaoua Chaoui

Current research on software reuse in Component Based Software Engineering (CBSE) covers a variety of fields, including component design, component specification, component composition, component-based framework. CBSE is quickly becoming a mainstream approach to software development and most researchers are hoping that it will be solutions to all the problems that led to software crisis. The software engineering techniques specific to this discipline, in phases such as modeling, verification or validation of component based software systems still insufficient and need more research efforts. ECATNets (Extended Concurrent Algebraic Term Nets) are frameworks for specification, modeling and validation of concurrent and distributed systems. They are characterized by their semantics defined in terms of rewriting logic. The objective of this article is to propose a formal specification of software components by using ECATNets formalism. The expected benefits of this work are: Offer a formal notation for describing the different features of concurrent and distributed software components; Defining a formal unambiguous semantic to describe behavior of the composed system.


Sign in / Sign up

Export Citation Format

Share Document