Deprecated Software Identifiers Based on Machine Learning

Identifying and managing deprecated software source code in the software repository through machine learning models solves the problem that software development teams have difficulty keeping up with software changes and managing deprecated code, and achieves more efficient software testing and release quality.

CN114637529BActive Publication Date: 2025-06-27INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202111411568.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-12-15
Filing Date
2021-11-25
Publication Date
2025-06-27
Estimated Expiration
2041-11-25

AI Technical Summary

Technical Problem

Software development teams have difficulty keeping up with software changes, resulting in code exposure to vulnerabilities and lack of tools to track and manage deprecated software modules, affecting software testing and release.

Method used

Analyze the software repository through machine learning models, identify the deprecated software source code, and issue a warning to the relevant software developers, recommending alternative source codes.

Benefits of technology

Effectively identify and manage deprecated software source code, reduce vulnerability risks, improve software testing efficiency, timely replace old code, and ensure the quality and security of software releases.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114637529B_ABST
    Figure CN114637529B_ABST
Patent Text Reader

Abstract

A method for identifying the use of deprecated source code in a software repository and recommending replacements. Parse one or more software repositories for software source code identified as deprecated by a machine learning model. In response to identifying deprecated software source code, warn one or more first software developers responsible for maintaining a software source code module that uses the deprecated software source code; and recommend to the one or more first software developers alternative software source code for use in the software source code module to replace the deprecated software source code.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention generally relates to software maintenance, and more particularly to tracking deprecated software and providing software test guidance based on usage. Background Art

[0002] Software under development, programming languages, and their corresponding libraries may undergo spontaneous changes, forcing software development teams to update their code to the latest version. When software development teams are unable to keep up with these changes due to misdirected priorities or resource constraints, they may expose their code to software vulnerabilities. In addition, software testing is a perpetual task that increases the time between software releases and drains resources from other software-related tasks.

[0003] The software development field lacks tools for tracking the usage of shared software across organizations, which involve the use and removal of deprecated software modules and predictions related to software components, as well as the amount of testing required to believe that a particular software module has been adequately tested before a product release or as a library. Summary of the Invention

[0004] According to an embodiment of the present invention, a computer-implemented method for identifying the use of deprecated software source code in a software repository, the computer-implemented method comprising: parsing, by one or more processors, one or more software repositories for software source code identified as deprecated by a machine learning model; warning, by one or more processors, a first one or more software development parties responsible for maintaining a software source code module that uses the deprecated software source code in response to identifying the deprecated software source code; and recommending, by one or more processors, alternative software source code for use in the software source code module to replace the deprecated software source code.

[0005] According to an embodiment of the present invention, a computer program product for identifying the use of deprecated software source code in a software repository, the computer program product comprising: one or more non-transitory computer-readable storage media and program instructions stored on the one or more non-transitory computer-readable storage media, the program instructions comprising: program instructions for parsing one or more software repositories for software source code identified as deprecated by a machine learning model; program instructions for warning a first one or more software development parties in response to identifying the deprecated software source code, the first one or more software development parties being responsible for maintaining a software source code module that uses the deprecated software source code; and program instructions for recommending alternative software source code for use in the software source code module to replace the deprecated software source code.

[0006] According to an embodiment of the present invention, a computer system for identifying the use of deprecated software source code in a software repository, the computer system comprising: one or more computer processors; one or more computer-readable storage media; and program instructions stored on one or more computer-readable storage media for execution by at least one of the one or more processors, the program instructions comprising: program instructions for parsing one or more software repositories for software source code identified as deprecated by a machine learning model; program instructions for warning a first one or more software development parties responsible for maintaining a software source code module that uses the deprecated software source code in response to identifying the deprecated software source code; and program instructions for recommending alternative software source code for use in the software source code module to replace the deprecated software source code to the first one or more software development parties.

[0007] From the following detailed description, other aspects and embodiments of the present invention will become apparent, which illustrate the principles of the present invention by way of example when taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Figure 1 Depicts a cloud computing environment in accordance with an embodiment of the present invention.

[0009] Figure 2 Illustrates an abstract model layer in accordance with an embodiment of the present invention.

[0010] Figure 3 Is a high-level architecture in accordance with an embodiment of the present invention.

[0011] Figure 4 Is an exemplary detailed architecture in accordance with an embodiment of the present invention.

