Patent ID: 9348583
Filing Date: 2016-05-24
CPC Classification: G06F

Claim Text:
1. A computerized method for removing dependencies between components in a software architecture, the computerized method implemented with memory-stored instructions that, when executed by a computer, cause the computer to perform the following steps, comprising: identifying a plurality of dependencies between a plurality of software components in a software architecture by identifying for each of said plurality of software components in said software architecture, wherein each of said software components includes one or more software elements, an outgoing sources group of software elements of said software component that directly or indirectly depend on software elements in others of said plurality of software components, an incoming targets group of software elements of said software component that software elements in others of said plurality of software components directly or indirectly depend on, an incoming sources group of software elements in others of said plurality of software components that directly or indirectly depend on software elements in said software component, and an outgoing targets group of software elements in others of said plurality of software components that software elements in said software component directly or indirectly depend on; for each of said groups determining a total number of said software elements in said group; selecting one of said groups whose total number of said software elements is less than or equal to the smallest total number of said software elements of any other of said groups, and selecting any of said software elements in said selected group; relocating any of said selected software elements from said software component that includes said selected software elements to a different one of said software components in accordance with a pre-defined heuristic, thereby eliminating any of said dependencies between said plurality of software components, wherein said pre-defined heuristic includes finding among the different ones of said software components, the software components that include software elements that said one of said selected software elements depend on, or that includes software elements that depend on said one of said selected software elements; wherein said relocating includes either adding or moving one of said selected software elements to one of the found software components; and repeating said identifying, selecting, and relocating steps until no dependencies remain between said plurality of software components.