The project Academic project for the course CSE681. It is focused on building package dependency analyzer in C#.
The entire Remote Code Page Management is built in 4 stages and the detailed information is as below
The package with the name DAnalysis, Graph, TypeAnalysis, DemoReqs, Executive and RulesAndActions are built by me and rest of the packags was provided as the helper codes for the implementation. The entire Software was developed in 4 months with the effective utilization of the helper codes by the instructor.
The project was to analyse the requirement and come up with the intial design for the project. This OCD consists of class diagram, package diagram, explination of the individual component etc.
Extracts words, called tokens, from a stream of characters. Token boundaries are white-space characters, transitions between alphanumeric and punctuator characters, and comment and string boundaries. Certain classes of punctuator characters belong to single character or two character tokens so they require special rules for extraction.
Groups tokens into sets, each of which contain all the information needed to analyze some grammatical construct without containing extra tokens that have to be saved for subsequent analyses. SemiExpressions are determined by special terminating characters: semicolon, open brace, closed brace, and newline when preceeded on the same line with 'using'.
In this third project we will build and test a package dependency analyzer in C# that consists of, at least, these packages:
extracts words, called tokens, from a stream of characters. Token boundaries are white-space characters, transitions between alphanumeric and punctuator characters, and comment and string boundaries. Certain classes of punctuator characters belong to single character or two character tokens so they require special rules for extraction.
groups tokens into sets, each of which contain all the information needed to analyze some grammatical construct without containing extra tokens that have to be saved for subsequent analyses. SemiExpressions are determined by special terminating characters: semicolon, open brace, closed brace, and newline when preceeded on the same line with 'using'.
Provides a container that stores type information needed for dependency analysis.
Finds all the types defined in each of a collection of C# source files. It does this by building rules to detect type definitions - classes, structs, enums, and aliases.
Finds, for each file in a specified collection, all other files from the collection on which they depend. File A depends on file B, if and only if, it uses the name of any type defined in file B. It might do that by calling a method of a type or by inheriting the type. Note that this intentionally does not record dpedndencies of a file on files outsied the file set, e.g., language and platform libraries.
A strong component is the largest set of files that are all mutually dependent. That is, all the files whcih can be reached from any other file in the set by following direct or transitive dependency links. The term 'Strong Component' comes from the theory of directed graphs. There are a number of algorithms for finding strong components in graphs. My favorite is the Tarjan Algorithm, nicely described here: Tarjan Algorithm and pseudo code. You will n eed a graph class to implement this. You will find one in the C# Repository: C# graph class.
Uses information in the TypeTable to build an effective display of the dependency relationships between all files in the selected collection. Note that you are not expected to provide a graphical display. An indented text display will satisfy these requirements.
Provides code to demonstrate you meet all requirements.
In this fourth project we will build and test a remote package dependency analyzer in C# that consists of, at least, these packages:
Most of the packages used for Project #3.
The Comm package implements asynchronous message passing communication using the Windows Communication Foundation Framework (WCF), which provides a well-engineered set of communication functionalities wrapping sockets and windows IPC. You will probably find that this communication facility will need to be factored into several packages. That is left up to you to design.
A package residing on a remote3 machine that exposes an HTTP endpoint for Comm Channel connections. The Server implements all the functionalities developed in Project #3.
A package, based on Windows Presentation Foundation (WPF), residing on the local machine. This package provides facilities for connecting a channel to the remote Server. This package provides the capabilitiy for sending requests messages for each of the functionalities of Project #3, and for receiving messages with the results, and displaying the resulting information.
Software details - Developed on Windows:
Microsoft Visual Studio 2017
Ganesh Mamamatha Sheshappa,
Dr. James W Fawcett,
Syracuse University, NY