[0012] Figure 5 Is a flowchart of a method in accordance with an embodiment of the present invention.

[0013] Figure 6 Is a block diagram of internal and external components of a data processing system in which embodiments described herein may be implemented in accordance with an embodiment of the present invention. DETAILED DESCRIPTION

[0014] The following description is for illustrative purposes of the general principles of the present invention and is not intended to limit the inventive concept claimed herein. Additionally, the specific features described herein may be used in various possible combinations and permutations with other described features.

[0015] Unless otherwise explicitly defined herein, all terms will be given their broadest possible interpretation, including the meanings implied in the specification and understood by those skilled in the art and / or as defined in dictionaries, treatises, etc.

[0016] It should also be noted that, as used in the specification and the appended claims, the singular forms "a", "an" and "the" include plural referents unless the context clearly dictates otherwise. It will also be understood that the terms "comprises" and / or "comprising", when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0017] The following description discloses various embodiments based on the widespread use in enterprises to identify deprecated source code modules, source code redundancy modules, and predicted test levels required for source code modules. It should be noted that the term "software" as used herein includes any type of computer instruction, such as but not limited to firmware, microcode, etc.

[0018] Embodiments of the present invention can provide predictions of segments of deprecated source code based on machine learning. The predictions can include potential solutions, i.e., replacing the deprecated source code based on replacing the same or similar source code in other parts of the same application or different applications. Embodiments can use static source code to train the model and do not inject any deprecated source code for training.

[0019] In another aspect, embodiments can provide a prediction of the amount of testing required for the source code to replace the deprecated source code. The amount of testing is based on factors such as but not limited to the number of locations where the replacement source code is adopted, the length of time the replacement source code has been deployed in a similar functional area, the amount of calls to the replacement source code, etc.

[0020] In a general embodiment, a computer-implemented method includes: parsing, by one or more processors, one or more software repositories for software source code identified as deprecated by a machine learning model; warning, by one or more processors, one or more software developers responsible for maintaining a software source code module containing the deprecated software source code in response to identifying the deprecated software source code; and recommending, by one or more processors, alternative software source code to be used in the software source code module to replace the deprecated software source code.

[0021] In another general embodiment, a system includes a processor and logic integrated with, executable by, or integrated with and executable by the processor. The logic is configured to perform the aforementioned computer-implemented method.

[0022] In another general embodiment, a computer program product for software verification during installation includes: a computer-readable storage medium having program instructions embodied thereon. The program instructions are executable by a computer to cause the computer to perform the aforementioned computer-implemented method.

[0023] It should be understood that although this disclosure includes a detailed description of cloud computing, the implementation of the teachings set forth herein is not limited to cloud computing environments. On the contrary, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0024] Cloud computing is a service delivery model for enabling convenient on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the provider of the service. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0025] The characteristics are as follows:

[0026] On-demand self-service: Cloud consumers can unilaterally and automatically provision computing capabilities, such as server time and network storage, as needed without human interaction with the service provider.

[0027] Wide area network access: Capabilities are available over a network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptop computers, and PDAs).

[0028] Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned according to demand. There is a location-independent aspect, as consumers generally do not control or know the exact location of the provided resources but can specify location at a higher level of abstraction (e.g., country, state, or data center).

[0029] Rapid elasticity: In some cases, the ability to rapidly scale out and rapidly scale in can be provided quickly and elastically. For consumers, the available provisioning capabilities generally appear unlimited and can be purchased in any quantity at any time.

[0030] Measured service: The cloud system automatically controls and optimizes resource use by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource use can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

[0031] The service models are as follows:

[0032] Software as a Service (SaaS): The ability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0033] Platform as a Service (PaaS): The ability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications that are created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including the network, servers, operating systems, or storage, but has control over the deployed applications and possibly the application hosting environment configuration.

[0034] Infrastructure as a Service (IaaS): The ability provided to the consumer is to provide processing, storage, networks, and other fundamental computing resources where the consumer can deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over the operating systems, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0035] The deployment models are as follows:

[0036] Private cloud: The cloud infrastructure is operated solely for an organization. It can be managed by the organization or a third party and can exist either on-premises or off-premises.

[0037] Community cloud: The cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organizations or a third party and can exist either on-premises or off-premises.

