| Bieman, J. M. and Ott, L. M. 1994. Measuring functional cohesion. IEEE Transactions on Software Engineering 20, 8 (Aug.), 644--657. |
....the size of the program. Originally slicing was applied to debugging [Weiser, 1979] Weiser, 1982] Lyle and Weiser, 1987] and (more recently) to algorithmic debugging [Shahmehri, 1991,Kamkar, 1993] Many other applications have also been investigated, for example, Cohesion Measurement [Bieman and Ott, 1994], Ott and Thuss, 1993] Lakhotia, 1993] Re engineering [Liu and Ellis, 1993] Simpson et al. 1993] Lakhotia and Deprez, 1998] Component Re use [Beck and Eichmann, 1993] Cimitile et al. 1996] Program Comprehension [De Lucia et al. 1996] Harman and Danicic, 1997] ....
Bieman, J. M. and Ott, L. M. (1994). Measuring functional cohesion. IEEE Transactions on Software Engineering, 20(8):644-657.
....to a variable v, independently of any program point. It is given by the union of the static slices computed with respect to the variable v and all possible program points p. Other applications of program slicing include software testing [9, 36, 42, 38, 43] program debugging [85, 70] measurement [75, 7, 73, 74], validation [63] program parallelization [86] program integration [44] reverse engineering and program comprehension [6, 29] program restructuring [52, 16, 21, 64, 51] and identification of reusable functions [17, 22, 65] In particular, the identification of an internal reusable function ....
J.M. Bieman and L.M. Ott, "Measuring functional cohesion", IEEE Transactions on Software Engineering, vol. 20, no. 8, 1994, pp. 644-657.
....engineering. INTRODUCTION Many flow analyses have been applied to software engineering. For example reaching definitions analysis has been used in data flow testing [10] Slicing has been used in maintenance, debugging, reuse, testing, reverse engineering, metrics and architectural understanding [4, 5, 6, 9, 11, 12, 22]. Constant propagation has been used in user interface reengineering [2, 14] Modern programming languages contain features like pointers and objects. Object Oriented (OO) characteristics such as classes, inheritance, polymorphism and dynamic binding augment language expressivity, offer new ....
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion", IEEE Transactions on Software Engineering, Vol. 20, No. 8, August 1994, pp. 644-657
....In Section 4.4, our goal was to take a step in that direction, to provide a measure of ADT cohesion which is based on the interaction graph model presented above and which can be captured through automatable data collection procedures. A proposal for functional cohesion measures can be found in [14]. Given a procedure, function, or main program, only data tokens, i.e. the occurrence of a definition or use of a variable or a constant, are taken into account. The data slice for a data token is the sequence of all those data tokens in the program that can influence the statement in which the ....
J. Bieman and L.M. Ott, "Measuring Functional Cohesion," IEEE Tr a n s S o t w a r e Eng , vol. 20, no. 8, pp. 644-657, Aug. 1994.
....(except LCOM) have been found generally useful in building models for various attributes. Many other measures have been defined. A comprehensive set is proposed in [21] Surveys can be found in [26, 27] 7.4.5. Functional Cohesion Three measures for functional cohesion are introduced in [28], based on the data tokens (i.e. the occurrences of a definition or use of a variable or a constant) that appear in a procedure, function, or main program. Each data token is on at least one data slice, i.e. a sequence of data tokens belonging to those statements that can influence the statement ....
J. Bieman and L. M. Ott, Measuring Functional Cohesion," IEEE Trans. Software Eng. 20 (1994) 644-657.
....engineering. INTRODUCTION Many flow analyses have been applied to software engineering. For example reaching definitions analysis has been used in data flow testing [10] Slicing has been used in maintenance, debugging, reuse, testing, reverse engineering, metrics and architectural understanding [4, 5, 6, 8, 9, 11, 12, 22]. Constant propagation has been used in user interface reengineering [2, 14] Modern programming languages contain features like pointers and objects. Object Oriented (OO) characteristics such as classes, inheritance, polymorphismand dynamic binding augment language expressivity and offer new ....
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion", IEEE Transactions on Software Engineering, Vol. 20, No. 8, pp. 644-657, August 1994.
....some outlooks. 2 Distance based cohesion Many refactorings, including those explained in Section 1, are based on violations of the principle Put together what belongs together . To measure the degree to which some parts belong together there exist many cohesion measures (cf. ChKe94] BiKa98] [BiOt93]) One generic cohesion measure that was firstly introduced by [SiLLe99] is strongly connected with the theory of similarity and dissimilarity. In correspondence to Bunge [Bung77] we define that the similarity between two entities relates to the collection of their shared properties. Suppose to ....
....to get cohesive classes. While cohesiveness can be reached on several levels, from the weakest coincidental cohesion to the strongest functional cohesion ( YoCo79] a static analysis technique is only able to consider indicators for cohesion. Most cohesion measures (e.g. LCOM [ChKe94] SFC or TCC [BiOt93]) consider use relations between functions and attributes as indicators for a functional cohesion, because if all members work together, i.e. they use each other or a common member, they relate to each other. Therefore, for our distance measure we need the same properties for attributes and ....
James M. Bieman, Linda M. Ott: "Measuring functional cohesion", Technical Report CS-93-109, Michigan Technological University, 1993
....set of variables at some point in the original program, it has many applications, all of which are based upon the fact that a slice is a simplified 2 version of the original which maintains a projection of its semantics. Some applications of slicing are listed below: ffl cohesion measurement (Bieman and Ott, 1994; Ott and Thuss, 1993; Lakhotia, 1993) ffl algorithmic debugging (Shahmehri, 1991; Kamkar, 1993) ffl re engineering (Liu and Ellis, 1993; Simpson et al. 1993; Lakhotia and Deprez, 1998) ffl component re use (Beck and Eichmann, 1993; Cimitile et al. 1996) ffl automatic parallelisation ....
Bieman, J. M. and Ott, L. M. (1994). Measuring functional cohesion. IEEE Transactions on Software Engineering, 20(8):644--657.
....program is represented by its SDN, the slices of the program can be computed based on the SDN as a simple vertex reachability problem in the net. 1 Introduction Program slicing has many applications including program debugging [1, 11] testing [2] maintenance [8] and complexity measurement [3, 14]. A program slice consists of the parts of a program that (potentially) affect the values computed at some program point of interest, referred to as a slicing criterion. The parts of a program which have a direct or indirect effect on the values computed at a slicing criterion are called the ....
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion," IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
....languages. In such languages, slicing is typically performed by using program dependence graphs [4, 6, 9, 14] Program slicing has showed great usefulness for many software engineering activities such as program understanding, debugging [10] testing [1] maintenance [7] and complexity measurement [2, 14]. For more information, see Tip s nice survey on program slicing of imperative programs [18] However, although program slicing has been widely studied for imperative programs, research on slicing logic programs is just starting. To our knowledge, only three articles deal with the problem of ....
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion," IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
....Section 4.4, our goal was to take a step in that direction, to provide a 20 measure of ADT cohesion which is based on the interaction graph model presented above and which can be captured through automatable data collection procedures. A proposal for functional cohesion measures can be found in [BO94]. Given a procedure, function, or main program, only data tokens (i.e. the occurrence of a definition or use of a variable or a constant) are taken into account. The data slice for a data token is the sequence of all those data tokens in the program that can influence the statement in which the ....
J. Bieman and L. M. Ott, "Measuring Functional Cohesion," IEEE Trans. Software Eng., 20 (8), August 1994, pp. 644-657.
....Dependence Graph (ADG) to explicitly represent these architectural dependences in the architecture. The work presented here is primary, and there is still a lot of work that remains to be done. For example, in addition to defining metrics based on architectural dependences, similar to [2] which they defined some metrics based on program slices to evaluate functional cohesion of a program, we can also define metrics to evaluate the functional cohesion of a software architecture based on architectural slices that can be computed by a new slicing technique called architectural ....
J. M. Bieman and L. M. Ott, "Measuring Functional Cohesion, " IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
.... 1994; Agrawal, 1994; Ball and Horwitz, 1992) concurrent programming (Cheng, 1993) and, by highlighting the parts of a program which have no effect upon the slicing criterion, side effects within expressions (Tip, 1995a; Ernst, 1994) Slicing has many applications including measuring cohesion (Bieman and Ott, 1994; Ott and Thuss, 1993; Lakhotia, 1993; Harman et al. 1995a) algorithmic debugging (Shahmehri, 1991; Kamkar, 1993) re engineering (Lui and Ellis, 1993; Simpson et al. 1993) component re use (Beck and Eichmann, 1993) automatic parallelisation (Weiser, 1983) maintenance and debugging ....
Bieman, J. M. and Ott, L. M. (1994). Measuring functional cohesion. IEEE Transactions on Software Engineering, 20(8):644--657.
....between the features exported by each module of the software part sp. Inter module interactions are not considered cohesive; they may contribute to coupling, instead. All three measures satisfy the above properties Cohesion.1 Cohesion.4. Other examples of cohesion measures can be found in [BO94], where new functional cohesion measures are introduced. Given a procedure, function, or main program, only data tokens (i.e. the occurrence of a definition or use of a variable or a constant) are taken into account. The data slice for a data token is the sequence of all those data tokens in the ....
....on data tokens, glue tokens, and super glue tokens. This approach can be represented in our framework as follows. A data token is an element of the system, and a data slice is represented as a sequence of nodes and arcs. The resulting graph is a Directed Acyclic Graph, which represents a module. [BO94] introduces functional cohesion measures for single procedures, functions, or main programs. Given a procedure, function, or main program p, the following measures SFC(p) Strong Functional Cohesion) WFC(p) Weak Functional Cohesion) and A(p) adhesiveness) are introduced SFC(p) ....
J. Bieman and L. M. Ott, "Measuring Functional Cohesion," IEEE Trans. Software Eng., vol. 20, no. 8, pp. 644-657, August 1994.
....cohesion on a procedure by procedure basis. The notional measure is one of functional strength of a procedure, meaning the degree to which data and procedures contribute to performing the basic function [Fenton91] 2.2. 1 Program Slice Abstraction of Bieman and Ott Bieman and Ott [Bieman93][Bieman94] formulate a measure of functional cohesion on procedures based on a relation between output tokens (output variables) and program slices. A program slice is a set of program statements which include references to a particular program variable. A glue token is a token which is used in more than ....
....measurement has suffered from a lack of basis in scientific measurement technique, or a misunderstanding of its application. The contributions of [Baker90] Fenton91] Fenton94] Melton90] Kitchenham95] Zuse91] have placed software measurement on a proper mathematical foundation. The work of [Bieman94] [Hitz95] Briand96] are examples of modern software measures firmly grounded in measurement theory. We wish to apply the same rigor to the BiemanKang cohesion measure. The design of a measure should start with an understanding the entity being studied [Fenton94] The entity in this research is a ....
James Bieman and Linda Ott. "Measuring Functional Cohesion." IEEE Transactions on Software Engineering, vol 20 no 8, August 1994.
....to evaluate cohesion on a procedure by procedure basis. The notional measure is one of functional strength of a procedure, meaning the degree to which data and procedures contribute to performing the basic function [Fenton91] 2.2. 1 Program Slice Abstraction of Bieman and Ott Bieman and Ott [Bieman93][Bieman94] formulate a measure of functional cohesion on procedures based on a relation between output tokens (output variables) and program slices. A program slice is a set of program statements which include references to a particular program variable. A glue token is a token which is used in ....
James Bieman and Byung-Kyoo Kang. "Measuring Functional Cohesion." Computer Science Technical Report CS-93-109. Colorado State University, 1993.
....WORK Despite the importance of evaluating and predicting the quality of software products based on design properties such as coupling, there is little work in this area. Most existing measures capture coupling between modules using source code which is only available after implementation, e.g. [Bieman Ott, 1993]. Some research has addressed this issue, e.g. Chidamber Kemerer, 1994] and [Briand et al., 1994] which measure coupling using OO design documents usually available before implementation. In [Chidamber Kemerer, 1994] a coupling measure named Coupling Between Object classes (CBO) is defined, and ....
J. M. Bieman and L. M. Ott, "Measuring Functional Cohesion". Computer Science Dept., Colorado State Univ., June 1993, Fort Collins, CO, USA. TR#: CS93 -109.
....for complexity measures, as opposed to size measures. 3.2 Ratio Scale vs. Additive Ratio Scale and Extensive Structure Unfortunately, despite the arguments presented in the previous section, the argument that complexity measures should be additive [Z91] is gaining increasing acceptance (see [BO94, CK94, F94]) In this section, we perform an in depth critical analysis of the reasoning behind such a standpoint. In several papers that appeared in the scientific literature on measurement properties [Z91, Z92, Z94, Z95] Zuse advocates the need for a complexity measure to be additive, and for the ....
....about extensive structures has already had an important impact on the scientific work and the literature. Several authors have quoted Zuse s results in major journals or used his conclusions to validate their work. Examples can be found in journals such as IEEE Transactions on Software Engineering [F94, CK94, BO94]. 4. Applying Measurement Theory 4.1 Scale Types and Proscribing Statistics We will now take a more general perspective, i.e. we will focus on the role that measurement theory should have in empirical software engineering. Several books and papers on the topic of measurement theory are ....
J. Bieman and L. M. Ott: "Measuring Functional Cohesion." In IEEE Trans. Software Eng., 20(8): 644-657, August 1994.
....WORK Despite the importance of evaluating and predicting the quality of software products based on design properties such as coupling, there is little work in this area. Most existing measures capture coupling between modules using source code which is only available after implementation, e.g. [3]. Some research has addressed this issue, e.g. 8] and [4] which measure coupling using OO design docu International Software Engineering Research Network ISERN 96 08 2 ments usually available before implementation. In [8] a coupling measure named Coupling Between Object classes (CBO) is ....
J. M. Bieman and L. M. Ott, "Measuring Functional Cohesion". Computer Science Dept., Colorado State Univ., June 1993, Fort Collins, CO, USA. TR#: CS-93-109.
....model our intuition about relative distances of a structure of classes from a particular pattern. We can then define ordinal, and eventually ratio, scale measures from such empirical relation systems. This is the approach that we took to develop measures of functional cohesion and class cohesion [7, 5]. Our hypothesis is that components that play roles in a small number of well defined architectural contexts will be easier to maintain, reuse, and test than components that play no role in these contexts or that play roles in many contexts. We are testing this hypothesis by examining commercial ....
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644--657, Aug. 1994.
....dependencies for data tokens in module statements, and identifies control dependencies involving loop predicates. 4. F Slicer: Generates program (also data) slice information for a module. A program slice is the portion of program text that affects a specified program variable (Weiser, 1994) Bieman and Ott (1994) defined a data slice for a data token as the sequence of all data tokens in the statements that comprise the backward and forward slices of the data token. 5. IODG tool: Generates IODG information with only input and output components using program slice information generated by the ....
....The current version of Unravel, a C slicer, is capable of producing compilable slices (Lyle et al. 1995) so it is a good candidate for component 7. A coupling analyzer is now under construction. FUNCO also includes an implementation of the functional cohesion measure defined by Bieman and Ott (Bieman and Ott, 1994). FUNCO has been installed and tested for SUN SPARC workstations running SUN OS and IBM RS6000 systems running AIX. It is available for general use on the World Wide Web (Kang and Bieman, 1997) 7. RESTRUCTURING CASE STUDY 7.1. Limitations We restructure a small software system to demonstrate ....
[Article contains additional citation context not shown here]
Bieman, J. and Ott, L. (1994) `Measuring functional cohesion', IEEE Transactions on Software Engineering, 20(8), 644--657.
....Threads: awe2 0.1 0.7237 0 10 0.7237 1 1 0 presto1.0 0.6071 0 10 0.6071 1 1 0 Others: RPC 0.1250 0 1 0.1250 0 1 0 MC 0.02 0.4694 0 8 0.4694 0 1 0 c suite 1.0 0.3333 0 5 0.3333 0 4 3.70 newmat 0.7222 0 9 0. 7222 1 1 0 attributes of object oriented systems including method and class cohesion [4, 2], method reuse through inheritance, and coupling through message passing. We also want to measure the redefinition of methods and instance variables by subclasses, since such redefinition can increase the difficulty of verification and testing [13] Measurements of these additional attributes ....
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644-- 657, Aug. 1994.
....of the associations between processing elements as a set of rules concerning data dependencies in module code. This method requires the analysis of code level information and thus cannot be applied before code is written. The second approach, a slice based approach, is used by Bieman and Ott [2]. They measure functional cohesion in terms of the connections between code data tokens on module output slices. This method also requires code level information. Research partially supported by NASA Langley Research Center grant NAG1 1461. Copyright c fl1996 by Byung Kyoo Kang and James M. ....
.... begin if flag = 1 for i : 1 to n1 do sum1 : sum1 arr1[i] else end; for i : 1 to n2 do sum2 : sum2 arr2[i] sum2 : integer ) procedure Sum1 or Sum2 var i : integer; var sum1, e) arr1, arr2 : int array; n1, n2, flag : integer; b) n fib arr begin for i : 3 to n fib arr[1] 1; fib arr[2] : 2; i : integer; var asum : int array; var fib arr : int array; n : integer; Sum(n, fib arr, sum) end; fib arr[i] fib arr[i 1] fib arr[i 2] Sequential cohesion d i d d Sum d procedure Fibo Avg var avg : float ) avg : sum n; avg n arr sum Functional cohesion d i sum : sum ....
[Article contains additional citation context not shown here]
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644-- 657, August 1994.
....Objective criteria for evaluating design alternatives are needed. Many existing criteria are applicable to implementations, not designs. Examples of objective criteria for evaluating code structure include principles of structured programming, the cyclomatic number [11] functional cohesion [4], and many others. The principles of information hiding and data abstraction provide guidance for structuring a design, but do not give objective means for comparing alternative structures. Function points are used to predict the expected size of an implementation rather than to evaluate design ....
....would be created from a given design. It is defined in terms of processing elements , which is processing that must be done in a module but may not yet be reduced to code. The DLC measure treats each output component as part of a module s functionality, which is how functional cohesion measures [4] and Lakhotia s rules to compute module cohesion [10] have been defined. The processing element of SMC Cohesion, therefore, corresponds to the output component of the DLC measure. Figure 3 shows the relationship between the DLC measure and SMC Cohesion. We omit the temporal association of SMC ....
[Article contains additional citation context not shown here]
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644-- 657, Aug. 1994.
....this analysis reinforced the hypothesis that these metrics are indeed indicators of cohesion. 3 Measuring Functional Cohesion Functional cohesion is the highest level of cohesion in the procedural paradigm. Slice abstractions provide a model for a set of metrics for measuring functional cohesion [3]. Functional cohesion is identified by examining procedure outputs. Each output object (output parameter, modified global variable, or file) represents one component of a procedure s functionality. Although a procedure may perform a computation that does not produce outputs, outputs of some kind ....
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644--657, August 1994.
.... Cohesion can be classified using an ordinal scale that ranges from the least desirable category coincidental cohesion to the most desirable functional cohesion [11] In the past, our joint work has focused on the rigorous development of functional cohesion measures based on program slices [2]. Functional cohesion is an appropriate measure for procedural code where basic software units are procedures and functions. In object oriented software, the basic design units are classes, which are collections of instance variables and methods. Functional cohesion cannot be applied directly to ....
....measure of the lack of cohesion (LCOM) between methods [5] In both approaches, we treat the class as the basic unit and the instance variables as the glue that connects the methods in a class. The difference in the approaches is in how we measure the glue . 2 Ott and Mehra s approach. In [2], functional cohesion measures are presented based on a slice abstraction model of programs. The underlying assumption is that in a procedural paradigm the intent of a module is to perform a function which is, in general, manifested by the computation of one or more outputs. Modules are assumed to ....
[Article contains additional citation context not shown here]
J.M. Bieman and L.M. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644--657, August 1994.
.... coincidental cohesion to the most desirable functional cohesion [7] To apply this cohesion model to classes in object oriented software, we need to add a new classification, data cohesion [5] Bieman and Ott developed a set of functional cohesion measures based on program slices [2]. These measures apply only to individual functions; their application to entire classes is not obvious. Chidamber Research partially supported by NASA Langley Research Center grant NAG1 1461. Appeared in Proc. ACM Symposium on Software Reusability (SSR 95) April, 1995. pp. 259 262 Copyright ....
J. Bieman & L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644--657, Aug. 1994.
....component of this work in other works must be obtained from the IEEE. the measurement of module cohesion has been difficult to automate, and cohesion has not been effectively used as a software quality indicator [18] Existing techniques can measure or assess the cohesion of procedural code [5, 9, 2], structured design documents [15, 16] packages [13, 12, 3] and classes [4, 14, 1] Our objective is to develop techniques to objectively measure cohesion in terms of information available from the detailed design of modules in procedural programs. More precisely, for each procedure we assume ....
....associations between processing elements as a set of rules concerning data dependencies in module code. Lakhotia s methods require the analysis of code level information; they can be adapted for use on design level constructs. The second approach, a slice based approach, is used by Bieman and Ott [2]. They measure functional cohesion in terms of the connections between code data tokens on module output slices. The computation of functional cohesion also requires code level information. Class cohesion measures for object oriented software have also been defined using a slice based approach, ....
[Article contains additional citation context not shown here]
J. Bieman and L. Ott. Measuring functional cohesion. IEEE Trans. Software Engineering, 20(8):644-- 657, August 1994.
No context found.
Bieman, J. M. and Ott, L. M. 1994. Measuring functional cohesion. IEEE Transactions on Software Engineering 20, 8 (Aug.), 644--657.
No context found.
Bieman, J. M. and Ott, L. M., "Measuring Functional Cohesion," IEEE Transactions on Software Engineering, Vol. 20, No. 8, August 1994, pp 644-657.
No context found.
J.M. Bieman and L.M. Ott, "Measuring Functional Cohesion," IEEE Trans. Software Eng., vol. 20, no. 8, pp. 644-657, Aug. 1994.
No context found.
J. Bieman and L. Ott, "Measuring functional cohesion, " IEEE Transactions on Software Engineering, vol. 20, pp. 644--658, August 1994.
No context found.
J. Bieman and L. Ott, "Measuring functional cohesion, " IEEE Transactions on Software Engineering, vol. 20, pp. 644--658, August 1994.
No context found.
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion, " IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
No context found.
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion," IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
No context found.
J. M. Bieman, L. M. Ott, "Measuring Functional Cohesion, " IEEE Transaction on Software Engineering, Vol.20, No.8, pp.644-657, 1994.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC