IP Library Granted Patent US 10,048,946
Granted Patent B2
US 10,048,946 · App. 15/079,249 · Granted Aug 14, 2018

Converting visual diagrams into code

Inventors: Gowri Krishnan (Redmond, WA); Jasneet Bhatti (Hyderabad, IN); Srinivas Guruprasad (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/34
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,048,946
App. No.
15/079,249
Granted
Aug 14, 2018
Kind
B2
Abstract

The techniques and systems described herein provide a tool for use in association with the development of a computer program. For instance, a computer program development team (e.g., design architects, developers, programmers, coders, etc.) can use the tool to efficiently generate code solutions using an illustrated diagram (e.g., drawn on a dry-erase white board, drawn using a digital drawing program, etc.). In various examples, the tool receives a diagram illustrating the design architecture and performs recognition techniques to identify characteristics of the components illustrated in the diagram. The characteristics can include keywords written on or in association with a component, a visual shape of a component, and a visual relationship between the component and other components illustrated in the design architecture. Using the identified characteristics, the tool maps the components to previously generated code template(s) and provides the code templates to a user.

Claims (71)

1. A device comprising:

one or more processors;

memory; and

one or more modules stored on the memory and executable by the one or more processors to:

receive a diagram illustrating a design architecture of at least a portion of a computer program, the design architecture including a plurality of components;

recognize characteristics of the plurality of components;

identify, based at least in part on the characteristics of the plurality of components, a programming language associated with the design architecture from a plurality of different programming languages;

for individual ones of the plurality of components, associate the component with one or more code templates based at least in part on the characteristics, wherein an individual code template is pre-populated with source code of the programming language;

determine, based at least in part on the characteristics, that a portion of code in the one or more code templates is associated with a plurality of different coding options for the programming language;

order the plurality of different coding options for the programming language based on applicability to the design architecture to generate an ordered list of coding options;

configure the one or more code templates with functionality to present, based on the ordered list of coding options, at least two recommended coding options of the plurality of different coding options and to enable a selection of a selected coding option; and

cause the one or more code templates to be output with the functionality on a device associated with a user.

2. The device of claim 1 , wherein the diagram comprises a hand-drawn diagram and the one or more modules are further executable by the one or more processors to optically recognize the characteristics of the plurality of components.

3. The device of claim 1 , wherein an individual component represents a separate or a modular part of the at least the portion of the computer program that contains semantically related functionality.

4. The device of claim 1 , wherein:

the characteristics comprise keywords that label or name the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a keyword of the keywords to the one or more code templates.

5. The device of claim 1 , wherein:

the characteristics comprise visual shapes of the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a visual shape of the visual shapes to the one or more code templates.

6. The device of claim 1 , wherein:

the characteristics comprise visual relationships between the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a visual relationship of the visual relationships to the one or more code templates.

7. The device of claim 6 , wherein the visual relationship comprises one of:

a first component visually illustrated on top of a second component in the diagram;

a visual connection between a first component and a second component in the diagram;

a visual position of a first component in a sequence of components in the diagram;

a first visual position of a first component in the diagram compared to a second visual position of a second component in the diagram; or

a size of a first component compared to a size of a second component in the diagram.

8. The device of claim 1 , wherein the one or more code templates comprises a plurality of code templates and the plurality of code templates are structured based at least in part on the characteristics of the plurality of components.

9. The device of claim 1 , wherein the ordered list of coding options comprises a coding option that is not recommended based on applicability of the coding option to the design architecture.

10. The device of claim 1 , wherein the ordered list of coding options comprises a coding option that is incompatible with the design architecture.

11. A method comprising:

receiving a diagram illustrating a design architecture of at least a portion of a computer program, the design architecture including a plurality of components;

recognizing, by one or more processors, characteristics of an individual component of the plurality of components;

identifying, based at least in part on the characteristics, a programming language associated with the design architecture from a plurality of different programming languages;

mapping the individual component to a code template based at least in part on the characteristics, wherein the code template is pre-populated with source code of the programming language;

determining, based at least in part on the characteristics, that a portion of code in the code template is associated with a plurality of different coding options for the programming language;

ordering the plurality of different coding options for the programming language based on applicability to the design architecture to generate an ordered list of coding options;

configuring the code template with functionality to present, based on the ordered list of coding options, at least two recommended coding options of the plurality of different coding options and to enable a selection of a selected coding option;

causing the code template to be output on a device associated with a user;

receiving, from the device associated with the user, user input that selects the selected coding option; and

updating the code template based at least in part on the user input so that the coding template is populated with additional source code associated with the selected coding option.

12. The method of claim 11 , wherein the individual component represents a separate or a modular part of the at least the portion of the computer program that contains semantically related functionality.

13. The method of claim 11 , wherein:

the characteristics comprise one or more keywords that label or name the individual component; and

the individual component is associated with the code template based on a mapping of the one or more keywords to the code template.

14. The method of claim 11 , wherein:

the characteristics comprise a visual shape of the individual component; and

the individual component is associated with the code template based on a mapping of the visual shape to the code template.

15. The method of claim 11 , wherein:

the characteristics comprise a visual relationship between the individual component and another component; and

the individual component is associated with the code template based on a mapping of the visual relationship to the code template.

16. The method of claim 11 , wherein the ordered list of coding options comprises a coding option that is not recommended based on applicability of the coding option to the design architecture.

17. One or more computer storage media storing instructions that, when executed by one or more processors, cause a device to:

recognize characteristics of a plurality of components illustrated in a diagram that represents a design architecture;

identify, based at least in part on the characteristics of the plurality of components, a programming language associated with the design architecture from a plurality of different programming languages;

for individual ones of the plurality of components, use the characteristics to associate the component with one or more code templates, wherein an individual code template is pre-populated with source code of the programming language;

determine that a portion of code in the one or more code templates is associated with a plurality of different coding options for the programming language;

order the plurality of different coding options for the programming language based on applicability to the design architecture to generate an ordered list of coding options;

configure the one or more code templates with functionality to present, based on the ordered list of coding options, at least two recommended coding options of the plurality of different coding options and to enable a selection of the at least two coding options; and

cause the one or more code templates to be output with the functionality on a user device.

18. The one or more computer storage media of claim 17 , wherein:

the characteristics comprise keywords that label or name the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a keyword of the keywords to the one or more code templates.

19. The one or more computer storage media of claim 17 , wherein:

the characteristics comprise visual shapes of the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a visual shape of the visual shapes to the one or more code templates.

20. The one or more computer storage media of claim 17 , wherein:

the characteristics comprise visual relationships between the plurality of components; and

the component is associated with the one or more code templates based on a mapping of a visual relationship of the visual relationships to the one or more code templates.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2016
From: KRISHNAN, GOWRI; BHATTI, JASNEET; GURUPRASAD, SRINIVAS
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 038089/0500 →
Continuity (1)
Related Publication 20170277518A1 · Sep 28, 2017
Cited By (1)
US 12,493,451