“Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one’s subject matter in isolation (...) all the time knowing that one is occupying oneself only with one of the aspects. ”
Software quality Software quality is a pernicious problem. Mature software projects are forced to ship with both known and unknown bugs because the number of outstanding software defects typically exceeds the resources available to address them.
Source control repositories, bug repositories, archived communications, deployment logs, and code repositories are examples of software repositories that are commonly available for most software projects. The Mining Software Repositories (MSR) field analyzes and cross-links the rich data available in these repositories to uncover interesting and actionable information about software systems. Business Intelligence (BI) field, offers concepts and techniques to improve business decision making by using fact-based support systems. Similarly, MSR offers software practitioners (not just developers) up-to-date and pertinent information to support their daily decision-making processes. MSR should support decision- making processes throughout the lifetime of a software system not just during its development phase. By transforming these repositories from static record-keeping ones into active repositories, we can guide decision pro- cesses in modern software projects. For example, data in source control repositories, traditionally used to archive code, could be linked with data in bug repositories to help practitioners propagate complex changes and to warn them about risky code based on prior changes and bugs. The vision of MSR has yet to become a reality that would enable software engineering research to have a strong impact on modern software practice. Nevertheless, recent advances in the Mining Software Repositories (MSR) field show great promise and provide strong support for realizing MSR in the near future.
Technical debt is a metaphor that software developers and managers increasingly use to communicate key tradeoffs related to release and quality issues. Steve McConnell's definition serves as a useful starting point: "A design or construction approach that's expedient in the short term but that creates a technical context in which the same work will cost more to do later than it would cost to do now (including increased cost over time)." The idea is that developers sometimes accept compromises in a system in one dimension (e.g., modularity) to meet an urgent demand in some other dimension (e.g., a deadline), and that such compromises incur a debt on which interest has to be paid and which should be repaid at some point for the long-term health of the project. The effect can be negative if debt exists in the form of poorly managed risks, but properly managed debt can be seen in a positive light as adding value in the form of deferred investment opportunities. Organizations that embrace technical debt as part of their iteration-planning practices achieve success as a result of the following actions: making technical debt visible differentiating strategic structural technical debt from technical debt that emerges from low code quality using the elicited technical debt as a means for bridging the gap between the business and technical sides of the organization integrating technical debt into planning associating technical debt with future risk to identify a payback strategy
I research in software engineering. I currently focus on automatic software repair (fault diagnosis, fault localization, patch generation, runtime recovery):
This section provide a brief overview of some my interests.
Packaging containers for deployment and distribution Installing, managing, and removing containerized applications Finding and working with Docker images Using public and private distribution infrastructure, including DockerHub
Gamification, or the use of game elements in non-game contexts, has become an increasingly popular approach to increasing end-user engagement in education. My experiments work have shown that gamification can be used to boost student engagement and learning in basic software development and testing.
Please complete all the fields in the form before sending.