The goal of this project is to develop a software package that derives information from program source files. This software tool will provide data to estimate and track software development projects. Initially, this application will focus on code size metrics, primarily non-comment lines of code (NCLOC). (See the note on coding standards and LOC counting.)
Note: Since part of the software engineering process is the elicitation and definition of requirements, this specification is purposely vague in some details and may be missing other relevant information. Please consult your client (the instructor) for any needed clarification.
The project specification draws on work done by Watts Humphrey of the Software Engineering Institute. Elements of this project are taken from a preliminary description of Humphrey's course on the Team Software Process (TSP). Humphrey has written several software engineering books, including two on the Personal Software Process (PSP), on which the Team Software Process builds.
The program information application analyzes a specified set of C++ source files (usually ".h" and ".cpp"). The user specifies which files are to be analyzed. Note that the files may be in more than one directory, and there could thus be more than one file with the same name.
The number of non-comment lines of code in each file is to be counted and reported, by file and in aggregate. At a minimum, the "//' C++ comment style must be supported.
The analysis results should be displayed on the screen and, on user request, saved as a text file containing file names and size (NCLOC) for each file and the total size for all files.
The software package must operate properly in the Windows NT and Windows 95 environments; it is expected that the Microsoft Foundation Classes (MFC) framework will be used.
The following features are optional additions for phase 1:
In this phase, all the phase 1 capabilities must be retained. In addition, the program information application must also determine the size (NCLOC) of individual classes and member functions. This new information includes the total size of each class (definition, all member functions, etc.), the number of methods (member functions) in each class, the size of each method (implementation), and the average size for all methods in a class.
The various analysis options (at least the file LOC and object/method LOC) must be individually selectable by the user, and any or all may be chosen at one time.
[Implementation note: the specification does not require you to write a parser for the C++ language. It is permissible to use other techniques (such as embedding special comments or making use of those added by Rational Rose) to identify sections of source code.]
The following features are optional additions for phase 2:
This page was last updated on September 16, 1998; send comments to Mark Sebern.