Software Technology and the Law Contents Page Introduction
Total Page:16
File Type:pdf, Size:1020Kb
Chapter 4 Software Technology and the Law Contents Page Introduction . 125 Technology . .125 Introduction . 125 Program Function . 126 External Design . 126 User Interface . 127 Program Code . 130 Software and the Application of Intellectual Property Laws . 130 Program Function . 132 External Design . 138 User Interface . 142 Program Code . 144 Recompilation . 146 Introduction . 146 Recompilation and Disassembly . 147 Uses of Recompilation . 148 Other Methods of Reverse Engineering . 150 Legal Arguments for Policy Positions . 150 Patent Law . .. 150 Copyright Law . 151 Software Development . .. 153 Boxes Box Page 4-A. Authorship . .131 4-B. Cryptography . 137 4-C. Neural Networks . 152 4-D. Software Reuse . 154 4-E. Special Concerns of the Federal Government . 156 4-F. The Discipline of Computer Science . 158 Figures Figure Page 4-1. Comparison of ’’Substituting” and ’’Attaching’’ Programs . 127 4-2. High-Level Language, Machine Language, and Disassembled Versions of a Program . .*........*.......*..Q... 149 — Chapter 4 Software Technology and the Law Introduction can take one of two values; to make it easier to comprehend what is happening inside the computer, There are intellectual property issues associated programmers represent one of the values with the with four elements of a program: the program symbol” 1,’ and the other with the symbol ‘‘ O.” For function, the external design, the user interface example, the addition instruction for the processor design, and the program code. The first section of that is used in most microcomputers may be this chapter describes the technology behind each of these elements. The second section outlines the represented as “00000100.” In the same way, in application of existing intellectual property laws to most computers the letter “A’ is represented by the each element, and discusses the policy issues pattern of signals corresponding to “01000001. ” associated with the current level of protection. There The complex functions that programmed computers have been various policy positions advanced for perform for users often seem far removed from the maintaining or changing the scope of protection, and patterns of electronic signals and very simple most of these policy positions have been supported operations that characterize the computer at the by legal arguments; the final section of the chapter hardware level. Computers perform complex tasks briefly summarizes these legal arguments. by performing a large number of simple operations in sequence—typically millions of operations per Technology second. Introduction l The processor and memory are usually part of a One way to think about computers and programs larger system. Data to be used in a computation may is to look at the hardware. The core parts of the computer are the processor and memory. Both the be read from a disk or tape drive. Data can also be processor and memory usually consist of one or exchanged or shared with other computers using a more integrated circuits, which are semiconductor network. The data is exchanged using communica- chips that manipulate digital electronic information. tions protocols, which specify the format and The processor and memory work together to perform sequence in which data is sent. It is also possible for logical and arithmetic operations on data; the part of a computation to be carried out on a distant program is stored in memory and specifies the order computer. Sometimes specialized computers are in which the operations are to be performed. used for different parts of a task; for example, a supercomputer may carry out the computationally A program consists of a list of instructions. Each intensive portions of a task, while a workstation is type of processor has an instruction set—a set of operations that it is capable of performing. Most of used for displaying the results of the computation. these operations are simple; for example, a typical instruction set would include an instruction for There are also a variety of input and output operations such as moving data from memory to the devices for communicating with the user. The processor, logical operations such as checking if two display is the output device most commonly used for pieces of data have the same value, and arithmetic providing users with information about the results of operations such as adding two numbers. A program a computation. More advanced displays, faster is executed when the instructions are transferred to processors, and cheaper memory enable program the processor and the processor performs the speci- developers to go beyond the simple display of text fied operations. to include graphics. Color monitors are also increas- Inside the computer, ‘‘instructions’ and ‘‘data’ ingly common. In some applications, small displays arc both patterns of electronic signals. These signals inside helmets or goggles are used to give users the 126 ● Finding a Balance: Computer Software, Intellectual Property, and the Challenge of Technological Change illusion of a three-dimensional image.2 Sound, perform. Connecting together these electronic cir- which can include warning tones, music, and synthe- cuits has the same effect as programmingg a com- sized speech, may also be used to provide informat- puter. Just as the calculation that the computer will ion to users. perform can be understood by looking at the program, the calculation that a circuit will perform Input devices include the keyboard, for entering can be understood by looking at the circuit diagram. text, and the mouse, a pointer used for drawing figures or selecting commands on a screen. The use The choice of whether to perform the calculation of a special pen can also allow the entry of written by programming a computer or building a circuit is information and commands.3 Research is under way an engineering decision. Often, a calculation can be on speech recognition technologies that allow com- performed more quickly by hardware, which maybe mands to be spoken instead of typed or selected an important consideration in some applications using a mouse. Other experimental input devices such as signal processing. On the other hand, detect eye movements4 or gestures made with a programming a computer is potentially less costly special glove. and more flexible. The function of a programmed computer can be changed by writing a new program; Sometimes the memory and the processor are not with hardware, however, a new circuit must be built. part of a conventional computer, but are embedded in industrial machinery and other devices. The Often many different problems can be modeled in processor receives information from a variety of a similar way, and solved using the same class of sources, processes the data, and uses the results of algorithms. For example, many applications that the computation to direct the operation of a machine. operate on speech signals and video images use Examples of embedded systems are the microproc- similar signal processing algorithms. Searching and essor-based controllers used in appliances, automo- sorting algorithms are also among the basic tools biles, and industrial processes. that are commonly used in software development. Problems such as finding the fastest route between Program Function two cities or determiningg when to perform tasks in Progr ammed computers perform a series of calcu- a manufacturing process may be modeled in a way lations to transform input values to output values. A that makes them solvable by using graph algorithms. well-defined computational procedure for taking an input and producing an output is called an algo- External Design rithm.5 Algorithms are tools for solving computa- Programs have an external design or interface— tional problems. The statement of a problem speci- the conventions for communication between the fies in general terms the desired relationship program and the user or other programs. The between the input and the output, while the algo- external design is conceptually separate from the rithm describes a specific computational procedure 6 program code that implements the interface (the for achieving the input/output relationship. internal design). It specifies the interactions between The transformation of input data to output data the program and the user or other programs, but not can also be performed in hardware. Integrated how the program does the required computations. circuits can perform the same simple logical and There are typically many different ways of writing arithmetic operations that programmed computers a program to implement the same interface. 2 Scott S. Fisher, “Virtual Interface Environments, ” in Brenda Laurel (cd.), The Art of Human-Compufer Interface Design (Reading, MA: Addison-Wesley, 1990), p. 423. s Ro~I-I M. cm, ‘‘lhe point of the Pe~” Byte Magazine, vol. 16, No. 2, February 1991, p. 211. ‘1 Robert J.K. Jacob, “What You Look Is What You Ge4’ Proceedings of CHI (Conference on Human Factors in Computing System.r), 1990 (New York, NY: Association for Computing Machinery, 1990), pp. 11-18. s The definition given here reflects the use of the term ‘algorithm’ in computer science. In applying patent law to inventions involving programmed computers, the courts are required to determine whether the claimed invention is a‘ ‘mathematical algorithm. ’ The term “mathematical algorithm’ was used by the Court of Customs and Patent Appeals to characterize a method of converting binary coded decimal to binary numbers that the U.S. Supreme Court held to be nonstatutory in its 19’72 decision Gorrschulk v. Benson (409 U.S. 64). The meaning of “mathematical algorithm, ” and the relationship between ‘algorithm’ as the term is used in computer science, and ‘‘mathematical algori~’ as the term is used in the case law, has been the subject of considerable discussion (see pp. 133-134). b Thomas H. Cormen, Charles E. Leiserson, and Romld L. Rivest, Introducn”un w Algorithms (Cambridge, MA: MIT Press, 1990). Chapter 4--Software Technology and the Law . 127 The external design will sometimes reflect con- Figure 4-l—Comparison of “Substituting” and straints such as the speed of the processor, the “Attaching” Programs amount of memory available, and the time needed to complete the product.