Ex Parte WaddingtonDownload PDFPatent Trial and Appeal BoardSep 23, 201311093517 (P.T.A.B. Sep. 23, 2013) Copy Citation UNITED STATES PATENT AND TRADEMARK OFFICE ____________ BEFORE THE PATENT TRIAL AND APPEAL BOARD ____________ Ex parte DANIEL G. WADDINGTON ____________ Appeal 2011-001984 Application 11/093,517 Technology Center 2100 ____________ Before JOSEPH L. DIXON, ST. JOHN COURTENAY III, and CARLA M. KRIVAK, Administrative Patent Judges. DIXON, Administrative Patent Judge. DECISION ON APPEAL Appeal 2011-001984 Application 11/093,517 2 STATEMENT OF THE CASE Appellant appeals under 35 U.S.C. § 134(a) from a rejection of claims 1-18. We have jurisdiction under 35 U.S.C. § 6(b). We affirm-in-part. INVENTION The invention is directed to “N-way merging of source code into a single, unified and semantically correct version” (Spec. 1:16-17). Claim 1, reproduced below, is representative of the claimed subject matter: 1. A method for performing conditionalized N-way merging of source code, comprising: collecting differential information for each of N versions of an original source code program, the original source code program having lines of text; constructing a merge data structure from the differential information; and merging the N versions into a single, semantically correct, unified program using the merge data structure, the single, semantically correct, unified program having preprocessing conditionals to capture differences between the N versions. REFERENCES The prior art relied upon by the Examiner in rejecting the claims on appeal is: Livshits US 2004/0230886 A1 Nov. 18, 2004 Andreas Zeller, “Configuration Management with Version Sets: A Unified Software Versioning Model and its Applications,” April 1, 1997. Appeal 2011-001984 Application 11/093,517 3 REJECTION Claims 1-18 stand rejected under 35 U.S.C. § 103(a) as being unpatentable over Livshits and Zeller. ANALYSIS Claims 1-17 Appellant contends that neitherLivshits, Zeller, nor the combination of the two references, discloses or would have suggested “merging the N versions into a single, semantically correct, unified program using the merge data structure, the single, semantically correct, unified program having preprocessing conditionals to capture differences between the N version,” as recited in claim 1 (App. Br. 9-15). We disagree. The Examiner cites Zeller’s Abstract (Ans. 4-5, 11), which discloses: Unified versioning. Version sets provide one single formalism to express all versioning dimensions as well as constraints on them, integrating SCM [software configuration management] concepts like revisions, variants, workspaces, and configurations in one single model. . . . . . . . We have implemented the version set model in an experimental SCM system name ICE for Incremental Configuration Environment. In ICE, the version set model shows up numerous user-visible benefits. Through the FFS, a virtual file system, users can access version sets consisting of arbitrary combinations of revisions, changes, variants, and workspaces. Individual versions are accessed as files; version sets as a whole can be handled via version directories or through the well-known C preprocessor representation. Appeal 2011-001984 Application 11/093,517 4 (Zeller, Abstract). Considering Zeller as a whole to determine how Zeller handles version sets with the C preprocessor, as quoted above, we find Zeller discloses the following: A completely different “repository” concept used for variant management is realized in the C programming language. All variants are stored in a single component visible to the programmer; variant-specific parts are enclosed in C preprocessor (CPP) #if . . . #endif directives. As part of the compilation, CPP selects a single variant from the source code determined by a conjunction of attribute/value pairs. CPP evaluates each #if-expression, with any attribute being replaced by its respective value. The code piece enclosed by the #if . . . #endif is included only if the #if-expression evaluates to a non- zero value. . . . . It is common to see conditional compilation, as exemplified by CPP, as a programming language feature. In our context, conditional compilation should rather be regarded as a compiler- and language-independent version-control technique. (Zeller, p. 15, sec. 2.6.1). Thus, Zeller discloses handling version sets by using C preprocessor directives, i.e., “conditionals” as recited in claim 1, to determine which lines of code from which versions are merged into the program to be compiled. We agree with the Examiner (Ans. 5, 12-13) and find this meets the claim 1 limitation of a “unified program having preprocessing conditionals to capture differences between the N versions.” The Examiner also cites Zeller’s discussion of semantics-based merging (Ans. 5, 12), which discloses the following: While syntax-based merging guarantees the syntactic correctness of the merge result M, one still has no guarantee Appeal 2011-001984 Application 11/093,517 5 about how the execution behavior of M relates to the execution behavior of the merged variants V1 and V2. . . . [T]he first approach that performed true semantics-based merging was presented by Horwitz, Prins, and Reps in [HPR89]. Their algorithm relies on the assumption that behavior differences, rather than textual or structural differences, are significant and must be preserved in M. . . . To determine interference of changes, the algorithm determines the program slices in V1 and V2 that are changed from the base V0 and the slices that are unchanged from V0. The changed and unchanged slices are then merged, and if there is no interference, a merged program M is produced from the merged slices. The algorithm ensures that M captures the changed behavior of both V1 and V2 as well as the behavior that was unchanged from the base V0. (Zeller, p. 51, sec. 5.6.3). Thus, Zeller discloses semantics-based merging approaches exist in order to maintain the semantic integrity of a merged program. This suggests merging various versions of a program such that the resulting unified program is semantically correct, as recited in claim 1. Appellant additionally argues the Examiner’s motivation for combining the references is deficient (App. Br. 15-16). In stating why it would have been obvious to combine the references, the Examiner cites Zeller, page 195, which discloses: ICE [Zeller’s inventive incremental configuration environment] uses CPP [C preprocessor] expressions to represent feature terms and files enriched with CPP directives to represent version sets. The intent is to give users a familiar, well-understood representation of multiple items in one representation. . . . The primary advantage of the CPP format is that only the differences between versions are specified. Appeal 2011-001984 Application 11/093,517 6 (Zeller, p. 195, sec. 16.6). In other words, Zeller discloses using C preprocessor directives to represent differences between version sets makes it easy and clear for a user to assess the conflicts between different versions of a program. Appellant has not explained why one of ordinary skill in the art would not have been motivated to modify Livshits in view of Zeller’s specific disclosure of the advantages of using C preprocessor directives. Rather, Appellant states the Examiner merely “articulates the result of combining Livshits with Zeller” and the Examiner’s “conclusory statement is unaccompanied by evidence or reasoning” (App. Br. 15-16). This argument, however, overlooks the explicit motivation in Zeller to use C preprocessor directives for software version control as discussed above. We are therefore not persuaded the Examiner erred in rejecting representative claim 1, and claims 2-17 not specifically argued separately. Claim 18 Appellant contends that “claim 18 utilizes ‘means for’ recitations, and as such requires the Examiner to consider the specific structure described in the specification (e.g., FIG. 2) to interpret these limitations” (App. Br. 16). “The structure disclosed by the Appellant[] cannot be disregarded” (App. Br. 17). We agree with Appellant. Means-plus-function claims “shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof.” 35 U.S.C. § 112, sixth paragraph (emphasis added). The Examiner has not made factual findings based on Livshits and Zeller regarding the specific structure required by the claimed means, for example, the “means for merging the N versions into a single, semantically correct, Appeal 2011-001984 Application 11/093,517 7 unified program using the merge data structure, the single, semantically correct, unified program having preprocessing conditionals to represent differences between the N versions” recited in claim 18. The Examiner’s rejection relies on the same findings as for claim 1 (Ans. 3-6, 14). However, claim 1 does not recite any specific structure, but rather recites steps to be performed in a method. Absent specific factual findings based on an interpretation of the corresponding structure for the means-plus-function limitations as described in the Specification, we find the Examiner has failed to establish a prima facie case of obviousness for claim 18. The Examiner responds that the claimed means correspond to a general purpose computer, and the cited portions of Livshits and Zeller suggest using such general hardware (See Ans. 13-14). However, for computer-related means-plus-function claims, the corresponding structure is the described algorithm executing on the computer hardware. WMS Gaming Inc. v. Int’l Game Tech., 184 F.3d 1339, 1349 (Fed. Cir. 1999). Appellant points to the Specification, for example, page 8, line 18 through page 13, line 7 (App. Br. 6), as describing the algorithm required by claim 18. The Examiner has not interpreted claim 18 in light of this description to determine the scope of the claimed means, and therefore has not shown the combination of Livshits and Zeller discloses the invention as defined in claim 18. We are therefore constrained by the record to find the Examiner erred in rejecting claim 18. Appeal 2011-001984 Application 11/093,517 8 CONCLUSIONS OF LAW Under 35 U.S.C. § 103(a), the Examiner erred in rejecting claim 18, but did not err in rejecting claims 1-17. DECISION For the above reasons: The Examiner’s decision rejecting claims 1-17 is affirmed. The Examiner’s decision rejecting claim 18 is reversed. No time period for taking any subsequent action in connection with this appeal may be extended under 37 C.F.R. § 1.136(a)(1)(iv). See 37 C.F.R. § 41.50(f). AFFIRMED-IN-PART llw Copy with citationCopy as parenthetical citation