Global challenges are complex and must be tackled in a holistic manner. Understanding and addressing them requires collaboration across disciplines, often uniting the humanities and social and natural sciences, to ask better questions and identify practical and revolutionary solutions. Universities can be excellent vehicles for transformational change as they educate the next generation of civically-motivated thinkers to create meaningful action and impact. Too often systemic, artificial barriers exist within these institutions that prevent meaningful transdisciplinary collaboration from succeeding. We recommend that universities identify grand challenges and foster a culture of cross-department collaboration with appropriate internal and external resources to enable broader impacts. Together, funders and institutional policymakers play a critical strategic role in fostering civic scientists and transdisciplinary researchers to solve multifaceted global problems.
more »
« less
This content will become publicly available on March 31, 2026
Deicide: Decomposing Complex Classes into Responsibility Modules
Refactoring a large and complex class can be challenging, not only because the class aggregates many different responsibilities but also because of its potentially extensive impact on external classes. Although many extract class methods have been proposed, few support a holistic decomposition that can uncover multiple distinct responsibilities within a complex class, along with their system-wide impacts. Recent research highlights the need for such a holistic view before an organization can commit to redesigning and refactoring. To identify distinct responsibilities while minimizing internal and external impacts, we created Deicide, a new decomposition algorithm that uses an internal call graph, external usage patterns, and semantic similarity of identifiers to calculate a hierarchical set of cohesive clusters, each forming a responsibility module. We evaluated Deicide against three state-of-the-art extract class recommenders using 123 large, change-prone classes from 9 open-source projects. Our results show that the entities within the clusters identified by Deicide are more likely to be changed together and changed by the same group of developers, indicating de facto cohesive responsibilities. The implication is that refactoring based on Deicide’s recommendations would have minimal impact on the system, and these newly extracted classes would be able to evolve independently.
more »
« less
- Award ID(s):
- 2236824
- PAR ID:
- 10590291
- Publisher / Repository:
- IEEE
- Date Published:
- Subject(s) / Keyword(s):
- class decomposition refactoring extract class code smells clustering algorithms
- Format(s):
- Medium: X
- Sponsoring Org:
- National Science Foundation
More Like this
-
-
The low cost and rapid provisioning capabilities have made the cloud a desirable platform to launch complex scientific applications. However, resource utilization optimization is a significant challenge for cloud service providers, since the earlier focus is provided on optimizing resources for the applications that run on the cloud, with a low emphasis being provided on optimizing resource utilization of the cloud computing internal processes. Code refactoring has been associated with improving the maintenance and understanding of software code. However, analyzing the impact of the refactoring source code of the cloud and studying its impact on cloud resource usage require further analysis. In this paper, we propose a framework called Unified Regression Modeling (URegM) which predicts the impact of code smell refactor- ing on cloud resource usage. We test our experiments in a real-life cloud environment using a complex scientific application as a workload. Results show that URegM is capable of accurately predicting resource consumption due to code smell refactoring. This will permit cloud service providers with advanced knowledge about the impact of refactoring code smells on resource consumption, thus allowing them to plan their resource provisioning and code refactoring more effectively.more » « less
-
Abstract BackgroundEngineers are professionally obligated to protect the safety and well‐being of the public impacted by the technologies they design and maintain. In an increasingly complex sociotechnical world, engineering educators and professional institutions have a duty to train engineers in these responsibilities. Purpose/HypothesisThis article asks, where are engineers trained in their public welfare responsibilities, and how effective is this training? We argue that engineers trained in public welfare responsibilities, especially within engineering education, will demonstrate greater understanding of their duty to recognize and respond to public welfare concerns. We expect training in formal engineering classes to be more broadly impactful than training in contexts like work or professional societies. Data/MethodsWe analyze unique survey data from a representative sample of US practicing engineers using descriptive and regression techniques. ResultsConsistent with expectations, engineers who received public welfare responsibility training in engineering classes are more likely than other engineers to understand their responsibilities to protect public health and safety and problem‐solve collectively, to recognize the importance of social consequences and ethical responsibilities in their own jobs, to have noticed ethical issues in their workplace, and to have taken action about an issue that concerned them. Training through other parts of college, workplaces, or professional societies has comparatively little impact. Concerningly, nearly a third of engineers reported never being trained in public welfare responsibilities. ConclusionThese results suggest that training in engineering education can shape engineers' long‐term understanding of their public welfare responsibilities. They underscore the need for these responsibilities to be taught as a core, non‐negotiable part of engineering education.more » « less
-
Block-based programming has been overwhelmingly successful in revitalizing introductory computing education and in facilitating end-user development. However, poor code quality makes block-based programs hard to understand, modify, and reuse, thus hurting the educational and productivity effectiveness of blocks. There is great potential benefit in empowering programmers in this domain to systematically improve the code quality of their projects. Refactoring--improving code quality while preserving its semantics--has been widely adopted in traditional software development. In this work, we introduce refactoring to Scratch. We define four new Scratch refactorings: Extract Custom Block, Extract Parent Sprite, Extract Constant, and Reduce Variable Scope. To automate the application of these refactorings, we enhance the Scratch programming environment with powerful program analysis and transformation routines. To evaluate the utility of these refactorings, we apply them to remove the code smells detected in a representative dataset of 448 Scratch projects. We also conduct a between-subjects user study with 24 participants to assess how our refactoring tools impact programmers. Our results show that refactoring improves the subjects' code quality metrics, while our refactoring tools help motivate programmers to improve code quality.more » « less
-
Background: Code refactoring is widely recognized as an essential software engineering practice to improve the understandability and maintainability of the source code. The Extract Method refactoring is considered as “Swiss army knife” of refactorings, as developers often apply it to improve their code quality, e.g., decompose long code fragments, reduce code complexity, eliminate duplicated code, etc. In recent years, several studies attempted to recommend Extract Method refactorings allowing the collection, analysis, and revelation of actionable data-driven insights about refactoring practices within software projects. Aim: In this paper, we aim at reviewing the current body of knowledge on existing Extract Method refactoring research and explore their limitations and potential improvement opportunities for future research efforts. That is, Extract Method is considered one of the most widely-used refactorings, but difficult to apply in practice as it involves low-level code changes such as statements, variables, parameters, return types, etc. Hence, researchers and practitioners begin to be aware of the state-of-the-art and identify new research opportunities in this context. Method: We review the body of knowledge related to Extract Method refactoring in the form of a systematic literature review (SLR). After compiling an initial pool of 1,367 papers, we conducted a systematic selection and our final pool included 83 primary studies. We define three sets of research questions and systematically develop and refine a classification schema based on several criteria including their methodology, applicability, and degree of automation. Results: The results construct a catalog of 83 Extract Method approaches indicating that several techniques have been proposed in the literature. Our results show that: (i) 38.6% of Extract Method refactoring studies primarily focus on addressing code clones; (ii) Several of the Extract Method tools incorporate the developer's involvement in the decision-making process when applying the method extraction, and (iii) the existing benchmarks are heterogeneous and do not contain the same type of information, making standardizing them for the purpose of benchmarking difficult. Conclusions: Our study serves as an “index” to the body of knowledge in this area for researchers and practitioners in determining the Extract Method refactoring approach that is most appropriate for their needs. Our findings also empower the community with information to guide the future development of refactoring tools.more » « less
An official website of the United States government
