Abstract:
Disclosed herein are technologies for automatically updating object model and associated code for software applications, such as web pages, by invoking an automatic componentization engine client to determine changes in the component code of web pages, receiving the changes in the component code, and compiling and verifying the code. Generated or revised and updated code may then be provided to a user.

Description:
TECHNICAL FIELD 
       [0001]    The present disclosure relates generally to generating and updating code modules of applications. 
       BACKGROUND 
       [0002]    Applications, such as web pages have certain functionality associated with them in the form of software code-oriented components. For example, a web page may have buttons to activate functions as such as an input box, click through button, drop down list, etc. 
         [0003]    In certain cases, the components are modularized. For example, a login page may have components for a user name box, a password box, and login button that is modularized and has object-oriented code or program. A developer or user that maintains the web page has knowledge that such codes or programs exist for the components, and may have access to such code; however, in certain instances, the web page may change and particularly the components and modules that are associated with the web page. The user is not made aware of such changes. 
       SUMMARY 
       [0004]    Disclosed herein are technologies for automatically updating object model and associated code for software applications, such as web pages, by invoking an automatic componentization engine client to determine changes in the component code of web pages, receiving the changes in the component code, and compiling and verifying the code. Therefore, generated or revised and updated code may then be provided to a user. 
         [0005]    With these and other advantages and features that will become hereinafter apparent, further information may be obtained by reference to the following detailed description and appended claims, and to the figures attached hereto. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]      FIG. 1  illustrates an exemplary network or system; 
           [0007]      FIG. 2  illustrates exemplary web pages and components; 
           [0008]      FIG. 3  illustrates an exemplary process flow to automatically generate or update code for applications; 
           [0009]      FIG. 4  illustrates an exemplary process for automatically generating or updating code for applications such as web pages; 
           [0010]      FIG. 5  illustrates an exemplary screen shot for a job initializer to pull source code; 
           [0011]      FIG. 6  illustrates an exemplary screen shot for initializing a crawler and compiling; 
           [0012]      FIG. 7  illustrates an exemplary screen shot for checking code and sending notification; and 
           [0013]      FIG. 8  illustrates an exemplary computing system to implement in accordance with the technologies described herein. 
       
    
    
       [0014]    The Detailed Description references the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to reference like features and components. 
       DETAILED DESCRIPTION 
       [0015]    Disclosed herein are technologies for implementing automation for code modules related to applications such as web pages. 
         [0016]      FIG. 1  shows an example network or system  100  as described in the present implementations herein. It is to be understood, that system  100  may include other devices, components, entities and the like which are not shown in order to simplify the description. 
         [0017]    System  100  includes applications, such as various web pages  102 . The web pages may be developed and operational. A network or networks, such as the Internet  104  connects to the web pages  102 . The network  104  is connected to various entities. 
         [0018]    In this example, the network  104  connects to a job initializer  106 . The job initializer  106 , for example, may be a Jenkins Job. The job initializer  106  may provide for automatic and continuous run time of computer code or script. Typical applications of the job initializer  106  include maintenance of web pages. 
         [0019]    The system  100  also includes module owner  108 . The module owner  108  may be considered as a user that maintains the web pages  102 . In one implementation, system  100  includes an automatic componentization engine (ACE) crawler  110 . The ACE crawler  110  may reside in one or more various computing devices, including the “cloud.” System  100  may also include an automatic componentization engine (ACE) server  112 . The ACE server  112  may be one of the computing devices that host the ACE crawler  110 . A browser  114  with automatic componentization engine (ACE) extensions may also be included in system  100 . 
         [0020]    It is to be understood that the entities that are described may be included or part of one another, or may be included with other entities, devices, computers, and the like. Furthermore, such entities may be implemented in various configurations, including for example hardware, firmware, software, cloud, and combinations thereof. 
         [0021]      FIG. 2  shows exemplary web pages and components  200  as described in the present implementations herein. Web pages  102  may include various web pages. In this example, illustrated are a login page  202 , a home page  204 , a performance page  206  and a performance management form page  208 . The login page  202 , home page  204 , performance page  206  and performance management form page  208  include particular modules or components  210 . The web pages and components may be managed by the module owner  108  described above. 
         [0022]      FIG. 3  shows an exemplary process  300  for implementing, at least in part, the technology described herein. In particular, process  300  depicts a flow to automatically generate or update code for applications such as web pages. The process  300  may be performed by a computing device or devices. An example architecture of such computer devices is described below with reference to  FIG. 8 . In this particular example, the process  300  describes certain acts performed by certain entities as discussed above; however, as discussed such entities may be included with one another. In particular, the entities in this example are the job initializer  106 , the module owner  108 , the automatic componentization engine (ACE) crawler  110 , the automatic componentization engine (ACE) server  112 , and the browser with ACE Extension  114 . 
         [0023]    At  302 , initialization or start of the process may be performed by the job initializer  106 . As discussed, the job initializer may continuously perform running of script or code as part of its operations. 
         [0024]    At  304 , the ACE crawler  110  is triggered. Triggering may occur by a particular set of command or instruction per an occurring event or set time. 
         [0025]    At  306 , the ACE crawler begins to run script and check (or explore) various applications, and particularly web pages. In this example, steps  308 ,  310 ,  312  and  314  are respectively related to calling up a login page, home page, perform page, and performance management form page (e.g., login page  202 , home page  204 , performance page  206  and performance management form page  208 ). 
         [0026]    At  316 , the end of process for the ACE crawler is indicated. 
         [0027]    At  318 , the browser  114  captures the elements that are applicable to the web pages. In other words, the browser identifies the applicable modules or components, such as components  210  described above that are relevant to the web pages. 
         [0028]    At  320 , the browser sends the results with the valid or relevant elements (and their associate web pages) to the ACE server. 
         [0029]    At  322 , the job initializer retrieves the source code generated from the ACE server, and checks the generated code into a specific source code branch. 
         [0030]    At  324 , the ACE server  112  processes the results and generates component code for each of the web pages. In certain implementations, ACE server  112  parses the component code and based on keyword and identification (ID), transforms the component code to source code for each page component. 
         [0031]    At  326 , the job initializer compiles the code for each branch. 
         [0032]    At  328 , a check is performed to determine if the build (or compiling) is successful. 
         [0033]    At  330 , following the YES branch of  328 , if the build is successful, the code is merged into the main script. 
         [0034]    At  332 , following the NO branch of  328 , if the build is not successful, the module owner  108  may check the issue in the compiling and address the issue. 
         [0035]    At  334 , the branch of the generated code may be checked. 
         [0036]    At  336 , a manual merge of the code may be made with the main script. 
         [0037]      FIG. 4  shows an exemplary process  400  for implementing, at least in part, the technology described herein. In particular, process  400  depicts a flow to automatically generate or update code for applications such as web pages. The process  400  may be performed by a computing device. An example architecture of such a computer device is described below with reference to  FIG. 8 . In this particular example, the process  400  describes certain acts performed by a job initializer, such as the job initializer  106  discussed above. 
         [0038]    At  402 , source code of web pages may be initiated and pulled. In particular, code related to the components or modules of the web pages may be pulled. 
         [0039]    At  404 , an automatic componentization engine (ACE) client or crawler is initiated. In particular, the ACE crawler is to explore and navigate through the targeted web pages. 
         [0040]    At  406 , a compile of the received code is performed as to the main script. 
         [0041]    At  408 , the code is checked to determine if the compile is successful. 
         [0042]    At  410 , an alert or notification may be made as to a user or module owner indicating that the code for the modules or components have been changed. 
         [0043]      FIG. 5  shows an example screen shot  500  from a job initializer. In this example, a “Jenkins Job” is initialized to begin the process. 
         [0044]      FIG. 6  shows an example screen shot  600  indicating that an automatic componentization engine (ACE) client or crawler has been initiated, and that compiling is taking place. 
         [0045]      FIG. 7  shows an example screen shot  700  that the code is being checked, and notification made by email to the module owner is performed. 
         [0046]      FIG. 8  illustrates an exemplary system  800  that may implement, at least in part, the technologies described herein. The computer system  800  includes one or more processors, such as processor  804 . Processor  804  can be a special-purpose processor or a general-purpose processor. Processor  804  is connected to a communication infrastructure  802  (for example, a bus or a network). Depending upon the context, the computer system  800  may also be called a client device. 
         [0047]    Computer system  800  also includes a main memory  806 , preferably Random Access Memory (RAM), containing possibly inter alia computer software and/or data  808 . 
         [0048]    Computer system  800  may also include a secondary memory  810 . Secondary memory  810  may include, for example, a hard disk drive  812 , a removable storage drive  814 , a memory stick, etc. A removable storage drive  814  may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. A removable storage drive  814  reads from and/or writes to a removable storage unit  816  in a well-known manner. A removable storage unit  816  may comprise a floppy disk, a magnetic tape, an optical disk, etc. which is read by and written to by removable storage drive  814 . As will be appreciated by persons skilled in the relevant art(s) removable storage unit  816  includes a computer usable storage medium  818  having stored therein possibly inter alia computer software and/or data  820 . 
         [0049]    In alternative implementations, secondary memory  810  may include other similar means for allowing computer programs or other instructions to be loaded into computer system  800 . Such means may include, for example, a removable storage unit  824  and an interface  822 . Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an Erasable Programmable Read-Only Memory (EPROM), or Programmable Read-Only Memory (PROM)) and associated socket, and other removable storage units  824  and interfaces  822  which allow software and data to be transferred from the removable storage unit  824  to computer system  800 . 
         [0050]    Computer system  800  may also include an input interface  826  and a range of input devices  828  such as, possibly inter alia, a keyboard, a mouse, etc. 
         [0051]    Computer system  800  may also include an output interface  830  and a range of output devices  832  such as, possibly inter alia, a display, one or more speakers, etc. 
         [0052]    Computer system  800  may also include a communications interface  834 . Communications interface  834  allows software and/or data  838  to be transferred between computer system  800  and external devices. Communications interface  834  may include a modem, a network interface (such as an Ethernet card), a communications port, a Personal Computer Memory Card International Association (PCMCIA) slot and card, or the like. Software and/or data  838  transferred via communications interface  834  are in the form of signals  836  which may be electronic, electromagnetic, optical, or other signals capable of being received by communications  834 . These signals  836  are provided to communications interface  834  via a communications path  840 . Communications path  840  carries signals and may be implemented using a wire or cable, fiber optics, a phone line, a cellular phone link, a Radio Frequency (RF) link or other communication channels. 
         [0053]    As used in this document, the terms “computer-program medium,” “computer-usable medium,” and “computer-readable medium” generally refer to media such as removable storage unit  816 , removable storage unit  824 , and a hard disk installed in hard disk drive  812 . Computer program medium and computer usable medium can also refer to memories, such as main memory  806  and secondary memory  810 , which can be memory semiconductors (e.g., Dynamic Random Access Memory (DRAM) elements, etc.). These computer program products are means for providing software to computer system  800 . 
         [0054]    Computer programs (also called computer control logic) are stored in main memory  806  and/or secondary memory  810 . Such computer programs, when executed, enable computer system  800  to implement the present technology described herein. In particular, the computer programs, when executed, enable processor  804  to implement the processes of aspects of the above. Accordingly, such computer programs represent controllers of the computer system  800 . Where the technology described herein is implemented, at least in part, using software, the software may be stored in a computer program product and loaded into computer system  800  using removable storage drive  814 , interface  822 , hard disk drive  812  or communications interface  834 . 
         [0055]    The technology described herein may be implemented as computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes data processing device(s) to operate as described herein. Embodiments of the technology described herein may employ any computer useable or readable medium, known now or in the future. Examples of computer useable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, Compact Disc Read-Only Memory (CD-ROM) disks, Zip disks, tapes, magnetic storage devices, optical storage devices, Microelectromechanical Systems (MEMS), and nanotechnological storage device, etc.). 
         [0056]    A computing system may take the form of any combination of one or more of inter alia a wired device, a wireless device, a mobile phone, a feature phone, a smartphone, a tablet computer (such as for example an iPad™), a mobile computer, a handheld computer, a desktop computer, a laptop computer, a server computer, an in-vehicle (e.g., audio, navigation, etc.) device, an in-appliance device, a Personal Digital Assistant (PDA), a game console, a Digital Video Recorder (DVR) or Personal Video Recorder (PVR), a cable system or other set-top-box, an entertainment system component such as a television set, etc. 
         [0057]    In the above description of exemplary implementations, for purposes of explanation, specific numbers, materials configurations, and other details are set forth in order to better explain the present invention, as claimed. However, it will be apparent to one skilled in the art that the claimed invention may be practiced using different details than the exemplary ones described herein. In other instances, well-known features are omitted or simplified to clarify the description of the exemplary implementations. 
         [0058]    The inventors intend the described exemplary implementations to be primarily examples. The inventors do not intend these exemplary implementations to limit the scope of the appended claims. Rather, the inventors have contemplated that the claimed invention might also be embodied and implemented in other ways, in conjunction with other present or future technologies. 
         [0059]    Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as exemplary is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word “exemplary” is intended to present concepts and techniques in a concrete fashion. The term “technology,” for instance, may refer to one or more devices, apparatuses, systems, methods, articles of manufacture, and/or computer-readable instructions as indicated by the context described herein. 
         [0060]    As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more,” unless specified otherwise or clear from context to be directed to a singular form. 
         [0061]    Note that the order in which the processes are described is not intended to be construed as a limitation, and any number of the described process blocks can be combined in any order to implement the processes or an alternate process. Additionally, individual blocks may be deleted from the processes without departing from the spirit and scope of the subject matter described herein. 
         [0062]    One or more embodiments described herein may be implemented fully or partially in software and/or firmware. This software and/or firmware may take the form of instructions contained in or on a non-transitory computer-readable storage medium. Those instructions may then be read and executed by one or more processors to enable performance of the operations described herein. The instructions may be in any suitable form, such as but not limited to source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. Such a computer-readable medium may include any tangible non-transitory medium for storing information in a form readable by one or more computers, such as but not limited to read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; a flash memory, etc.