| Home |
|
Student Resources |
|
Project suggestions |
|
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.
| Legal and Privacy Notice |