Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Type Relationship Analyzer - Project 1 - Object Oriented Design | CSE 687, Study Guides, Projects, Research of Engineering

Material Type: Project; Professor: Fawcett; Class: Object Oriented Design; Subject: Computer Engineering; University: Syracuse University; Term: Spring 2007;

Typology: Study Guides, Projects, Research

Pre 2010

Uploaded on 08/09/2009

koofers-user-xmb
koofers-user-xmb 🇺🇸

10 documents

1 / 2

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSE687 - Object Oriented Design
Spring 2007
Project #1 – Type Relationship Analyzer due
Monday, Feb 12
Revision 2
Purpose:
This project requires you to develop a source code analyzer that discovers all of the classes
declared and defined in each file analyzed, and determines their relationships, if any. For
example, you will look for inheritance, composition, aggregation, and using relationships. The
analysis, you will find, is considerably simpler than full recognition of the C++ language.
This project is part of a larger effort that we will undertake this semester that is comprised of all
four projects, and, if you design and implement well, will be a useful tool for your professional
activities.
Requirements:
Your TYPEANAL program:
1. shall use standard C++1 and the standard library, compile and link from the command line,
using VC++ 8.0, as provided in the ECS clusters and operate in the environment provided
there2.
2. shall use services of the C++ iostream library for all input and output to and from the user’s
console and C++ operator new and delete for all dynamic memory management, if you use
any.
3. shall be implemented using at least three modules of your design.
4. shall accept, from the command line, a path name to begin searching for files, and a set of
one or more file name patterns.
5. shall record all the types defined and declared in each analyzed file, recording the type name
and the source code files that contain declarations and partial or complete definitions.
6. shall evaluate all of the inheritance, composition, aggregation, and using relationships
between classes in all of the files analyzed. Note that these relationships may span more
than one file. That is, a class may derive from a class defined in other files.
7. shall display a list of all of the types, the files that contain them, and their relationships to
other types.
The requirements, above, have been silent about handling namespace qualification. Are you
required to qualify type names with namespace names, in which they are embedded? No, that is
not required. Doing so would make a marginally stronger tool, but it would also be a little more
complicated, so you are not obligated to do that. If you do that correctly, however, I will award a
5 point bonus to your score.
You will find grammar prototype code in the class directory that you may find useful for this
project3. The fileInfo module, also in the class code directory, implements file pattern expansion
and other operations useful for this project.
1 This means, for example that you may not use the .Net managed extensions to C++.
2 VC++ version 8.0 is Visual Studio .Net and is available in all the ECS clusters.
3 I will put the grammar prototype in the class code directory by Jan 21.
pf2

Partial preview of the text

Download Type Relationship Analyzer - Project 1 - Object Oriented Design | CSE 687 and more Study Guides, Projects, Research Engineering in PDF only on Docsity!

CSE687 - Object Oriented Design

Spring 2007

Project #1 – Type Relationship Analyzer due

Monday, Feb 12

Revision 2

Purpose:

This project requires you to develop a source code analyzer that discovers all of the classes declared and defined in each file analyzed, and determines their relationships, if any. For example, you will look for inheritance, composition, aggregation, and using relationships. The analysis, you will find, is considerably simpler than full recognition of the C++ language. This project is part of a larger effort that we will undertake this semester that is comprised of all four projects, and, if you design and implement well, will be a useful tool for your professional activities.

Requirements:

Your TYPEANAL program:

  1. shall use standard C++^1 and the standard library, compile and link from the command line, using VC++ 8.0, as provided in the ECS clusters and operate in the environment provided there^2.
  2. shall use services of the C++ iostream library for all input and output to and from the user’s console and C++ operator new and delete for all dynamic memory management, if you use any.
  3. shall be implemented using at least three modules of your design.
  4. shall accept, from the command line, a path name to begin searching for files, and a set of one or more file name patterns.
  5. shall record all the types defined and declared in each analyzed file, recording the type name and the source code files that contain declarations and partial or complete definitions.
  6. shall evaluate all of the inheritance, composition, aggregation, and using relationships between classes in all of the files analyzed. Note that these relationships may span more than one file. That is, a class may derive from a class defined in other files.
  7. shall display a list of all of the types, the files that contain them, and their relationships to other types. The requirements, above, have been silent about handling namespace qualification. Are you required to qualify type names with namespace names, in which they are embedded? No, that is not required. Doing so would make a marginally stronger tool, but it would also be a little more complicated, so you are not obligated to do that. If you do that correctly, however, I will award a 5 point bonus to your score. You will find grammar prototype code in the class directory that you may find useful for this project^3. The fileInfo module, also in the class code directory, implements file pattern expansion and other operations useful for this project. (^1) This means, for example that you may not use the .Net managed extensions to C++. (^2) VC++ version 8.0 is Visual Studio .Net and is available in all the ECS clusters. (^3) I will put the grammar prototype in the class code directory by Jan 21.

CSE687 - Object Oriented Design

Spring 2007

This is a moderately challenging project. You should not wait until the last week before it is due to start. If you do that you won’t finish on time.