# US 8,752,005 B2 · Concept-oriented software engineering system and method for identifying, extracting, organizing, inferring and querying software system facts

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,752,005 B2
- Document ID: US8752005B2
- Status: Granted
- Kind: B2
- Application number: 12/234,220
- Filed: 2008-09-19
- Published: 2009-10-08
- Granted: 2014-06-10
- Earliest claimed: 2008-04-04
- Assignees: Infosys Limited
- Applicants: John Kuriakose; Yogesh Sudhir Dandawate; Manish Malhotra; Kumar Manava Tiwari
- Inventors: John Kuriakose; Yogesh Sudhir Dandawate; Manish Malhotra; Kumar Manava Tiwari
- Web page: https://patentgrep.com/patent/US8752005B2

## CPC

- G06F 8/35: model driven
- G06F 8/36: Software reuse
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Software system facts comprising concepts, concept instances and relationships within the software system are identified and stored in a repository. The software system facts are extracted from artifacts comprising the software system or are provided through explicit definition. Architectures of the software system are recovered from the stored software system facts. Layered views of the recovered architectures are generated. The stored software system facts are checked against architectural rules to ensure architectural compliance of the software system. The impact of proposed changes to the software system is assessed by querying the identified software system facts.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving a plurality of concept instances comprising a first concept instance extracted from a first software system artifact of a software system and a second concept instance extracted from a second software system artifact of the software system, wherein the first software system artifact and the second software system artifact are associated with a first formal language and a second formal language respectively, and the first concept instance and the second concept instance are specific instantiations of at least one identified concept associated with the software system;
identifying one or more relationships comprising a cross-artifact relationship between the first concept instance and the second concept instance or a relationship between at least one of the first concept instance or the second concept instance and at least one identified concept associated with the software system; and
storing at least one of the one or more relationships comprising the cross-artifact relationship between the first concept instance and the second concept instance in one or more repositories, wherein the cross-artifact relationship specifies a relationship type that relates the identified concept to the first concept instance and the second concept instance.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
identifying the at least one identified concept associated with the software system;
extracting at least the first concept instance and the second concept instance from the first software system artifact and the second software system artifact, respectively; and
storing the at least one identified concept associated with the software system, the first concept instance and the second concept instance in the one or more repositories.

### Claim 3 (depends on 1)

The method of claim 1, wherein the plurality of concept instances further comprises a third concept instance extracted from a third software system artifact associated with the first formal language and the one or more relationships further comprise at least one relationship between the first concept instance and the third concept instance, the method further comprising:
extracting at least the third concept instance from the third software system artifact; and
storing the third second concept instance in the one or more repositories.

### Claim 4 (depends on 1)

The method of claim 1, wherein the identified one or more relationships are between the first concept instance and the second concept instance.

### Claim 5 (depends on 1)

The method of claim 1, wherein the identified one or more relationships comprise relationships between the first concept instance and the at least one identified concept.

### Claim 6 (depends on 1)

The method of claim 1, wherein the plurality of concept instances further comprises a third concept instance extracted from the first software system artifact and the one or more relationships further comprise at least one relationship between the first concept instance and the third concept instance.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
extracting at least the third concept instance from the first software system artifact; and
storing the third second concept instance in the one or more repositories.

### Claim 8 (depends on 1)

The method of claim 1, wherein at least one of the one or more relationships has an associated relationship type.

### Claim 9 (depends on 8)

The method of claim 8, wherein the relationship type is selected from a group of base relationship types consisting of an instance relationship type, an extends relationship type, a member relationship type, a uses relationship type, a conforms relationship type, a represents relationship type, a realizes relationship type, a representational variant relationship type, a represented by relationship type, a realized relationship type and a subsumes relationship type.

### Claim 10 (depends on 9)

The method of claim 9, wherein the relationship type is selected from one or more extended relationship types defined as composites of relationship types within the group of base relationship types.

### Claim 11 (depends on 8)

