Active Research Projects

Integrating Software Engineering and Cognitive Error Models to Improve Software Quality

Most software quality improvement efforts have been driven by faults (i.e. mistakes recorded in a software artifact) and techniques derived from fault taxonomies. My research tries to use knowledge about software development errors (i.e., mistakes in the human thought process) to develop techniques to help developers find and eliminate defects early in the software development lifecycle. Human Errors have been investigated by cognitive psychologists for decades. Cognitive psychology researchers have made great strides in identifying the causes of human error and in developing useful taxonomies of error types. The major goal of our research is to integrate research from cognitive psychology with research from software quality improvement, facilitated by an in-depth understanding of how the human cognitive process can fail as a developer creates various software artifacts. We have created an initial requirement error taxonomy based on a systematic review of the software engineering and cognitive psychology literature. We have validated this taxonomy through a series of classroom studies.
Collaborators:


Using the Capture-Recapture to Measure the Quality of Software Artifacts

My research validated the use of the Capture-Recapture method (originally developed by biologists) to support the defect size estimates of software artifacts. Capture-Recapture in software inspections uses the overlap in the defects found by multiple inspectors to estimate the number of defects in the artifact. The difference between the estimated number of defects and the number of defects actually found provides an estimate of how many remain. I have performed several empirical studies to evaluate the use of the Capture-Recapture method in software organizations.
Collaborators:
  • Kaustubh Saxena (Master's Student)
  • Sana Rehman (Master's Student)
  • Narendar Mandala (Master's Student)

Improving Computer Science Capstone Project Experience

Over the past several years it has become clear that including a capstone experience in computer science degree programs has great value for students. In computer science programs this typically means implementing some significant software development project. It is generally agreed that the quality of a system or product is highly influenced by the quality of the process used to develop and maintain it. The Software Engineering Institute (SEI) has been working on this premise for many years as it relates to software development. As core to this work they have developed the very successful Capability Maturity Model Integration (CMMI) which defines a process model for software development. It is the premise of this research, which is to show through empirical studies, that computer science capstone students would benefit from following this same model.
Collaborators:
  • Alex Radermacher (Master's Student)

Enhancing Creative Thinking Process of Software Developers

The research tries to develop new models/processes of creativity in the context of software development activities (e.g., requirement/design artifacts development, or software inspection/testing) so that the creative thinking process of software developers can be enhanced. An in-depth understanding of the cognitive thinking models/processes will help us develop new technologies to encourage and support human creativity of software developers.An educational based goal of this research is to enhance computer science students' creative thought process during problem solving while working on group projects (as majority of students after graduation become involved in some aspect of team based software development projects in industry)

Collaborator:
  • Avijeet Tomer (Master's Student)
  • Reshma Hegde (Master's Student)
  • Sonu Sharma (Master's Student)


Characterize and Investigate the Pair-Programming Research Applicability

This research project focus on developing an understanding of how to implement and analyze carefully designed and improved Pair-Programming (PP) laboratory experiments, through tight control of decision environments, as a means to advance Extreme Programming (XP) theory and its fundamental cause-effect knowledge.We have conducted research studies to investigate how to effectively implement pair programming ain introductory computer programming courses at North Dakota State University over the past two years. We are currently conducting research in evaluating the effectiveness of programming pairs based on the mental models of the paired persons. The goal of this research is to produce a series of tests that can be used to evaluate mental models of other computer science concepts as well.

Collaborator:
  • Alex Radermacher (Master's Student)
  • Richard Rummelt (North Dakota State University)
  • Dr. Oksana Myronovych (North Dakota State University)
  • Dr. Sameer Abufardeh (North Dakota State University)