Patent Publication Number: US-7908583-B2

Title: Evidentiary enrichment of traceability links between software specification requirements

Description:
FIELD OF THE INVENTION 
     The present invention relates to specification requirements for software, where a second specification requirement may, for instance, be dependent to some degree on a first specification requirement, and more particularly to enriching such traceability links between specification requirements based on the change history of the requirements. 
     BACKGROUND OF THE INVENTION 
     Modem software engineering practices generally require the utilization of specifications prior to and during the development of software. The specifications for software can be considered the blueprint for the design of the software. In general, the specifications include a number of requirements. Particularly and thoroughly delineating the requirements can ensure that the software will be developed in accordance with a customer&#39;s or an end user&#39;s expectations. 
     Good software engineering practices usually mandate that such software specification requirements be traceable. A traceability relationship is a directed inter-specification requirement link that allows users to follow the life of a requirement in a forward and or backward direction. The primary goal of traceability is to ensure that the software satisfies all the specified requirements. More particularly, a traceability relationship, or link, indicates that a second specification requirement is dependent to some degree on a first specification requirement. If the first requirement changes, then there is thus a possibility that the second requirement may also need to change. 
     However, traceability links by themselves have very little semantic information, limiting their potential usefulness. For instance, while a given link shows the existence of a relationship between two requirements, it does not convey any information about the degree of “coupling” between the requirements. For example, a given requirement R 1  may trace via a first link to a requirement R 2  and via a second link to a requirement R 3 . However, the requirement R 2  may be more sensitive to changes in the requirement R 1  than the requirement R 3  is. The traceability links between requirements R 1  and R 2  and between requirements R 1  and R 3  do not capture this coupling information, however. 
     Existing software specification requirements management tools include the Rational® RequisitePro® requirements management tool, available from International Business Machines, Inc., of Armonk, N.Y., and the DOORS® requirements management tool, available from Telelogic AB, of Malmö, Sweden. These management tools allow users to create traceability links among software specification requirements. However, they provide little if any support for tracking coupling information for the traceability links in a manner as described in the previous paragraph. 
     For example, within the RequisitePro® requirements management tool, when a given requirement changes, any other requirements that are linked to this requirement are marked as suspect to denote that they may be influenced by the change. However, there is no way by which the degree of this influence can be estimated. Furthermore, a user cannot manually assign coupling values to the traceability links in question that have been affected. 
     By comparison, within the DOORS® requirements management tool, a user is permitted to manually assign coupling values to traceability links. However, manual assignment of such values to traceability links is unsatisfactory for at least two reasons. First, such manual assignment is impractical at best, and impossible at worst, when there are literally thousands of specification requirements and traceability links, which is common for large software. Second, it is unclear on what basis developers should assign such coupling values and how they can update these values as requirements change. Furthermore, different developers may assign different values to the same traceability links, such that there is no objective measure as to what a particular coupling value represents or means as to a given traceability link. 
     For these and other reasons, therefore, there is a need for the present invention. 
     SUMMARY OF THE INVENTION 
     The present invention relates to evidentiary enrichment of traceability links between software specification requirements. A traceability link indicates that a second specification requirement is dependent to some degree on a first specification requirement. A method of one embodiment of the invention evidentially determines a likelihood that the second specification requirement for software changes due to a the first specification requirement for the software changing, and/or a degree of change of the second specification requirement due to the first specification requirement changing. The method further can output the likelihood that the second specification requirement changes due to the first specification requirement changing, and/or the degree of change of the second specification requirement due to the first specification requirement changing. Furthermore, a coupling value for the traceability link may be determined by the method as directly proportional to the likelihood that the second specification requirement changes due to the first specification requirement changing, and to the degree of change of the second specification requirement due to the first specification requirement changing. 
     A method of another embodiment of the invention performs the following. In response to a first specification requirement for software changing from an old version thereof to a new version thereof, a user may determine that a second specification requirement for the software that is dependent to some degree on the first specification requirement changing requires changing. In response, the user is permitted to edit the second specification requirement, from an old version thereof to a new version thereof. A coupling value for a traceability link indicating that the second specification requirement is dependent to some degree on the first specification requirement is updated based on at least one of the following. First, a likelihood that the second requirement changes due to the first specification requirement changing is evidentially updated. Second, a degree of change of the second specification requirement due to the first specification requirement changing is evidentially updated. 
     An article of manufacture of an embodiment of the invention includes a tangible computer-readable medium, such as a recordable data storage medium, and a means in the medium, such as a computer program. The means is for updating a coupling value for a traceability link indicating that a second specification requirement for software is dependent to some degree on a first specification for the software, based on at least one of the following. First, the coupling value can be updated based on a likelihood that the second requirement changes due to the first specification requirement changing, as determined in an evidentiary manner. Second, the coupling value can be updated based on a degree of change of the second specification requirement due to the first specification requirement changing, as also determined in an evidentiary manner. 
     Embodiments of the invention provide for advantages over the prior art. In contradistinction to the prior art, coupling values for traceability links between software specification requirements are determined in an objective manner, by using the change history of the requirements. Thus, the coupling values are determined in an evidentiary manner. A given traceability link between two requirements may have its coupling value updated based on the likelihood that the second requirement changes due to the first requirement changing, as mathematically determined, and/or based on the degree of change of the second requirement due to the first requirement changing, as also mathematically determined. 
     Therefore, a developer can easily view the “weightedness” of the traceability links, such as how strongly a given specification requirement influences another specification requirement, by virtue of analyzing the coupling values of the traceability links. The developer does not have to assign the coupling values manually, as they are automatically determined based on the change history of the requirements. Furthermore, since the coupling values are determined in an objective and evidentiary manner, they are not subjective, such that the same coupling value is determined for a given traceability link regardless of which developer has made a change to a specification requirement of the traceability link. 
     Still other advantages, aspects, and embodiments of the invention will become apparent by reading the detailed description that follows, and by referring to the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The drawings referenced herein form a part of the specification. Features shown in the drawing are meant as illustrative of only some embodiments of the invention, and not of all embodiments of the invention, unless otherwise explicitly indicated, and implications to the contrary are otherwise not to be made. 
         FIG. 1  is a diagram of a computerized system, according to an embodiment of the invention. 
         FIG. 2  is a flowchart of a method, according to an embodiment of the invention, and is suggested for printing on the first page of the patent. 
         FIG. 3  is a flowchart of another method, according to another embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION OF THE DRAWINGS 
     In the following detailed description of exemplary embodiments of the invention, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized, and logical, mechanical, and other changes may be made without departing from the spirit or scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims. 
       FIG. 1  shows a computerized system  100 , according to an embodiment of the invention. The system  100  may be implemented over one or more computing devices, as can be appreciated by those of ordinary skill within the art. As can also be appreciated by those of ordinary skill within the art, the system  100  may have other components and/or store other data, in addition to and/or in lieu of those depicted in  FIG. 1 . The system  100  may be implemented in relation to a software development tool, such as a software specifications requirements management tool. 
     The system  100  includes one or more computer-readable media that store specification requirements  102 , traceability links  104  for the specification requirements  102 , and a change history  112  of the specification requirements  102 . The specification requirements  102  are the requirements of the specifications for software that is being developed through use of the system  100 . For example, a given specification requirement may indicate that customer data is to be stored such that it includes a two-letter country code for each customer. Another specification requirement may be linked to this requirement, and indicate that when customer data is displayed, two positions of the display should be taken up by the two-letter country code of a customer. 
     The traceability links  104  are directed inter-specification requirement links. Each of the links  104  indicates a relationship that a second specification requirement of the requirements  102  is dependent on a first specification requirement of the requirements  102  to some degree. For example, with respect to the two example specification requirements noted in the previous paragraph, the second requirement may be dependent on the first requirement. That is, for instance, if the first requirement regarding how the country of a customer is stored changes, then the second requirement regarding how the country of a customer is displayed also may need to be changed. Therefore, there would be a traceability link of the links  104  for and representing this relationship. 
     The traceability links  104  include a number of coupling values  106 , where there is a coupling value for each traceability link. The coupling value generally specifies the relatedness or “weightedness” of a first requirement of a link and a second requirement of the link. For instance, as is described in more detail later in the detailed description, the coupling value for a traceability link can be based on, such as being directly proportional to, the likelihood that the second requirement of the link changes due to the first requirement of the link changing, as well as the degree of change of the second requirement due to the first requirement changing. The coupling values  106  within embodiments of the invention are objectively and automatically determined without subjective input by the user, in an evidentiary manner, as is described in more detail later in the detailed description. 
     The change history  112  is a database storing all the changes that have been made to the specification requirements  102 . In one embodiment, each version of each specification requirement of the requirements  102  is stored in the change history  112 . For example, for a given requirement RI, there may be versions R 1   0 , R 1   1 , . . . , R 1   n , where the initial requirement R 1  is the version R 1   0  and there have been n changes to the requirement R 1 , resulting in n versions R 1   x , where x=1, . . . , n. In another embodiment, the changes between versions of each specification requirement is stored, such that a given version of a requirement can be obtained by simply making all the changes from the original version of the requirement to the change representing the given version in question. 
     The coupling value-updating mechanism  114  updates the coupling values  106  of the traceability links  104  based on changes to the specification requirements  102  as captured by the change history  112 . When a change to any of the specification requirements in  102  results, this change is captured in the change history  112 . Furthermore, the user may be permitted to change any other of the specification requirements  102  that depend on the selected requirement, as denoted by the traceability links  104 . Once these changes have been made, and captured within the change history  112 , the mechanism  114  updates the coupling values  106  for the affected links of the traceability links  104 . This process is described in more detail later in the detailed description. The mechanism  114  may be implemented in software, hardware, or a combination of software and hardware. 
       FIG. 2  shows a method  200 , according to an embodiment of the invention. The method  200  may be performed in relation to the system  100  that has been described. For example, the method  200  may be performed by the coupling value-updating mechanism  114  of the system  100 , and/or by another part of the system  100 . The method  200  is particularly described in relation to a given traceability link. This given traceability link indicates that a second specification requirement for software is dependent to some degree on a first specification requirement for the software. 
     First, the likelihood that the second specification requirement changes due to the first specification requirement changing is evidentially determined ( 202 ). This likelihood is evidentially determined in that it is objectively determined, without subjective input by the user, and based on, for instance, the change history of the first and the second specification requirements. In one embodiment, part  202  of the method  200  is performed by performing parts  204 ,  206 , and  208 . 
     First, the number of times that the first specification requirement has changed is tracked ( 204 ). Tracking may be accomplished in relation to the change history  112 , and may be determined by the mechanism  114  by consulting the change history  112 . Similarly, the number of times that the second specification requirement has changed due to a change in the first specification requirement is also tracked ( 206 ). The likelihood that the second specification requirement changes due to the first specification requirement changing is then determined based on these two numbers of times ( 208 ), in a way such that the likelihood is directly proportional to the number of times that the second specification requirement has changed due to a change in the first specification requirement. For example, the likelihood that the second requirement changes due to the first requirement changing may be determined as the number of times that the second requirement has changed due to a change in the first specification requirement, divided by the number of times that the first requirement has changed. 
     Next, the degree of change of the second specification requirement due to the first specification requirement changing is evidentially determined ( 210 ). This degree is evidentially determined in that it is objectively determined, without subjective input by the user, and based on, for instance, analysis of the change history of the first and the second specification requirements. In one embodiment, part  210  of the method  200  is performed by performing parts  212 ,  214 , and  216 . 
     First, however, it is presumed that there is a function ƒ(v1, v2) that measures or yields the degree of change in a given specification requirement between two versions thereof, v1 and v2, as can be appreciated by those of ordinary skill within the art. Depending on how specification requirements are represented, for instance, there may be several ways to delineate this function. For example, if a requirement is presented in a structured form, then the function may be based on the number of structural elements that changed between the two versions thereof. As another example, if a requirement can be traced to one or more source code files, then the function may be based on the number of lines of the source code that changed between two versions thereof. 
     As a final example, if a requirement is presented in a textual form, there are existing techniques that measure similarity between two versions thereof, and the function can be inversely proportional to this similarity. For instance, there are some such existing techniques to measure similarity between two versions of a textually represented requirement. One such existing technique is described in James Hayes et a., “Improving Requirements Tracing via Information Retrieval,” in Proceedings of the Eleventh International Requirements Engineering Conference, pp. 151-161, September 2003, Monterey Bay, Calif. 
     Therefore, first, a sequence of the degrees of change of the first specification requirement is determined ( 212 ). This is the sequence (C 11 , C 12 , . . . , C 1n ). C 1x  is the value of the function measuring the degree of change of the first specification requirement from a version x of the first specification requirement to a version x+1 of the first specification requirement, where successive versions of the first specification requirement result from changes in the first specification requirement. For example, using the function ƒ(v1, v2), the value C 11  is equal to ƒ(R 1   1 , R 1   2 ), where R 1   1  is the first version of the specification requirement, and R 1   2  is the second version of the requirement immediately following the first version, where a given change resulted in changing of the first version to yield the second version. 
     Similarly, a sequence of the degrees of change of the second specification requirement caused by a change in the first specification requirement, is also determined ( 214 ). This is the sequence (C 21 , C 22 , . . . , C 2n ). C 2x , is a value of a function measuring the degree of change of the second specification requirement from a version x of the second specification requirement to a version x+1 of the second specification requirement, where successive versions of the second specification requirement result from changes in the second specification requirement. In both part  214  and part  212  of the method  200 , the various versions of the first and second specification requirements may be retrieved by the mechanism  114  from the change history  112 . 
     It is noted that the changes represented in the sequences determined in parts  212  and  214  only reflect those changes in the first specification requirement that resulted in changes to the second specification requirement. That is, changes in the first specification requirement that did not result in changes to the second specification requirement occurring are not represented or encompassed by theses sequences. Similarly, changes in the second specification requirement that did not result from changes to the first specification requirement having occurred are not represented or encompassed by these sequences. Similarly, changes determined in part  206  only reflect those changes in the second specification requirement that resulted from changes in the first specification requirement. Changes in the second specification requirement that did not result from changes to the first specification requirement having occurred are not encompassed. 
     Finally, the degree of change of the second specification requirement due to the first specification requirement changing is determined based on these two sequences of degrees that have been determined ( 216 ). In one embodiment, this degree of change is determined as 
                   ∑     i   =   1     n     ⁢       C     2   ⁢   i         C     1   ⁢   i           n     .         
