Embodiments of the present invention relate generally to methods and systems for project management and more particularly to methods and systems for providing a graphical, interactive representation of activities within a project.
Project management applications provide functions for the planning and scheduling, resource allocation, budget control, and other aspects of managing large scale projects. These applications typically provide a collaborative environment in which users can view and interact with information related to the project. For example, scheduled activities and milestones for the project can be represented in various ways including Gantt charts, PERT diagrams, etc. displayed to the users of the project management application.
In order to plan and manage a large project it is essential to understand that project's structure in depth, including the duration of each activity and its dependencies on other activities. Unfortunately, it is very difficult to visualize large projects. Techniques such as Gantt charts and PERT network diagrams do not scale well and are of limited value. Currently, users of project management applications often either painstakingly tape together printed, mural-sized charts on a weekly basis or rely primarily on spreadsheets. These techniques are frustrating, time-consuming, and error-prone. Hence, there is a need for improved methods and systems for representing activities within a project.
Embodiments of the invention provide systems and methods for providing a graphical, interactive representation of activities within a project. According to one embodiment, a method for providing a graphical, interactive map representing a project can comprise reading a description of the project. The description can define a plurality of activities in the project and one or more milestones for the project. The plurality of activities and one or more milestones can comprise elements of the map. One or more ordered lists of elements can be generated based on the description. The one or more ordered lists can be arranged in one or more levels. The map can be drawn based on the levels of ordered lists.
Generating one or more ordered lists of elements can comprise determining for each element of the map and based on the description, a predecessor element, a start time, and an end time. A flexible width can be determined for each of a plurality of time periods. The plurality of time periods together can include the start times and end times of the elements of the map. A position on the map and a width of a graphical representation of each element of the map can be determined and a terminus for each element of the map can be identified. One or more ordered lists of successor elements can be created based on the identified terminus of each element. A level within the map can be determined for each of the one or more ordered lists. A float limit can be identified for each level. In some cases, a first level within the map and a second level within the map can be collapsed or combined if the first level and the second level do not overlap.
Determining for each element of the map a predecessor element, a start time, and an end time can comprise creating a table mapping an element identifier to a sequence number for each element of the map. A determination can be made as to whether at least one starting element is represented in the table. In response to determining at least one starting element is represented in the table a predecessor, start time and end time can be set for each starting element and any elements other than starting elements.
Determining the flexible width for each of the plurality of time periods can comprise determining a width of each of a plurality of periods. Each period can include one or more elements. Determining the width of each of the plurality of periods can be based on a duration of the activities in the period. The period width can be expanded for any period including at least one milestone. A position in the map can be determined for each of the plurality of periods based on a sum of period widths for periods prior to each period.
Determining the position on the map and the width of the graphical representation of each element can comprise setting margins between sequential elements to a predetermined amount. Position values can be set for each activity based on start time, end time, and margin for each activity. Position values can be set for each milestone based on start time and a predetermined milestone width. Positions of predecessor elements of milestones can be adjusted based on the positions of the milestones and the predecessors.
Identifying the terminus for each element can comprise identifying an element with a latest end time. The element with the latest end time can be assigned as a terminus of itself. A terminus of preceding elements in the same sequence can be assigned based on the sequence. Identifying an element with a latest end time, assigning the element with the latest end time as a terminus of itself, and assigning a terminus of preceding elements in the same sequence based on the sequence can be repeated until all of the elements are assigned a terminus.
Creating the one or more ordered lists of successor elements can comprise determining whether an element is an initial element in a sequence. In response to determining the element is the initial element in the sequence, the successor list can be left empty. In response to determining the element is not the initial element in the sequence, the element can be added to the ordered list for the sequence based on the terminus of the element and the termini of other elements in the ordered list. Determining whether an element is an initial element in a sequence and leaving the successor list empty or adding the element to the ordered list for the sequence can be repeated until all elements are added to an ordered list.
Determining the level within the map for each of the one or more ordered lists can comprise identifying an element with a latest end time. The identified element can be set as a terminus of a longest remaining sequence. Immediate predecessors can be added to the longest remaining sequence until an initial element is found. Identifying an element with a latest end time, setting the identified element as a terminus of a longest remaining sequence, and adding immediate predecessors to the longest remaining sequence can be repeated until an initial element is found until all elements are assigned.
Identifying the float limit for each level can comprise setting a float limit for a terminus of each ordered list based on an earliest start time for a predecessor element in the ordered list. A number of levels assigned can be identified based on a number of ordered lists. A determination can be made as to whether the number of levels exceeds a predetermined threshold. In response to determining the number of levels exceeds the predetermined threshold, edge positions can be set for each level, a first level within the map and a second level within the map can be collapsed if the float limit for the first level is less than a start time of an initial element of the second level and a predetermined margin, and a space between levels can be adjusted.
Drawing the map can comprise drawing a time scale based on the plurality of time periods. The elements can be drawn based on the ordered lists. The determined float limits can be drawn based on the time scale. Successor lines between the elements can be drawn based on the ordered lists.
According to another embodiment, a computer-readable memory can have stored thereon a sequence of instructions which, when executed by a processor, causes the processor to provide a graphical, interactive map representing a project by reading a description of the project. The description can define a plurality of activities in the project and one or more milestones for the project. The plurality of activities and one or more milestones can comprise elements of the map. For each element of the map and based on the description, a predecessor element, a start time, and an end time can be determined. A flexible width can be determined for each of a plurality of time periods. The plurality of time periods together can include the start times and end times of the elements of the map. A position on the map and a width of a graphical representation of each element of the map can be determined and a terminus can be identified for each element of the map. One or more ordered lists of successor elements can be created based on the identified terminus of each element. A level within the map can be determined for each of the one or more ordered lists and a float limit can be identified for each level. In some cases, a first level within the map and a second level within the map can be collapsed if the first level and the second level do not overlap. The map can be drawn based on the levels of ordered lists.
According to yet another embodiment, a system can comprise a processor and a memory communicatively coupled with and readable by the processor. The memory can have stored therein a sequence of instructions which, when executed by the processor, cause the processor to provide a graphical, interactive map representing a project by reading a description of the project. The description can define a plurality of activities in the project and one or more milestones for the project. The plurality of activities and one or more milestones can comprise elements of the map. One or more ordered lists of elements can be generated based on the description. The one or more ordered lists can be arranged in one or more levels and the map can be drawn based on the levels of ordered lists
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of various embodiments of the present invention. It will be apparent, however, to one skilled in the art that embodiments of the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.
The ensuing description provides exemplary embodiments only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing an exemplary embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.
Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
Also, it is noted that individual embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in a figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination can correspond to a return of the function to the calling function or the main function.
The term “machine-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data. A code segment or machine-executable instructions may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium. A processor(s) may perform the necessary tasks.
Embodiments of the invention provide systems and methods for providing a graphical, interactive representation of activities within a project. More specifically, embodiments of the present invention provide a project mapper that can provide a visualization, i.e., a map, of activities and milestones in a project. This map can be delivered as a touchable, zoomable, interactive representation for display, for example on a hand-held tablet or other portable device. Unlike PERT charts, which are zero-dimensional nodes arranged arbitrarily in space, and Gantt charts which are one-dimensional bars stacked in random order, project maps as described herein can be fully two dimensional in that group width can show length of critical paths and group height can show amounts of concurrent activity. Sequential activities can be arranged sequentially in a way that clarifies both critical and the sub-critical paths harder to see using earlier methods. According to one embodiment, a “flexible timeline” technique can be used to include zero-duration milestone events that take up space but not time and to make visual elements of different sizes more manageable. Activities can be represented as boxes designed to be nested and used as a canvas to overlay additional analytics like progress and resource allocation.
The project map can be comprised of an overview map plus distinct maps for each collapsed group, a system that provides meaningful views at any point regardless of the depth of the project's work breakdown structure. A viewer interface for presenting the map can allow panning, zooming, and drilling to sub-maps in an intuitive way. A full project timeline and moving reference box can be used to prevent users from becoming disoriented as they explore a large project. Additional information can be displayed as map elements become larger during zooming. Multiple modes, including a progress mode and a resources mode can provide additional information displays against the context of the map. A pullout list and project inspector enables searching and filtering.
The project mapper provides a significantly better visualization of a project, regardless of project size. Users can understand duration and dependency relationships much more quickly and easily than was earlier possible. The map provides a consistent context against which to display other information in a meaningful way. Subtle problems and hidden patterns are made obvious in a way not possible before. Various additional details of embodiments of the present invention will be described below with reference to the figures.
In some embodiments, the system 100 may also include a network 115. The network may can be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, the network 115 maybe a local area network (“LAN”), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network (“VPN”); the Internet; an intranet; an extranet; a public switched telephone network (“PSTN”); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.11 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks such as GSM, GPRS, EDGE, UMTS, 3G, 2.5 G, CDMA, CDMA2000, WCDMA, EVDO etc.
The system may also include one or more server computers 120, 125, 130 which can be general purpose computers and/or specialized server computers (including, merely by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers rack-mounted servers, etc.). One or more of the servers (e.g., 130) may be dedicated to running applications, such as a business application, a web server, application server, etc. Such servers may be used to process requests from user computers 105, 110. The applications can also include any number of applications for controlling access to resources of the servers 120, 125, 130.
The web server can be running an operating system including any of those discussed above, as well as any commercially-available server operating systems. The web server can also run any of a variety of server applications and/or mid-tier applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, business applications, and the like. The server(s) also may be one or more computers which can be capable of executing programs or scripts in response to the user computers 105, 110. As one example, a server may execute one or more web applications. The web application may be implemented as one or more scripts or programs written in any programming language, such as Java™, C, C# or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming/scripting languages. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, IBM® and the like, which can process requests from database clients running on a user computer 105, 110.
In some embodiments, an application server may create web pages dynamically for displaying on an end-user (client) system. The web pages created by the web application server may be forwarded to a user computer 105 via a web server. Similarly, the web server can receive web page requests and/or input data from a user computer and can forward the web page requests and/or input data to an application and/or a database server. Those skilled in the art will recognize that the functions described with respect to various types of servers may be performed by a single server and/or a plurality of specialized servers, depending on implementation-specific needs and parameters.
The system 100 may also include one or more databases 135. The database(s) 135 may reside in a variety of locations. By way of example, a database 135 may reside on a storage medium local to (and/or resident in) one or more of the computers 105, 110, 115, 125, 130. Alternatively, it may be remote from any or all of the computers 105, 110, 115, 125, 130, and/or in communication (e.g., via the network 120) with one or more of these. In a particular set of embodiments, the database 135 may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers 105, 110, 115, 125, 130 may be stored locally on the respective computer and/or remotely, as appropriate. In one set of embodiments, the database 135 may be a relational database, such as Oracle 10g, that is adapted to store, update, and retrieve data in response to SQL-formatted commands.
The computer system 200 may additionally include a computer-readable storage media reader 225a, a communications system 230 (e.g., a modem, a network card (wireless or wired), an infra-red communication device, etc.), and working memory 240, which may include RAM and ROM devices as described above. In some embodiments, the computer system 200 may also include a processing acceleration unit 235, which can include a DSP, a special-purpose processor and/or the like.
The computer-readable storage media reader 225a can further be connected to a computer-readable storage medium 225b, together (and, optionally, in combination with storage device(s) 220) comprehensively representing remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing computer-readable information. The communications system 230 may permit data to be exchanged with the network 220 and/or any other computer described above with respect to the system 200.
The computer system 200 may also comprise software elements, shown as being currently located within a working memory 240, including an operating system 245 and/or other code 250, such as an application program (which may be a client application, web browser, mid-tier application, RDBMS, etc.). It should be appreciated that alternate embodiments of a computer system 200 may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed. Software of computer system 200 may include code 250 for implementing embodiments of the present invention as described herein.
According to one embodiment, the server 305 can also include a project mapper module 320 having access to the project data 315. It should be noted that, while illustrated here as separate from the project manager module 310 for the sake of simplicity and clarity, the project mapper module 320 may, depending upon the exact implementation, be part of the project manager module 310 or application or another application or module of the server 305 or even another computer system. Additionally, it should be understood that the project mapper module 310 can be implemented on another device rather than on the server 305. For example, the project mapper module 310 can be implemented on a client device 330 such as a personal computer, tablet, cell phone or other mobile device, etc. that reads project activity descriptions 316 from the server 305 and then performs the various processes described below for generating and drawing or rendering a project map locally, on that device.
Generally speaking and regardless of where it is executing, the project mapper module 320 can execute an algorithm that can draw a project map 325 for an arbitrarily complex group such as activities and milestones represented in the project data 315. More specifically, the project map 325 can be generated from a description 316 of the project stored in the project data 315 as a property list. According to one embodiment, each activity and milestone of the project can be represented in the description 316 as:
For example, Table 1 below shows a set of 40 activities and milestones described in a property list. In this example, the activities have up to 5 predecessors with one initial activity (activity number 4):
It should be noted that, for illustrative purposes, the elements, i.e., the activities and milestones, represented in this table are represented as an exemplary map in
As noted above, the project mapper module 320 can execute an algorithm that can draw a project map 325 (such as map 400 of
Stated another way, generating and providing a graphical, interactive map representing a project can begin with reading a description of the project. The description can define a plurality of activities in the project and one or more milestones for the project. The plurality of activities and one or more milestones can comprise elements to be presented in the map. Generally speaking, one or more ordered lists of elements, i.e., activities and milestones to be presented in the map, can be generated based on the description. The one or more ordered lists can be arranged in one or more levels and displayed in the map. More specifically, generating one or more ordered lists of elements can comprise determining for each element of the map and based on the description, a predecessor element, a start time, and an end time. A flexible width can be determined for each of a plurality of time periods. The plurality of time periods together can include or span the start times and end times of the elements of the map, i.e., represent the span of the project. Next, a position on the map and a width of a graphical representation of each element of the map can be determined. A terminus can be identified for each element of the map. One or more ordered lists of successor elements can be creating based on the identified terminus of each element. Once the ordered lists have been created, a level within the map can be determined for each of the one or more ordered lists. A float limit for each level can also be identified In some cases, a first level within the map and a second level within the map may be collapsed or combined into a single level if the first level and the second level do not overlap. Finally, the map can be drawn based on the levels of ordered lists. This algorithm and processes thereof will be described in greater detail below with reference to
Once generated, the project map 325 can be sent to client device 330 for rendering by viewer 335. The client device 330 can comprise any of a wide variety of computing devices including but not limited to a personal computer, tablet, cell phone or other mobile device, etc. The viewer 335 can comprise an application adapted to receive and render the project map 325 for viewing on the client device 330 and for supporting interaction with the user, e.g., scrolling, zooming, selecting, receiving various other inputs, etc. An example of such an interface, as may be presented on a mobile device such as a tablet, is described in greater detail below with reference to
Also as illustrated here, activities 410 can be represented as boxes or rectangles of varying widths depending upon or related to the duration of the particular activity. Additionally, milestones 415 can be represented, for example as a diamond of a fixed width. The project map 400 as illustrated here can be fully two dimensional in that group width, i.e., the width of a set of activities and milestones, can show length of critical paths and group height can show amounts of concurrent activity. Sequential activities can be arranged sequentially and connected by successor lines 420 in a way that clarifies both critical and the sub-critical paths harder to see using earlier methods. Activities 410 and milestones 415 represented in the map 400 can be nested in any of a number of levels and used as a canvas to overlay additional analytics like progress and resource allocation (not shown here for the sake of simplicity and clarity). Exemplary processes for generating such a map will now be described.
More specifically, generating one or more ordered lists of elements can comprise determining 510 for each element of the map and based on the description, a predecessor element, a start time, and an end time. Additional details of an example of such a process is described below with reference to
Generating the map can begin with identifying a primary predecessor. By identifying one predecessor among multiples, a tangled web of relationships between the activities and milestones of the project can be transformed into a series of distinct sequences that can then be arranged meaningfully in space. The primary predecessor can be defined as the predecessor with the latest end day. If the latest end day is shared by two or more predecessors, the one with the highest ID number can be selected.
A process for identifying predecessors can first identify the initial activities (activities with no predecessor) and sets them to start on day 1. It can then repeatedly scan and rescans the remaining activities, working outward from the initial activities. Once all the predecessors of a given activity have been assigned start and end days, that activity can be assigned its own primary predecessor, which in turn determines its own start and end days. This makes it possible to define assignments for succeeding activities. The process continues until all activities are accounted for. So for example, the map can begin on day 1 and start days of activities can be given as day numbers relative to that. End days can be set to start day+duration−1; one-day tasks start and end on the same day.
Milestones, i.e., 0-duration activities can be handled differently. Milestones can occur by themselves, or can form chains, the first dependent upon a preceding activity, the rest dependent on preceding milestones—all taking up space in the map but no time. To represent this, milestones can set both start and end days to the end day of their primary predecessor+0.1. For example, if an initial 3-day task was followed by a milestone, the milestone's start and end days can be set to 3.1. If another milestone was dependent on the first, and yet another on the second, the remaining milestones in the chain can be assigned start and end days of 3.2, 3.3, 3.4, etc.
To deal with hard-coded start dates, this algorithm can first determine the actual calendar date defined for day 1 of the project, use it to derive calendar dates from relative dates, and then increase the start date for any activity with a later hard-coded date. If a hard-coded date precedes a relative date based on dependencies, the dependencies can prevail, but a warning or exception can be shown to the user.
Stated another way, an example of this process can be outlined as:
Next, day widths in pixels can be determined, forming a flexible timeline. These calculations can be based on a set of predefined widths. For example, the predefined widths can be stored in a table such as:
Each day of each activity can be assigned a minimum width based on the activity's duration using the set of fixed values stored in the Widths field (shown above). In this example, the field has 18 lines. Durations greater than 18 can use line 18 of the field.
According to one embodiment, one-day activities can have a fixed width of 25 pixels. Longer activity widths can be determined by the sum 3 values: Initial day widths; Inner day widths; and Final day width. The total number of initial days can equal one third of the duration (rounded down). The final day can include a margin, e.g., 5 pixels at the end for the margin between boxes in a sequence. For example, an activity of seven days would use line 7 of the Widths field, which has values 7, 6, and 11. Since 7/3=2, this activity had two initial days, 4 inner days, and one final day. Therefore its total width is 7+7+6+6+6+6+11=49 pixels. The box itself would be 44 pixels wide, with 5 pixels of padding at the end.
The total effect of this formula can be to produce a minimum box width for one-day tasks which then increases by 4 pixels for each additional day of duration. The day widths spanning this activity can vary in size, with the final day being wider than the rest to provide room for inter-box margins.
Once the minimum day widths are calculated for each activity in the map, the final day widths for the overall map can be determined. Each day of the time scale can be set to the maximum width required for the activities active during that day. Overall box widths can widen by different amounts, but relative sizing can be maintained (boxes with bigger durations can be wider than boxes with smaller durations), and boxes starting on a given day can have the same x coordinate.
Once this is done, a second pass can expand days which contain milestones or milestone chains. The final results can be stored in the Days field, which can hold values for each day of the project such as: Day number, starting with 1; Day width in pixels; and Day's x coordinate starting at 0 for day 1.
The previous two steps determine start and end days for each activity, and the width in pixels for each day in the flexible time scale. With these values, the starting x coordinate and pixel width for each activity box can be calculated. When determining the width of a box, the 5-pixel margin appended after every box in a sequence should be considered.
Milestone diamonds can be calculated separately. Since milestones (or possibly chains of milestones) can be appended to the final day of preceding activities, additional calculations can be used to calculate actual pixel width of those preceding activities.
These same adjustments can be made for the corner case of “parallel” activities that have the same starting position and duration as a milestone's primary predecessor. An example of this occurs for activities 67, 68, and 69 in the example map shown above in Table 1 and
Stated another way, an example of this process can be outlined as:
A “terminus” can be defined as the final activity in a sequence of activities. The termini of all sequences in a group can be performed so that parallel sequences can be arranged vertically according to sequence length. The longest (critical path) sequence can be drawn at the bottom of the group box, the next longest above that, and so on.
A process for finding the termini of map elements can find the last activity of the longest sequence and sets it as the terminus of all activities in that sequence. The process can then be repeated for the next longest sequence and continuing until all activities have a defined terminus. The final output can be a Termini field holding the terminating activity number and end day for each activity.
Stated another way, an example of this process can be outlined as:
At this point, predecessors for each activity have been identified. In order to draw branching lines to parallel sequences, each activity's successors can also be identified. When an activity has more than one successor, the successors can be ordered according to their termini, for example, with the successor at the head of the longest sequence branch coming first. Such an ordering can be used to causes the most critical paths to be drawn at the bottom of the map. According to one embodiment, if two branches have the same end day, the successor with the highest ID number can come first (closest to the bottom).
Stated another way, an example of this process can be outlined as:
A sequence level can be considered a sequence's vertical position within the map. For example, the bottommost position can be assigned level 1, the next highest level 2, etc. A process for determining sequence levels can determine initial levels based on sequence length (the longer the sequence, the lower its level). Adjustments to these levels can be made thereafter.
The process for determining sequence levels can find the terminus of the longest (critical path) sequence, set it to level 1, and call a recursive subroutine to start working backwards. When it hits a branching point a new level can be defined. The recursive subroutine can be called again for other sequences at that branching point. If those branches have branches of their own, more levels can be added. This process can be understood in view of the map 400 of
Stated another way, an example of this process can be outlined as:
Thus, separate levels have been assigned for each branch of each sequence in the group. In some cases, this can result in an unnecessarily tall map with much wasted space. Therefore, according to one embodiment, levels can be combined or collapsed whenever feasible and other adjustments can be made to produce a more compact and readable map.
For example, if no other activities depend on the final terminus activity of a given branched sequence, that activity can be free to float to the end of the group box and have a clear path (and thus its own separate level) to do so. But it often happens that the terminus of a branch will affect some later activity and so has a limit on how far it can float. These limits are shown in the map 400 of
According to one embodiment, branches in the map can be drawn at a predetermined height, e.g., 30 vertical pixels, per level for a consistent margin, e.g., 10 pixels between levels. This margin can be used to making the map more readable. But, branches can occur in clumps, bordered at points where the longest branch of one clump extends leftward over the smallest branch of the clump just below it. When levels are equally spaced it becomes harder to tell one clump from the next. To increase readability in these situations, the process can raise the long branch and levels above it by half a level (e.g., 15 pixels), creating an additional margin (e.g., 25 pixels) between clumps. The overall effect of this is to visibly partition related sets of branches, making the overall pattern easier to discern. In the example map 400 of
Stated another way, an example of this process can be outlined as:
At this point, the values to define each element of the map have been determined and the map can be drawn. To draw the map, the origin (e.g., location 0,0) can be located. For example, the origin may be in the upper left corner as it is on the iPad. In such a case and for illustrative purposes here, the map can then be drawn from a lower left corner positioned at coordinates (20,520). The process for drawing the map can begin by drawing a representation of the flexible timeline below the map. The activity boxes and milestone diamonds can then be drawn using x positions from the Xpos field and y positions derived from the Levels field. Activity IDs can be typed in to serve as labels. Next, float limit lines can be drawn if any are present. A small adjustment can be made for float lines governed by a milestone or milestone chain. In some cases a terminus cannot float. If this happens a short vertical bar can be drawn to the right of the terminus instead of a dotted arrow. Finally, dependency arrows can be drawn from all activities with branching successors.
The map 1400 can include a timeline 1405 spanning the duration of the project, or the portion of the project represented in the map 400. Activities 1410 can be represented as boxes or rectangles of varying widths depending upon or related to the duration of the particular activity 1410 or groups 1415 of activities. The project map 1400 as illustrated here can be fully two dimensional in that group width, i.e., the width of a set of activities and milestones, can show length of critical paths and group height can show amounts of concurrent activity. Sequential activities can be arranged sequentially and connected by successor lines 1420 in a way that clarifies both critical and the sub-critical paths harder to see using earlier methods. Activities 1410 and milestones represented in the map 1400 can be nested in any of a number of levels and used as a canvas to overlay additional analytics like progress and resource allocation (not shown here for the sake of simplicity and clarity).
This map 1400 can be rendered as a touchable, zoomable, interactive representation for display. A viewer interface for presenting the map 1400 can allow panning, zooming, and drilling to sub-maps, i.e., groups 1415 of activities in an intuitive way. The full project timeline 1405 and moving reference box 1430 can be used to prevent users from becoming disoriented as they explore a large project. Additional information can be displayed as map elements become larger during zooming. Multiple modes, including a progress mode and a resources mode can provide additional information displays against the context of the map. A pullout list 1425 and project inspector can provide lists of options for additional features such as searching and filtering.
According to one embodiment, a Work Breakdown Structure (WBS) can define a hierarchical set of activities arranged in a potentially nested set of groups. Activities can be represented as rectangles with single-line borders, and a group of activities can be represented as a rectangle with double-line borders enclosing those activities. A subgroup within a group can be represented as a collapsed group 1435, e.g., a rectangle with double-line borders holding the name of the subgroup. When the user opens a collapsed group 1435 in the interactive map 1400 (e.g., by double-tapping or using some other gesture or input), the larger map 1400 can be replaced with an expanded map of that subgroup. This process can be repeated indefinitely as needed. The process of opening a collapsed subgroup is referred to as drilling. Drilling is different than zooming which enlarges the current maps, possibly exposing more details within each activity box.
In the foregoing description, for the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate embodiments, the methods may be performed in a different order than that described. It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in sequences of machine-executable instructions, which may be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuits programmed with the instructions to perform the methods. These machine-executable instructions may be stored on one or more machine readable mediums, such as CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of machine-readable mediums suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
While illustrative and presently preferred embodiments of the invention have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.