AIM:
The aims of this assignment are to:
• Provide experience in the use of a modern Integrated Development Environment (specifically NetBeans running on a Linux platform) for the development of C++ applications;
• Provide additional experience in the design and implementation of simple C++ classes;
• Introduce the "Test Driven Development" style for program development;
• Use program testing tools including unit testing (cppUnit) and code coverage testing.
OBJECTIVES:
On completion of this assignment, you should be able to:
1) Make effective use of an IDE for C++ development.
2) Develop a simple project in "test driven development" style.
3) Utilize the cppUnit unit test framework to run test suites on new components of application code;
4) Utilize the gcov code coverage tool to verify the extent to which a complete application has been exercised
The assignment does require that you use the NetBeans IDE as the standard C++ development environment. The Ubuntu Linux computer systems in laboratory will have this system installed.
TASKS:
You should read the description of the Scramble Word Game (SWG) System in Appendix A before reading these task details.
You are to implement the application described in those notes, and then produce a report on your application, and your development process. Your report should demonstrate that:
• appropriate use was made of the IDE,
• You have followed an iterative style of development creating and testing component classes prior to assembling them into complete programs
• You have tested your final programs thoroughly.
You prepare a report on your final code, your development process, and your testing. This report should be prepared in a word processor (Microsoft Word, or Open Office Word Processor) and should contain formatted listings of code, code coverage testing listings, screen shots, and segments of captured console output. The final report is submitted as a PDF document.
Use of the Integrated Development Environment:
It is intended that you learn to use the IDE (and, if appropriate, learn to exploit the integrated source level debugger). Your report on your assignment work should include screen shots illustrating your code being developed in the IDE.
Classes and unit test exercises:
You will need to implement a number of classes. In addition to application specific classes, you may need some standard classes from the STL and iostream libraries. Of course, there is no need for you to do any testing of such standard classes.
Remember that Test Driven Development (TDD) is more about design than testing. The TDD approach encourages you to think in terms of simple, orthogonal classes that can be developed and tested in isolation and which can then be assembled into a complete program.
You will create Test classes (these are all specialized CppUnit::TestFixture classes) that test the functionality of your application classes. CppUnit classes, their more important methods, and the helper macros are covered briefly in the lecture materials. cppUnit is further documented at its SourceForge home .
Your assignment report should include formatted listings (header and code files) for your classes – both the application specific classes and their associated test classes . If you do “refactor” your classes many times, you need only include final versions of the class and its test class. When presenting a class it is best to provide a brief summary of the role of the class, its header file, and then its implementation file. You should do proper code-coverage checking of your program. You need to run your programs, possibly many times, to verify that you have executed all the different processing options.
Your report should include formatted listings of your application, some captured input and output from console sessions, and some gcov code coverage reports. You should edit segments out of your console sessions and code-coverage reports – there is no need to include the full listings which can be very long.