[0038] Public cloud: The cloud infrastructure is available for general public or large industry groups and is owned by an organization selling cloud services.

[0039] Hybrid cloud: The cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0040] The cloud computing environment is service-oriented, with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure of a network of interconnected nodes.

[0041] Now refer to Figure 1, depicts an illustrative cloud computing environment 50. As shown, cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers may communicate, such local computing devices as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an in-vehicle computer system 54N. Nodes 10 may communicate with one another. They may be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, community cloud, public cloud, or hybrid cloud or combinations thereof as described above. This allows cloud computing environment 50 to provide infrastructure, platforms, and / or software as services, for which cloud consumers do not need to maintain resources on a local computing device. It should be understood that Figure 1 the types of computing devices 54A-N shown are only illustrative, and computing node 10 and cloud computing environment 50 may communicate with any type of computerized device via any type of network and / or network addressable connection (e.g., using a web browser).

[0042] Now referring to Figure 2 , shows a set of functional abstraction layers provided by cloud computing environment 50 ( Figure 1 ). It should be understood in advance that Figure 2 the components, layers, and functions shown are only illustrative, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0043] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include a host 61; a server 62 based on a RISC (Reduced Instruction Set Computer) architecture; a server 63; a blade server 64; a storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0044] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities may be provided: a virtual server 71; a virtual memory 72; a virtual network 73, including a virtual private network; virtual applications and operating systems 74; and virtual clients 75.

[0045] In one example, the management layer 80 can provide the functions described below. Resource provisioning 81 provides for the dynamic procurement of computing resources and other resources for performing tasks within a cloud computing environment. Metering and pricing 82 provides cost tracking when resources are utilized within the cloud computing environment, as well as billing or invoicing for the consumption of these resources. In one example, these resources can include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. The user portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management such that the required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides for the pre-arrangement and procurement of cloud computing resources, where future requirements are anticipated according to the SLA.

[0046] The workload layer 90 provides examples of functions that can utilize the cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91; software development and lifecycle management 92; virtual classroom education delivery 93; data analysis processing 94; transaction processing 95; and deprecated source code prediction 96.

[0047] It should be noted that embodiments of the present invention can operate with user permission. Any data, etc. can be collected, stored, analyzed with user consent. In various configurations, as will be understood by those of ordinary skill in the art upon reading this disclosure, at least some of the embodiments of the present invention are implemented as selectable applications, plugins, etc.

[0048] Figure 3 is a high-level architecture for performing Figure 5 various operations according to various embodiments. In various embodiments, the architecture 300 can be implemented according to the present invention in Figures 1 to 4 any environment depicted in. Of course, as will be understood by those of ordinary skill in the art upon reading this description, the architecture 300 can include more or fewer elements than Figure 3 specifically described in.

[0049] Each step of the method 500 (described in further detail below) can be performed by any suitable component of the architecture 300. A processor implemented in hardware and / or software and preferably having at least one hardware component (e.g., (multiple) processing circuits, (multiple) chips, and / or (multiple) modules) can be used in any device to perform one or more steps of the method 500 in the architecture 300. Illustrative processors include but are not limited to a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0050] The architecture 300 includes a block diagram showing an exemplary processing system for identifying deprecated source code modules, source code redundancy modules, and predicted test levels in an enterprise-wide usage environment to which the principles of the present invention can be applied. The architecture 300 includes a client computer 302, a deprecated source code prediction component 308 operating on a server computer 304, and a network 306 that supports communication between the client computer 302 and the server computer 304.

[0051] The client computer 302 can be any computing device on which software for which an update is desired or required is installed. The client computer 302 can be a stand-alone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, the client computer 302 can represent a server computing system that utilizes multiple computers as a server system. In another embodiment, the client computer 302 can be a laptop computer, a tablet computer, a netbook computer, a personal computer, a desktop computer, or any programmable electronic device capable of communicating via the network 306 with other computing devices (not shown) within the user persona generation environment.

[0052] In another embodiment, the client computer 302 represents a computing system that utilizes clustered computers and components (e.g., database server computers, application server computers, etc.) that act as a single seamless resource pool when accessed in the environment upon installation of the architecture 300. The client computer 302 can include internal and external hardware components as depicted and described in more detail with reference to Figure 5 more detailedly depicted and described.