The method of claim 8, wherein the relationship type has one or more terms, respective of the terms having an associated role indicating permissible concepts and/or concept instances that may be used for the respective term.

### Claim 12 (depends on 11)

The method of claim 11, further comprising storing the relationship type and the roles associated with the one or more terms of the relationship type.

### Claim 13 (depends on 11)

The method of claim 11, further comprising updating at least one of the one or more relationships, the at least one identified concept, one of the roles associated with the one or more terms of the relationship type or the relationship type.

### Claim 14 (depends on 11)

The method of claim 11, wherein the at least one of the one or more relationships has m terms and the relationship type has n terms, where m<n, the method further comprising adding a term to the at least one of the one or more relationships.

### Claim 15

A computer-implemented method, comprising:
receiving at least one cross-artifact relationship definition;
identifying at least one cross-artifact relationship between a first concept instance extracted from a first software system artifact of a software system and a second concept instance extracted from a second software system artifact of a software system, the identification based on the at least one cross-artifact relationship definition, wherein the first concept instance and the second concept instance are specific instantiations of at least one identified concept associated with the software system; and
storing the at least one cross-artifact relationship in one or more repositories, wherein the at least one cross-artifact relationship specifies a relationship type that relates the identified concept to the first concept instance and the second concept instance.

### Claim 16 (depends on 15)

The method of claim 15, wherein the first concept instance has at least one attribute, the second concept instance has at least one attribute, and the at least one cross-artifact relationship comprises at least one attribute of the first concept instance or of the second concept instance, a relationship type and expressions describing the first concept instance and/or the second concept instance.

### Claim 17 (depends on 15)

The method of claim 15, wherein the first concept instance has at least one attribute, the second concept instance has at least one attribute, and the at least one cross-artifact relationship relates the first concept instance to at least one attribute of the second concept instance, the at least one attribute of the second concept instance used by or referred to by the first concept instance.

### Claim 18 (depends on 15)

The method of claim 15, wherein the first concept instance and the second concept instance comprise one or more attributes and the at least one cross-artifact relationship relates a first concept instance attribute to a second concept instance attribute, the related attributes having the same value.

### Claim 19 (depends on 15)

The method of claim 15, wherein the at least one cross-artifact relationship definition is expressed using link definition language statements interpretable by a link processor.

### Claim 20 (depends on 15)

The method of claim 15, further comprising updating the at least one cross-artifact relationship.

### Claim 21 (depends on 15)

The method of claim 15, wherein the first concept instance and the second concept instance are identified by querying the one or more repositories using one or more query languages.

### Claim 22

One or more non-transitory computer-readable storage media storing a data structure, the data structure comprising:
one or more concepts associated with a software system;
one or more relationship types, respective of the relationship types having one or more terms;
for respective of the relationship types, one or more role definitions associated with the one or more terms of the respective relationship type, respective of the role definitions defining the permissible concepts and/or concept instances that can represent the term associated with the respective role definition for the respective relationship type;
and one or more relationships based on the one or more concepts and/or the one or more concept instances, the one or more relationships comprising a cross-artifact relationship between a first concept instance of the one or more concept instances and a second concept instance of the one or more concept instances, wherein the cross-artifact relationship specifies a relationship type of the one or more relationship types that relates a concept of the one or more concepts to the first concept instance and the second concept instance.

### Claim 23 (depends on 22)

The one or more non-transitory computer-readable storage media of claim 22, the data structure further comprising:
one or more concept instances associated with the at least one or more concepts.

### Claim 24 (depends on 22)

The one or more non-transitory computer-readable storage media of claim 22, wherein at least one of the one or more relationship types has an arity, n, greater than two and the at least one relationship type is represented in the data structure as n−1 associated relationships.

### Claim 25 (depends on 24)

The one or more non-transitory computer-readable storage media of claim 24, wherein respective of the associated relationships have an associated co-relationship identifier.

### Claim 26 (depends on 22)

