1. Field
This disclosure relates generally to computerized project management, and, more specifically, to a computer-implemented system and method for integrating computerized diagramming software and computerized project management software.
2. Background
The execution of complex projects are typically supported by project management software and diagramming software. Project management software is traditionally used to create project plans that enable project execution by coordinating time allocation, budget estimation, personnel deployment, communication, scheduling, product deployment and product testing. Diagramming software is used to produce graphic architectural diagrams illustrating project concepts such as software and/or hardware entities, data flows and system dependencies. Naturally, certain project entities may be represented on both the project plan and the architectural diagram.
Even through the project plan and the architectural diagram share much common information, the plan and diagram must nevertheless be created independently, greatly increasing the amount of labor required. Similarly, deviations between the architecture diagram and the product management plan may be inadvertently created through mishandled updates, errors, omissions and revisions. There is no easy to way to detect or correct the deviations outside of tedious manual examination of the diagram and the plan. Finally, the accessibility of information on the plan and diagram is hampered by the lack of mutual communication. Users must switch between the two documents to find in one document information referenced in one the other.
In one aspect of this disclosure, a computer implemented method and system is disclosed that integrates project planning software and diagramming software (hereinafter, the “integrator”). The integrator functions by capitalizing on a consistent format of entities and concepts on a project architecture diagram. A project template is stored in a database, the project template comprising at least two component tasks. The project template is associated with an architecture entity identifier. A project architecture diagram is received comprising at least one diagram entity, each diagram entity being associated with at least one diagram entity identifier. The diagram entity identifier is compared to the architecture entity identifier to identify the project template as the project template associated with the diagram entity. A project component is generated from the identified project template, the project component corresponding to the diagram entity and populated with the component tasks from the identified project template. A project work plan is populated with the project component.
The foregoing has outlined rather generally the features and technical advantages of one or more embodiments of this disclosure in order that the following detailed description may be better understood. Additional features and advantages of this disclosure will be described hereinafter, which may form the subject of the claims of this application.
This disclosure is further described in the detailed description that follows, with reference to the drawings, in which:
This application discloses a computer-implemented integrator that integrates project planning software and diagramming software. The integrator functions by capitalizing on a consistent format of entities and concepts on a project architecture diagram. Architectural diagrams may implement a consistent format of recognizable, predefined shapes, labels and other identifiers to represent project entities. For example, a hardware system project entity, such as a database, may be represented consistently with a cylinder, and labeled consistently as a “database.” The integrator disclosed herein may utilize the cylinder shape or “database” label as one or more identifiers, enabling the integrator to automatically detect the type of entity that is represented based on the identifier, retrieve a predefined template associated with the identifier, and translate the entity into a corresponding entity.
Pre-defined templates may each correspond to different types of project components, or subdivisions within the project. For example, development of a large-scale project may involve the deployment of new software, which would comprise a number of sub-tasks, such as requirements gathering, high-level software design, software architectural approval, low-level design, coding, deployment and then a number of testing levels. Software deployment may therefore be represented with a template comprising the above listed sub-tasks. Each template may be represented with an identifier corresponding to the type of entity that is represented.
When the integrator receives a project architecture diagram, the integrator may utilize the identifier to select a template for representation of an entity on the project architecture diagram. Then, using the templates, each entity may be translated into a project component on a project work plan. Each project component would be fully populated with tasks (from the template), worker assignments and information related to execution and creation of the entity. The integrator then maintains the association between the project work plan and the diagram, so updates and changes made on one are automatically reflected on the other, and information available on one is automatically available on the other as well.
The software templates 100 and hardware template 115 may be used in conjunction with a task-worker association table to automatically generate work components on a project work plan, and then assign them to personnel.
Each generated plan component may also include a man-hour field 245, a start date field 250 and an end-date field 255. During generation of the project work plan, the integrator 330 may ask the user input a total estimated time (such as a number of man-hours) for the completion of each plan component, and a start date for each components. Using the total number of man-hours, the integrator may determine, for example, an approximately number of man-hours to complete each task, based on the corresponding associated percentage. Similarly, using at least a start date and a known number of man-hours, the integrator 330 may calculate an end date for the plan component, which is then displayed in the end date field 255.
For example, a total of sixteen man-hours may be allocated for the generated plan component 220 (and therefore be shown in the man-hour field 245). With a start date of Jan. 1, 2014, and an average of eight man-hours per day, the integrator 330 may determine an estimated end date for the generated plan component to be Jan. 3, 2014, or two work days from the start date (shown respectively in the start date field 250 and end date field 255). The integrator 330 may also display a man-hour field total 260, start date summary 265 and end date summary 270, which summarizes the same information, but for the totality of the project. The man-hour field total 260 may comprise the total man-hour investment for all generated plan components “A” 220, “B” 225 and “C” 230. Similarly, the start date summary 265 may detail the start date for the project, which (in this case) coincides with the start date for the first generated plan component “A” 220. The end date summary 270 may similarly coincidence with the end date for the last generated plan component “C” 230.
The integrator 330 therefore provides for automatic generation of project work plans from existing project architecture diagrams. After the project work plan has been generated, the interdependency between the project architecture diagram and the project work plan may be maintained by the integrator 330, enabling, for example, mutual updating of the diagram and project work plan when a change is made to either. Similarly, information particular to project work plan, such as the man-hour fields 245, start dates 250 and end dates 255 may be made available on the project architecture diagram, eliminating the need for users to backtrack across two separate documents to find needed information. The integrator may also handle more complex dependencies, worker assignments, man-hour and end date calculations. For example, rather than the sequentially progressing example discussed above, an alternative project may have two generated plan components being executed simultaneously. As a result, the total man hour field total 260 would not be the sum of the individual man hour fields 245 for the respective generated plan components, but rather, the longer of the two (as they are being completed simultaneously). Other similarly more complex situations may be handled automatically by the computer-implemented integrator system and method disclosed herein.
The integrator 330 may comprise a software process operating within memory 325 of the computer system 300. The integrator 330 operates in conjunction with project planning software 335 and architecture diagramming software 340. Project planning software 335 and architecture diagramming software 340 may comprise commercially available software solutions for project planning and architecture diagramming, such as Microsoft® Project®, or Microsoft® Visio®. The integrator 330 may communicate with the project planning software 335 and architecture diagramming software 340 through the use of plug-ins or other adaptive software components. The integrator 330 may also utilize a graphical user input (GUI) for interacting with, outputting information to and receiving inputs from users of the integrator 330.
Subsequently, users may create templates for all to-be implemented work plan components of the prospective project work plan (step 405) (such as the software templates 100 and 115 of
A table of available workers for the project may be created, and each worker may be associated with one or more work tasks (step 420). As described above, these associations will be used later to automatically assign workers to work tasks, work plan components or templates. Notably, the integrator 330 may allow users to overrule the automatic assignments when desired, and/or manually assign workers to work tasks, work plan components and project work plans.
Finally, the integrator 330 receives a project architecture diagram (step 425). The integrator 330 may receive the project architecture diagram in a variety of ways. For example, the integrator 330 may retrieve the project architecture diagram from the architecture diagramming software 340 (from
The integrator 330 then compares the relevant identifiers of the current entity to the stored entity identifiers to determine which template should be used to generate a work plan component corresponding to the current entity (step 510). For example, if the entity identifiers are labels, the integrator 330 must first obtain text related to the current entity. The integrator 330 may directly access this information by interfacing with the architecture diagramming software 340. Alternatively, the integrator 330 may utilize pattern recognition to parse text (using, for example, optical character recognition) associated with the current entity or recognize shape-based identifiers. Once the relevant identifier has been retrieved, it may be compared to the stored identifiers (from step 410) to determine which template should be associated with the current entity. Once a match has been found, the identified template may be retrieved from storage (step 515). The integrator 330 may then generate a work plan component from the identified template by, for example, interfacing with the project planning software 335 and using the appropriate in-program calls and commands to generate the component in accordance with the identified template (step 520). The integrator 330 then returns to step 500 and determines whether there is another unprocessed entity in the diagram. If there is, the process repeats. If there is not, then the project work plan is deemed to have been successfully generated (step 525), and the method may proceed to
The integrator 330 may also perform more complex determinations of a total number of man-hours for the completion of individual work plan components and/or the completion of the work project plan. For example, if a work plan component contains a number of work tasks that may be executed simultaneously, the integrator 330 may recognize that an estimated completion date should be formulated based on the estimated man-hour requirement to complete longest of the work tasks (as it is with a number of parallel tasks), rather than the sum of all the man-hour requirements to complete all the work tasks (as it is with a sequentially progressing set of work tasks). Even more complex determinations may be performed. For example, a work plan component may comprise a plurality of work tasks, some executed sequentially, others executed simultaneously, and others executed only when some previous work task (or a group of work tasks) has completed. Integrator 330 may in such cases traverse a “map” of the work tasks, keep separate man-hour totals for each parallel executing threads of work tasks (of which some may overlap), until all parallel threads come to a conclusion, and then select the highest man-hour total as the estimated man-hour requirement to complete the work project component. Any algorithm may be used as appropriate.
Instead, the information may populate hidden fields that appear upon request. Therefore, when integrator 330 receives a request to display the information in the project architecture diagram, the hidden fields may be displayed to the user (step 905). Similarly, the integrator 330 may populate the project work plan with any information from the architecture diagram (step 910), and display this information when the user submits some request to view the information on the project work plan (step 915).
Similarly, the integrator 330 may receive an update to the project work plan (step 1020). For example, the project work plan may be edited with the project planning software 335 (from
The integrator 330 may at any point receive a request from a user to group the work plan components of the project work plan by release batch (step 1120). The integrator 330 may subsequently organize the work plan components by release batch so that work plan components having the same release batch indicator are placed within a single developmental branch of the project work plan (step 1125). This will ensure that a development team following the project work plan will complete all work plan components in accordance with planned release batches, as indicated on the project work plan,
The network interface device may provide the computing system with access to a network, which may be a wireless or wired connection. The network may be, for example, the Internet, a corporate intranet, or any other computer network through which the computing system may connect to or otherwise communicate with other computers and database. Software process or processes and executables on the computing system may be used to provide human interfaces (such as a graphical user interface), and to store and initiate computer program instructions used to process and analyze data. Computer program code for carrying out operations described herein may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, C++, C# or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the computing system, partly on the computing system, as a stand-alone software package, partly on the computing system and partly on a remote computer or server, or entirely on a remote computer or server.
This application was described above with reference to flow chart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to one or more embodiments. It is understood that some or all of the blocks of the flow chart illustrations and/or block diagrams, and combinations of blocks in the flow chart illustrations and/or block diagrams, can be implemented by computer program instructions. The computer program instructions may also be loaded onto the computing system to cause a series of operational steps to be performed on the computer to produce a computer implemented process such that the instructions that execute on the computer provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block(s). These computer program instructions may be provided to the CPU of the computing system such that the instructions, which execute via the CPU of the computing system, create means for implementing the functions/acts specified in the flowchart and/or block diagram block(s).
These computer program instructions may also be stored in a computer-readable medium that can direct the computing system to function in a particular manner, such that the instructions stored in the computer-readable medium implement the function/act specified in the flowchart and/or block diagram block or blocks. Any combination of one or more computer usable or computer readable medium(s) may be utilized. The computer-usable or computer-readable medium may be, for example (but not limited to), an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory, a read-only memory, an erasable programmable read-only memory (e.g., EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory, an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Any medium suitable for electronically capturing, compiling, interpreting, or otherwise processing in a suitable manner, if necessary, and storing into computer memory may be used. In the context of this disclosure, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in base band or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including (but not limited to) wireless, wire line, optical fiber cable, RF, etc.
Having described and illustrated the principles of this application by reference to one or more preferred embodiments, it should be apparent that the preferred embodiment(s) may be modified in arrangement and detail without departing from the principles disclosed herein and that it is intended that the application be construed as including all such modifications and variations insofar as they come within the spirit and scope of the subject matter disclosed.