[0053] The server computer 304 can be a stand-alone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, the server computer 304 can represent a server computing system that utilizes multiple computers as a server system. In another embodiment, the server computer 304 can be a laptop computer, a tablet computer, a netbook computer, a personal computer, a desktop computer, or any programmable electronic device capable of communicating via the network 306 with other computing devices (not shown) within the installation verification environment of the architecture 300.

[0054] The network 306 can be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination of both, and can include wired, wireless, or fiber optic connections. Generally, the network 306 can be any combination of connections and protocols that support communication between the client computer 302 and the server computer 304.

[0055] The deprecated source code prediction component 308 operating on the server computer 304 can locate portions of deprecated source code in a software repository based on machine learning of the software developer responsible for the source code that is or will become deprecated. The deprecated source code prediction component 308 can make a determination regarding the identity and scope of the deprecated source code, either manually or automatically. Based on the predicted identity of the deprecated source code, the deprecated source code prediction component 308 can recommend a replacement for the deprecated source code based on the replacement source code employed in the area where the deprecated source code has been replaced.

[0056] In another aspect, the deprecated source code prediction component 308 can provide predictions at the unit level and functional testing required for the source code recommended to replace the deprecated source code. The recommendations provided by the deprecated source code prediction component 308 can be a starting point for a test plan for updating the test process based on the implementation of the recommended replacement for the deprecated source code.

[0057] Figure 4 is an exemplary detailed architecture for performing Figure 5 various operations according to various embodiments. In various embodiments, the architecture 400 can be implemented in any environment described in Figures 1 to 3 and 5 of the present invention. Of course, as those skilled in the art will understand upon reading this description, more or fewer elements than those Figure 4 specifically described in the architecture 400 can be included.

[0058] Each step of the method 500 (described in further detail below) can be performed by any suitable component of the architecture 400. A processor, such as a (multiple) processing circuit, (multiple) chip, and / or (multiple) module implemented in hardware and / or software, and preferably having at least one hardware component, can be used in any device to perform one or more steps of the method 500 in the architecture 400. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0059] The architecture 400 provides a detailed view of at least some of the modules of the architecture 300. The architecture 400 can include the deprecated source code prediction component 308, which can also include a deprecated source code parser component 402 and a deprecated source code replacement component 404.

[0060] The deprecated source code analyzer component 402 can use a machine learning model to search an enterprise-wide source code repository for deprecated source code by scanning and parsing the enterprise-wide source code repository and performing comparative tests on the results. The machine learning model employed by the deprecated source code analyzer component 402 can use static code for training. It should be noted that the deprecated source code parser component 402 does not inject any deprecated source code for training the model. In one aspect, the deprecated source code parser component 402 can use a predefined mapping of the usage locations of software source code modules that are prepared by manual software developers and subsequently identified as deprecated as a supplementary search list. In another aspect, the deprecated source code analyzer component 402 can create a metadata document to summarize the deprecated software and / or system components.

[0061] In another aspect, the deprecated source code analyzer component 402 can identify deprecated source code by comparing one repository with another based on the functionality of the source code. For example, the deprecated source code parser component 402 can identify functionally equivalent portions of code in different repositories and can use the source code change dates from the repositories to determine which location is newer. Then, the deprecated source code parser component 402 can review the software with the newer functionally equivalent software in the source code repository in a timely manner to determine whether the newer source code has replaced the source code that is still in use in the software repository with the older software source code.

[0062] The deprecated source code replacement component 404 can recommend a predicted replacement for the deprecated software source code based on the software source code in other locations that the machine learning model has found to replace the current repository, or in other repositories accessible via the deprecated source code parser component 402. In one aspect, the deprecated source code replacement component 404 can provide recommendations based on the identity of replacement software modules manually entered by the software developers responsible for supporting the deprecated software source code. In another aspect, the deprecated source code replacement component 404 can search public repositories for replacements for the deprecated code based on a functional analysis and present a list of the predicted recommendations for evaluation. Additionally, the deprecated source code replacement component 404 can utilize the above-mentioned machine learning model to create functionally equivalent source code to replace the deprecated source code.

[0063] Furthermore, the deprecated source code replacement component 404 can use the metadata document to locate the appropriate software developers responsible for the identified deprecated source code and / or system components. In another aspect, the deprecated source code replacement component 404 can warn the identified software developers based on automated tools, such as tools including continuous integration and continuous deployment pipelines.

