DESIGN FOR QUALITY: THE CASE OF OPEN SOURCE SOFTWARE DEVELOPMENT
|
|
|
- Wesley French
- 9 years ago
- Views:
Transcription
1 DESIGN FOR QUALITY: THE CASE OF OPEN SOURCE SOFTWARE DEVELOPMENT Caryn A. Conley Leonard N. Stern School of Business, New York University, New York, NY WORK IN PROGRESS DO NOT CITE February 2008 Abstract This paper proposes and examines a model of the relationship between elements of product design and software quality in open source software (OSS) development projects. Research suggests that product design, or product architecture, affects work processes and outputs in the production of goods and services. In the case of software, we therefore hypothesize that product architecture affects characteristics of subsequent code contributions, which in turn affect product quality. An analysis of 203 software releases in 46 OSS projects hosted on SourceForge.net lends support for the hypothesized relationship between software modularity and software development, suggesting that the degree of software modularity is positively associated with the number of contribution opportunities and the number of code contributions, and negatively associated with contribution size. In addition, we find that software modularity is associated with reduced software complexity, one common measure of software quality. Surprisingly we find that software modularity is associated with an increased number of static software bugs and number of bugs reported, additional measures of software quality. However, opportunities to contribute mediates the relationship between degree of modularity and number of static bugs and bugs reported to yield the expected relationship between modularity and bugs. In addition to proposing and testing relationships between elements of software development and software quality, we introduce new measures of modularity and software quality. Implications are developed for the theory of modularity and the practice of software development. Keywords: Open source software, modularity, software quality, software development 1
2 Design for Quality: The Case of Open Source Software Development Introduction Open Source Software (OSS) development is one of the most prominent examples of the voluntary, distributed, and decentralized production of digital goods over the Internet. Volunteers around the world use the Internet to contribute software, which is then freely available for others to use and alter. Prominent and successful examples of OSS projects include Apache, Linux, and Mozilla Firefox. Apache, for example, comprises over fifty percent of web server market share (Wheeler, 2007), and Firefox is one of the most popular web browsers with 37.2% market share in January 2008 (W3Schools, 2008). In addition, organizational adoption and investment in OSS products continues to increase. For example, IBM employs over 600 programmers dedicated to Linux (BusinessWeek, 1/31/2005). Moreover, organizations used 26% more OSS applications in 2007 than 2006 (OpenLogic, 1/22/2008). Not only are organizations using OSS products, many are exploring how to incorporate OSS development methods into their existing software development practices and how to create internal OSS projects within the organization itself (e.g. Dinkelacker & Garg, 2001; Dinkelacker, Garg, Miller & Nelson, 2002; Sharma, Sugumaran & Rajagopalan, 2002). At first glance, people who volunteer in the distributed and decentralized production of digital goods seemingly come together almost randomly to create high-quality products. These community-based projects lack traditional mechanisms to organize work that have been theorized to be important in work design in the past. For example, these projects lack labor contracts and job descriptions to guide and enforce work behavior (e.g., Jensen & Meckling, 1976; Milgrom & Roberts, 1992). They have minimal formal managerial task definition and assignment mechanisms used to organize work processes in comparison with traditional 2
3 organizations (e.g., Emery & Trist, 1960; Hackman, 1977; Taylor, 1911, reprinted 2001). These projects also lack organizing mechanisms used in traditional software development projects, such as project timelines, requirements definitions, project budgets, and coordination mechanisms (e.g. Faraj & Sproull, 2000; Kraut & Streeter, 1995). In the absence of many of the formal mechanisms used in traditional organizations and software development, other types of structure and mechanisms have emerged that influence development behavior in community-based OSS projects. Tools such as mailing lists, discussion boards, and bug reports help to structure communication among members and developers, which influences the software development process as ideas are exchanged and decisions are made (Mockus & Fielding, 2000; Raymond, 2000; Scacchi, 2001; Scacchi, 2002). As projects mature, social norms emerge and subsequently guide the acceptance of code patches and allocation of commit privileges to help ensure software quality (O Mahoney & Ferraro, forthcoming; O Mahoney & Ferraro, 2005). 1 The ideology of the project community has also been found to affect project developer attraction and retention as well as output from the development process (Stewart & Gosain, 2006). Finally, the flexibility of the OSS license associated with the software has been found to affect user interest in the project and software development effort (O Mahoney, 2003; Stewart, Ammeter, & Maruping, 2006). While these mechanisms are important in guiding participation in these community-based OSS projects, other structures may more directly affect aspects of the software development process, such as coordination effort among developers and comprehension and understanding of the software design. One such structure is product design or product architecture. Research in other domains, for example the production of tangible goods and services, suggests that product 1 OSS projects use software called source code repositories to manage changes to the source files over time. Many projects only allow a small group of developers to make changes to the files stored in the repository, which then propogates the changes to other users. This write access to the repository is commonly referred to as a commit privilege. 3
4 design affects work processes and work outputs (Baldwin & Clark, 2000). One important concept used to characterize product architecture, degree of modularity, has been theorized to be particularly important for both work process and work output. For example, increasing modularity should reduce information processing requirements (March & Simon, 1993). It should also decrease coordination effort and increase task independence, which should then improve task performance and innovation outcomes (Johnson, 2002; MacCormack, Rusnak & Baldwin, 2006; von Hippel, 1990). In the domain of conventional software development, increasing modularity is theorized to increase software quality and reduce programmatic effort (Parnas, Clements & Weiss, 1984; Sullivan, Griswold, Cai & Hallen, 2001). However, we lack systematic empirical evidence to support these claims for both traditional product development and software development (Liu & Iyer, 2007; MacCormack, Rusnak, & Baldwin, 2007). Previous empirical work primarily consists of case studies, providing anecdotal evidence at best as theoretical support. One reason for the lack of empirical tests of these theoretical claims stems from the difficulty associated with measuring degree of modularity, because accurately assessing the patterns of interdependencies that exist within a product s architecture proves challenging. Community-based OSS development is a unique context in which to examine the effects of product architecture on product development for several reasons. First, community-based OSS development is relatively free of formal organizational influences, so the independent effects of product architecture should be easier to detect and model. Second, as previously mentioned, OSS is a well-established and important phenomenon itself, with many successful projects and increasing organizational adoption and investment. Third, the population of OSS projects is sufficiently large and varied that it is possible to compare differences in work processes and project outcomes. Fourth, software offers a unique opportunity to assess product modularity, 4
5 since characteristics of the software architecture can be extracted by examining the source code. Finally, because OSS development is conducted via the Internet, characteristics of the product, work performed, and product quality can be observed and measured relatively easily. We explore how the design characteristics of the software itself will influence the work behavior and software quality in community-based OSS projects. We draw upon theoretical perspectives from organization theory and software engineering literature to develop our ideas. Theoretical perspective Product design, applicable to both traditional tangible goods as well as software development, consists of various elements, including design or product features, design parameters or product attributes, and design structure or product architecture (Baldwin & Clark, 2000; Ulrich & Eppinger, 2004). While product feature sets describe a product s functionality and the product attributes describe characteristics such as size and color, product architecture describes the relationships among the functioning components within a product. These relationships among components within a product are much more likely to affect product development overall than the feature set or user interface design, since these relationships likely affect coordination effort and developer comprehension of the product s functionality. Modularity is an important concept used to characterize product architecture in both tangible goods as well as software, and describes the degree to which components within a product are independent of one another. This degree of component independence should then directly affect task coordination and independence in product development, and subsequently affect development outcomes. We therefore study this characteristic of product design, degree of modularity, and seek to answer the research question: How does degree of product design modularity affect software development and software quality in community-based OSS projects? 5
6 We define software development as comprising code contributions accepted by the community. 2 A code contribution could entail adding a new component, modifying an existing component, or deleting an existing component. 3 Code contributors are people who make contributions to the software. In general, product modularity is a strategy for efficiently organizing complex products, and is particularly useful in software (Baldwin & Clark, 1997). Modularity describes the degree to which components within a product or system are independent or loosely coupled from one another, yet function as an integrated whole using interfaces (Baldwin and Clark, 2000; Sanchez and Mahoney, 1996). Conceptually, modular systems are comprised of components that are designed independently but still function as an integrated whole (p. 86, Baldwin & Clark, 1997). Interfaces describe in detail how the [components] will interact, including how they will fit together, connect, and communicate (p. 86, Baldwin & Clark, 1997). Modularity is related to a product s architecture, defined as the scheme by which the function of the product is allocated to physical components (p. 240, Ulrich, 1995). Components refer to a separable physical part or subassembly or distinct region of the product (p. 421, Ulrich, 1995). Relationships among individual components are described by coupling, such that two components are coupled if a change made to one component requires a change to the other component in order for the overall product to work correctly (p. 422, Ulrich, 1995). Products with a low degree of modularity are considered highly integrated products, because the functionality is tightly coupled and interdependent, regardless of the number of components. Refer to Figure 1 for a conceptual illustration of product modularity, applicable to both traditional products as well as software. 2 The process by which contributions are accepted into the community varies across projects, and is not specifically examined in this paper. 3 General community discussion and communication, such as requests for new features or problem reports, are not considered code contributions in this research, because they do not directly alter the product. 6
7 Insert Figure 1 about here Product modularity should subsequently affect product development. Modularity facilitates task decomposition, which is a strategy for efficiently organizing the work necessary to create the products (Simon, 1969). More specifically, as a product becomes more modular, the process of dividing a larger task into smaller subtasks becomes easier, and tasks become easier to identify. In the context of conventional software development, prior work has claimed that software modularity improves software quality and reduces programmatic effort in both the development and maintenance of centrally-developed and hierarchically-managed software (Parnas, Clements, & Weiss, 1984; Sullivan, Griswold, Cai, & Hallen, 2001). It therefore seems natural to expect the degree of software modularity to affect software development and software quality in OSS projects. Refer to Appendix A for a description of specific software components and their relationship(s) in software design. Following from the definition of modularity, all other things being equal, more modular software products have more components that are more loosely coupled. The probability that a change to one component will inadvertently affect another component, thus introducing an error, should decrease in more modular software. In addition, smaller and more loosely coupled components foster more rapid problem resolution because problem identification is more likely localized to specific modules (Parnas, Clements, & Weiss, 1984). As the ease of problem identification and resolution increases with increasing modularity, a larger number of existing problems should be identified and resolved within the software application, thus increasing software quality in more modular software: 7
8 H1: Projects with software exhibiting a higher degree of modularity will be associated with higher quality software As product modularity increases, a given product will be comprised of a greater number of independent or loosely coupled components, holding the size of the product constant. Increased component independence facilitates task identification, since it is easier for a product contributor to comprehend the scope of functionality affected by a given change. Ease in task identification combined with a larger number of independent components in a more modular product should increase the number of separate task opportunities to contribute. In addition, as the number of components increases, functionality becomes more specialized and isolated within each of the components, and each component contains less functionality on average (Baldwin and Clark, 2000; Parnas, Clements, & Weiss, 1984; Sanchez and Mahoney, 1996; Ulrich, 1995). By reducing the quantity of functionality within each component, contributors should be able to alter the component by making smaller sized changes because they can make changes only to the functionality isolated in a specific independent component. This is important because smaller sized changes should require less effort to construct, which increases the probability of making a contribution. The average size of a product contribution to a given product therefore decreases as product modularity increases. In addition, since the average scope of functionality contained within each component decreases as modularity increases, a code contributor must change each new component in a more modular product to affect the same functionality as a single large change to the single component in a less modular product. These changes can be incorporated into several code contributions in a more modular product due to the independence among the components. Therefore, as software modularity increases, a greater number of smaller contributions will be necessary to change the same functionality: 8
9 H2a: A higher degree of software modularity will be associated with more separate opportunities to contribute. H2b: A higher degree of software modularity will be associated with a greater number of code contributions H2c: A higher degree of software modularity will be associated with smaller average sized code contributions The hypothesized increase in the number of separate opportunities to contribute to more modular products should subsequently affect software quality. Because tasks are easier to identify, it should reduce the amount of uncertainty or ambiguity associated with writing source code, which should decrease the probability of introducing a bug. In addition, as the number of more easily identifiable tasks increase in projects with more modular software, the probability of finding and resolving existing bugs should also increase. Therefore, opportunities to contribute should mediate the relationship between modularity and software quality: H3a: The number of separate opportunities to contribute will positively mediate the effect of degree of modularity on software quality Literature from software engineering suggests that minimizing the size of a software program and maximizing the simplicity of source code reduces the number of errors or bugs introduced into the product (Dunn, 1984; Marciniak, 1994; Parnas, Clements, & Weiss, 1984; Ward, 1989). Since the average size of each contribution is smaller in more modular software, the probability that any one contribution contains an error or bug should decrease. In addition, if software with higher modularity elicits a greater number of smaller sized contributions, then each change is more likely to affect a smaller percentage of total functionality. Changing a smaller portion of functionality should reduce the likelihood that the contribution introduces an error into 9
10 the software, therefore increasing software quality. Therefore, the average size of a code contribution should mediate the relationship between modularity and software quality: Method Overview H3b: The average size of contributions will positively mediate the effect of degree of modularity on product quality Refer to Figure 2 for an illustration of the theoretical model Insert Figure 2 about here To examine how software modularity affects software development and software quality in community-based OSS projects, we require detailed longitudinal information about software design, code contributions and objective measures of software quality. OSS projects hosted on SourceForge.net meet these requirements. People can freely register any OSS project on SourceForge, and subsequently use the suite of tools available to all registered projects, including a source code repository, project website, developer website, tracker tools, mailing lists, and discussion boards. Common availability and use of these tools across projects reduces tool differences as a source of observed differences in software quality. In addition, SourceForge is one of the most popular platforms for hosting OSS projects, thus yielding a large population of projects from which to draw our sample. Most importantly, SourceForge provides a public record of the history of each project: all records of communication, release history and associated files, source code repositories, artifact tracking, etc, are publicly available and accessible, providing us with our required data of a cross-section of OSS project data over time. 10
11 Sample While SourceForge hosts over 160,000 thousand registered projects, not all projects exhibit characteristics that correspond to the types of projects of interest. For example a large fraction of registered projects are estimated or known to be a vanity project or a project in name only, i.e., they have no developers other than the person who registered the project and exhibit no development or communication activity. Of the remaining real projects, some are clearly controlled by a commercial organization and its employees, rather than by volunteers. We theorize about community-based OSS projects in which volunteers self-assign to perform the work and so exclude corporate-based or organizationally-sponsored projects, as these groups have a commercial incentive and authority to exercise control over the project. 4 In addition, because we examine how software modularity affects product development and product quality, it is important for each project to have created a working program, even if it is very preliminary, to ensure the existence of an initial code base from which project members could work. Generally speaking, OSS projects in later stages of development have distributed at least one version, or release, of the software. It is also important that the project exhibits some minimum degree of development or communication activity among project members to ensure a sufficiently large pool of potential code contributors. 5 The most common programming language used by the projects registered on SourceForge.net are object-oriented programming languages, including Java and C++. 6 In addition, object-oriented language skills are the most common skills reported by SourceForge.net users. We therefore used the following sampling frame to identify 4 We categorized a project as community-based by visiting each project s home page. Websites that were not hosted by a third-party or did not state any affiliations or sponsorships were considered community-based. 5 Project activity refers to any communication behavior made by OSS project members (e.g. posts to discussion forums, bug trackers, lists, etc.). Projects with at least 75 total posts to any of the project communication tools (discussion forums, trackers, and lists) as well as evidence of use of the source code repository were included in the sampling frame. 6 Java is the most commonly used programming language (18.0%), and C++ is the second most commonly used programming language (17.8%) by projects registered on SourceForge.net. 11
12 an appropriate group of projects from which to sample: projects that do not exhibit obvious corporate or organizational sponsorship or involvement, projects with at least one software release in a relatively mature development stage (Beta or Production/Stable), projects exhibiting a minimum level of project activity, and products written only using Java. The frame includes approximately 180 projects from which a random sample of 50 was drawn. For each project, we sample each major software release (e.g. 1.x, 2.x) as our unit of analysis. Refer to Table 1 for descriptive information for each project sampled. Measures Insert Table 1 about here Modularity. Software modularity describes the degree to which software components are independent of one another yet function as an integrated whole using software interfaces. It is possible to assess the degree of independence, and thus modularity, among software classes by examining function calls among classes. Several researchers have measured software modularity at the class or file level (Liu & Iyer, 2007; MacCormack, Rusnak, & Baldwin, 2006; MacCormack, Rusnak, & Baldwin, 2007). While this measure provides detailed information regarding software functionality, individual classes or files do not function as modules or components. In addition, these measures do not capture whether classes or files communicate via interfaces, a key element in modularity. In practice, programmers use groups of files or classes, called packages in Java, to implement software functionality (Gumpta, 2008; Flanagan, 1999). Classes within these packages should be interdependent, and classes contained in different packages should be independent. Programmers implement independence among packages using interfaces. Therefore, we believe that measuring the degree of software modularity using 12
13 packages as the module or component, not classes or files, and capturing the extent to which interfaces are used to achieve independence is a more appropriate assessment of software modularity. Many people have written applications to extract information about class relationships, and Martin (1994) proposed a method for mathematically evaluating this information at the package level. We use Martin s calculation as our measure of degree of modularity (refer to Appendix B for exact formulas used in the calculation). The measure assesses the degree to which Java programming constructs (e.g. interfaces and concrete classes) are used to achieve independence among packages. We calculate the degree of modularity for each package within the software application weighted by the size of the package (log of the lines of code (LOC)). We then calculate the average degree of modularity across packages for the average degree of modularity of the software for a particular release. We construct these metrics for each major release sampled using the source code contained in each release. To the best of our knowledge, no previous research on OSS development has used this measure. Software quality. We use objective and subjective measures to assess software quality. We introduce two objective measures of software quality not previously reported in the OSS literature: number of static bugs and software complexity. 7 Bugs in software refer to problems with the program that prevent it from running properly. Examples include logical flaws, inappropriate use of programming constructs, or memory leaks. Any of these problems reduce software quality. In addition, software complexity makes it more difficult to identify and fix problems, as well as sustain maintenance over time. Both measures are derived from objective evaluations of the source code included in the software release. We first assess the number of bugs or defects in the source code using two static source code analysis tools, FindBugs 7 Both measures are frequently used in software engineering (e.g., Glover, 2006a; Kan, 2002) 13
14 ( and PMD ( Both tools provide a list of the problems found, and the location of each problem in the source code. The results of these static source code analysis tools are combined because each uses a different algorithm to identify different types of problems or defects within the source code. 8 This measure should be interpreted in a relative sense, as each tool exhibits some degree of false positive and false negative reporting. Number of static bugs is therefore a count of the total number of static source code bugs found by both programs for a given software release divided by the log of the total LOC in the release to control for software size. In addition to the number of bugs or defects in a software program, software complexity also reflects the quality of the software written. Software complexity describes the complexity of the control flow logic within an application by examining the number of linearly independent paths within the source code. A greater number of logic paths indicate greater complexity. We use McCabe s Cyclomatic Complexity measure, a standard metric used in software engineering, to measure software complexity in this paper (McCabe, 1976). 9 We calculate the average software complexity of each release using a static source code analysis tool. We use three subjective measures of software quality previously identified in OSS research as a proxy for software quality and OSS project success (Crowston, Annabi, Howison, & Masango, 2004). Many OSS projects use a specific communication tool, a bug tracker, to encourage users to voluntarily report errors found in the software. 10 Once a bug has been addressed or solved by project developers, the bug report will be closed. We calculate three 8 Each tool produces a specific number of defects. One measure of product quality is thus the sum of the defects identified by each tool. 9 The software engineering literature reports a strong correlation between this complexity measure and the number of bugs (Dunn, 1984; Glover, 2006a; Glover, 2006b; Ward, 1989). 10 Many OSS researchers have used community problem reports or bug reports as a proxy for software quality. However, not all project communities use specific bug tracking tools some may use lists or discussion boards to manage reported bugs making it difficult for researchers to filter identified bugs from other communication. 14
15 measures of software quality using this bug report information. First, we calculate the number of bugs reported as the number of bug reports created for a given software release. A greater number of problems reported by users should reflect lower software quality. We use two measures to assess the degree of difficulty of resolving bugs reported: percentage of bugs closed and time to close bugs. 11 The larger the percentage of bugs that have been closed, the easier it may be to resolve identified problems, thus indicating higher software quality. Also, a lower average time (weeks) spent addressing and resolving identified bugs suggest ease in problem resolution, also indicating higher software quality. Because projects with smaller communities may experience fewer bug reports because of the small user base, fewer bug reports may not necessarily indicate better software quality. We weighted all three bug report measures by the number of downloads for each release, which has not been done previously to our knowledge. 12 Code contributions. To alter a software application, developers make changes to the files ( classes ) that comprise the software. We therefore operationally define a code contribution in an OSS project as alteration(s) to a file or group of files, or the addition (or deletion) of new (old) file(s) at a specific date. A code contributor is the developer making the code contribution to the project. For each software release, we evaluate the code contributions that occurred during the time elapsed between the current release and the subsequent release. Developers make changes at the file or class level and, in traditional software development, are often assigned particular files or classes for which they are responsible 11 We only calculate the average time to close bugs for bug reports that have been closed. This is therefore a conservative measure of time to fix bugs, as some may be outstanding with very long working periods. NOTE: We are currently performing analyses using median time to close bugs in case the average time is skewed to the right. 12 Because we do not have data on the number of downloads per time period for each project, we estimate the number of downloads for each release based on the duration of each release. For example, assume a project has 10,000 downloads over the lifetime of the project. If the project has two releases (and thus two release periods), and the first release period was three years and the second release period was one year, we would estimate that 7,500 downloads occurred during the first period and 2,500 during the second period. NOTE: We are currently exploring other allocations of number of downloads per release, since download behavior is not likely consistent over time. For example, as the project gets better, more people are likely to download the software as the software matures. 15
16 (MacCormack, Rusnak, & Baldwin, 2007). Because classes comprise software packages, they reflect the organization of source code within packages. As the number of files or classes in an application increase, there are more separate subunits of source code within a package on which product contributors can work. We therefore use the number of total classes in a program as a proxy for the number of separate opportunities for a code contributor to contribute. OSS projects use a central file repository system to track changes made to the files over time, called a versioning system. This system organizes changes made to software files into commits. A commit occurs when a developer (code contributor) changes a file or group of files contained in the repository at a specific point in time (code contribution). The versioning system contains precise information about commits over time (e.g. date of the change, file(s) affected, lines of code affected, and comment describing the changes made), which can be extracted from the history file (see Figure 3 for an example of CVS history in an example file). Using the information in the history file, we calculate two measures of code contribution characteristics: number of code contributions and size of code contributions. We use two measures to represent number of code contributions. First, we count the number of commits for a given release as the total commits. 13 Second, since each commit may affect more than one file, we also calculate the number of files changed by commits in a given release as the total files changed. 14 We use two more variables to measure characteristics of contribution size. First, the average commit size is the average number of LOC added and deleted per commit for a given release. Second, the average lines changed per file is the average number of LOC added and deleted per file for a given release. 13 Note that a contribution could be an addition, a deletion, or a modification. 14 Software is comprised of files, not commits. Commits group changes made to files, and are subjective units of change, as a developer may choose to commit several groups of changes in a single commit. 16
17 Insert Figure 3 about here Control variables. Each sampled OSS project has multiple software releases. Because each release occurs at a different point in time, two variables are used to capture the temporal stage or history of projects. First, the weeks since project registered captures the number of weeks between the date that the project was registered on SourceForge and the date that the specified software was released. Second, the time period between each release within a given project is captured by weeks since previous release. This value is always zero for the first release of a given project. We use dummy codes to represent whether a business-friendly OSS license is used 15 as well as whether the intended audience of the software is for computer programmers (e.g. Developers, System Administrators). We also use a dummy code to represent whether the type of application being developed is for software development or other primarily technical applications (e.g. databases, Internet). These three control variables address differences inherent in the project community or software that may affect product development and subsequently product quality. Preliminary Analyses We initially collected data on 346 releases from 50 projects hosted on SourceForge that met our sampling frame criteria. Nine releases were dropped from the sample because the release occurred prior to the registration date. In these cases, the projects had not yet been made publicly available through the SourceForge.net website, and thus were not available for community development. 15 Some licenses, such as LGPL, BSD, and MIT licenses, are more business-friendly than others, and allow full use of the software in commercial, potentially closed-source, environments. Other licenses, such as the GPL, restrict use in commercial environments (O Mahoney, 2003; Stewart, Ammeter, & Maruping, 2006). 17
18 In practice, code contributions are not always included in the next immediate software release. This delay allows ample time to test the contribution to identify and fix any associated problems or bugs prior to including the changes permanently in the software. Therefore, we examined the relative accuracy of our method of assigning commits to specific software releases based on the commit dates and the release dates. We compared the net change in the number of LOC between source code contained in the software releases to the net change in LOC added and deleted in commit activity. In some cases obvious allocation errors exist such that far too few or far too many LOC were altered by commits than were actually changed between releases. For example, in one project release, 1,468 net LOC were actually deleted from the source code released for download between releases, while 6,588 net LOC were added based on commit activity between releases. Therefore, we only included releases that indicated a relatively similar degree of source code changes by selecting those releases that exhibited percentage differences between actual changes and commit changes on an order of magnitude of 15 times or less. 16 Our final sample includes 203 releases (59% of releases sampled) from 46 projects. Many of our dependent variables were significantly skewed, so we performed log transformations on several dependent variables (number of classes, total commits, total files changed, average commit size, average lines changed per file, number of static bugs, software complexity, number of bugs reported) for the analyses. Refer to Table 2 for summary means and correlations for all dependent variables, degree of modularity, and control variables. Since our data is a panel collected for a cross-section of OSS projects over time, we use fixed and random effects regressions to test hypotheses proposed in our theoretical model. We performed initial analyses using the control variables (weeks since project registration, weeks since previous 16 We also performed our statistical analyses using a magnitude of 10 times and 20 times and did not see any significant changes in our results. 18
19 release, OSS license, intended audience, and software topic) to identify relevant and significant predictors of each outcome variable (number of classes, total commits, total files changed, average commit size, average lines changed per file, number of bugs, software complexity, number of bugs reported, percentage bugs closed, and time to close bugs) prior to including our independent variable, degree of modularity. OSS license, intended audience, and software topic were not significant predictors for any of the dependent variables, and so were dropped from all subsequent analyses. After determining significant control variables for each model, we then performed fixed and random effects regression analyses with all control variables and degree of modularity and compared them to analyses using just the significant control variables. AIC and BIC statistics suggested that the fixed and random effects regression models including only the significant control variables are the most parsimonious. We therefore present the results of these models in the next section. Results Insert Table 2 about here Effect of software modularity on software quality Preliminary analyses of the relationship between degree of software modularity and software quality provide some support for the hypothesis that projects with more modular software exhibit products with higher software quality (hypothesis 1). The bivariate correlation between modularity and software complexity is (p < 0.001). However, degree of modularity is surprisingly positively correlated with total static bugs (r = 0.44, p < 0.001), suggesting that as degree of modularity increases, the number of static software defects also increases, indicating lower product quality. Bivariate correlations do not provide evidence that 19
20 modularity is significantly associated with number of bugs reported (r = 0.14, n.s.), percentage of bugs closed (r = -0.05, n.s.), and time to close bugs (r = -0.08, n.s.). We used random effects regression analyses using STATA to further test the relationship between degree of modularity and software complexity. 17 After controlling for project characteristics, we find that a higher degree of product modularity is significantly associated with lower product complexity (thus higher product quality) (-1.05, p < 0.001), providing support for hypothesis 1. Recall that we have two different measures of software defects: number of static bugs and number of bugs reported. We performed random effects regression analyses using STATA to test the relationship between degree of modularity and bugs. 18 Results predicting number of static bugs (1.02, p < 0.001) suggests that a higher degree of modularity is significantly associated with a larger number of bugs (thus lower product quality), the opposite of the prediction in hypothesis 1. Results predicting number of bugs reported were marginally significant (0.79, p < 0.10), suggesting that higher modularity is marginally associated with a larger number of bugs reported, the opposite of hypothesis 1. Results predicting percentage of closed bugs (0.41, n.s.) and weeks to close bugs (0.18, n.s.) were not significant. Refer to Table 3 (Model A) for complete regression results for these models Insert Table 3 about here We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the random effects models were appropriate for both software complexity. We performed regression analyses on 45 groups and 180 observations, using OSS project as the group. 18 We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the random effects models were appropriate for number of static bugs, number of bug reports, percentage of bugs closed, and time to close bugs. We performed regression analyses on 45 groups and 180 observations, using OSS project as the group, using number of static bugs as the dependent variable. When testing measures of number of bugs reported as the dependent variable, we performed regression analyses on 44 groups and 199 observations, using OSS project as the group. 20
21 Effect of software modularity on code contributions We next examine the relationship between degree of modularity and number of contribution opportunities. Bivariate correlations indicate a strong positive relationship between degree of modularity and number of classes (r = 0.57, p < 0.001), as predicted. Next we performed a random effects regression analysis using STATA. 19 We find that degree of modularity significantly predicts a larger number of total classes (2.03, p < 0.001), providing support for hypothesis 2a that higher modularity is associated with more separate future opportunities to contribute. When examining the relationship between modularity and total contributions, bivariate correlations show a positive relationship between degree of modularity and total commits (r = 0.28, p < 0.001) and total files changed (r = 0.34, p < 0.001), as predicted. We then performed two random effects regression analyses using STATA. When predicting total commits, we find that a higher degree of modularity is significantly associated with a higher number of total commits made after the software is released (1.30, p < 0.05). In the second regression, we also find that a higher degree of modularity is associated with a larger number of total file changes (1.33, p <0.05). These results provide support for hypothesis 2b, that greater modularity is significantly associated with a larger number of future product contributions. When examining the relationship between modularity and contribution size, bivariate correlations show no relationship between degree of modularity and average commit size (r = , n.s.). However, there is a strong negative relationship between degree of modularity and average number of lines changed per file (r = -0.23, p < 0.05). We performed fixed and random 19 We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the random effects models were appropriate for both number of class files and total contributions. We performed regression analyses on 45 groups and 180 observations, using OSS project as the group, when predicting number of class files. We performed regression analyses on 46 groups with a total of 203 observations, using OSS project as the group, when predicting total contributions. 21
22 effects regression analyses using STATA. 20 Results from the random effects regression examining average commit size do not support a relationship between degree of product modularity and average commit size after the software is released (-0.54, n.s.). However, results of the fixed effects regression suggest a negative relationship between degree of modularity and the average number of lines changed per file (-1.02, p < 0.05) as predicted. These results provided partial support for hypothesis 2c, that higher modularity is associated with smaller sized future product contributions. Refer to Table 4 for complete regression results for these models. Effect of code contributions on software quality Insert Table 4 about here To test whether code contributions mediate the relationship between modularity and software quality, we performed several regressions using opportunity to contribute and size of the contribution. Following Baron and Kenny (1986), we performed four steps in the analysis. First, we tested whether modularity significantly predicts code contributions. Second, we tested whether modularity significantly predicts software quality. Third, we tested whether code contributions significantly predict software quality. Fourth, if the previous three steps were significant, we tested whether both modularity and code contributions together predict software quality. A statistically significant change in the coefficient of modularity when code contributions are included in the regression, provides evidence for a mediating effect of code contributions on software quality. 20 We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the random effects model was appropriate for average commit size and fixed effects were appropriate for average size of file change. We performed regression analyses on 46 groups with a total of 203 observations, using OSS project as the group, when predicting contribution size. 22
23 From previous analyses, we have already demonstrated that modularity significantly predicts number of opportunities to contribute (number of classes) and size of code contributions (size of changes by file) 21 (step 1), as well as software quality (software complexity, number of static bugs, and number of bugs reported) 22 (step 2). We next performed fixed and random effects regression analyses to examine whether opportunities to contribute predicts software quality (step 3). 23 We find that number of classes significantly and negatively predicts software complexity (-0.18, p <0.001) and significantly and positively predicts number of static bugs (0.70, p < 0.001) and number of bugs reported (0.26, p < 0.05), such that increasing the number of opportunities to contribute decreases software complexity yet increases the number of software defects. Since number of classes significantly predicts software complexity, number of static bugs and number of bug reports, we performed the final step of the mediation analysis. We performed random effects regressions using both modularity and number of classes to predict software complexity, number of static bugs and number of bug reports. Number of classes does not mediate the relationship between modularity and software complexity, since the coefficient of modularity does not change significantly (-0.96 to -0.92). However, number of classes fully mediates both measures of bugs: the coefficient for modularity changes from significantly positive (1.00, p < 0.001) to significantly negative (-0.49, p < 0.001) when predicting number of static bugs, and becomes insignificant when predicting number of bug reports (from 0.79, p < to -0.38, n.s.). These results provide partial support that number of opportunities to contribute mediates the relationship between modularity and software quality, though in the 21 We did not perform mediation analyses using size of changes by commit because modularity did not significantly predict this measure of contribution size. 22 We did not perform mediation analyses using percentage of bugs closed or time to close bugs because modularity did not significantly predict these measures of quality in previous analyses. 23 We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the fixed effects models were appropriate for software complexity and results from random effects models were appropriate for number of static bugs and number of total bugs. 23
24 opposite direction (H3a). Refer to Table 3 for complete results of these models (steps 1, 3, and 4). To test whether size of contributions mediates the relationship between modularity and software quality, we examined whether contribution size significantly predicts software quality (step 3). Results from random effects regressions 24 do not support a significant relationship between size of changes by file and number of static bugs (-0.05, n.s.) or number of bug reports (-0.02, n.s.). However, results from fixed effects regressions suggest a statistically significant relationship between size of changes by file and software complexity (-0.18, p < 0.001). Because contribution size only significantly predicts software complexity, we performed the final step of the mediation analysis. We performed random effects analyses using both degree of modularity and size of changes by file to predict software complexity. We do not find support for a mediating relationship, as the coefficient of modularity does not change significantly (-0.96 to ). We therefore do not find evidence that contribution size mediates the relationship between modularity and software quality (H3b). Refer to Table 5 for complete regression results of these models (steps 1, 3, 4). Discussion Contrary to popular belief and theories of modularity, empirically we find a significant and negative relationship between degree of modularity and number of software defects. The reason for this unexpected finding can be explained by the relationship between degree of modularity and code contributions. First, we find empirical support for the expected theoretical relationship between degree of modularity and code contributions. Specifically, as degree of modularity increases, both the number of opportunities to contribute and the total number of 24 We ran both the fixed and random effects regressions using xtreg, and results of the Hausman test suggested that results from the fixed effects models were appropriate for software complexity and results from random effects models were appropriate for number of static bugs and number of total bugs. 24
25 contributions increases. In addition, as modularity increases, the average size of changes made to the software decrease, as measured by the average size of changes made to the files in the application. However, even though modularity positively affects code contributions, increasing the number of opportunities to contribute increases both the number of static bugs and bugs reported, suggesting that there may be a tradeoff between degree of software modularity, software development, and software quality in community-based OSS projects. While we cannot test the difficulty associated with comprehending more modular software architecture, we expect that this added complexity may explain this tradeoff. Particularly in software development, developers are not forced to use interfaces to maintain software architecture. It is possible and fairly easy to alter the software architecture over time because the architecture is manifested in the lines of code, which are very easy to change. As the number of opportunities to contribute increases, it is more likely that a code contributor will have to alter several components to make a change, and thus may have to understand a more complex architecture to do so. This added complexity may increase the probability of introducing bugs, which would then decrease software quality. We do find the expected relationship between modularity and software complexity. This is likely because as degree of modularity increases, the number of components in the software also increases, and the average amount of functionality contained within each component decreases. The measure of software complexity used is just a count of logic paths and does not reflect the nature of relationships among components. By definition, then, if there is less functionality in each component on average, we should see a reduction in total logic paths. Finally, code contributions do not mediate this relationship between modularity and software complexity. 25
26 Limitations While we introduce new measures of modularity and software quality and test our module using longitudinal data from a fairly large sample of OSS projects, our study is not without limitations. While we are able to control for differences in software quality due to differences in tools used by sampling projects hosted only on SourceForge, we do not consider projects hosted on other sites. In addition, we examine projects written only in the Java programming language. While we do not anticipate reasons our results may not be generalizable to other object-oriented programming languages, this should be explore empirically. Other types of structure and project characteristics may also help to explain the surprising negative relationship between degree of modularity and software defects, such as project governance mechanisms and the skill level of code contributors. We hope to further explore these variables in future research using our data. Finally, while we collected and analyzed detailed archival data, we lack corroborating evidence from code contributors to support our results. In future research, we hope to address these concerns by collecting survey and interview data from code contributors and other project members to address perceptions about software quality as well as their experience writing software for the project. Conclusion and Implications Our empirical findings both complement and challenge existing theories of modularity. We find the expected relationship between software modularity and code contributions, such that increasing the degree of software modularity in community-based OSS projects increases the number of opportunities to contribute and the number of code contributions, and decreases the size of the contributions made. However, while existing theory suggests that this positive impact on work performed should improve software quality, we find mixed results with our data. As 26
27 expected, we find a decrease in software complexity as degree of modularity increases. However, we see an increase in number of software defects as modularity increases, as explained by the effects of modularity on code contributions. We also introduce a new measure of modularity to assess the relationships among software components as packages, not classes or files, which is a more pragmatic assessment of software modularity. We also apply two new measures to assess software quality in OSS projects: software complexity and number of static bugs. We also apply the previously used bug report measures to assess software quality, yet we adjust these measures for the number of users. The empirical findings regarding the relationship between modularity and product quality have implications for the practice of software development. These findings may prove useful to software development project managers who need practical and quantifiable techniques for monitoring the software development process and subsequent product quality. The measures of modularity and product quality empirically examined and tested may also help software development managers evaluate existing software and software under development. Finally, OSS development is just one prominent example of the voluntary, distributed and decentralized production of digital goods over the Internet. Other examples of this phenomenon exist, including Wikipedia ( 25 Project Gutenberg ( 26 and the Distributed Proofreaders Group ( 27 Similarly to community-based OSS development, these voluntary projects do not use a formal 25 Wikipedia consists of more than 8.8 million articles written in 253 languages by 9.4 million distributed volunteers around the world. Volunteers have made more than 173 million edits, averaging edits per page since July 2002 (as of 11/1/2007). 26 Founded in 1971, this project is the oldest and first e-text project on the Internet. As of 2003, over 10,000 Public Domain books in 46 languages have been made available. On average, 2,000 volunteers around the world perform various tasks to help 400 books become available each month (as of 10/30/2005). 27 Founded in 2000, volunteers dedicate efforts primarily to assist Project Gutenberg in the digitization of Public Domain books. Approximately 35,000 registered members have helped to make over 7,700 books available to Project Gutenberg. On average, 1,500 members log into the site each month to create hundreds of books, averaging between 100 and 350 books each month (as of 10/30/2005). 27
28 organizational hierarchy or contracts to assign and enforce tasks; instead, Internet-based volunteers self-organize to create high-quality products and services. 28 It would prove useful to explore whether the design of the products created in these projects also influences product development (e.g. encyclopedia editing, electronic book proofreading), and whether the results of the findings in this study are generalizable to other types of product development. 28 Management structure is not absent in these projects. As project members work together and establish norms of collaboration, a normative hierarchy emerges that guides future interactions and task assignment. 28
29 Appendix A Software applications are generally composed of a set of packages. Each package is composed of a set of classes, and each of these classes is composed of a set of functions. Together, these functions define the functionality of the software/package/class. The term component is generic, and can refer to packages, classes, or functions. 29 Object-oriented programming languages consist of various programming concepts to help achieve independence across components. Concrete classes contain the actual programming logic or functionality, while abstract classes act as the interfaces between concrete classes. Thus, concrete classes maintain their independence from one another by calling functions in other classes (or packages) using abstract classes. Two concrete classes exhibit greater interdependence when they call functions directly between one another rather than using abstract classes. Since packages are comprised of classes, as the degree of software modularity increases, both the number of packages and the number of classes (software components) should increase to create greater independence among packages and classes. 29 The term component is inconsistently applied when describing software, due to the differences in the organization of programming languages. Component most frequently refers to the package-level unit, but may also refer to classes or functions. 29
30 Appendix B The metrics used to evaluate the design quality of object-oriented software based on the interdependence of components in the design (Martin, 1994) measure the relationships between source code packages, and whether techniques of information hiding and module abstraction are used appropriately. The following metrics are calculated from the source code: Afferent coupling (AC): Number of other packages within the project that depend upon classes within the package; a measure of the package s responsibility (higher values indicate higher responsibility) Efferent coupling (EC): Number of other packages within the project that classes within the package depend upon; a measure of the package s independence (higher values indicate lower independence) Abstractness (A): Ratio of the number of abstract classes/interfaces to the total number of classes within a package; 0 indicates a completely concrete package, 1 indicates a completely abstract package Instability (I): Ratio of a package s independence to total independence and responsibility [EC / (EC + AC)]; measure of a package s resilience to change; 0 indicates complete stability (changes may be made to other packages without affecting this package), 1 indicates complete instability (changes made to other packages will likely directly affect this package) Distance from the main sequence (D): perpendicular distance of a package from the idealized line A + I = 1; measure of the balance between abstractness and instability of a package; 0 indicates ideal balance, 1 indicates complete imbalance Projects with high design quality should exhibit the following characteristics: 30
31 Packages with higher values of A should have lower values of EC (high independence) Packages with lower values of A should have lower values of AC (low responsibility) As a package s I increases, its A should decrease and vice versa (thus, low values of D) In this paper, D release is used as a proxy for source code modularity. To calculate D release for a release within an OSS project, each package s D is weighted by the logarithm of the source lines of code (LOC) within the package. The weighted package D s are then summed and divided by the sum of the logarithm of the lines of code (LOC): D release = D i * log(loc i ) log(loc i ) for every package i in the release. Finally, D release is subtracted from 1, so that larger values indicate higher degrees of modularity. 31
32 REFERENCES Baldwin, C. Y., & Clark, K. B. (2000). Design rules: The power of modularity (Vol. 1). Cambridge, MA: The MIT Press. Baron, R. M., & Kenny, D. A. (1986). The moderator-mediator variable distinction in social psychological research: Conceptual, strategic and statistical considerations, Journal of Personality and Social Psychology, 51, Crowston, K., Annabi, H., Howison, J., & Masango, C. (2004, May 25). Towards a portfolio of FLOSS project success measures. Paper presented at the Collaboration, Conflict and Control: The 4th Workshop on Open Source Software Engineering, International Conference on Software Engineering, Edinburgh, Scotland. Dinkelacker, J., & Garg, P. K. (2001). Corporate source: Applying open source concepts to a corporate environment (Position paper) (No. HPL ): Hewlett-Packard. Dinkelacker, J., Garg, P. K., Miller, R., & Nelson, D. (2002). Progressive Open Source. Paper presented at the International Conference on Systems Engineering, Buenos Aires, Argentina. Dunn, R. H. (1984). Software Defect Removal. New York, NY: McGraw-Hill. Emery, F.E. and Trist, E.L. (1960). Socio-technical Systems, In C.W. Churchman & M. Verhurst (Eds), Management Science, Models and Techniques, 2, London: Pergamon Press. Faraj, S., & Sproull, L. (2000). Coordinating expertise in software development teams. Management Science, 46(12), Flanagan, D. (1999). Java in a Nutshell (3 rd Ed.). Sebastopol, CA: O Reilly & Associates, Inc. 32
33 Glover, A. (2006a). In pursuit of code quality: Monitoring cyclomatic complexity, Retrieved March 5, 2007, from Glover, A. (2006b). In pursuit of code quality: Tame the chatterbox. Retrieved March 5, 2007, from Gumpta, S. (2008). Package design. Retrieved February 22, 2008, from Hackman, J. R. (1977). Work design, In J. R. Hackman & J. L. Suttle (Eds.), Improving life at work: Behavioral science approaches to organizational change. Santa Monica, CA: Goodyear. Halloran, T.J., & Scherlis, W. L. (2002). High quality and open source software practices. Presented at the Meeting Challenges and Surviving Success: The 2nd Workshop on Open Source Software Engineering, 24th ICSE, Orlando, FL. Hamm, S. (2005, January 31). Linux Inc. BusinessWeek. Retrieved 2/16/2008 from Hertel, G., Niedner, S., & Herrmann, S. (2003). Motivation of software developers in open source projects: An Internet-based survey of contributors to the Linux kernel. Research Policy, 32, Jensen, M. C., & Meckling, W. H. (1976). Theory of the firm: Managerial behavior, agency costs, and ownership structure, Journal of Financial Economics, 3, Johnson, J. P. (2002). Open source software: Private provision of a public good, Journal of Economic and Management Strategy, 11(4), Kan, S. (2002). Metrics and Models in Software Quality Engineering (2 nd Ed). Reading, MA: Addison Wesley Professional. 33
34 Kraut, R. F., & Streeter, L. A. (1995). Coordination in software development. Communications of the ACM, 38(3), Lakhani, K. R., & Wolf, R. (2005). Why hackers do what they do: Understanding motivation and effort in free/open source software projects. In J. Feller, B. Fitzgerald, S. Hissam & K. R. Lakhani (Eds.), Perspectives on free and open source software. Cambridge, MA: MIT Press. Lei, D., Hitt, M. A., & Goldhar, J. D. (1996). Advanced Manufacturing Technology, Organization Design and Strategic Flexibility, Organization Studies, 10(4), Liu, X., & Iyer, B. (2007). Design architecture, developer networks, and performance of Open Source Software projects, Proceedings of the Twenty-Eighth International Conference on Information Systems (ICIS2007), Montreal, Canada. MacCormack, A., Rusnak, J., & Baldwin, C. (2006). Exploring the structure of complex software designs: An empirical study of open source and proprietary code, Management Science, 52(7), MacCormack, A., Rusnak, J., & Baldwin, C. (2007). The impact of component modularity on design evolution: Evidence from the software industry, Harvard Business School Working Paper. March, J., & Simon, H. A. (1993). Organizations (2nd ed.). Cambridge, MA: Blackwell Publishers. Marciniak, J. J. (1994). Encyclopedia of Software Engineering. New York, NY: John Wiley & Sons, Martin, R. (1994). OO design quality metrics: An analysis of dependencies, Retrieved 1/13/2006, from 34
35 McCabe, T. J. (1976). A complexity measure, IEEE Transactions on Software Engineering, 2(4), Milgrom, P. & Roberts, J. (1992). Economics, Organization and Management. Englewood Cliffs, NJ: Prentice Hall. Mockus, A., Fielding, R. T., & Herbsleb, J. (2000). A case study of open source software development: The Apache Server. Paper presented at the International Conference on Software Engineering, Limerick, Ireland. Mockus, A., Fielding, R. T., & Herbsleb, J. (2002). Two case studies of open source software development: Apache and Mozilla, ACM Proceedings on Software Engineering and Methodology, 11(3), O'Mahony, S. (2003). Guarding the commons: How community managed software projects protect their work. Research Policy, 32, O'Mahony, S., & Ferraro, F. (Forthcoming). Managing the boundary of an 'open' project. In W. Powell, J. Padgett (Eds.), Market Emergence and Transformation. O'Mahony, S., & Ferraro, F. (2005). Hacking alone? The effects of online and offline participation on open source community leadership, Paper presented at the Academy of Management Annual Meeting, Honolulu, Hawaii, August OpenLogic. (2008, January 22). OpenLogic recaps 2007 Open Source trends, Reuters, Retrieved 2/16/2008, from Jan-2008+MW Parnas, D. L., Clements, P. C., & Weiss, D. M. (1985). The modular structure of complex systems, IEEE Transactions on Software Engineering, 11(3), Raymond, E. S. (2000). The Cathedral and the Bazaar. Retrieved February 1, 2004, from 35
36 Roberts, J., Hann, I.-H., & Slaughter, S. A. (2006). Understanding the motivation, participation, and performance of open source software developers: A longitudinal study of the Apache projects, Management Science, 52(7), Sanchez, R., & Mahoney, J. T. (1996). Modularity, flexibility, and knowledge management in product and organization design, Strategic Management Journal (17), Scacchi, W. (2001). Software development practices in open software development communities: A comparative case study, Presented at the Making Sense of the Bazaar: First Workshop on Open Source Software Engineering, 23rd International Conference on Software Engineering, Toronto, Ontario, Canada. Scacchi, W. (2002). Understanding the requirements for developing open source software systems, IEEE Proceedings Software, 149, Schilling, M. A. & Steensma, H. K. (2001). The use of modular organizational forms: An industry-level analysis, Academy of Management Journal, 44(6), Sharma, S., Sugumaran, V., & Rajagopalan, B. (2002). A framework for creating hybrid-open source software communities, Information Systems Journal, 12, Simon, H. A. (1969). Sciences of the Artificial. Cambridge, MA: MIT Press. Stewart, K. J., Ammeter, T. A., & Maruping, L. (2006). Impacts of license choice and organizational sponsorship on user interest and development activity in open source software projects, Information Systems Research, 17(2), Stewart, K. J. & Gosain, S. (2006). The impact of ideology on effectiveness in open source software development teams, MIS Quarterly, 30(2),
37 Sullivan, K. J., Griswold, W. G., Cai, Y. & Hallen, B. (2001). The structure and value of modularity in software design, In the Proceedings of the 8 th European Software Engineering Conference, Vienna, Austria. Taylor, F. W. (1911, reprinted 2001). Principles of scientific management. In J. M. Shafritz & J. S. Ott (Eds.), Classics of organization theory (5th ed.). Belmont, CA: Wadsworth Group/Thomson Learning. Ulrich, K. T. (1995). Role of product architecture in the manufacturing firm, Research Policy, 24, Ulrich, K. T., & Eppinger, S. D. (2004). Product design and development (3 rd Ed.). Boston, MA: McGraw-Hill/Irwin. von Hippel, E. (2001). Innovation by user communities: Learning from open-source software, MIT Sloan Management Review, 42(4), von Hippel, E., & von Krogh, G. (2003). Open source software and the "private-collective" innovation model: Issues for organization science, Organization Science, 14(2), W3Schools. (2008). Browser Statistics. Retrieved February 21, 2008 from Ward, W. T. (1989). Software defect prevention using McCabe's Complexity Metric, Hewlett- Packard Journal, Retrieved March 12, 2007 from Wheeler, D. A. (2007). Why Open Source Software/Free Software (OSS, FLOSS, or FOSS)? Look at the numbers! Retrieved February 21, 2008 from 37
38 Figure 1: Conceptual illustration of product modularity a Product design Description of degree of modularity Number of Components Low modularity, even though there is a single component that is not tightly coupled to other components, because all product functionality is tightly integrated within a single component 1 Highest modularity only related product functionality contained within each component; all components are loosely coupled with one another and interact via interfaces 5 a Functionality is represented by the small circles within the components: represent related product functionality. The patterns within the circles 38
39 Figure 2: Proposed Theoretical Model 39
40 RCS file: /cvsroot/htmlunit/htmlunit/src/java/com/gargoylesoftware/htmlunit/ DefaultCredentialsProvider.java,v Working file: htmlunit/src/java/com/gargoylesoftware/htmlunit/defaultcredentialsprovider.java head: 1.9 branch: locks: strict access list: Name of file being revised symbolic names: HtmlUnit-1dot9: 1.9 HtmlUnit-1dot8: 1.8 HtmlUnit-1dot7: 1.6 HtmlUnit-1dot6: 1.3 HtmlUnit-1dot5: 1.2 keyword substitution: kv Revision number total revisions: 9; selected revisions: 9 description: revision 1.9 date: 2006/06/14 18:05:19; author: mguillem; state: Exp; lines: Added possibility to configure NTLM credentials for the DefaultCredentialsProvider Date of revision revision 1.8 date: 2006/01/14 14:06:59; author: mbowler; state: Exp; lines: +2-2 Updated copyright to include revision 1.7 date: 2005/12/02 13:45:28; author: mguillem; state: Exp; lines: Fixed support for NTLM proxy. Patch from Vikram Shitole adapted by Daniel Gredler revision 1.6 Comment and author acknowledgement date: 2005/08/23 17:17:23; author: mbowler; state: Exp; lines: Added javadoc revision 1.5 date: 2005/08/12 12:45:21; author: mguillem; state: Exp; lines: +2-2 removed unnecessary debug message revision 1.4 date: 2005/08/12 12:35:28; author: mguillem; state: Exp; lines: Fixed infinite loop when DefaultCredentialsProvider provides invalid credential. Ensure that the web connection uses the CredentialProvider configured for the WebClient. Person committing file changes revision 1.3 date: 2005/05/04 08:52:53; author: mguillem; state: Exp; lines: +3-3 "this." doesn't belong to htmlunit's coding style revision 1.2 date: 2005/03/10 15:38:05; author: cerskine; state: Exp; lines: +2-2 Update formatting revision 1.1 date: 2005/02/23 17:30:07; author: yourgod; state: Exp; use httpclient's auth directly Figure 3 Example of change history for a specific file from the CVS history log LOC added and deleted 40
41 Modularity Average complexity -0.96*** Model A (0.11) Model B -0.92*** Model C (0.13) Total static bugs (log) Model A 1.02** (0.20) Model B -0.44*** Model C (0.12) Total bug reports (log) 0.75* Model A (0.43) Model B Model C (0.50) Percentage bugs closed 0.41 Model A (0.71) Model B Table 3: Results from fixed and random effects regressions Independent Variables Control Variables Weeks since Number of registration classes (log) (log) -0.18*** (0.03) Weeks since previous Projects/ release (log) R 2 Releases n/a n/a 0.12*** 45/180 n/a n/a 0.19*** 45/ (0.03) n/a n/a 0.11*** 43/ *** (0.03) 0.72*** (0.03) 0.38*** (0.09) 0.42*** (0.11) 0.20 (0.14) 0.20*** (0.02) 0.05*** (0.01) 0.04** (0.01) Weeks to close bugs (log) ** Model A (0.30) (0.04) ** Model B (0.06) (0.04) * p < 0.10, ** p < 0.05, *** p < 0.001, + Fixed effects -0.05* (0.02) -0.03** (0.01) -0.03** (0.01) 0.19*** 45/ *** 45/ *** 43/177 n/a n/a 0.01* 38/145 n/a n/a 0.14*** 38/145 n/a n/a 0.15*** 38/145 n/a n/a /145 n/a n/a / (0.04) 0.08 (0.04) / * 38/145 Model A: Tests H1 relationship between modularity and product quality Model B: For mediation analyses, does mediating variable (number of classes) predict product quality? Model C: Final mediation test both modularity and number of classes are included as independent variables predicting product quality 41
42 Independent Variable Table 4: Results from fixed and random effects regressions Product Contributions (H1a, H1b, H1c) Opportunities to contribute Number of contributions Size of contributions Number of source files (log) Modularity 2.03*** (0.22) Control Variables Wks Since Registration Wks Since Previous Release 0.17*** (0.02) Total commits (log) 1.30** (0.58) n/a Total files changed (log) 1.33** (0.60) n/a Commit size (log) (0.37) -0.15*** (0.03) Size of changes by file (log) -1.02* (0.37) -0.07** (0.03) n/a n/a n/a n/a n/a R *** 0.08** 0.11*** 0.11** 0.09** Projects/Releases 45/180 46/203 46/203 46/203 46/203 + * p < 0.10, ** p < 0.05, *** p < 0.001, + Fixed effects 42
43 Modularity Average complexity -0.96*** Model A (0.11) Model B -1.11*** Model C (0.12) Total static bugs (log) 1.02** Model A (0.20) Model B 1.00*** Model C (0.20) Total bug reports (log) 0.75* Model A (0.43) Model B 0.80* Model C (0.47) Percentage bugs closed 0.41 Model A (0.71) Model B Table 5: Results from fixed and random effects regressions Independent Variables Control Variables Size of changes by Weeks since file (log) registration -0.18*** (0.03) -0.05* (0.03) 0.65*** (0.03) (0.04) (0.12) 0.04 (0.13) 0.05 (0.20) Weeks since previous Projects/ release R 2 Releases n/a n/a 0.12*** 45/180 n/a n/a 0.19*** 45/180 + n/a n/a 0.39*** 45/ *** (0.02) 0.05*** (0.01) 0.20*** (0.02) Weeks to close bugs (log) ** Model A (0.30) (0.04) * Model B (0.09) (0.04) * p < 0.10, ** p < 0.05, *** p < 0.001, + Fixed effects -0.05* (0.02) -0.03** (0.01) -0.05* (0.02) 0.19*** 45/ *** 45/ *** 45/180 n/a n/a 0.01* 38/145 n/a n/a /145 n/a n/a /145 n/a n/a /145 n/a n/a / (0.04) 0.09** (0.04) / /145 Model A: Tests H1 relationship between modularity and product quality Model B: For mediation analyses, does mediating variable (size of changes by file) predict product quality? Model C: Final mediation test both modularity and size of changes by file are included as independent variables predicting product quality 43
A Framework to Represent Antecedents of User Interest in. Open-Source Software Projects
542 Business Transformation through Innovation and Knowledge Management: An Academic Perspective A Framework to Represent Antecedents of User Interest in Open-Source Software Projects 1 Amir Hossein Ghapanchi,
Two case studies of Open Source Software Development: Apache and Mozilla
1 Two case studies of Open Source Software Development: Apache and Mozilla Audris Mockus, Roy Fielding, and James D Herbsleb Presented by Jingyue Li 2 Outline Research questions Research methods Data collection
Do Programming Languages Affect Productivity? A Case Study Using Data from Open Source Projects
Do Programming Languages Affect Productivity? A Case Study Using Data from Open Source Projects Daniel P. Delorey [email protected] Charles D. Knutson [email protected] Scott Chun [email protected] Abstract
Aspects of Software Quality Assurance in Open Source Software Projects: Two Case Studies from Apache Project
Aspects of Software Quality Assurance in Open Source Software Projects: Two Case Studies from Apache Project Dindin Wahyudin, Alexander Schatten, Dietmar Winkler, Stefan Biffl Institute of Software Technology
The Impact of Project License and Operating System on the Effectiveness. of the Defect-Fixing Process in Open Source Software Projects
The Impact of Project License and Operating System on the Effectiveness of the Defect-Fixing Process in Open Source Software Projects Abstract Open source software (OSS) products have been widely adopted
Measurement Information Model
mcgarry02.qxd 9/7/01 1:27 PM Page 13 2 Information Model This chapter describes one of the fundamental measurement concepts of Practical Software, the Information Model. The Information Model provides
Analysis of Object Oriented Software by Using Software Modularization Matrix
Analysis of Object Oriented Software by Using Software Modularization Matrix Anup 1, Mahesh Kumar 2 1 M.Tech Student, 2 Assistant Professor, Department of Computer Science and Application, RPS College,
ModelingandSimulationofthe OpenSourceSoftware Community
ModelingandSimulationofthe OpenSourceSoftware Community Yongqin Gao, GregMadey Departmentof ComputerScience and Engineering University ofnotre Dame ygao,[email protected] Vince Freeh Department of ComputerScience
Agile Requirements Definition for Software Improvement and Maintenance in Open Source Software Development
Agile Requirements Definition for Software Improvement and Maintenance in Open Source Software Development Stefan Dietze Fraunhofer Institute for Software and Systems Engineering (ISST), Mollstr. 1, 10178
The Efficiency of Open Source Software Development
The Efficiency of Open Source Software Development Stefan Koch Department of Management Bogazici Üniversitesi Istanbul Koch, S. (2008) "Effort Modeling and Programmer Participation in Open Source Software
CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING
Lecture Software Engineering CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING Lecture Software Engineering Topics Introduction Historical Aspects Economic Aspects Requirements, Analysis, and Design Aspects
Simulating the Structural Evolution of Software
Simulating the Structural Evolution of Software Benjamin Stopford 1, Steve Counsell 2 1 School of Computer Science and Information Systems, Birkbeck, University of London 2 School of Information Systems,
ORGANIZATIONAL STRUCTURE OF OPEN SOURCE PROJECTS: A LIFE CYCLE APPROACH
ORGANIZATIONAL STRUCTURE OF OPEN SOURCE PROJECTS: A LIFE CYCLE APPROACH Donald E. Wynn, Jr. University of Georgia [email protected] Abstract The structure of open source project communities is discussed in
Latest Trends in Testing. Ajay K Chhokra
Latest Trends in Testing Ajay K Chhokra Introduction Software Testing is the last phase in software development lifecycle which has high impact on the quality of the final product delivered to the customer.
Software Project Management Matrics. Complied by Heng Sovannarith [email protected]
Software Project Management Matrics Complied by Heng Sovannarith [email protected] Introduction Hardware is declining while software is increasing. Software Crisis: Schedule and cost estimates
Foundations for Systems Development
Foundations for Systems Development ASSIGNMENT 1 Read this assignment introduction. Then, read Chapter 1, The Systems Development Environment, on pages 2 25 in your textbook. What Is Systems Analysis and
An Empirical Analysis of Insider Rates vs. Outsider Rates in Bank Lending
An Empirical Analysis of Insider Rates vs. Outsider Rates in Bank Lending Lamont Black* Indiana University Federal Reserve Board of Governors November 2006 ABSTRACT: This paper analyzes empirically the
Mining Metrics to Predict Component Failures
Mining Metrics to Predict Component Failures Nachiappan Nagappan, Microsoft Research Thomas Ball, Microsoft Research Andreas Zeller, Saarland University Overview Introduction Hypothesis and high level
Incentive Structure on Open Source Software Community: Case Study of GitHub
Incentive Structure on Open Source Software Community: Case Study of GitHub Ryo Suzuki Version: July 10, 2014 Abstract This paper provides a simple model that shows how open source software development
The Challenge of Productivity Measurement
Proceedings: Pacific Northwest Software Quality Conference, 2006 The Challenge of Productivity Measurement David N. Card Q-Labs, Inc [email protected] Biography- David N. Card is a fellow of Q-Labs, a subsidiary
FOSS License Restrictions and Some Important Issues
Free and Open Source Software (FOSS) Part II presented by Wolfgang Leister INF 5780 Høstsemester 2009 Ifi Universitetet i Oslo Some thoughts about FOSS Open Source Software (1) 1. Free Redistribution The
Open Source. Knowledge Base. By: Karan Malik INTRODUCTION
Open Source By: Karan Malik INTRODUCTION Open source is a development method, offering accessibility to the source of a product. Some consider open source as possible design approaches, while some of them
An Introduction to. Metrics. used during. Software Development
An Introduction to Metrics used during Software Development Life Cycle www.softwaretestinggenius.com Page 1 of 10 Define the Metric Objectives You can t control what you can t measure. This is a quote
CSC408H Lecture Notes
CSC408H Lecture Notes These lecture notes are provided for the personal use of students taking Software Engineering course in the Summer term 2005 at the University of Toronto. Copying for purposes other
Exploring the Duality between Product and Organizational Architectures: A Test of the Mirroring Hypothesis
Exploring the Duality between Product and Organizational Architectures: A Test of the Mirroring Hypothesis Alan MacCormack John Rusnak Carliss Baldwin Working Paper 08-039 Copyright 2007, 2008, 2011 by
VOLUNTEERS PARTICIPATIVE BEHAVIORS IN OPEN SOURCE SOFTWARE DEVELOPMENT: THE ROLE OF EXTRINISIC INCENTIVE, INTRINISIC MOTIVATION AND
VOLUNTEERS PARTICIPATIVE BEHAVIORS IN OPEN SOURCE SOFTWARE DEVELOPMENT: THE ROLE OF EXTRINISIC INCENTIVE, INTRINISIC MOTIVATION AND RELATIONAL SOCIAL CAPITAL by BO XU, B.E., M.E. A DISSERTATION IN BUSINESS
Gamma Distribution Fitting
Chapter 552 Gamma Distribution Fitting Introduction This module fits the gamma probability distributions to a complete or censored set of individual or grouped data values. It outputs various statistics
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study Francisco Zigmund Sokol 1, Mauricio Finavaro Aniche 1, Marco Aurélio Gerosa 1 1 Department of Computer Science University of São
Measuring BDC s impact on its clients
From BDC s Economic Research and Analysis Team July 213 INCLUDED IN THIS REPORT This report is based on a Statistics Canada analysis that assessed the impact of the Business Development Bank of Canada
Processing and data collection of program structures in open source repositories
1 Processing and data collection of program structures in open source repositories JEAN PETRIĆ, TIHANA GALINAC GRBAC AND MARIO DUBRAVAC, University of Rijeka Software structure analysis with help of network
Open-source content management. systems. Open-source content management is a viable option FEBRUARY 2004. Open-source strengths
FEBRUARY 2004 Open-source content management systems In recent times, open-source software has been seen as an increasingly mainstream part of the market. This has been fuelled by the growth of the internet,
Mining Peer Code Review System for Computing Effort and Contribution Metrics for Patch Reviewers
Mining Peer Code Review System for Computing Effort and Contribution Metrics for Patch Reviewers Rahul Mishra, Ashish Sureka Indraprastha Institute of Information Technology, Delhi (IIITD) New Delhi {rahulm,
A Framework for Evaluating Managerial Styles in Open Source Projects
A Framework for Evaluating Managerial Styles in Open Source Projects 1 2 Eugenio Capra and Anthony I. Wasserman 1 Department of Electronics and Information, Politecnico di Milano, Piazza Leonardo da Vinci
Traditional Commercial Software Development. Open Source Development. Traditional Assumptions. Intangible Goods. Dr. James A.
Open Source Development Dr. James A. Bednar [email protected] http://homepages.inf.ed.ac.uk/jbednar Traditional Commercial Software Development Producing consumer-oriented software is often done in
A microeconomic analysis of commercial open source software development
A microeconomic analysis of commercial open source software development Date: November 7 th 2007 Author: Mathieu Baudier ([email protected]) Abstract The particularity of open source software is how it
Experiences with Online Programming Examinations
Experiences with Online Programming Examinations Monica Farrow and Peter King School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh EH14 4AS Abstract An online programming examination
Sampling from the Debian GNU/Linux Distribution:
Sampling from the Debian GNU/Linux Distribution: Software Reuse in Open Source Software Development HICSS 2007, Hawaii Authors: Sebastian Spaeth, Matthias Stuermer, Stefan Haefliger, Georg von Krogh Research
Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP
Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP PROGRAMMING & SOFTWARE DEVELOPMENT AND INFORMATION SUPPORT & SERVICES PATHWAY SOFTWARE UNIT UNIT 5 Programming & and Support & s: (Unit 5) PAGE
Pearson's Correlation Tests
Chapter 800 Pearson's Correlation Tests Introduction The correlation coefficient, ρ (rho), is a popular statistic for describing the strength of the relationship between two variables. The correlation
Software Metrics. Lord Kelvin, a physicist. George Miller, a psychologist
Software Metrics 1. Lord Kelvin, a physicist 2. George Miller, a psychologist Software Metrics Product vs. process Most metrics are indirect: No way to measure property directly or Final product does not
Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur
Module 2 Software Life Cycle Model Lesson 4 Prototyping and Spiral Life Cycle Models Specific Instructional Objectives At the end of this lesson the student will be able to: Explain what a prototype is.
Request Tracker User s Guide. : Describes the User Interface and usage of Request Tracker V3.
Request Tracker User s Guide Abstract : Describes the User Interface and usage of Request Tracker V3. Issue : 05 Date : 08/27/2007 Document History Issue Author(s) Date Description Change 1 N. Metrowsky
Chapter 5: Analysis of The National Education Longitudinal Study (NELS:88)
Chapter 5: Analysis of The National Education Longitudinal Study (NELS:88) Introduction The National Educational Longitudinal Survey (NELS:88) followed students from 8 th grade in 1988 to 10 th grade in
University of Edinburgh. School of Informatics. Intellectual Property and the Digital Age. Chris Martin
University of Edinburgh School of Informatics Intellectual Property and the Digital Age Chris Martin Outline IP Basics what is IP? / IP ownership / protecting IP Copyright basics infringement / permitted
Project Management. Project Analysis and Definition. Project Management. Project Management People
Project Management Project Analysis and Definition The key to successful project management is to focus on the 4P People The most important element of a successful project Product The software to be built
Free/Libre and Open Source Software: Survey and Study FLOSS
Free/Libre and Open Source Software: Survey and Study FLOSS Deliverable D18: FINAL REPORT Part 0: Table of Contents and Executive Summary International Institute of Infonomics University of Maastricht,
BUSMASTER An Open Source Tool
BUSMASTER An Open Source Tool Dr. Tobias Lorenz, ETAS GmbH Presented by Dr. Andrew Borg In August, ETAS and Robert Bosch Engineering and Business Solutions (RBEI) jointly published BUSMASTER, a free open
Response to Critiques of Mortgage Discrimination and FHA Loan Performance
A Response to Comments Response to Critiques of Mortgage Discrimination and FHA Loan Performance James A. Berkovec Glenn B. Canner Stuart A. Gabriel Timothy H. Hannan Abstract This response discusses the
Testing Metrics. Introduction
Introduction Why Measure? What to Measure? It is often said that if something cannot be measured, it cannot be managed or improved. There is immense value in measurement, but you should always make sure
The Importance of Bug Reports and Triaging in Collaborational Design
Categorizing Bugs with Social Networks: A Case Study on Four Open Source Software Communities Marcelo Serrano Zanetti, Ingo Scholtes, Claudio Juan Tessone and Frank Schweitzer Chair of Systems Design ETH
Open Source Software Project Success Factors / Modularity As a Success Factor
Open Source Software Project Success Factors / Modularity As a Success Factor Niko Haapaviita, Jere Jokelainen, Pekka Reijonen & Juuso Haikonen Abstract 1. Introduction 2. Modularity 2.1 Modularity in
DISSECTING EVA: THE VALUE DRIVERS DETERMINING THE SHAREHOLDER VALUE OF INDUSTRIAL COMPANIES JOHN H HALL
DISSECTING EVA: THE VALUE DRIVERS DETERMINING THE SHAREHOLDER VALUE OF INDUSTRIAL COMPANIES JOHN H HALL Department of Financial Management University of Pretoria Pretoria Republic of South Africa Tel :
Fundamentals of Measurements
Objective Software Project Measurements Slide 1 Fundamentals of Measurements Educational Objective: To review the fundamentals of software measurement, to illustrate that measurement plays a central role
Fault Analysis in Software with the Data Interaction of Classes
, pp.189-196 http://dx.doi.org/10.14257/ijsia.2015.9.9.17 Fault Analysis in Software with the Data Interaction of Classes Yan Xiaobo 1 and Wang Yichen 2 1 Science & Technology on Reliability & Environmental
FACULTY RETIREMENT PLANS: THE ROLE OF RETIREE HEALTH INSURANCE
TRENDS AND ISSUES SEPTEMBER 2015 FACULTY RETIREMENT PLANS: THE ROLE OF RETIREE HEALTH INSURANCE Robert L. Clark Zelnak Professor Poole College of Management North Carolina State University Retiree health
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems The 15th International Conference on Product-Focused Software Process Improvement, Helsinki, Finland. Wen Chen, Alan Wassyng,
Multivariate Logistic Regression
1 Multivariate Logistic Regression As in univariate logistic regression, let π(x) represent the probability of an event that depends on p covariates or independent variables. Then, using an inv.logit formulation
DESIGN AND STRUCTURE OF FUZZY LOGIC USING ADAPTIVE ONLINE LEARNING SYSTEMS
Abstract: Fuzzy logic has rapidly become one of the most successful of today s technologies for developing sophisticated control systems. The reason for which is very simple. Fuzzy logic addresses such
Measurement and Metrics Fundamentals. SE 350 Software Process & Product Quality
Measurement and Metrics Fundamentals Lecture Objectives Provide some basic concepts of metrics Quality attribute metrics and measurements Reliability, validity, error Correlation and causation Discuss
James E. Bartlett, II is Assistant Professor, Department of Business Education and Office Administration, Ball State University, Muncie, Indiana.
Organizational Research: Determining Appropriate Sample Size in Survey Research James E. Bartlett, II Joe W. Kotrlik Chadwick C. Higgins The determination of sample size is a common task for many organizational
Measuring Software Complexity to Target Risky Modules in Autonomous Vehicle Systems
Measuring Software Complexity to Target Risky Modules in Autonomous Vehicle Systems M. N. Clark, Bryan Salesky, Chris Urmson Carnegie Mellon University Dale Brenneman McCabe Software Inc. Corresponding
Open Source Approach in Software Development - Advantages and Disadvantages
Jovica Đurković Vuk Vuković Lazar Raković Article Info:, Vol. 3 (2008), No. 2, pp 029-033 Received 12 Jun 2008 Accepted 24 October 2008 UDC 004.4.057.8 Open Source Approach in Software Development - Advantages
SoMA. Automated testing system of camera algorithms. Sofica Ltd
SoMA Automated testing system of camera algorithms Sofica Ltd February 2012 2 Table of Contents Automated Testing for Camera Algorithms 3 Camera Algorithms 3 Automated Test 4 Testing 6 API Testing 6 Functional
THE FUTURE OF INTERNET-BASED SURVEY METHODS
Chapter Seven CONCLUSIONS In this chapter, we offer some concluding thoughts on the future of Internet-based surveys, the issues surrounding the use of e-mail and the Web for research surveys, and certain
Test Management Tools
Test White Management Paper Tools Test Management Tools Table of Contents Executive Summary 3 Why Test Management Tools are required 4 What is QMetry? 5 QMetry Features 6 The Tools of QMetry 7 Conclusion
A TOPOLOGICAL ANALYSIS OF THE OPEN SOURCE SOFTWARE DEVELOPMENT COMMUNITY
A TOPOLOGICAL ANALYSIS OF THE OPEN SOURCE SOFTWARE DEVELOPMENT COMMUNITY Jin Xu,Yongqin Gao, Scott Christley & Gregory Madey Department of Computer Science and Engineering University of Notre Dame Notre
