1. GUI Test Environments
The aim of this project is to implement a GUI test package. A number of such packages are available commercially, and the idea is to produce a GUI front end written in Java, to invoke the TET (Test Environment Toolkit), and display test results in raw journal format and formatted output. This involves user-interface design and GUI programming using Java. Preferred platforms are Linux/SunOs or Windows 95/NT.
2. A Back-End For A Test Environment Tool Kit
The software product TETware is a test environment tool kit which provides a uniform framework for non-distributed and distributed test cases. By providing this framework, test suites from different vendors can share a common interface. The aim of this project is to provide a user-friendly, graphical back-end to the TETware software which will take the journal files and produce graphs of the data so that results can be interpreted much more easily.
3. Regression testing
A large part of maintenance involves regression testing - ensuring that modified software has the correct functionality , whilst running the minimum number of tests. Can automated techniques be used to reduce the cost of regression testing, and if so, by how much? This project has scope for research and innovation.
4. Coverage tool for Visual C++ and/or Gnu C++
The aim of this project is to develop a coverage tool for C++ that measures how thoroughly tests exercise C++ programs. It should be able to measure the following: - how often branches have been taken in either direction. (branch coverage) - how often cases in switches have been taken. - how often nested logical conditions have evaluated to true and false (multiple condition coverage) - how often loops have iterated zero, one, and more than one times (loop coverage) - how often the boundaries of relational operators have been probed (relational coverage) - how often routines have been entered - how often call sites have been exercised - how often routines have had multiple threads of execution in them - weak mutation coverage (a research technique).
5. An investigation of test techniques
Are software inspections as profitable as has been suggested? This project will investigate the recent claims that functional testing is as efficient as code reading in most circumstances.
Reading: Marc Roper's EASE paper, Adam Porter's IEEE TSE paper.
6. An investigation of inheritance
Is inheritance the 'silver bullet' that everyone thought it was going to be? The aim of this project is to investigate recent claims that there may be an 'optimum' level of inheritance for software development and maintenance. The project will involve designing experiments to investigate this claim, carrying them out and analysing the results.
Reading: John Daly's EASE paper.
7. Metrics package
The aim of this project is to develop a metrics package. The package should compute various OO metrics from both design documentation and code. The toolkit should include a range of specification, design and code metrics. A commercial or public domain package could be used as the basis of the project. Advice on which metrics to use in particular circumstances could also be included.
Reading: Pfleeger, S L Lessons learned in building a corporate metrics program, IEEE Software, May 93, pp 67-74
8. Metrics for object-oriented systems
The aim of this project is to produce and validate a set of metrics which are specifically intended for object-oriented analysis, design and programming, using the work of Chidamber, Li and Lorenz as a basis. The metrics should also be validated using existing software. The project requires some interest in statistics.
Reading: Chidamber, S R, Kemerer C F, A metrics suite for object-oriented design, IEEE Trans on Software eng, 20 (6), June 1994, pp476-493 Li, Henry, Maintenance Metrics for the object oriented paradigm, First International Software Metrics Symposium, May 1993 Lorenz M and Kidd J, Object-Oriented Software Metrics, Prentice Hall Object-Oriented series, 1994
9. Metrics for object-oriented analysis and design
The aim of this project is to analyse the UML method for object-oriented analysis and design and produce a suite of metrics which may help designers working in this domain. For example, obvious candidates include the number of object diagrams, etc. The project could begin with a review of the work of De Marco on specification weights. Once a suite of metrics has been proposed, object-oriented code should be analysed in order to validate the suite, preferably using data from the real world.
Reading: Booch, G, Object-oriented design with applications, Benjamin-Cummings, 1991 Rumbaugh et al, Object-oriented modelling and design, PHI, 1991. De Marco, T, Controlling software projects: managements, measurement and estimation, Yourdon Press, 1982. ~rh/Projects/projects98