From: petera@bcars630.UUCP (Peter Ashwood-Smith)
Subject: Re: FoxBase to `C' Contract: How much should I ask for? Help
Organization: Bell-Northern Research, Ottawa, Canada
Distribution: usa
Date: Fri, 13 Nov 1992 14:41:00 GMT

In article <1992Nov9.221720.9793@tamsun.tamu.edu>, tpradeep@cs.tamu.edu (Pradeep K Tapadiya) writes:
|> Howdy friends,
|> 
|> I have been approached by a company to write a generic FoxBase to
|> `C' converter. The user-interface needs to be converted to "printf"
|> kind of statements. The database calls need to be converted to
|> db-vista calls. Efficiency doen't seem to be an important
|> consideration. 
|> 
|> So far I used to program on per hour basis. This is the first time
|> I have been asked to bid for a project. I do not how many man-hours
|> this work would involve. Since this is my first break, I do not
|> wish to loose this contract. Would the experienced readers on the
|> net advice me on how much I should bid for this contract? Any
|> kind of advise/strategy is appreciated.
|> 
|> Thank you for your help.

   There are two aspects to consider carefully here. The buisness side of things
and the technical side of things. I cannot give you much advice in terms of buisness
except to suggest that you cover your ass. I.e. make sure you have disclaimers on
the output code so that you are not responsible for it not working. I.e. if someone
loses money because of a badly translated program its NOT your fault.

   From a technical point of view I can perhaps offer some advice since several years
ago I wrote a PASCAL/VS to C translator to convert 700,000 lines of PASCAL to C so that
it could be ported to a workstation. 

   The way you tackle the project has to do with what the output code will be used for.
If the intention is to use your translator like a compiler then the problem is easier 
because you do not have to produce readable code, map comments etc. Otherwise if they want
to throw away the FoxBase input and then continue development/maintenance in C the problem
is much harder because they are going to be taking a very close look at your output C. If 
your case is the latter I suggest that you provide them with a sample of the kind of output
you could produce and get them to sign it off before you begin. Otherwise you may get dozens 
of complaints about formatting etc. A more serious problem with producing a maintainable output
has to do with the fact that they will expect all high level constructs/functions to map to
their equivalent functions in C. This may not be possible because the C equivalent may not offer
the required functionality in which case you can either provide a library of functions that you
generate calls to, or you can map as closely as possible and do hand fixups later. We chose a
combination of the two approaches but it is hard to produce a '100% correct` translation this way
even if it is the proper thing to do.

    My project was of the latter variety and it took two of us about 6 months each to produce
a working (albeit buggy) translator. Within 1 year of starting we had the 700,000 line 
program working reasonably well.

    By the way, this was my 3rd such translator/compiler so if you have less experience you
can increase the figures by 30-40%.

    Peter
Newsgroups: comp.databases