Design of application programming interfaces (APIs)
First Claim
1. A method for designing an Application Programming Interface (API), the method comprising:
- preparing a plurality of code samples for a core scenario, each respective code sample of the plurality of code samples corresponding to a respective programming language of a plurality of programming languages;
deriving the API from the core scenario responsive to the plurality of code samples, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;
performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise;
determining, by an API designer, whether the plurality of developers are able to use the API without problems; and
when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and
realizing the API in one or more processor-accessible storage media.
2 Assignments
0 Petitions
Accused Products
Abstract
A first exemplary method implementation for designing an application programming interface (API) includes: preparing multiple code samples for a core scenario, each respective code sample of the multiple code samples corresponding to a respective programming language of multiple programming languages; and deriving the API from the core scenario responsive to the multiple code samples. A second exemplary method for designing an API includes: selecting a core scenario for a feature area; writing at least one code sample for the core scenario; and deriving an API for the core scenario responsive to the at least one code sample. A third exemplary method for designing an API includes: deriving an API for a scenario responsive to at least one code sample written with regard to the scenario; performing one or more usability studies on the API utilizing multiple developers; and revising the API based on the one or more usability studies.
112 Citations
48 Claims
-
1. A method for designing an Application Programming Interface (API), the method comprising:
-
preparing a plurality of code samples for a core scenario, each respective code sample of the plurality of code samples corresponding to a respective programming language of a plurality of programming languages; deriving the API from the core scenario responsive to the plurality of code samples, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the API without problems; and when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and realizing the API in one or more processor-accessible storage media. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for designing an Application Programming Interface (API), the method comprising:
-
selecting a core scenario for a feature area; writing at least one code sample for the core scenario; deriving an API for the core scenario responsive to the at least one code sample, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the API without problems; and when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and realizing the API in one or more processor-accessible storage media. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method for designing an Application Programming Interface (API), the method comprising:
-
deriving an API for a scenario responsive to at least one code sample written with regard to the scenario, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the API without problems; and when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and realizing the API in one or more processor-accessible storage media. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A method for designing an Application Programming Interface (API), the method comprising:
-
preparing a plurality of code samples for a core scenario, each respective code sample of the plurality of code samples corresponding to a respective programming language of a plurality of programming languages; deriving the API for the core scenario responsive to the plurality of code samples, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the API without problems; and when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and realizing the API in one or more processor-accessible storage media.
-
-
38. A method for designing an Application Programming Interface (API), the method comprising:
-
writing at least one code sample for a scenario; deriving an API for the scenario responsive to the at least one code sample, the API including (i) an aggregate component that is adapted to facilitate implementation of the scenario and (ii) a plurality of factored types that provide underlying functionality for the aggregate component, the API enabling a progression from using the aggregate component in simpler situations to using an increasing portion of the plurality of factored types in increasingly complex situations, wherein the simpler situations are less complex than the increasingly complex situations;
wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;performing one or more usability studies on the API utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the API without problems; and when the plurality of developers are determined not to be able to use the API without problems, then revising, by the API designer, the API based on the one or more usability studies to produce a revised API; and realizing the API in one or more processor-accessible storage media.
-
-
39. A method for designing an Application Programming Interface (API), the method comprising:
-
deriving at least one aggregate component to support at least one code sample for at least one scenario, wherein the deriving comprises producing a two-layer framework that includes component types targeting a relatively higher level of abstraction and component types targeting a relatively lower level of abstraction, wherein the relatively lower level of abstraction is lower in abstraction than the relatively higher level of abstraction;
wherein the component types targeting the relatively higher level of abstraction are directed to core scenarios; and
wherein the component types targeting the relatively lower level of abstraction provide a relatively greater amount of control to developers as compared to the component types targeting the relatively higher level of abstraction, which provide a relatively lower amount of control to the component types, wherein the relatively lower amount of control is a lower amount of control than the relatively greater amount of control;determining additional requirements with respect to the at least one scenario; deciding if the additional requirements can be added to the at least one aggregate component without adding more complexity than desired to the at least one scenario; if it is decided that the additional requirements can not be added to the at least one aggregate component without adding more complexity than desired to the at least one scenario, then; defining a plurality of factored types responsive to the deciding; performing one or more usability studies on the at least one aggregate component utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the at least one aggregate component without problems; and when the plurality of developers are determined not to be able to use the at least one aggregate component without problems, then revising, by the API designer, the at least one aggregate component based on the one or more usability studies to produce a revised aggregate component; and realizing the at least one aggregate component in one or more processor-accessible storage media; and realizing the plurality of factored types in the one or more processor-accessible storage media; and if it is decided that the additional requirements can be added to the at least one aggregate component without adding more complexity than desired to the at least one scenario, then; refining the at least one aggregate component to incorporate the additional requirements; performing one or more usability studies on the refined at least one aggregate component utilizing a plurality of developers, wherein the one or more usability studies comprise; determining, by an API designer, whether the plurality of developers are able to use the refined at least one aggregate component without problems; and when the plurality of developers are determined not to be able to use the refined at least one aggregate component without problems, then revising, by the API designer, the refined at least one aggregate component based on the one or more usability studies to produce a revised aggregate component; and realizing the refined at least one aggregate component in the one or more processor-accessible storage media. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48)
-
Specification