On Thu, 24 Jul 1997, Mark Lemley <mlemley[_at_]mail.law.utexas.edu> wrote:
>
> Does the development of automated tools for producing code from
> functional specifications (e.g. CASE tools) increase the likelihood
> that two functionally equivalent programs will end up with similar
> or identical code?
Only in small parts. The "engineering" part of software engineering is what the software engineer puts into the CASE tool (for those who use CASE tools). Most of the creative efforts occur at the abstraction level of a CASE tool (ie objects, classes, interactions, patterns, etc), not at the source code level (which is often the ouput of a CASE tool).
Software engineers, ironically, produce a lot of paper documentation for what they are doing. Object Oriented SE's produce class diagrams, object interaction diagrams, life-cycle diagrams, etc... Just like any other engineer. For many SE's the rest of the development cycle is relatively rote and mechanical.
So, if two pieces of code are literally similar, not on a line-by-line level, but on a level of abstraction above (ie object, class hierarchies and relationships), then I would say there would be the similarity of a possibly infringing nature. CASE tools do not write programs, they merely help the SE manage the process implementing (and redesigning) the abstractions into concrete implementations (ie source code or at least "lower-level" abstractions).
That being said, it is also important to be aware that most progamming languages have "idioms" (ways of doing things) that may make two "programs" look similar to the untrained eye. Another very important thing to look out for is the practice of using "Patterns". Patterns are well recognized and documents ways of "doing things", especially in Object Oriented Software Engineering. You may well find that two programs have "islands" of striking similarity, even at higher abstraction levels.. This is probably because the solutions being implemented even at that high a level of abstraction are well documented by others. Thus, when a "pattern" is recognized, it should be "filtered" just like public domain or non-protectible elements, IMHO..
For info on Patterns in Software Engineering:
http://st-www.cs.uiuc.edu/users/patterns/patterns.html
For law as a pattern:
http://www.c2.com/cgi/wiki?GabrielWachob
-Gabe
Gabriel Wachob
<gwachob[_at_]aimnet.com>
Received on Fri Jul 25 1997 - 17:19:11 GMT
This archive was generated by hypermail 2.2.0 : Mon Mar 26 2007 - 00:35:26 GMT