[0064] The deprecated source code replacement component 404 can provide a visual representation used in the source code presented by software development parties to the repository. For example, the deprecated source code replacement component 404 can display a source code window presented by the software development party to the repository, where portions of the deprecated source code are highlighted. Additionally, the deprecated source code replacement component 404 can display information that may include but is not limited to notifying the software development party when the deprecated source code is retired and the reasoning for the retirement of the deprecated source code.

[0065] The deprecated source code replacement component 404 can provide predictions of the test levels (both unit tests and functional tests) recommended for source code replacement for the deprecated source code. The deprecated source code replacement component 404 can make these recommendations based on data associated with the recommended replacement source code, such as but not limited to the length of time the replacement source code has been available, the number of installations and uses of the replacement source code, the quality rating of the replacement source code, the number of exceptions corrected in the replacement source code, the trend of the ratio of exceptions corrected in the replacement source code, etc.

[0066] Figure 5 Is an exemplary flowchart of a method 500 for identifying deprecated source code modules, source code redundancy modules, and predicted test levels based on enterprise-wide usage. At step 502, an embodiment can parse a software repository to find deprecated software source code using a machine learning model via a deprecated source code parser component 402. At step 504, the embodiment can warn the software development party about the use of the deprecated software source code via the deprecated source code replacement component 404. At step 506, the embodiment can recommend alternative software source code to the developer via the deprecated source code replacement component 404.

[0067] Figure 6 Depicts a computer system 600, an example computer system representing the client computer 302 and the server computer 304. The computer system 600 includes a communication structure 602 that provides communication between (multiple) computer processors 604, a memory 606, a persistent storage device 608, a communication unit 610, and (multiple) input / output (I / O) interfaces 612. The communication structure 602 can be implemented using any architecture designed to transfer data and / or control information between processors (such as microprocessors, communication and network processors, etc.), system memory, peripheral devices, and any other hardware components within the system. For example, the communication structure 602 can be implemented using one or more buses.

[0068] The computer system 600 includes a processor 604, a cache 616, a memory 606, a persistent storage device 608, a communication unit 610, an input / output (I / O) interface 612, and a communication fabric 602. The communication fabric 602 provides communication between the cache 616, the memory 606, the persistent storage device 608, the communication unit 610, and the input / output (I / O) interface 612. The communication fabric 602 can be implemented using any architecture designed to transfer data and / or control information between processors (such as, microprocessors, communication and network processors, etc.), system memory, peripheral devices, and any other hardware components within the system. For example, the communication fabric 602 can be implemented using one or more buses or cross switches.

[0069] The memory 606 and the persistent storage device 608 are computer-readable storage media. In this embodiment, the memory 606 includes random access memory (RAM). Generally, the memory 606 can include any suitable volatile or non-volatile computer-readable storage media. The cache 616 is a fast memory that improves the performance of the processor 604 by saving recently accessed data and data near the recently accessed data from the memory 606.

[0070] The program instructions and data for implementing the embodiments of the present invention can be stored in the persistent storage device 608 and the memory 606 for execution by one or more of the corresponding processors 604 via the cache 616. In an embodiment, the persistent storage device 608 includes a magnetic hard disk drive. Alternatively, or in addition to the magnetic hard disk drive, the persistent storage device 608 can include a solid state drive, a semiconductor storage device, a read-only memory (ROM), an erasable programmable read-only memory (EPROM), a flash memory, or any other computer-readable storage media capable of storing program instructions or digital information.

[0071] The medium used by the persistent storage device 608 can also be removable. For example, a removable hard disk drive can be used for the persistent storage device 608. Other examples include optical disks and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage media that is also part of the persistent storage device 608.

[0072] In these examples, the communication unit 610 provides communication with other data processing systems or devices. In these examples, the communication unit 610 includes one or more network interface cards. The communication unit 610 can provide communication by using one or both of a physical communication link and a wireless communication link. The program instructions and data for practicing the embodiments of the present invention can be downloaded to the persistent storage device 608 via the communication unit 610.

