Patent ID: 7631298

Claim:
A system for managing versions of software under development, versions of the software being stored in a version store including a plurality of development documents related to a software development project, the system comprising: a database that implements the version store; and a client processing system including a processor for receiving commands from a user and communicating the commands to one or more of a plurality of service providers for execution upon one or more of the development documents from the version store, wherein each of the plurality of service providers performs a different development function, wherein the client processing system and the plurality of service providers have a mutually compatible versioning application program interface for communicating the commands, and wherein the client processing system employs: a merge subsystem for providing merge/differencing services that combine multiple versions of a document to form a single document, wherein the merge subsystem includes a plurality of merge preprocessor modules that modify an input stream, a merge engine that combines the outputs of the preprocessor modules into a single document, a plurality of postprocessors that process the single document from the merge engine and provide the processed single document to the version store as a development document, and a merge broker that determines a merge plan including selection of one or more of said plurality of preprocessors and one or more of said plurality of postprocessors for use in creating said development document; and a keyword subsystem for providing keyword-expansion services that provide information tags to the development document, the information tags including version store-specific data within defined boundaries, said version store-specific data including content having a predetermined format supportive of version storing within defined boundaries, wherein the keyword subsystem is configured to: receive a client request for keyword expansion using at least one of a plurality of keyword expanders; select at least one of the keyword expanders in response to the client request; pass to the selected at least one keyword expander a parameter identifying which set or domain of keywords to apply to the development document, whereby the information tags may be provided to the development document to create a keyword expanded development document anywhere in the system; and provide the keyword expanded development document with said information tags including said version store-specific data including content having said predetermined format supportive of version storing within said defined boundaries to the version store.