In another embodiment, this degree of change is determined as
 
                   ∑     i   =   1     n     ⁢     C     2   ⁢   i         n     .         
In general, however, the degree of change of the second requirement due to the first requirement changing may be directly proportional to C 2i  for any given i. Thus, for any change in the second requirement due to the change in the first requirement, it can be concluded that any resulting change in the second requirement is stronger, or greater, in proportion to this degree of change that has been determined.
 
     In one embodiment, the likelihood determined in part  202  of the method  200  and the degree determined in part  210  of the method  200  may be output ( 218 ). The manner by which the likelihood and the degree are output is not limited by embodiments of the invention. For instance, such output may include storing these values on a computer-readable medium. As another example, such output may include displaying these values to a user on a display. 
     Next, the coupling value for the traceability link between the first and second specification requirements is determined, based on the likelihood and/or the degree that have been determined ( 220 ). The coupling value may be directly proportional to the likelihood and/or the degree that have been determined. Where the likelihood determined in part  202  is denoted as P and the degree determined in part  210  is denoted as D, the coupling value may be equal to, for instance, cPD, where c is an optional constant. Finally, the coupling value itself may be output ( 222 ), similar to the manner by which the likelihood and the degree were output in part  218  of the method  200 . 
       FIG. 3  shows a method  300 , according to another embodiment of the invention. The method  300  may also be performed in relation to the system  100  that has been described, such that it is performed by the coupling value-updating mechanism  114  of the system  100 , and/or by another part of the system  100 . The method  300  is particularly described in relation to a given traceability link. This given traceability link indicates that a second specification requirement for software is dependent to some degree on a first specification requirement for the software. The method  300  describes the approach that may be followed for continually updating the coupling value of a given traceability link in response to changes of the first and second specification requirements of the link, and may use the method  200  that has been described. 
     First, the coupling value for the traceability link in question is initially set to a default value ( 302 ). A change in the first specification requirement for the traceability link occurs ( 304 ). In response, the old version of the first specification requirement, prior to the change therein, is stored ( 306 ), such as in the change history  112 . A change event may be generated for the traceability link indicating that a specification requirement thereof has been changed, where the status of this change event is initially set to incomplete ( 308 ). 
     The user may then be provided the opportunity to determine whether the second specification requirement of the traceability link requires changing, due to the first specification requirement of the link having changed. If the user determines that the second requirement does require changing ( 310 ), then the user is permitted to change the second specification requirement ( 312 ), such as by being able to edit the second requirement. In response to or after such editing, the old version of the second specification requirement is stored ( 314 ), such as in the change history  112 . 
     Next, regardless of whether or not the user has determined that the second specification requirement of the traceability link requires changing due to the first specification requiring of the link having changed, the status of the change event previously generated is set to complete ( 316 ). The coupling value for the traceability link is also updated ( 318 ). For instance, such updating may be based on evidentially updating the likelihood that the second requirement changes due to the first requirement changing, and/or on evidentially updating the degree of change of the second requirement due to the first requirement changing. Thus, the coupling value for the link may be updated by performing at least parts  202 ,  210 , and  220  of the method  200  that has been described. The method  300  then repeats each time the first requirement changes, at part  304 . 
     It is noted that the evidential support of coupling becomes stronger as there are more data points within the change history of the specification requirements. In one embodiment, to ensure that only non-trivial changes within requirements are considered, a user may be permitted to manually indicate that a trivial change has occurred, so that a change event as noted above is not generated, and coupling values not updated based thereon. Alternatively, if two versions of a given specification requirement are markedly similar, resulting in a low value of the function ƒ(v1, v2), then the change may be not considered, and coupling values not updated based thereon. For instance, the value of this function may have to be greater than a certain threshold to denote a non-trivial change. 
     Furthermore, there are different approaches to denote that a given change in a second specification requirement is due to an earlier change in the first specification requirement. In one approach, a user may be permitted to manually link a change in the second requirement to a change event representing a change in the first requirement. Alternatively, a user may be permitted to manually unlink or delink a change in the second requirement from a change event representing a change in the first requirement. Other approaches may also be employed, as can be appreciated by those of ordinary skill within the art. 
     It is noted that, although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is thus intended to cover any adaptations or variations of embodiments of the present invention. Therefore, it is manifestly intended that this invention be limited only by the claims and equivalents thereof.