Software Engineering
The Software Engineering research focus area addresses fundamental issues for improving the design, construction, maintenance, and use of software products. Current areas of software-engineering research include:
- Software design
- Software testing
- Software evolution
- Experimental and empirical software engineering
- Software process
- Software metrics
- Assurance of software for critical systems
- Applications of intelligent systems
- Real-time instrumentation systems
Center for Computer Security Research
Several software-engineering faculty are affiliated with the Center for Computer Security Research, which conducts research projects in the following areas.
- Computer security
- Information assurance
- Computer forensics
Faculty
Ongoing Collaborations
- Argonne National Laboratory
- CeBASE: NSF Center for Empirically Based Software Engineering
- Fraunhofer Center --- Maryland
- University of Maryland
- University of Nebraska --- Lincoln
- US Army Engineer Research and Development Center
- MSU Institute for Neurocognitive Science and Technology
- MSU High Performance Computing Lab
- MSU HPC* including:
Research Projects
- David A. Dampier, Ray Vaughn, and others
- Center for Computer Security Research - Projects in the areas of computer security, information assurance and computer forensics are described in the Computer Security and Forensics research focus area.
- Edward B. Allen
- Empirical Evaluation of Information Theory-Based Software Metrics - This project is empirically validating the usefulness of a new generation of software metrics, based on information theory.
- Assessment of Open-Source Software for High-Performance Computing - This project is finding ways to assess the quality of open-source software for high-performance computing. The open-source approach to software development has been attractive to the high-performance computing community, but the software's quality is uncertain. Our retrospective case studies are building and evaluating models that could have been developed during historical projects or releases, and thus, demonstrate methods for assessing software quality.
- Certification that Software Requirements are Perfectly Fulfilled at Delivery - This project is developing a methodology for verification of high priority software requirements, such as security requirements expressed in the Common Criteria. Our methodology will be based on a synthesis of diverse formal modeling methods, source-code analysis, and automated test generation techniques. We take a product-centered, white-box approach to verification that takes advantage of design information, if available. Our methodology will complement certification that development processes were rigorous. Contributions are expected to provide guidance both for specifying requirements and for selecting verification methods. Our initial case study has examined the Security Target document for the STAT Scanner by Harris Corp. based on the Common Criteria.
- Comprehension of Diagrams Representing Mental Models of Software - This project is applying cognitive-science results and methods to understanding cognitive errors during creation and comprehension of software-engineering diagrams.
- Jeff Carver
- Collaborative Research: Flexible High Quality Design for Software Intensive Systems - This project is focused on better understanding the impacts of changes that happen late in the software lifecycle. Our high-level goal is to explore the relationship between changes and the underlying software architecture. This work is being done through the use of empirical studies. The end goal will be the production of a model that allows software developers to reason about proposed changes and their impact on a software system.
- Engineering Processes and Methodologies for the DoD CHSSI Institute for Maneuverability and Terrain Physics Simulation - The focus of this project is to understand and improve the software engineering process for a project within the Army Corp of Engineers Engineering Research and Development Center (ERDC). We will be working with project teams and management to standardize processes and tools across the different projects and teams within the organization.
- The Use of Empirical Studies in the Development of High End Computing Applications - This project is part of the High Productivity Computing Systems (HPCS) project. We are focused on understanding software development in the realm of high performance computers. We are conducting a series of empirical studies both in the small (classroom) and on real projects. We are also interviewing teams who have been involved in development of large HPC codes. The results of all these studies should help us to better understand the workflow involved in software development for High Performance Computers. We should be able to determine where people spend their time and effort and find opportunities to improve the process.
- Evaluation of Spreadsheet Testing Methods - This project focuses on better understanding methods by which non-programmers can develop quality spreadsheets. We are working with Dr. Gregg Rothermel from the University of Nebraska who has developed the methods. The main contribution we provide is in conducting empirical studies to evaluate Dr. Rothermel's methods.
- Evaluation of a Tool for Introductory Programming Courses - The focus of this project is to evaluate the Viope tool that is used to teach programming. The goal of this research is to understand whether or not the tool provides a benefit to students who are learning how to program. This work will be accomplished through empirical studies involving both surveys and other methods.
- Understanding and Improving Empirical Study in Software Engineering - The goal of this work is to better understand and improve the methods by which experimentation is carried out in the Software Engineering domain. We want to understand where our current methods are deficient. We also want to investigate methods from other fields, such as Social Science, that can be effectively tailored and applied to our domain.
- Thomas Philip
- Teaching the Science of Design to Undergraduate Software Engineering Majors - This project is finding coherent ways to teach undergraduate software-engineering majors to design software well.

