About Me
Dr. Myra Cohen is a Professor in Software Engineering in the Computer Science Department at Iowa State University and and she is a Better Scientific Software Fellow which means she is passionate about improving scientific software through better software testing. Her research interests include software testing of complex software, including scientific software, cyber-physical systems and emerging software applications such as quantum computing applications. She builds techniques for automated software testing improve the overall quality of these systems.
Why I Like My Research
Software is complex, and abstract, and it is everywhere. This means it has to work correctly, be usable, and reliable. In order to test software, we need to understand what it is intended to do (learn system requirements) and how it is structured (software architecture and program analysis). Often this involves working very closely with domain experts (such as Chemists) to understand exactly what we are modeling and how we are representing the physical world in code. Testing is like detective work – we need to understand the software we are building and try to make sure we explore as many scenarios as possible to find potential problems … and we need to do this efficiently. I enjoying working in scientific domains since building robust scientific software means we can answer new scientific questions and have confidence in their results.
Success in My Group
Success in my group is measured through learning, communicating and building new approaches to solving problems. In the SIMCODES project, I expect many students will have little research experience and may lack experience in software testing. Therefore, understanding the basics of how research projects work and how to apply testing techniques in the scientific domain is also a goal for this summer.
Example Research Projects
I will be working with other faculty to apply testing to their projects. Some of the exciting approaches we may examine this summer include:
Configurability of Chemistry Software
Software that is used to answer questions about fundamental chemistry is often highly configurable, meaning the user can change options of the system when running it. These changes can lead to better or worse system performance, and they can also lead to incorrect results. In this thrust we will explore the impact of configurability on scientific software.
Metamorphic Testing of Chemistry Software
When testing software we need to ask if the program behaves correctly. But we often do not know the expected answer in scientific software. For this we will explore a technique (Metamorphic Testing) which allows us to test software using relations between different test inputs.
Automated Program Repair for Chemistry Software
When we find a bug in software, we need to fix the code (or patch the program). This can be time consuming to do manually. Instead, we can use special programs that automatically repair our code (using test cases to validate correctness). In this project we attempt to apply automated program repair to chemistry software.