[0073] (Multiple) I / O interfaces 612 allow for input and output of data with other devices that may be connected to each computer system. For example, I / O interface 612 may provide a connection to an external device 618 such as a keyboard, keypad, touch screen, and / or some other suitable input device. External device 618 may also include a portable computer-readable storage medium, such as a thumb drive, portable optical disc or disk, and memory card. Software and data for practicing embodiments of the present invention may be stored on such a portable computer-readable storage medium and may be loaded onto the persistent storage device 608 via (multiple) I / O interfaces 612. (Multiple) I / O interfaces 612 are also connected to a display 620.

[0074] The display 620 provides a mechanism for displaying data to a user and may be, for example, a computer monitor.

[0075] The components described herein are identified based on the application in which they are implemented in a particular embodiment of the present invention. However, it should be understood that any specific component naming herein is used for convenience only, and thus the present invention should not be limited to use only in any particular application identified and / or implied by such naming.

[0076] The present invention may be a system, method, and / or computer program product at any possible technical detail integration level. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform aspects of the present invention.

[0077] A computer-readable storage medium may be a tangible device that is capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, by way of example and not limitation, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanical encoding device such as a punched card or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium is not to be construed as a transitory signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse through an optical fiber cable), or an electrical signal transmitted through a wire.

[0078] The computer-readable program instructions described herein can be downloaded to a corresponding computing / processing device from a computer-readable storage medium or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the corresponding computing / processing device.

[0079] The computer-readable program instructions for performing the operations of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine-related instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partly on the user's computer, executed as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network connection, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider via the Internet). In some embodiments, to perform aspects of the present invention, an electronic circuit, including, for example, a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA), may execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit.

[0080] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0081] These computer-readable program instructions can be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more boxes of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium storing the instructions comprises an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more boxes of the flowchart and / or block diagram.

[0082] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more boxes of the flowchart and / or block diagram.

[0083] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed as one step, executed concurrently, substantially concurrently, in partial or total time overlap, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[0084] In addition, a system according to various embodiments may include a processor and logic integrated with and / or integrable by the processor, the logic being configured to perform one or more of the process steps described herein. By integrated therewith, it means that the processor has the logic embedded therewith as hardware logic, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc. By being executable by the processor, it means that the logic is hardware logic; software logic, such as firmware, a part of an operating system, a part of an application program, etc., or some combination of hardware and software logic, which is accessible by the processor and configured to cause the processor to perform a certain function when executed by the processor. The software logic may be stored on any type of local and / or remote memory, as is known in the art. Any processor known in the art may be used, such as a software processor module and / or a hardware processor, such as an ASIC, an FPGA, a central processing unit (CPU), an integrated circuit (IC), a graphics processing unit (GPU), etc.

[0085] It is clear that the various features of the foregoing systems and / or methods can be combined in any manner, resulting in multiple combinations from the description presented above.

[0086] It should also be understood that embodiments of the present invention may be provided in the form of a service representing a customer deployment so as to provide the service on demand.

[0087] The description of the various embodiments of the present invention has been given for purposes of illustration, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to a person of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein are chosen to best explain the principles of the embodiments, the practical application, or the technical improvement present in the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.

Claims

1. A computer-implemented method for identifying the use of deprecated software source code in a software repository, the computer-implemented method comprising: Parsing, by one or more processors, one or more software repositories for software source code identified as deprecated by a machine learning model, wherein the machine learning model is trained using static source code and without injecting deprecated source code; Warning, by the one or more processors and in response to identifying the deprecated software source code, a first one or more software development parties responsible for maintaining a software source code module that uses the deprecated software source code; And Recommending, by the one or more processors, alternative software source code for use in the software source code module to replace the deprecated software source code, Wherein the recommendation of the alternative software source code includes a test program and an indication of the test level required to replace the deprecated software source code with the alternative software source code, wherein the test level is determined based on data associated with the alternative software source code, the data including: the length of time the alternative software source code has been available, the number of installations and uses of the alternative software source code, the quality rating of the alternative software source code, the number of exceptions corrected in the alternative software source code, and the trend of the ratio of exceptions corrected in the alternative software source code.

2. The computer-implemented method according to claim 1, further comprising: Displaying, by the one or more processors, the deprecated software source code using highlighting.

3. The computer-implemented method according to claim 1, wherein the warning further comprises: Notifying a second one or more software development parties of the identity of the first one or more software development parties using the deprecated software source code, the second one or more software development parties being responsible for supporting the deprecated software source code.

