Method to Facilitate Programming Code Reuse Using a Cognitive System
Publication Date: 2017-Jan-19
The IP.com Prior Art Database
This disclosure proposes a method for processing and indexing enterprise source code using enterprise search plus cognitive APIs to make all source code available and accessible via natural language queries. Abstracting and indexing all source code into a single repository allows for comprehensive search and more granular security. Coginative APIs enhance the search capabilities and allow users to search using examples and context in addition to the traditional keyword search. Frequently programmers are required to write code to address a particular function knowing that somewhere within their organization similar code has already been written. Being able to find and use that code would greatly improve their productivity. In most organizations it is difficult for a programmer to fing the code they require. Firstly they may not have the authority to access the repository for the code. Secondly there may not be tools available to search the code repositories. If search tools are available providing the right keywords to find the desired code is problematic and can require understanding of the solution being searched for. Organizations invest heavily in their program code base. This could be a greater asset to the organization if it can be more easily exploited for code reuse. The ability to search a single source code repository using natural languge queries would greatly assist programmers in their search for reusable code.
Method to Facilitate Programming Code Reuse Using a Cognitive SystemAdvantages of this system over based text-match based search are:The system doesn't need to return full source code for a package, it can limit the source code returned to only the code relevant. This means code stays on a "need to know" basis. The code returned can be genericised and/or obfuscated so the original code is not returned as-is, this will again limit the data to "need to know" without allowing additional information to leak to the searcher.The system would return documentation and common errors along with the code, this data would be associated with the code from when it was input into the system, and also using search.The system can also take a simple search term (such as a single system function) and return a bundle/package of data that includes code samples, documentation and common pitfalls to avoid.The system will improve over time (it learns) based on the final checkin of the code created by the developer that was based on the search query, it will look for similarities to it's recommendations and also learns that the final implementation is the answer it should be returning for similar future queries.The organization's program source code base is fed into the Cognitive System along with literature covering programming languages, programming techniques, operating system and subsystem interfaces and application user manuals. Experts provide input to the Cognitive System to help it understand the nature of the processing performed by the various applications within the source code base. This enables the Cognitive System to relate application processing with programming language statements, functions and data structures and operating system and subsystem interfaces. The experts also teach the Cognitive System the jargon used by the programmers of the organization's software applications.The data ingested would include;program source code in any language. cognitive system would need to be trained by example to understand a variety of language 1. specific syntax.documentation for APIs, macros, class libraries , etc, to understand invocation syntax, parameters, dependencies, return codes, 2. restrictions, etc.diagnostic data, for example, APARs, stack overflow, problem reports, etc, to understand common and possible errors associated with 3. API, macro, class, program calls, etcobject code, to identify the relationships between API, macro, class, and executable modules. This will enhance the processing of 4. diagnostics data mentioned above. This will allow cognitive system to relate a module abend to an API call.Library dependencies.5.The teaching (via feedback loop) would include:Verifying valid syntax1. Clarifying relationships between source statements, data areas, modules, etc. cognitive system needs to be able to following cal...