Jeff Offutt
PhD, Computer ScienceProfessor & Chair, Computer Science College of Nanotechnology, Science, & Engineering University @ Albany CS: Where logic sparks imagination
Jeff Offutt has published over 200 refereed research papers, has an h-index of 75 (Google Scholar), and has received funding from many government agencies and companies. Offutt is currently co-PI on an NSF project on integrating Computer Science Standards of Learning into K-5 classrooms. He is also leading projects on making smart tests smarter and exploring the ramifications of minimal mutation. Recent projects include the Google-funded SPARC project, which created a new teaching model for CS1 and CS2 to increase scalability, retention, and diversity, while reducing cheating, and the Testing of Critical System Characteristics (TOCSYC) and PILOT projects at University of Skövde, Sweden. His current research interests include software testing, test automation, usable security, software engineering education, analysis and testing of web applications.
Offutt has received several major awards, including the John Toups Presidential Medal for Faculty Excellence in Teaching in 2020, George Mason University’s Faculty Member of the Year in 2020 by GMU’s Alumni Association, the Outstanding Faculty Award from the State Council of Higher Education for Virginia in 2019, and the George Mason University Teaching Excellence Award, Teaching With Technology, in 2013. He leads the MS in Software Engineering program at GMU, teaches Software Engineering courses at all levels and has developed new courses on several Software Engineering subjects, including web engineering, software testing, construction, design, usability, experimentation, and analysis. His textbook, Introduction to Software Testing, edition 2 (co-authored with Paul Ammann), was published by Cambridge University Press in January 2017 and is the leading worldwide textbook in software testing.
Offutt was editor-in-chief of Wiley’s journal of Software Testing, Verification, and Reliability from 2007 through 2019, co-founded the IEEE International Conference on Software Testing, Verification and Validation (ICST) and was the first steering committee chair. He also has served on dozens of conference program committees and been on the editorial boards for the Springer’s Empirical Software Engineering Journal (2006-), the Journal of Software and Systems Modeling (2002-), the Software Quality Journal (2002-), and IEEE Transactions on Software Engineering (2001-2005), is a regular reviewer for NSF and several major research journals, and has been invited to speak throughout the world. He has been involved as designer, builder, and director for many software proof-of-concept research systems, including muJava, coverage analysis web apps, Mothra, Godzilla, CBat, Mistix, Albert, CoupTest, and SpecTest, which have been used by thousands of software engineering researchers and educators. His inventions, including bypass testing and model-based testing, are used by thousands of software companies and embedded in widely used commercial tools such as Selenium. Offutt has made fundamental contributions to several software testing problems, including mutation, specification-based testing, model-based testing, automatic test data generation, object-oriented testing, input space partitioning, and testing of web applications. He has also published on software metrics, software maintenance, and software engineering education.
When I was chosen as editor-in-chief for STVR, I developed its new tag line: “Useful research in building better software.” This is my goal in research. Real engineers are building real software products for real people every day, and my goal as a scientist is to make that easier. I view research through the lens of the literature I grew up reading that excited my imagination to become a scientist. Science fiction tells stories that could be true if certain things happen and certain scientific advances are made. Star Trek fits this definition. Fantasy tells stories that cannot be true in our universe, assuming magic or some other different rules. Lord of the Rings is fantasy. Most research papers published in software engineering conferences and journals are fantasy, proposing ideas or techniques for which there is no path to eventual use in practice. I strive to write papers for which there is a path to use by real software engineers building real software. I strive to write science fiction.
Much of my research has been in software testing, and has resulted in fundamental results in many sub-fields. I have made dozens of results in mutation analysis and testing, collectively resulting in a comprehensive engineering solution that makes mutation practical for industrial use. Many of my results are incorporated into the commercial tool Certess, built by Certitude Inc. and marketed by SpringSoft. I also developed two mutation research tools for widespread use. I helped design and was the principal developer of Mothra, which was used throughout the testing community in the 1990s and 1980s. I led the team that designed and built muJava, which is currently used by hundreds of students and researchers worldwide. With students and colleagues, I also empirically verified the coupling effect, co-invented the schema-based approach for mutation execution, invented techniques to detect equivalant mutants, empirically demonstrated that weak mutation is a viable alternative to strong mutation, developed several processes for how best to apply mutation, invented algorithms for parallelizing mutation, empirically showed that mutation is superior to several other testing techniques, most notably data flow, and developed several classes of mutation operators, including real-time testing, object-oriented connections, web software, XML, and web services. I am credited with the first model-based testing paper (in UML 1999), designing tests from UML statecharts. I also have contributed several results to automatic test data generation, a difficult topic in which most of the problems are generally undecidable, including inventing constraint-based symbolic and dynamic symobolic evaluation algorithms to generate test data to satisfy statement coverage, branch coverage, data flow coverage, and mutation coverage for unit testing; heuristics for recognizing many infeasible test requirements, and the dynamic domain reduction procedure, still one of the strongest algorithms for automatic test data generation. Many of these results were incorporated into the commercial tool Agitator, and Microsoft’s Pex uses a form of dynamic symbolic evaluation. I also have invented new methods and processes for applying input space partitioning (category-partition).
Coverage critera define rules (test requirements) for designing tests. As part of my research, I, with several colleagues, have invented several new coverage criteria, including base choice coverage, prime path coverage, active clause coverage, coupling-based testing, bypass testing, and inheritance & polymorphism coverage. These included analysis and modeling techniques such as atomic section modeling and finite state machine modeling for web applications, the ping-pong alogrithm for test suite reduction, and OO analysis techniques based on the yo-yo graph.
Many of these advances are used by software development companies, and many have shown up in commercial tools, often with different names. They are also taught in hundreds of software engineering courses and used by hundreds of researchers.
I have taught for 35 years at four universities, University at Albany, George Mason University, Clemson University, and the Georgia Institute of Technology. Most of my courses are in Software Engineering, although I taught data structures, introductory programming, compilers, and algorithms early in my career.
I have introduced a large number of innovations in terms of topics, teaching techniques, and style. At Mason, this includes developing six completely new courses, substantially revising six others, and publishing five education related papers. I also pioneered several innovations for incorporating the web into class material delivery, some of which are now used by many other college professors. My course designs for INFS 590, SWE 637, SWE 619, SWE 632, SWE 642, and SWE 763 are used by other teachers at Mason and elsewhere.
Some general information about my courses. Courses that I have created from scratch are marked with a light bulb (💡) and courses that I refactored are marked with a gapped circle arrow (⟳).
Courses at U @ AlbanyProfessors in engineering departments at research schools like Mason have an odd, sometimes contradictory relationship with teaching. I was hired for my research and tenured for research. I am recognized in my department for prolific publishing. Where does teaching fit in? To teach well, we have to enjoy teaching and care about the students. If we don't care for them, they will not care what we say. I like to teach because I am addicted to learning. I get bored if I don't learn something new every day, so I teach because it gives me an excuse to learn. This compulsion drives me to teach new subjects and to find new, innovative ways to present knowledge.
I started teaching with chalk boards, moved to white boards with colored markers, then plastic transparencies, and on to power point. I first used the web to disseminate class materials and display examples, then broadcast my lectures to synchronous, simultaneous audiences outside the classroom. I then found I could use the web to extend learning beyond the temporal and spatial constraints of the classroom through interesting and informative discussions, using recorded lectures to run a “flipped” classroom, teaching asynchronously, completely on the web.
When I started teaching as a 24 year old graduate student, I had a very peer-like relationship, then became more of a big brother, and as I grew older, developed more of a father-figure approach. Through all of this, one of the most enjoyable parts of teaching has been enduring relationships with people I genuinely like and respect.
I grew up in an educational desert. None of my friends’ parents went to college, my elementary school classes were taught to the lowest common denominators, classes were tortuously slow, and I was a constant target of bullies. 40% of my high school class dropped out and 10 of 150 started college. My geometry teacher couldn't do proofs, my chemistry class had no chemicals or even running water, and my 12th grade English class included functionally illiterate students. I graduated high school poorly educated, but hungry. Literally starved for knowledge.
No matter how much I learn, that hunger has never gone away. My hunger for knowledge has never abated and it has become a passion for teaching. My goal is to impart that passion for learning to my students. I love to be the teacher I seldom had.
My classes emphasize
diversity,
divergent thinking,
and
collaborative learning.
My teaching principles.
Students who want to email me should read my suggestions for students making requests first.
Throughout my career I have focused on software engineering techniques that incorporate a large theoretical component, and also that can be used by real programmers. I emphasize empirical validations, and as such, have constructed, helped to construct, or led the construction of several working software systems. Most of these offer a proof-of-concept demonstration vehicle of theoretical concepts as well as a lab for empirical validation. Some of these (most notably muJava, Mothra and Godzilla, and also Mistix and Albert) have been used by dozens or hundreds of other researchers.
The mutation testing for Java project (μJava) is a testing tool that is distributed under an open source software model. μJava is a mutation testing system for Java programs that supports the object-oriented features of inheritance, polymorphism and dynamic binding. It was built as an international collaborative effort between myself at GMU and Yu-Seung Ma at the Korean Advanced Institute for Science and Technology (KAIST), as part of her PhD work. μJava is freely available on its website. and is currently being used at hundreds of universities for research and teaching purposes. Three papers have been published about μJava, it was featured at the research tool demo session at the International Conference on Software Engineering in 2006, and many dozen of researchers and educators use μJava.
This NSF-funded research project created a fully functional, multi-capability, robust analysis and coverage tool for Java. This tool allows researchers to generate a large number of coverage graphs that represent Java programs, which can then be used for test generation, test coverage measurement, metrics computation, maintenance computations, and other purposes. CBAT focused on inheritance and polymorphic relationships, as well as traditional control and data flow information. This tool was built as part of Roger Alexander’s PhD dissertation.
This NSF-funded research project created an analysis tool to extract coupling relationships and measure coverage of tests according to the coupling-based test technique. This tool was built in Java for Java programs.
This Rockwell/Collins-funded research project developed a tool to measure the extent to which system-level test data satisfies a set of test criteria that are defined on formal specifications and design models of the software. The tool worked with the NRL’s SCRTool, which implements the SCR specification language, and Rational Corporation’s Rose tool, which supports the Unified Modeling Language. This tool was primarily built by Aynur Abdurazik as part of her MS thesis.
This research project involved approximately 12 people in the design and development of a mutation-based unit-level software testing system known as Mothra. Mothra was over 50,000 lines of C code, executed in Unix environments, and among other tools includes a parser, an interpreter, a test harness, a test case manager, and several user interfaces. While a graduate student, Dr. Offutt and Dr. Rich DeMillo (currently of Georgia Institute of Technology) were the major designers of Mothra, and Offutt was responsible for over 50% of the implementation, including the interpreter, the test harness, the test case manager, and the initial user interfaces. This work yielded many dozens of papers in refereed conferences and journals; Mothra was been used as a research and demonstration vehicle in dozens of locations.
This tool was designed and built as part of Offutt’s doctoral work. Godzilla automatically generated test data for unit testing according to several test criteria, including mutation, multiple condition coverage, branch and statement. Godzilla was approximately 25,000 lines of C code, executed in Unix environments, and was fully integrated with Mothra. The software company Agitar incorporated much of the Godzilla’s test data generation innovations into their commercial testing tool, Agitator.
These proof-of-concept systems all involve major modifications to Mothra to improve the efficiency of the mutation testing process. These systems provide extended functionality, use different basic algorithms, and utilize parallel hardware architectures. These projects were all implemented by graduate students as Master’s projects, using Offutt’s design and under his direction.
This streamlined mutation system was built by several graduate students according to Offutt’s specification and under his direction. Two versions were built, one in C (about 8,000 lines of code) and another in Modula-2 (about 5,000 lines). IMSCU was used in several course projects at both the graduate and undergraduate level, and as a research vehicle in software metrics experimentation. In an undergraduate senior-level project-oriented course, IMSCU was used as a project template, where the class was supplied with a partial implementation and a system architectural design, and divided into five teams, each of which derived requirements for, designed, implemented, and tested an additional major subsystem. All subsystems were integrated into a complete system, which was then tested as a whole. This project involved reuse, maintenance, integration, and all phases of the software life cycle, and was managed by Offutt to provide practical, industrial-oriented experience to the students.
This simplified file system was initially specified by Dr. Offutt for a class implementation project. It has been used in several classes for implementation projects, and has been implemented in several languages (C, Modula-2, Ada) by Offutt. Implementations have been used in test classes, user interface classes, and the concept has been used in formal methods classes. Implementations have also been used in several research projects.
This project to build a computer algebra system for nonassociative identities was led by Dr. Jacobs of Clemson University. Offutt designed both the overall system and a command-language user interface, which were implemented by graduate students. Albert is currently used by mathematicians around the world to support research in nonassociative algebra.
Offutt has been a leader at various levels. Since 2007, he has been editor-in-chief of the journal of Software Testing, Verification, and Reliability. In 2008 he and a small team (Andrews, Briand, and Baudry) created the International Conference on Software Testing, Verification and Validation (ICST), which immediately became one of the largest and most successful area conferences in software engineering. He was elected the first Steering Committee Chair and was co-Program Chair for ICST 2009. His textbook, Introduction to Software Testing (co-authored with Ammann), is the leading worldwide textbook in software testing.
Offutt also is or has been on the editorial board for several journals, including TSE, EmSE, SQJ, and SoSyM. He has also helped organize over a dozen workshops and PhD Symposiums, and been on the technical program committees for dozens of conferences. Over his 26 year career, he has reviewed hundreds of papers and proposals.
From 2005 through 2013, and starting again in 2015, Offutt has led George Mason’s MS program in Software Engineering. He has chaired several departmental and university committees, including a Provost’s task force for ethical computing, graduate studies committees, tenure and promotion committees, several hiring committees, and been assistant department chair and department chair (interim). He has also served on dozens of other committees at all levels at the university.
Outside of academic life, Offutt is a regular speaker at public schools and local civic organizations on topics such as internet safety, web services, software quality, and empirical research. He is also a certified little league baseball umpire, and has coached youth teams in basketball, baseball, and Odyssey of the Mind.
Most of my consulting is with teaching & training, or with software IP issues as expert analyst and expert witness.