1. Field of Invention
This invention relates to methods and systems for tracking of work-related items, and, in particular, to computer-based methods and systems for tracking of tasks and other work-related items.
2. Discussion of Related Art
In collaborative work environments, tasks are often created, and progress on the tasks must be tracked. To facilitate tracking of a task, a computer system can be used to store work items that identify tasks, and to update the work items when an action is taken by, for example, an individual assigned to the task.
A work item can be, for example, an actionable item, such as a task, which can be assigned to a specific person and can have associated data related to an associated action. A work item can also be, for example, work-related data, such a work scenario or work requirement, that should be tracked. A work item can be associated with a variety of projects. In the case of a software project, a work item can contain information about a specific issue such as, for example, a software bug or a change request.
The information contained in a work item can include values such as dates, integers, worker identifiers, or action identifiers. A work item can be stored as, for example, a row of values in a database, where the values are associated with corresponding field types. The work items can be updated to track progress on activity associated with the work item.
Some embodiments of the invention arise from the realization that prior tracking systems can be improved by storing prior versions of updated work items. For example, full copies of all prior versions of a work item can be retained each time a work item is changed. The versions can be stored in a database accessible to individuals affected by the work item. Query and display features can also be provided to permit extraction of historical data from a work-item database. In this manner, a historical record of the evolution of a work item is available.
The database can be supported by, for example, a networked server. Individuals requiring access to the database can manage and/or search the database via networked clients. Each version of a work item can be tagged with a version author and a date/time of creation of the version.
Thus, some embodiments of the invention protect work-item data against the risk of accidental or malicious damage to stored work items. Moreover, a fully auditable database of work-item history can be made available. For example, work item values that have changed during the course of a project can be retrieved, as needed.
Accordingly, one embodiment of the invention features a method for work-item tracking in a computer system that includes a database. The method includes defining at least one work item, associating version identifiers with corresponding versions of the work items, and storing work-item data in the database. The work-item data includes the current version of the work item, one or more prior versions of the work item, and corresponding version identifiers.
Another embodiment of the invention features a computer readable medium encoded with a program that, when executed, performs the above-described method for work-item tracking.
The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
This invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways. Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having,” “containing,” “involving,” and variations thereof herein, is meant to encompass the items listed thereafter and equivalents thereof as well as additional items.
In some embodiments of the invention, work items are units of work assigned to members of a product development team. More generally, a work item can embody information of relevance to a project, such as a project scenario or a project requirement that should be tracked and audited during the course of the project.
The work items can be modified—for example, having associated tasks redefined and/or reassigned—by individuals having access to the work items. Work times can be reviewed via, for example, tracking reports and scheduled via, for example, associated software tools. Similarly, for example, lists of work items can be exported to spreadsheet-based software tools for further analysis.
In some embodiments, teams define their own work-item types having customized field types, state-transitions, and/or rules. In some embodiments that entail software development, developers use work items to prioritize their work, make notes about dependencies, and to notify testers and other teammates when a repair is completed or requires additional action. Architects, designers, testers, technical writers, localizers, and usability engineers can create and assign work items to record issues related to a project-configuration item and track progress toward the completion of their goals.
Reference is first made to
Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers, and/or other devices. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
In a network environment in which the communications network 14 is the Internet, for example, the servers 10 can be Web servers with which the clients 110a, 110b, 111 communicate via any of a number of known protocols such as hypertext transfer protocol (HTTP) or any other suitable protocol. Communications may be wireless, where appropriate.
The client computers 110a, 110b, 110c and the server computer(s) 10a, 10b may be equipped with various application program modules 135, other program modules 136 and program data 137, and with connections or access to various types of storage elements or objects, across which files may be stored or to which portion(s) of files may be downloaded or migrated.
Any server 10a, 10b, etc. may be responsible for the maintenance and updating of a database 20, in accordance with the present invention. Thus, the present invention can be utilized in a computer network environment having client computers 110a, 110b for accessing and interacting with a computer network and server computers 110a, 110b for interacting with client computers 110a, 110b and one or more databases 20.
Embodiments of the invention that include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon can be any available media which can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can include physical computer-readable media such as RAM, ROM, EEPROM, CD-ROM, DVD, and/or other optical disk storage, magnetic disk storage and/or other magnetic storage devices, and/or any other medium that can be used to carry or store desired program code in the form of computer-executable instructions or data structures and that can be accessed by a general purpose or special purpose computer.
When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, a computer can view the connection as a computer-readable medium. Thus, any such connection can be termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions include, for example, any instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer-executable instruction may be, for example, binaries, intermediate format instructions such as assembly language, or even source code.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination of hardwired or wireless links) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Embodiments of the invention may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
Referring next to
Prior versions of work items are retained in the database to preserve an historical record of changes to a work item. A query capability can be provided to permit searches of work-item data stored in the database, and display capabilities can be provided to present query results in a convenient manner. These embodiments permit, for example, audits of work item changes, which provide, for example, protection against inadvertent or malicious changes of items stored in the database.
a is a flow diagram of a method 200 for work-item tracking in a computer system, such as the computer system 100 illustrated in
The work items include one or more fields that are associated with corresponding field values. The stored work-item data includes current versions of work items and one or more prior versions of the work items, as well as the version identifiers associated with the stored work items. Thus, in contrast with some conventional methods, the method 200 supports preservation of, and searches of, a historical repository of work item changes.
Version identifiers can be associated with their corresponding versions at the time the version is created. A current version can become a prior version at the time a change is made in the current work item. At that time, the new, changed, version becomes the current version and can have an associated new version identifier. In some embodiments, the version identifier of a particular version need does not change as newer version are created.
The stored data can include a full copy of each version of the work item. To conserve storage space, some embodiments of the invention only store changed values rather than creating duplicates of all values of a previous version.
Work items, as described above, can be a task or other work-related data that can be assigned to one or more specific persons or other work entities. The data associated with a work item can be stored, for example, as a row of entries, which can be field values associated with corresponding field types.
Broadly, a task tracked by a work item can correspond to any of a wide range of activities. For convenience, however, the following illustrative description will refer to software development projects and software bugs as examples of work items. These examples should be understood, however, as not limiting application of the invention to only software-related activities.
The work items can be linked to other types of items that also are related to the subject of the work item. For example, if the work item is a bug, the work item can be linked to the software code containing the bug.
For example, when a work item associated with a bug is modified, the work item can be linked to a source-controlled file relating to the bug. For example, if a bug-related work item assignee corrects a software flaw in software code, the work item could be linked to the affected source file. In this manner, the bug-related work item can be linked to the corrected software code, which can be available to other workers.
During a software development project, software bugs generally must be detected and then tracked through resolution and testing. Thus, the method 200 can permit members of a project team to create bug-related work items as bugs are detected. An initial detector of a bug can create and assign a work item for the bug. For example, the work item can be assigned to a group that in turn must assign initial responsibility for investigation of the bug.
In one embodiment, each of the stored work-item versions are complete copies of the associated work item. The stored versions can be copy-protected to preserve an accurate historical record of work-item progression.
The database can be any type of suitable database. For example, the database can be a relational database. As known to one having ordinary skill in the database arts, a relational database stores data inside tables. Operations on data stored in the database can be performed on the tables themselves or produce tables as a result. For example, in one embodiment, each row of a table stores a version of a work item, and the columns of the table correspond to field types of the work item.
Next referring to
The work item includes the following fields: an Assignee field that identifies an individual having an assigned responsibility associated with the work item; a Person ID field for an identifying number associated with the assigned individual; a Revision field for a version number that increments as each new version is created; an Author field that identifies an individual that initiated the changes memorialized in the associated version; a Triage field that indicates an activity assigned to the assignee; and a Created field that indicates the date of creation of the associated version. Each version of the work item may be viewed as current during the period of time that begins with its date of creation and ends with the creation date of the next version.
The table only lists those work-item fields that incurred a value change upon storage of the new version. Hence, the work item can include additional fields. For example, a work item can include a field that identifies a status of the work item, such as active, inactive, or completed.
One or more of the fields can be associated with one or more indices, such as the above-described Revision field. Some or all indices can help to identify a version of a work item. The Created field, described above, can also be viewed as a version identifier.
To exploit the historical database of work items provided by use of the method 200, a database search capability can be provided. The method 200 can then include receiving a query 240. If the database is a relational database, any suitable query language can be use, such as the Structured Query Language (SQL) or a variant of SQL. Through use of SQL, for example, the database can be queried, updated, and managed.
The method 200 can also include displaying 250, in response to a query, information associated with at least one of the one or more prior versions. Query-related and display-related features of some embodiments of the invention are described next.
Queries can be formulated to provide a variety of information related to the historical work item-related data available from the database. For example, a search can be targeted at any one or combination of the following: a specific version; versions created at a particular time or during a particular period of time; versions assigned to a particular individual, for example, at a particular time or durinig a particular time; versions that transitioned in state at a particular time or during a particular time; and/or versions having a particular value for a particular field.
The method 200 an include use of a SQL-like language having query operations that facilitate searches of the work item-related database. For example, the query language can include an “AS OF” operation to search versions created on or after a specified date. As another example, the query language can include an “EVER” operation to search all versions for a specified content.
For example, the database can be queried by an assignee to obtain a list of work items assigned to the assignee. The assignee can, for example, formulate a query that includes or excludes any field type, date or date range, and/or field values. A team leader can, for example, search for bugs assigned to the team, and then update the located work items to assign the bugs to developers for correction.
The following queries illustrate the appearance of a query as-formulated by a team member, for one embodiment of the invention that uses a modified-SQL query language.
The query,
SELECT * From Issue Where State Ever ‘Blocked’
searches all fields of all work items that were ever in a “Blocked” state.
The query,
SELECT Title From Issue Where [Assigned To]=‘Jack’ And Priority Not Ever 3
searches for the Title of all work items that are assigned to Jack, but never had a Priority of 3.
The query,
SELECT ID From Issue Where (Priority>2) AsOf‘10/2/2004 11:00’
searches for the IDs of all work items that had a priority greater than 2 as of 10/2/2004 11:00 AM.
The query,
SELECT Title From Issue Where [Assigned To]=Jack AsOf ‘1/1/2004 20:00’
searches for the Title of all work items that were assigned to Jack as of 1/1/2004 10:00 PM.
The results of a search of the work-item database can be presented in any suitable format. For example, the results of a search can be presented in a control. The control can present, for example, the full contents of work items or the contents of changed fields.
For example, each version is identified by its associated “birth” date and time (listed in the left-most column.) Each version is also identified by a revision number, which, in this example, is sequentially incremented as each new version is created.
In this example, each new version was created in response to changes made by Revision author “lingbao” to a prior version of the work item. The example display presents a row entry for each work item version returned in response to a search. Toggles, on the right side of the display, to expand/collapse the contents of each listed work item permit a viewer of the display to expand the contents of any listed version for review.
In the screen shot of
An upper portion 510 of the screen shot displays query parameters selected for a search. A lower portion 520 of the screen shot displays a list of versions that have been returned in response to the query parameters shown in the upper portion 510.
The example query was formulated to extract work items having all of the following values: a “Portfolio Project” field-type value equal to “@Project”; an “Assigned To” field-type value that ever had a value of “dougn”; and a “State” field-type value equal to “Active”. In the lower portion 520, each listed version includes a version identifier (ID) and a work-item version title. For example, one of the version returned in response to the query has an ID value of 10744 and a title of Create Project Plan. In one embodiment, the contents of any one of the listed versions is displayed in response to a selection made by a user.
As described above, it should be appreciated that at least some features of the method 200 outlined herein may be coded as software that is executable on one or more processors that employ any one of a variety of operating systems or platforms. Additionally, such software may be written using any of a number of suitable programming languages and/or conventional programming or scripting tools, and also may be compiled as executable machine language code.
It should be understood that the term “program” is used herein in a generic sense to refer to any type of computer code or set of instructions that can be employed to program a computer or other processor to implement various aspects of the present invention as discussed above. Additionally, it should be appreciated that according to one aspect of this embodiment, one or more computer programs, when executed, need not reside on a single computer or processor, but may be distributed in a modular fashion amongst a number of different computers or processors to implement various aspects of the present invention.
Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.