Content Frame
[Skip Breadcrumb Navigation]
Home  arrow Student Resources  arrow Project suggestions  arrow Software tools

Software tools
 
Program analysis tools

The objective of this project is to build static and/or dynamic program analysis tools. These may provide static analysis facilities as discussed in Chapter 24 or dynamic analysis showing how often each statement in the program has been executed. You can add further analysis facilities such as a facility which shows where names defined in the program are used and a facility which analyses the dynamic storage allocation in the program (all store which is allocated should be de-allocated). An abstract syntax tree is necessary for this project.

Program visualization tools

The objective of this system is to generate visual representations of a program in some programming language. There are various representations that could be developed such as a graphical representation of the call structure of the program, a representation of the composition structure, a representation of the scope hierarchy, etc. For object-oriented languages, you could generate service-usage charts or aggregation charts. This type of system has tremendous scope from simple, single-window systems to complex multi-window systems with a range of display options. An abstract syntax tree is necessary for this project.

A compiler testing system

The objective of this project is to build a compiler input generator which may be used to test compilation systems. You use the defined language grammar to generate strings representing correct and incorrect programs and integrate this with a system which submits input to a compiler and processes the compiler output to check that syntactically-correct strings have been parsed without error messages and that error messages have been generated for incorrect programs.

Design workbenches

There is a range of possible projects where design workbenches of various types are built. These can include the components discussed in Chapter 26 such as design editors for different representations, , report generators, code generators, etc. Such a project can involve substantial groups (up to 10 or 12 students) where sub-groups are responsible for developing the infrastructure components and others the workbench tools.

CBSE support system

The aim of this project is to build a software components catalogue which users may browse to discover reusable software components. It may be accessed using keywords associated with each component. It must be possible to enter and classify components. The interface to the system may either be a query language interface, or a forms-based interface. An extension to the project is to implement a web-based graphical browsing capability for the components catalogue and to allow components to be downloaded from remote sites.

System change control and reporting system

This system is intended to support a change reporting and control system as discussed in Chapter 32. It should allow changes to be logged, submitted for approval and subsequently tracked. It might be integrated with an electronic mail system so that the change reports can be passed automatically to the change control board.

A requirements traceability system

This system should be designed to analyse requirements written in natural language to discover relationships between them. The basic idea is that related requirements should refer to the same system and domain entities and relationships so the system scans the natural language requirements looking for requirements which use the same technical terms. You need to be able to train the system to operate in a particular domain and to define exclusions - words which are so common that they should always be ignored.

A design rationale system

Design rationale is concerned with providing reasons why particular design decisions are made. A design rationale system allows proposals to be made and arguments for and against these proposals to be maintained. You might also include the notion of risk in such a system where as well as simply putting forward a design proposal, the proposer should also be able to describe risks and associate some numeric value with these risks. The rationale system should be able to assist with decision making based on these risk factors as well as technical arguments.




Copyright © 1995-2006 Pearson Education. All rights reserved.
Legal and Privacy Notice
Pearson Education

[Return to the Top of this Page]