4. The computer-implemented method according to claim 1, wherein the warning further comprises: Providing, to the first one or more software development parties, information including why the deprecated software source code is no longer supported and when the deprecated software source code will no longer be supported.

5. The computer-implemented method according to claim 1, wherein the alternative software source code is determined based on machine learning across multiple repositories.

6. The computer-implemented method according to claim 1, wherein the alternative software source code is selected by a second one or more software development parties responsible for supporting the deprecated software source code.

7. A computer program product for identifying the use of deprecated software source code in a software repository, the computer program product comprising: One or more non-transitory computer-readable storage media and program instructions stored on the one or more non-transitory computer-readable storage media, the program instructions including: Program instructions for parsing one or more software repositories for software source code identified as deprecated by a machine learning model, wherein the machine learning model is trained using static source code and without injecting deprecated source code; Program instructions for warning one or more first software developers in response to identifying deprecated software source code, where the one or more first software developers are responsible for maintaining a software source code module that uses the deprecated software source code; and Program instructions for recommending alternative software source code for use in the software source code module to the one or more first software developers to replace the deprecated software source code, wherein the recommendation of the alternative software source code includes a test program and an indication of the test level required to replace the deprecated software source code with the alternative software source code, and wherein the test level is determined based on data associated with the alternative software source code, the data including: the length of time the alternative software source code has been available, the number of installations and uses of the alternative software source code, the quality rating of the alternative software source code, the number of anomalies corrected in the alternative software source code, and the trend of the ratio of anomalies corrected in the alternative software source code.

8. The computer program product according to claim 7, further comprising: Program instructions for displaying the deprecated software source code using highlighting.

9. The computer program product according to claim 7, wherein the warning further comprises: Notifying a second one or more software developers of the identity of the one or more first software developers using the deprecated software source code, where the second one or more software developers are responsible for supporting the deprecated software source code.

10. The computer program product according to claim 7, wherein the warning further comprises: Providing information to the one or more first software developers, the information including why the deprecated software source code is no longer supported and when the deprecated software source code will no longer be supported.

11. The computer program product according to claim 7, wherein the alternative software source code is determined based on machine learning of multiple repositories.

12. The computer program product according to claim 7, wherein the alternative software source code is selected by a second one or more software developers who are responsible for supporting the deprecated software source code.

13. A computer system for identifying the use of deprecated software source code in a software repository, the computer system comprising: One or more computer processors; One or more computer-readable storage media; And Program instructions stored on the one or more computer-readable storage media for execution by at least one of the one or more processors, the program instructions including: Program instructions for parsing one or more software repositories for software source code identified as deprecated by a machine learning model, where the machine learning model is trained using static source code and without injecting deprecated source code; Program instructions for warning one or more first software developers in response to identifying deprecated software source code, where the one or more first software developers are responsible for maintaining a software source code module that uses the deprecated software source code; and Program instructions for recommending alternative software source code for use in the software source code module to the one or more first software developers to replace the deprecated software source code, Among them, the recommendation of the alternative software source code includes a test program and an indication of the test level required to replace the deprecated software source code with the alternative software source code, wherein the test level is determined based on data associated with the alternative software source code, and the data includes: the length of time the alternative software source code has been available, the number of installations and uses of the alternative software source code, the quality rating of the alternative software source code, the number of anomalies corrected in the alternative software source code, and the trend of the ratio of anomalies corrected in the alternative software source code.

14. The computer system according to claim 13, further comprising: Program instructions for displaying the deprecated software source code using highlighting.

15. The computer system according to claim 13, wherein the warning further comprises: Notifying the identity of the first one or more software developers using the deprecated software source code to the second one or more software developers, where the second one or more software developers are responsible for supporting the deprecated software source code.

16. The computer system according to claim 13, wherein the warning further comprises: Providing information to the first one or more software developers, the information including why the deprecated software source code is no longer supported and when the deprecated software source code will no longer be supported.

17. The computer system according to claim 13, wherein the alternative software source code is determined based on machine learning of multiple repositories or selected by a second one or more software developers, where the second one or more software developers are responsible for supporting the deprecated software source code.

Citation Information

Patent Citations

  • Automated management of undesired code use based on predicted valuation and risk analysis

    US20190250893A1

  • Predictive code clearance by a cognitive computing system

    US20200110600A1