This specification relates generally to systems and methods for providing online services, and more particularly to systems and methods for providing online services in a software development environment.
Online software development services are available to facilitate the creation of program code by software developers. Existing online software development services typically consist of an integrated suite of applications providing a predetermined set of functions and features, including tools for code generation, code analysis, error detection, etc. Developers can access an online software development service via a network such as the Internet and utilize the available functions and features. However, developers are limited to using only those functions and features provided by the current suite of applications. While a software development service may be updated from time to time by the administrator to include new or improved features and functions, performing such updates can be complex and costly.
In accordance with an embodiment of the invention, a method for providing online services is provided. Access to program code maintained by a first online service is provided to a user device. Access to the program code is provided to a second online service via a network, and information concerning a function performed by the second online service with respect to the program code is provided to the user device. In one embodiment, a selection of the second online service is received from the user device, and access to the program code is provided to the second online service in response to the selection. The function performed by the second online service may comprise a function not provided by the first online service.
In some embodiments, the first online service comprises a cloud-based collaborative software development service. Accordingly, users of the first online service may access, generate and update program code. The program code is stored in a memory. Simultaneous access to the program code may be provided to the user device and to a second user device. In other embodiments, the first online service comprises a cloud-based software development service that does not enable multiple users to collaborate in developing program code.
The second online service may comprise a compiling service, and the function provided may comprise periodically compiling the program code. The second online service may comprise a testing service, and the function provided may comprise periodically testing the program code. In other embodiments, the second online service may comprise a code similarity identification service, a code review service, a lint checking service, a comment review service, an automatic code generation service, a code editing service, a code analysis service, an error detection and correction service, a debugging service, a code building service, a code deployment service, a code execution service, a code searching service, a version control service, etc.
The first online service may reside and operate on a first server connected to the network, and the second online service may reside and operate on a second server connected to the network.
In accordance with another embodiment of the invention, an apparatus is provided. The apparatus comprises means for providing to a user device access to program code maintained by a first online service, means for providing to a second online service access to the program code via a network, and means for providing to the user device information concerning a function performed by the second online service with respect to the program code.
These and other advantages of the present disclosure will be apparent to those of ordinary skill in the art by reference to the following Detailed Description and the accompanying drawings.
In the exemplary embodiment of
Cloud-based collaborative software development service 150 provides software development services to users via network 105, enabling users to write (or otherwise generate), edit, and display program code remotely. Cloud-based collaborative software development service 150 may allow multiple users to access a file containing program code simultaneously to collaboratively write and edit the program code. Cloud-based collaborative software development service 150 may be accessible via a World Wide Web page that may be viewed using a conventional Web browser, for example. A user may be required to log into a respective user account to utilize the services of cloud-based collaborative software development service 150. Cloud-based collaborative software development service 150 may offer common software development functions such as automatic code generation, code editing, code analysis, error detection and correction, debugging, code building, deployment, execution, searching, review, testing, version control, etc.
In other embodiments, a cloud-based software development service that provides software development services to users via network 105, enabling users to write (or otherwise generate), edit, and display program code remotely, but that does not enable multiple users to collaborate in developing program code, may be used.
User device 160 may be any device that enables a user to communicate via network 105. User device 160 may be connected to network 105 through a direct (wired) link, or wirelessly. User device 160 may have a display screen for displaying information. For example, user device 160 may be a personal computer, a laptop computer, a workstation, a mainframe computer, etc. Alternatively, user device 160 may be a mobile communication device such as a wireless phone, a personal digital assistant, etc. Other devices may be used.
Program code development service 310 provides software development services to users. For example, program code development service 310 may enable a user to write program code, or to generate program code in another manner, such as by use of object-oriented software development tools. Program code development service 310 may also provide services relating to automatic code generation, code editing, code analysis, error detection and correction, debugging, code building, deployment, execution, searching, review, testing, version control, etc.
Cloud-based service activation application 340 provides access to other cloud-based services. When a user accessing program code maintained by cloud-based collaborative software development service 150 wishes to utilize a desired service or function provided by another cloud-based online service accessible via network 105, cloud-based service activation application 340 accesses the other cloud-based online service and activates the desired service or function. Cloud-based service activation application 340 may communicate with the other cloud-based service and provide to the other cloud-based service access to the user's program code, for example.
Program code file repository 325 comprises memory and/or storage. Program code development service 310 may store and maintain program code generated by a user within program code file repository 325. Other types of data may also be stored in program code file repository 325.
In accordance with the embodiment of
Suppose, for example, that a user employs browser 210 operating on user device 160-A to access cloud-based collaborative software development service 150, and creates a program code file, such as program code file 400 illustrated in
To enable the user to view and edit program code file 400, cloud-based collaborative software development service 150 transmits data causing user device 160-A to display a representation of all or a portion of the program code on a Web page, in a well-known manner. For example, cloud-based collaborative software development service 150 may transmit to browser 210 a request, in the form of HyperText Markup Language (HTML), adapted to cause browser 210 to display a representation of program code file 400. In response, browser 210 displays a representation of all or a portion of program code file 400 in a window 407 on display 270. In the example of
Cloud-based collaborative software development service 150 allows multiple users to access program code simultaneously, in order to facilitate collaborative software development. For example, a first user employing user device 160-A, and a second user employing user device 160-B, may access program code file 400 simultaneously.
In accordance with an embodiment, a user accessing program code file 400 may activate a cloud-based online service that provides a desired service or function that is different from those provided by cloud-based collaborative software development service 150. For example, a user may activate cloud-based service 180. In response, the cloud-based online service 180 provides a desired function with respect to program code file 400. Cloud-based service 180 may reside and operate at a location (e.g., on a server) remote from cloud-based collaborative software development service 150, for example. In other embodiments, cloud-based service 180 may comprise a separate application that resides and operates at the same location (e.g., on the same server) as cloud-based collaborative software development service 150. Cloud-based service 180 and cloud-based collaborative software development service 150 may be maintained and operated by different entities. Alternatively, cloud-based service 180 and cloud-based collaborative software development service 150 may be maintained and operated by the same entity. Enabling a user of cloud-based collaborative software development service 150 to activate a separate cloud-based service offers the advantage of providing to the user access to one or more additional software development-related services or functions not provided by cloud-based collaborative software development service 150, without the need to update cloud-based collaborative software development service 150.
Suppose, for example, that a user wishes to utilize a cloud-based service to compile the program code that is currently stored in program code file 400. The user accordingly employs user device 160-A to access cloud-based collaborative software development service 150, and accesses program code file 400. At step 510, access to program code file 400 is provided to user device 160-A. Browser 210 displays lines of code 431, 432, 433, 434, etc., in the manner described above.
Suppose now that the user further wishes to utilize a cloud-based online compiling service to compile the program code stored in program code file 400. Referring again to
In response to the user's selection, cloud-based service activation application 340 communicates with cloud-based service 180. At step 520, cloud-based service activation application 340 provides to cloud-based service 180 access to program code file 400 via network 105. Cloud-based service activation application 340 may provide to cloud-based service 180 file names, passwords, and other information necessary to access program code file 400, for example, or may provide more limited access.
In the illustrative embodiment, cloud-based service activation application 340 also transmits a request that cloud-based service 180 periodically compile the program code contained in program code file 400. In response, cloud-based service 180 accesses program code file 400 via network 105, and periodically compiles the program code stored therein. Methods for compiling program code are well-known. In other embodiments, cloud-based service 180 may perform a single compile operation, or perform multiple compile operations at user-defined intervals, or at other times.
At step 530, cloud-based collaborative software development service 150 provides to user device 160 information concerning a function that has been performed by cloud-based service 180 with respect to the program code. In the illustrative embodiment, cloud-based service 180 transmits status information indicating the status of one or more compile operations to cloud-based collaborative software development service 150, and cloud-based collaborative software development service 150 transmits the status information to user device 160. In other embodiments, cloud-based service 180 may transmit status information directly to user device 160.
Cloud-based collaborative software development service 150 may also transmit a request that browser 210 display the status information. In response, browser 210 displays the status information on display 270. Referring to
In another embodiment, cloud-based service 180 provides a program code testing service. A user may accordingly activate cloud-based service 180 to test the program code that is currently stored in program code file 400.
In an illustrative embodiment, the user employs user device 160-A to access cloud-based collaborative software development service 150, and accesses program code file 400. Access to program code file 400 is provided to user device 160-A (step 510). Browser 210 displays lines of code 431, 432, 433, 434, etc., in the manner described above.
Wishing to utilize cloud-based service 180 to periodically test the program code stored in program code file 400, the user right-clicks on the computer mouse (not shown) to view menu 478 of options (shown in
In response to the user's selection, cloud-based collaborative software development service 150 communicates with cloud-based service 180. Cloud-based collaborative software development service 150 provides to cloud-based service 180 access to program code file 400 (step 520).
Cloud-based collaborative software development service 150 also transmits a request that cloud-based service 180 periodically test the program code contained in program code file 400. In response, cloud-based service 180 accesses program code file 400 via network 105, and periodically tests the program code stored therein. Methods for testing program code are well-known.
Cloud-based collaborative software development service 150 provides to user device 160 information concerning the status of one or more test operations that have been performed (step 530). In the illustrative embodiment, cloud-based service 180 transmits status information indicating the status of one or more test operations to cloud-based collaborative software development service 150, and cloud-based collaborative software development service 150 transmits the status information to user device 160. Cloud-based collaborative software development service 150 may also transmit a request that browser 210 display the status information, or a representation of the status information. In response, browser 210 displays the status information on display 270. Referring now to
In other embodiments, cloud-based service 180 may provide other types of services, such as a code similarity identification service, a code review service, a lint checking service, a comment review service, etc.
In various embodiments, the method steps described herein, including the method steps described in
Systems, apparatus, and methods described herein may be implemented using digital circuitry, or using one or more computers using well-known computer processors, memory units, storage devices, computer software, and other components. Typically, a computer includes a processor for executing instructions and one or more memories for storing instructions and data. A computer may also include, or be coupled to, one or more mass storage devices, such as one or more magnetic disks, internal hard disks and removable disks, magneto-optical disks, optical disks, etc.
Systems, apparatus, and methods described herein may be implemented using computers operating in a client-server relationship. Typically, in such a system, the client computers are located remotely from the server computer and interact via a network. The client-server relationship may be defined and controlled by computer programs running on the respective client and server computers.
Systems, apparatus, and methods described herein may be used within a network-based cloud computing system. In such a network-based cloud computing system, a server or another processor that is connected to a network communicates with one or more client computers via a network. A client computer may communicate with the server via a network browser application residing and operating on the client computer, for example. A client computer may store data on the server and access the data via the network. A client computer may transmit requests for data, or requests for online services, to the server via the network. The server may perform requested services and provide data to the client computer(s). The server may also transmit data adapted to cause a client computer to perform a specified function, e.g., to perform a calculation, to display specified data on a screen, etc. For example, the server may transmit a request adapted to cause a client computer to perform one or more of the method steps described herein, including one or more of the steps of
Systems, apparatus, and methods described herein may be implemented using a computer program product tangibly embodied in an information carrier, e.g., in a non-transitory machine-readable storage device, for execution by a programmable processor; and the method steps described herein, including one or more of the steps of
A high-level block diagram of an exemplary computer that may be used to implement systems, apparatus and methods described herein is illustrated in
Processor 801 may include both general and special purpose microprocessors, and may be the sole processor or one of multiple processors of computer 800. Processor 801 may comprise one or more central processing units (CPUs), for example. Processor 801, data storage device 802, and/or memory 803 may include, be supplemented by, or incorporated in, one or more application-specific integrated circuits (ASICs) and/or one or more field programmable gate arrays (FPGAs).
Data storage device 802 and memory 803 each comprise a tangible non-transitory computer readable storage medium. Data storage device 802, and memory 803, may each include high-speed random access memory, such as dynamic random access memory (DRAM), static random access memory (SRAM), double data rate synchronous dynamic random access memory (DDR RAM), or other random access solid state memory devices, and may include non-volatile memory, such as one or more magnetic disk storage devices such as internal hard disks and removable disks, magneto-optical disk storage devices, optical disk storage devices, flash memory devices, semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), compact disc read-only memory (CD-ROM), digital versatile disc read-only memory (DVD-ROM) disks, or other non-volatile solid state storage devices.
Input/output devices 805 may include peripherals, such as a printer, scanner, display screen, etc. For example, input/output devices 805 may include a display device such as a cathode ray tube (CRT) or liquid crystal display (LCD) monitor for displaying information to the user, a keyboard, and a pointing device such as a mouse or a trackball by which the user can provide input to computer 800.
Any or all of the systems and apparatus discussed herein, including online cloud-based collaborative software development service 150, cloud-based service 180, user device 160, and components thereof, including web browser 210, display 270, program code development service 310, and program code file repository 325, may be implemented using a computer such as computer 800.
One skilled in the art will recognize that an implementation of an actual computer or computer system may have other structures and may contain other components as well, and that
The foregoing Detailed Description is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention. Those skilled in the art could implement various other feature combinations without departing from the scope and spirit of the invention.