Many different types of computer systems are currently in wide use. Some such systems are quite large, often involving hundreds or thousands of forms that users of the systems interact with. Deploying these types of systems in an organization can be very difficult.
By way of example, some such computer systems include business systems, such as enterprise resource planning (ERP) systems, customer relations management (CRM) systems, line-of-business (LOB) systems, among others. These types of business systems often exist as a base system. However, when they are deployed within an organization, the base system is often modified or customized to meet the needs of the particular organization.
In order to implement the business system at an organization, the project of implementing the business system often goes through a number of different phases. During a pre-sale phase, for instance, the organization obtains preliminary information. The preliminary information may indicate, for instance, the number of licenses and the license fees which may be needed in order to run the business system at that organization. During an analysis phase, the particular needs of the organization are often evaluated against the functionality that is provided by the base business system. Differences between the requirements of the organization and the functionality provided by the business system are often referred to as gaps. The gaps are identified as areas where the basic business system is to be customized or modified in order to meet the functionality requirements of the organization. During a design phase, the customizations that are needed to meet the needs of the organization (e.g., to fill the gaps) are designed. That is, the modifications to the basic business system are identified, and further development, or modifications of the existing system, are identified as items that must be performed in order to meet the needs of the organization.
During a development and testing phase, the customizations to the basic business system are actually made, and the functionality of the customized system is tested to determine whether it meets the needs of the organization. During the development and testing phase, code is actually being written or customized by developers. At times, the code can be analyzed to determine whether it conforms to best practices, or whether certain changes or optimizations can be made for the code to perform better.
A final phase may be a deployment and maintenance phase in which the customized business system is actually deployed at the organization, and its ongoing operation in the production environment is maintained and updated. During this final phase, bugs are often identified and fixed and various optimizations and upgrades can be identified and deployed in order to maintain the code base.
These are only exemplary phases and many others can be used. Also, each phase may also have many different tasks, in addition to those mentioned above. During all of these phases, a wide variety of different types of issues arise. However, these different phases are often performed by different people. For example, a first set of consultants may be brought in to analyze the needs of the organization and to estimate the number of licenses, and the costs involved to obtain a customized system. During the analysis phase, a second set of consultants may be brought in to identify and document the gaps between the basic business system and the particular functional requirements of the organization that is purchasing the system. During the design phase, yet another set of consultants is often brought in to design the customized system that will eventually be deployed. However, during the development and testing phase, yet another set of people (software developers) are employed to actually develop and customize the code in order to meet the design specifications developed during previous phases. During the deployment and maintenance phase, another set of people are often employed (such as a separate set of developers or software engineers) that actually deploy the system and maintain it.
It can thus be seen that the lifecycle of such a project involves a wide variety of different phases. Also, the group of people that conduct the work during each of the phases is often different. Therefore, many of these types of projects fail in that the customer expectations for the final system do not meet what is actually delivered. It is very difficult to trace whether the customer expectations identified in the early phases actually make it into the product deployed in the final phases. This can result in customer dissatisfaction, and a relatively large amount of wasted time and money. Often, in fact, such projects are never even completed.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A set of lifecycle services are employed to identify tasks and other worklist items. The worklist items are aggregated into a unified worklist that is synchronized to a product management system so the status of the worklist items can be traced throughout a project lifecycle.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
Architecture 100 illustratively includes project lifecycle services system 102, application lifecycle management (ALM) system 104, integrated development environment (IDE) 106 and business system 108.
Business system 108 is illustratively a customer relations management (CRM) system, an enterprise resource planning (ERP) system, a line-of-business (LOB) system or another type of business system. It is illustratively deployed at a user's organization in order to help the user perform business operations.
In the architecture shown in
The customer may also be in the design phase of the project. In that phase, the customer may be employing individuals to design the customizations or further development that need to be performed in order to customize business system 108 sufficiently.
It may also be, however, that the customer has already purchased business system 108 and developers 116 are in the process of customizing business system 108 so that it meets the functional requirements of the organization deploying it. In doing so, developers 116 illustratively perform development operations within integrated development environment (IDE) 106 to develop the customizations to business system 108 that need to be made in order to meet the requirements of the purchasing organization. Of course, the business system 108 may already be deployed and it is simply being maintained. In that case, it may be in the deployment and maintenance phase of the lifecycle.
During each of these phases, the customer (which can be user 110) illustratively accesses project lifecycle services system 102. System 102 illustratively provides a plurality of different kinds of services that can be used to obtain valuable information during the different phases of a project lifecycle. In one embodiment, project lifecycle services system 102 illustratively provides a collaborative work space that customers and partners can use to manage projects surrounding the lifecycle (such as from pre-sale to deployment and maintenance) of business systems, such as business system 108. Based upon the particular phase that the project currently resides in, project lifecycle services system 102 illustratively provides checklists and a variety of different tools or services that assist in managing the project. It illustratively provides a dashboard display that can be generated on user interface displays 112, that show user 110 updated information corresponding to the particular phase in which the project currently resides. This is described in greater detail below with respect to
Suffice it to say at this point, however, that system 102 illustratively identifies issues, tasks, fixes, diagnostic results and other information throughout the entire lifecycle of the project, all of which needs to be addressed during the lifecycle of the project. The end result of addressing all of these items is the successful deployment of business system 108, for the customer, along with continued observation and maintenance of system 108.
All of the information generated by system 102 is illustratively aggregated on a unified worklist which forms a list of tasks, issues, bug fixes, and other items that need to be traced and perhaps resolved, during the lifecycle of the project. This information is provided to ALM system 104 where the customer, and developers 116, have access to the information. ALM system 104 illustratively provides source control, data collection, reporting, and project tracking functionality for various different types of collaborative software development projects. By way of example, where the project is to customize a basic business system so that it can be deployed as business system 108 in a particular customer's implementation, that project can be managed through ALM system 104.
The developers 116 illustratively use integrated development environment 106 to perform the tasks or modify the tasks on the unified worklist. Integrated development environment (IDE) 106 is illustratively a development tool or development environment that includes a plurality of different tools so that developers 116 can develop and test the code that needs to be developed in order to customize business system 108 accordingly. For example, it may include a source code editor, build automation tools and a debugger that allow computer programmers to develop software. Some IDEs 106 illustratively include a compiler, an interpreter, or both. They may include a version control system and various tools to simplify the construction of graphical user interfaces. They can also include a class browser, an object browser, and a class hierarchy diagram for use with object oriented software development. Thus, developers 116 can use IDE 106 to generate the code and customizations that may be utilized in developing business system 108 for use in the customer organization.
Once a task has been modified or performed (or at least partially performed), the developers illustratively update the status of that worklist item on the unified worklist. This information is communicated from ALM system 104 back to project lifecycle services system 102, where it is synchronized with the unified worklist generated in system 102. Therefore, the customer (or other user 110) can have system 102 perform analytics on the unified worklist to obtain a project status report, to obtain a risk analysis indicating which parts of the project may be at risk for not being completed or not being completed on time, and other similar information. All of this information is described in greater detail below with respect to
Before describing the operation of architecture 100 in more detail, a number of the various services, components, and other items will be described.
Project lifecycle services system 102 illustratively allows the user to track projects throughout the entire lifecycle. In doing so, it employs a variety of the services 126-138. License sizing estimator service 126, for instance, helps a user to estimate the number of licenses required for a business system. It can provide a shared work space that enables the user to model default and customized roles, and then automatically calculate client access licenses that may be needed by the system.
Code analysis service 128 illustratively receives code that is authored by developers 116 during the customization process. It performs analysis and validates model files against best practices. It can provide a report of potential areas for improvement. In addition, it can provide tasks that can be performed in order to improve the code.
Business process modeler service 130 illustratively allows a user to create, view and modify standard process flow inside the business system 108. By using modeler service 130, the user can standardize process flows and align the processes within business system 108 with industry standard processes. In addition, business process modeler service 130 can generate a fit gap list which identifies both the functionality needed by the user and that provided by business system 108. It then identifies existing functionality provided by system 108 that meets requirements of the customer (i.e., the fits). It also identifies functionality that is needed by the customer, but that is not provided by business system 108, in its basic form (i.e., the gaps). The fit gap list provides a developer with useful information in determining which particular customizations need to be made, or which further development needs to be performed, in order for the customized business system to meet the functional needs of the end user or customer.
Usage profile service 132 is illustratively a data gathering tool that helps to describe the projected or current usage of business system 108 in a current or future implementation. A usage profile is generated, and it can be used for a wide variety of different purposes. For instance, it can be used to estimate the sizing of hardware components that are to be used in the implementation, or that should be used in an existing implementation, along with the support that will be necessary for such an implementation.
Upgrade analysis service 134 illustratively allows a user to analyze when various upgrades to business system 108 will be useful. It illustratively analyzes code artifacts from business system 108 to determine whether upgrades would be useful, and it also illustratively provides a rapid data collection tool that analyzes existing environment information in an existing implementation of business system 108, in order to help estimate the scale of the upgrade project that may be recommended.
Hot fix service 136 illustratively allows a user to search for existing solutions and workarounds for known issues in the particular business system 108 being deployed. A user can identify which issues have been fixed, and which issues remain open, as well as which issues have been resolved as issues that will not be fixed. Thus, when deploying business system 108, the developer or user can quickly identify whether solutions have already been generated for various problems or bugs that may be encountered.
Diagnostic service 138 illustratively allows the user or administrator to monitor the environment in which business system 108 is deployed. In one embodiment, service 138 can be pointed to a given environment employing a business system 108 and diagnostic service 138 can run a variety of different tests and output various tasks or optimizations that can be made to improve the performance of business system 108.
Other or different services can be provided in system 102 as well. These are exemplary only.
It can be seen that all of these services 126-138 illustratively provide outputs. The outputs can be provided in a variety of different forms. For instance, they can simply be results which indicate usage profile information, license estimation results, results that indicate whether upgrades should be made, etc. Also, they can be outputs in the form of issues that need to be resolved, and the potential fixes for those issues, optimizations that can be made to increase the performance of the business system, tasks that are to be performed in order to make those optimizations, a fit gap list, tasks generated from code analysis service 128 that can be used to conform the code being written by developers 116 to best practices, etc.
Worklist aggregator component 140 illustratively aggregates the outputs of all of the services and generates a unified worklist 148. The unified worklist 148 includes list items, some of which have corresponding functional requirement documents 150. Synchronization component 142 illustratively provides the worklist tasks or other worklist items 154 along with any functional requirement documents 150, and an indication of which particular users (e.g., which developers 116, if any) have been assigned to the various tasks for the given project. It can also, of course, provide other information 160 as well. ALM system 104 illustratively receives the outputs from project lifecycle services system 102 and places them in the proper place for a given project 173. For instance, project identification information can be placed in project templates 174. Tasks 176, issues 178, features 180, and the other information can illustratively be populated from the worklist tasks 154, and the various worklist items on unified worklist 148, that are provided by synchronization component 142.
Developers 116 illustratively access the tasks and worklist items in ALM system 104 and work on those worklist items within integrated development environment 106. Developers 116 then also update the status of the various worklist items, once they have been worked on. For instance, if a developer completes one of the tasks on the unified worklist, developer 116 will update the status of that task to “completed” within ALM system 104.
Synchronization component 142 receives the status update 152 and synchronizes it to unified worklist 148 in system 102. It will be appreciated that developers 116 can provide modifications 162 to the worklist items as well. For instance, if a task on unified worklist 148 needs to be modified, after a developer 116 has begun working on it, the developer can reflect those modifications on the unified worklist 148 by simply providing them to ALM system 104 where they will be synchronized using synchronization component 142, back to unified worklist 148 in system 102.
User 110 can illustratively use report generator component 144 to generate reports against the items on unified worklist 148. Such reports can include, by way of example, a project status report 152 which will allow user 110 to trace the various issues raised during the different phases of the lifecycle of the project, from their inception, all the way through completion and delivery and final implementation and production of the business system 108.
System 102 first illustratively generates user interface displays 112 that allow user 110 to provide inputs identifying a project and associating it with a particular ALM system 104. This is indicated by block 200 in
Therefore, a user can illustratively input the name of a particular ALM service in text field 204. The user can identify a particular type of project in field 206 and input the user's ID and password in fields 208 and 210. The user can then choose between a manual synchronization mode and an automatic synchronization mode, using user input mechanisms 212. If the user chooses an automatic synchronization mode, then the user can set a frequency in field 214 with which synchronization component 142 will synchronize items from ALM system 104 to unified worklist 148, and vice versa.
Once the communication between system 102 and system 104 has been set up, user 110 illustratively uses the various services and components in system 102 to identify business requirements that the user has, and in order to determine which types of customizations and further development may be made, with respect to a base business system 108, in order to meet those requirements. Using project lifecycle services system 102 to identify the business requirements is indicated by block 218 in
Again, those business requirements can include outputs from the license sizing estimator service 126, the business process modeler 130, the hot fix service 136, the code analysis service 128, the diagnostics service 138, the usage profile service 132, the upgrade analysis service 134, or any of a wide variety of other services 220. Based upon the output from services 126-138, or other services 220, worklist aggregator component 140 illustratively generates an aggregated worklist (identified by unified worklist 148 in
Synchronization component 142 then sends the worklist and the associated tasks and documentation, assigned users, and other information to the previously-selected ALM system 104. This is indicated by block 238 in
The ALM system 104 is illustratively accessible by developers 116 (such as through IDE 106 or otherwise). The worklist items are thus tracked and executed, or performed, by developers 116, using IDE 106. This is indicated by block 242 in
ALM system 104 then sends this information back to project lifecycle services system 102 (or it is retrieved by system 102 from system 104). This is indicated by block 248 in
Once the information is received, it is synchronized to unified worklist 148 by synchronization component 142. This is indicated by block 258 in
When a user 110 wishes to see an update for a given project, or status summary for a given project, user 110 illustratively provides inputs through suitable user interface displays 112, to report generator component 144. Report generator component 144 then accesses the stored unified worklist 148, and performs various analytics on the information in the unified worklist 148 to generate a report, such as project status report 152. Performing analytics on the synchronized worklist in the project lifecycle services system 102 is indicated by block 260 in
By way of example, the status report can include a percent of the issues which have been completed or resolved. This is indicated by block 264. It can include an identification of individual list items that have been completed, and those that are still outstanding. This is indicated by block 266. It can include a risk analysis section that identifies which portions of the project are at risk, and the particular issues involved. This indicated by block 268. It can include a wide variety of other information as well, as indicated by block 270.
The user first accesses one or more user interface displays generated by report generator component 144 that allows the user to define the particular items the user wants in the report, and specify the particular analytics to be applied. This can be done by selecting one of a variety of pre-configured report formats or by defining a new report using suitable user input mechanisms (e.g., text boxes, search boxes, dropdown menus, etc.).
When the user actuates one of user input mechanisms 282 to view the report, the user can, by way of example, be navigated to a highlights page such as user interface display 284 shown in
In the embodiment shown in
User interface display 300 includes a title 302 that indicates that the information displayed thereon is for the “analyze” phase of the project. In the embodiment shown in
In one embodiment, each of the items 306-320 in checklist 304 are also actuatable user input mechanisms. When they are actuated by the user, they illustratively navigate the user to underlying information that has been generated for that particular list item in checklist 304. For example, if the user actuates the fit gap analysis user input mechanism for the list item 318 in checklist 304, the user can illustratively be navigated to an underlying gap list, such as that shown in user interface display 326 in
User interface display 326 illustratively displays a total number of gaps (at 328) that have been identified (such as by business process modeler service 130 during the analysis phase) along with the area of those gaps (such as integrations, work flows, reports, etc.) and a gap breakdown for each area, along with the number of hours that are projected as being needed to develop code to fill the gap. Display 326 also shows a percent completed, which indicates how much of the development has already been performed in order to fill the various gaps in each area. This information can be presented in tabular form as shown at 330, or in chart form as shown at 332 and 334 or in other ways. Display 326 also, itself, includes a plurality of additional user input mechanisms 336 that allow the user to view additional details corresponding to the gap list, or to refresh the information shown on display 326.
In addition, each of the items of information in table 330 or in charts 332 and 334 is illustratively a user actuatable input mechanism. Therefore, when the user actuates a given item (such as an item in table 330) the user will illustratively be navigated to a more detailed display showing more details corresponding to the actuated item. Similarly, charts 332 and 334 can be interactive as well so when the user actuates an item in one of charts 332 or 334, the user is illustratively navigated to more detailed information for that actuated item as well. When the user actuates any of the user actuable input mechanisms, the user can also navigate to the particular object that is to be modified so the items are directly actionable from the displayed user actuatable input mechanism.
Display 358 is similar to display 326 corresponding to the gap list, except that it is for customizations. It includes more detailed information indicating how many customizations are required, what area those customizations are required in, and the percentage of the customizations, in each area, that have already been made. This can be shown in a wide variety of different ways, such as in a table 360, or in one of a variety of different chart views, such as chart view 362, or chart view 364, or other views. Again, the items in table 360 and chart views 362 and 364 can be actuable so when they are actuated by the user they navigate the user to more detailed information.
When the user actuates the deploy and maintain phase user input mechanism 368 in
By way of example,
In one embodiment, project status report 152 also illustratively includes a risk assessment portion.
Risk section 392 illustratively describes the various risks that may indicate that a given project will not be completed on time, or that the customer's expectations or requirements will not be met. The risks can be identified in a variety of different ways. They can be items that are identified as being a sufficient time behind schedule. They can be items where developers have indicated that the worklist items are not addressable. They can be items where developers have indicated they will not be providing the requested functionality or that the requested functionality cannot be implemented without a large departure from the budget or schedule, or in other ways. The risk identifier describes the risk and the particular project that the risk is associated with. The mitigation section 394 illustratively describes various actions that can be taken (such as tasks to be performed, customizations to be generated, a suggested redeployment of development resources, etc.) that can be performed in order to mitigate or eliminate the corresponding risk.
It can thus be seen that architecture 100 provides an integration between systems 102 and 104 to enable users to synchronize work tasks and work items in the two systems and to track and trace these work items throughout the lifecycle of a given project. The unified worklist is illustratively a list of actionable items that can be tracked and executed and related to various work items in system 104. The status and other information corresponding to the unified worklist is synchronized back to system 102, and analytics are provided to analyze the items on the unified worklist to generate a wide variety of different kinds of status reports. Issues can thus be traced from the very earliest phases of a project (such as business requirement gathering) all the way through requirement delivery during an implementation, and even after implementation into the maintenance phase.
A number of the figures discussed above show processors (such as processors 122 and 172). It will be appreciated that user device 114 and IDE 106, as well as any user devices used by users 118, can include processors as well. The processors are illustratively computer processors with associated memory and timing circuitry (not always separately shown). They are illustratively a functional part of the device or system to which they belong, are activated by the various components and other items in that system or device, and facilitate their functionality.
The above discussion has also mentioned a number of data stores, such as data store 124 and data store 170. It will be appreciated, however, that IDE 106 and business system 108 can also have data stores, as can other items in the architecture described above. The data stores can be local to the environments or systems which use them, or they can be remote from those environments and systems, and accessible by them. In addition, where a single data store is shown, multiple different data stores can be employed. All of the multiple different data stores can be local to the system or environment that uses it, or they can all be remote therefrom, or some can be local while others are remote.
It will also be appreciated that a number of different blocks are shown in the Figures discussed above, and functionality is attributed to them. However, the blocks can be combined so that the same functionality is performed by fewer components, devices, or environments, or additional blocks can be added, so that the functionality is further distributed. All of these configurations are contemplated herein.
The discussion above has referred to some exemplary user input mechanisms on exemplary user interface displays. The user input mechanisms on the UI displays can take a wide variety of different forms. For instance, they can include icons, check boxes, text boxes, drop down menus, links, etc. The user input mechanisms can also be actuated in a wide variety of different ways. For instance, they can be actuated using point and click devices (such as a mouse or track ball), using hardware keyboards, keypads, buttons, thumb switches, joysticks, etc. In addition, they can be actuated using virtual keyboard or keypads or using other virtual actuating mechanisms. Further, where the device that generates the UI displays includes speech recognition components, the user input mechanisms can be actuated using voice commands. Also, where the display device on which the UI displays are displayed is a touch sensitive screen, the user input mechanisms can be actuated using touch gestures.
The description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides substantially seamless pooling of resources, as well as a reduced need to manage and configure underlying hardware infrastructure.
A public cloud is managed by a vendor and typically supports multiple consumers using the same infrastructure. Also, a public cloud, as opposed to a private cloud, can free up the end users from managing the hardware. A private cloud may be managed by the organization itself and the infrastructure is typically not shared with other organizations. The organization still maintains the hardware to some extent, such as installations and repairs, etc.
In the embodiment shown in
It will also be noted that architecture 100, or portions of it, can be disposed on a wide variety of different devices. Some of those devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palm top computers, cell phones, smart phones, multimedia players, personal digital assistants, etc.
Under other embodiments, applications or systems are received on a removable Secure Digital (SD) card that is connected to a SD card interface 15. SD card interface 15 and communication links 13 communicate with a processor 17 (which can also embody processors 122 or 172 from
I/O components 23, in one embodiment, are provided to facilitate input and output operations. I/O components 23 for various embodiments of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches and output components such as a display device, a speaker, and or a printer port. Other I/O components 23 can be used as well.
Clock 25 illustratively comprises a real time clock component that outputs a time and date. It can also, illustratively, provide timing functions for processor 17.
Location system 27 illustratively includes a component that outputs a current geographical location of device 16. This can include, for instance, a global positioning system (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning system. It can also include, for example, mapping software or navigation software that generates desired maps, navigation routes and other geographic functions.
Memory 21 stores operating system 29, network settings 31, applications 33, application configuration settings 35, data store 37, communication drivers 39, and communication configuration settings 41. Memory 21 can include all types of tangible volatile and non-volatile computer-readable memory devices. It can also include computer storage media (described below). Memory 21 stores computer readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. Application 154 or the items in data store 156, for example, can reside in memory 21. Similarly, device 16 can have a client business system 24 which can run various business applications or embody parts or all of system 118 or other systems or environments. Processor 17 can be activated by other components to facilitate their functionality as well.
Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. Application configuration settings 35 include settings that tailor the application for a specific enterprise or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items such as GPRS parameters, SMS parameters, connection user names and passwords.
Applications 33 can be applications that have previously been stored on the device 16 or applications that are installed during use, although these can be part of operating system 29, or hosted external to device 16, as well.
The mobile device of
Note that other forms of the devices 16 are possible.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. It includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810. The logical connections depicted in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
It should also be noted that the different embodiments described herein can be combined in different ways. That is, parts of one or more embodiments can be combined with parts of one or more other embodiments. All of this is contemplated herein.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.