The one or more non-transitory computer-readable storage media of claim 22, wherein at least one of the one or more relationships are associated with one of the one or more relationship types, and respective of the at least one relationships have a number of terms less than or equal to the number of terms associated with the associated relationship type.

### Claim 27 (depends on 22)

The one or more non-transitory computer-readable storage media of claim 22, wherein the data structure further comprises:
one or more pluralities of viewing concept instances, the pluralities of viewing concepts instances representing recovered architectures of the software system, respective of the viewing concept instances of the one or more viewing concept instances pluralities having a layer index;
and one or more pluralities of viewing concept instances relationships, respective of the viewing concept instances relationships pluralities associated with one of the one or more viewing concept instances pluralities.

### Claim 28

A computer-implemented method comprising:
receiving a plurality of concept instances comprising a first concept instance extracted from a first software system artifact of a software system and a second concept instance extracted from a second software system artifact of a software system, wherein the first software system artifact and the second software system artifact are associated with a first formal language and a second formal language respectively;
identifying one or more relationships comprising a cross-artifact relationship between the first concept instance and the second concept instance or a relationship between at least one of the first concept instance or the second concept instance and at least one identified concept associated with the software system or a relationship between an intentional concept of a software system and the at least one identified concept of the software system or a relationship between the internal concept and the first concept instance, at least one of the one or more relationships having an associated relationship type, the associated relationship type having one or more terms, respective of the terms having an associated role indicating permissible concepts and/or concept instances that may be used for the respective term, wherein the cross-artifact relationship specifies the relationship type that relates the at least one identified concept to the first concept instance and the second concept instance; and
identifying the at least one concept associated with the software system and the intentional concept of the software system;
extracting at least the first concept instance and the second concept instance from the first software system artifact and the second software system artifact, respectively;
storing the at least one concept associated with the software system, the first concept instance and the second concept instance, the intentional concept, the one or more relationships, the relationship type and the roles associated with the one or more terms of the relationship type in one or more repositories.

### Claim 29

At least one non-transitory computer-readable storage medium storing computer-executable instructions for causing a computer system programmed thereby to performed a method comprising:
receiving a plurality of concept instances comprising a first concept instance extracted from a first software system artifact of a software system and a second concept instance extracted from a second software system artifact of a software system, wherein the first software system artifact and the second software system artifact are associated with a first formal programming language and a second formal programming language respectively, and the first concept instance and the second concept instance are specific instantiations of at least one identified concept associated with the software system;
identifying one or more relationships comprising a cross-artifact relationship between the first concept instance and the second concept instance or a relationship between at least one of the first concept instance or the second concept instance and at least one identified concept associated with the software system;
and storing at least one of the one or more relationships comprising a the cross-artifact relationship between the first concept instance and the second concept instance in one or more repositories, wherein the cross-artifact relationship specifies a relationship type that relates the identified concept to the first concept instance and the second concept instance, the relationship type having one or more terms, at least one term of the one or more terms having an associated role indicating the first concept instance as being permissible for the at least one term of the one or more terms.

### Claim 30

A computer, comprising:
at least one processor; and
memory storing computer-executable instructions defining:
a programming module configured to receive a plurality of concept instances comprising a first concept instance extracted from a first software system artifact of a software system and a second concept instance extracted from a second software system artifact of a software system, wherein the first software system artifact and the second software system artifact are associated with a first formal language and a second formal language respectively, and the first concept instance and the second concept instance are specific instantiations of at least one identified concept associated with the software system;
a programming module configured to identify one or more relationships comprising a cross-artifact relationship between the first concept instance and the second concept instance or a relationship between at least one of the first concept instance or the second concept instance and at least one identified concept associated with the software system; and
a programming module configured to store at least one of the one or more relationships comprising the cross-artifact relationship between the first concept instance and the second concept instance in one or more repositories, wherein the cross-artifact relationship specifies a relationship type that relates the identified concept to the first concept instance and the second concept instance.
