Previous systems offer application software to customers but do not provide a way to directly interact with the application development community. In the standard software application store model, developers have only indirect information regarding customer demand. When errors are found by users of the applications, it is often difficult to provide enough information to the developers to reproduce the problems causing the errors. After a problem has been repaired, customers who have experienced the problem are often not informed that the problem has been addressed.
In standard application store systems, users have to wait for new code releases or software downloads to get access to new application functionality. In addition, standard applications offer limited methods for a user to gain additional processing performance when needed or desired. Standard applications have a fixed processing performance, making processing performance gains a function of either the hardware that runs the application or the specific version of the application.
An integrated, automated customer-demand-to-application-development process is presented as a single function, reducing software application development risk and introducing a significant new capability for software application development. Unlike standard application stores (for example, the Apple “App Store” or the Microsoft Store), the present software application development system (“application store”) combines diversity of ideas of a software developer community, the ability for users to directly communicate with that community, and in addition, the shopping convenience of an online store.
For all applications sold through the present application store, customers can directly inform the developers of any problems, submit the input/parameter values that generated the problems, and receive direct notification (both through the application itself and via email) when their problem has been addressed. This process provides application developers the ability to quickly repair and notify only those customers who have an interest in that particular problem's resolution. For each application sold through the present application store, additional application functionality can be requested and provided, allowing customers direct access to customized software applications from the original software developer.
The processing performance of applications developed with the present system can be dynamically changed at the request of the customer, with the increased performance being a function of the amount of computational resources provided by the cloud computing environment. Dynamic, real-time application performance changes represent a new capability for on-line applications.
Allowing customers, developers, and the computing environment the ability to interact as a community makes it possible for developers to create high-quality applications that are desired by customers, and whose performance is dictated by the customer. The interaction that takes place in the present system facilitates the public availability of features needed in a particular application.
In response to customer inquiries, the present application store system uses a search engine and keywords to determine if a needed application exists; if it does not, a demand-based development cycle is initiated in which customers provide their software application requirements directly to application developers.
Marketing and development cloud computing system 101 is coupled to a database 105 and an ‘application deployment parallel computing cloud’ 106 which includes at least one server cluster 107 which provides parallel processing capability for executing customer applications. A plurality of customers (who are also users of the applications described herein) and a plurality of developers access system 101 and other system components via, e.g., an Internet connection 130, using respective computer systems 108 and 109 (only one of each is shown for clarity). Monitors 110 and 111 provide messages and data entry fields for communication between customers and developers.
At step 215, the system stores (in database 105) the keywords that do not match any existing applications. This information is used to determine new application types. The number of identical or similar keyword requests from different customers defines the potential market size.
The developers participating in the present system have access to this market-demand information and can create applications to meet the demand, and add the keyword(s) to the keyword list for their applications, or, alternatively, the developers may simply ignore the market-demand information.
If the keyword search produces no application matches (step 217) then the system displays a question asking for a short description of the needed application on an application description screen, at step 220. The customer then enters a description of the needed application at step 225, and sends the description and keyword list to system 101 (step 230), from which it can be accessed for use by the development community. The customer's display is then returned to the system main menu. This process allows customers to directly request new applications. The application description entered by the customer is then stored in a ‘new application keyword’ table 112 in database 105, at step 235. The application description is then used by one or more of the developers as a basis for, or at least a significant guideline in, developing a corresponding new application. Table 1 below is an example of the new application keyword table 112.
In addition to prompting new market areas, keyword information may be used for tracking current market demand. Table 2 in
A market tracking table 110, stored in database 105, includes the information shown in Table 2 (
If the keyword search (at step 217) finds applications that match one or more keywords in the application description submitted by the customer, then an ‘Application Selection’ list 302, containing a list of matching applications is displayed on an ‘Application Description’ screen 300, at step 240.
At step 245, the customer may select a an application name in the Application Selection list 302, and a brief application description is shown for each matching application is then displayed. Application information is stored in database file 115, and the information for each application references the corresponding application code stored in database file 120 (shown in
At this point, if the customer finds no applications of interest in the Application Selection list, then the customer can either return to the main menu or select an application for which more information is desired. If a return to the main menu is chosen, then system operation resumes at step 205. Otherwise, at step 250, the customer selects an application name in the Application Selection list, and a detailed application description for the selected application is then displayed on an ‘Application Detail’ screen at step 255.
A detailed description of the current application is shown when the Application Detail Screen is displayed. If the user wishes to purchase the selected application, then selecting the ‘Add to Cart’ button 405 from the Application Detail screen causes the shopping cart screen 500 to be displayed at step 260. Selecting the Checkout button 401 from the Application Detail screen causes a Checkout screen (described below with respect to
The Purchase Method screen comprises one or more buttons which allow a customer to select a purchasing mechanism such as a particular credit card or other payment method. Payment is then made, at step 275, by selecting the appropriate payment method. Once payment is accepted, the system generates another screen with a client code identifying the client. The customer then selects a ‘Done’ button, which returns the customer to the system main menu.
The Startup screen includes a ‘Request Change’ button that allows the user (the customer) to request additional application functionality though a ‘Functionality Change Request’ screen, which includes a field for entering a request for changing particular aspects of the application. At step 705, once the customer has selected the ‘Request Change’ button and entered the request indicating desired changes to application, the function change information is sent to the developer of the application at step 710.
An ‘Administrator’ main screen (displayed on monitor 111) is available for use by developers using the present system. When an administrative-level user (“administrator”) in the present system selects a ‘Client Request’ button, a ‘Client Function Request List’ screen is then displayed. The administrator can accept or reject each request. If (at step 715) the administrator rejects the request then the system sends an ‘Application Request Rejection’ notice, which includes a reason for the rejection, at step 720. The developers' messages are displayed on Startup screen, and if the customer's email address has been entered, (when the change request was made), then the response will also be sent to the entered email address.
If the administrator accepts the request (i.e., agrees to provide the requested changes) then the system returns an acceptance message to the customer at step 725, and (after appropriate payment by the customer) a developer then makes the requested changes at step 730. After the work is completed and the administrator has issued a client publication, the administrator selects a button which causes the system to send a work completion email to the customer at step 735.
The developer's Administrator Main screen includes a ‘Bug List’ button. Selecting the Bug List button causes a ‘Bug List’ screen to be displayed at step 820. At step 825, the administrator then selects a specific ‘bug’ from a list of outstanding ‘bugs’ to be fixed, which causes an ‘Algorithm Trace’ screen to be displayed at step 830.
At step 835, the input to the algorithm is preset to the input values provided by the customer. The error is then traced by a developer using a ‘Trace’ button 906 to trace the activity and transformations through the kernels (and sub-algorithms) of the application to a specific kernel or internal algorithm at step 840. If the kernel or algorithm causing the problem was created by the present development organization, then the creator of the faulty code is assigned error repair duties by the administrator. When the problem is repaired so that the data from the customer generates a correct response, the administrator re-publishes the application (at step 845), the bug is removed from the Bug list, and an ‘Application Error Repaired’ message is sent to the customer at step 850, indicating that the reported bug has been fixed.
In one embodiment, applications sold via the present method have a performance enhancement bar on the associated Startup screen. After the appropriate parameters are entered into the application, a Performance Enhancement Slider Bar becomes active. The Slider bar initially shows the processing time with a price of $0.00. This processing time can be decreased at a cost. Moving the Slider bar causes the processing time estimate to decrease while also increasing the cost. When the required performance is entered, the customer can select a Run button. If the price on the Slider bar is greater than zero then the system displays the Checkout screen. The user pays for the performance enhancement, and the system runs the job. If the price is zero then the system runs the job without displaying the Checkout screen.
Application software can behave differently depending upon datasets and the input parameters used to define the processing performed on that data.
Only applications for which there is least one ‘number of free uses’ made available by the developer can be compared. If any ‘free uses’ are available (step 1017), the applications are run at step 1020, and the output of each application is made available in a request data file and/or on an output popup screen at step 1025. Statistics on the performance of each application are generated and displayed at step 1030. These statistics may include, for example, minimum performance (e.g., Mb/sec.), minimum price per use, minimum price-to-performance ratio (e.g., $/Mb/sec.), maximum performance (e.g., Mb/sec.), maximum price per use (e.g., $/Mb/sec.), which includes performance booster cost, and maximum price-to-performance ratio (e.g., $/Mb/sec.). If any ‘free uses’ remain (step 1017), comparisons can continue until there are no further free uses.
The above procedure allows a customer to fairly compare two applications, receive back the computed comparison values, and obtain price-to-performance data for each application using the customer's own dataset. The number of free uses feature allows the developer to limit the total number of free jobs that any particular MAC address consumes, thereby insuring that customers do not abuse the comparison feature.