Measure It? Manage It? Ignore It? Software Practitioners and Technical Debt
|
|
|
- Ernest Simmons
- 10 years ago
- Views:
Transcription
1 Measure It? Manage It? Ignore It? Software Practitioners and Technical Debt Neil A. Ernst, Stephany Bellomo, Ipek Ozkaya, Robert L. Nord, and Ian Gorton Carnegie Mellon University Software Engineering Institute Pittsburgh, PA, USA ABSTRACT The technical debt metaphor is widely used to encapsulate numerous software quality problems. The metaphor is attractive to practitioners as it communicates to both technical and nontechnical audiences that if quality problems are not addressed, things may get worse. However, it is unclear whether there are practices that move this metaphor beyond a mere communication mechanism. Existing studies of technical debt have largely focused on code metrics and small surveys of developers. In this paper, we report on our survey of 1,831 participants, primarily software engineers and architects working in long-lived, software-intensive projects from three large organizations, and follow-up interviews of seven software engineers. We analyzed our data using both nonparametric statistics and qualitative text analysis. We found that architectural decisions are the most important source of technical debt. Furthermore, while respondents believe the metaphor is itself important for communication, existing tools are not currently helpful in managing the details. We use our results to motivate a technical debt timeline to focus management and tooling approaches. Categories and Subject Descriptors K.6.3 [Software Management]: Management software development, software selection Keywords Technical debt, architecture, survey 1. INTRODUCTION The technical debt metaphor concisely describes a universal problem that software engineers face when developing software: how to balance near-term value with long-term quality. The appeal is that once technical debt is made visible, engineers (and eventually, their managers) can begin Now at College of Computer and Information Science, Northeastern University, [email protected] to understand in what ways debt can be harmful or beneficial to a project. Debt accumulates and causes ongoing costs ( interest ) to system quality in maintenance and evolution. Debt can be taken on deliberately, then monitored and managed ( principal repaid ), to achieve business value. The usefulness of this concept prompted the software engineering research community, software consultants, and tool vendors alike to pay more attention to understanding what constitutes technical debt and how to measure, manage, and communicate technical debt. Recent systematic literature reviews [19, 33] report that using code quality analysis techniques to understand technical debt has been the dominant focus in research and by tool vendors. beyond code quality, other work explores the suitability of the metaphor in other phases of the software life cycle: for example, requirements debt, testing debt, code debt, and design debt. Practitioners currently use the term technical debt to mean, broadly, a shortcut for expediency [23] and, more specifically, bad code or inadequate refactoring [15]. Shull et al. [29], in a review paper on research in technical debt, highlight that technical debt is a multi-faceted problem. Addressing it effectively in practice requires research in software evolution, risk management, qualitative assessment of context, software metrics, program analysis, and software quality. Applying technical debt research starts with identifying a project s sources of pain. In order to give guidance to a specific project, research in this area must be grounded in the project s context. This combination of diverse definitions of technical debt in research, alongside the need to ground research on technical debt in practice, raised three research questions: 1. To what extent do practitioners have a commonly shared definition of technical debt? 2. How much of technical debt is architectural in nature? 3. What management practices and tools are used in industry to deal with debt? To investigate these questions, we conducted a two-part study. First, we administered a survey of software professionals in three large organizations, with 1,831 responses; second, we held semistructured, follow-up interviews with seven respondents, all professional software engineers, to further investigate the emerging themes.
2 Our study results show that the concept of technical debt has a broad shared understanding among software practitioners and managers. Our main finding is that architectural choices, often made very early in the software life cycle, are a key source of technical debt. In the perception of developers and architects, management remains unaware of the importance of technical debt. The lack of tool support for accurately managing and tracking architectural sources of debt is a key issue and remains a gap in practice. This stands in contrast to the existing heavy focus on code-based analysis of technical debt. Building on these observations, we introduce a timeline of technical debt to better distinguish between the time when debt is incurred and the ongoing problems it causes to help clarify issues and focus future research. 2. RELATED WORK Defining, analyzing, visualizing, and managing technical debt have received increasing research attention. Here we present relevant work that maps to our research questions and findings. Defining technical debt. The original definition of technical debt is from Ward Cunningham [4]. Since then, numerous people have proposed definitions, including Mc- Connell [23], Kruchten [16], and Seaman [29], among others (e.g., Fowler[8] or Kniberg [15]). In order to understand implications of technical debt, there have been attempts to create categories of debt or relate it to different development life cycles [13, 1]. Small-scale interview-based studies on understanding how developers talk about technical debt also exist [21, 31]. Our study is the first study that looks at the perceptions of software professionals with a broad empirical basis. Correlating code violations with technical debt measures. A number of studies have examined the relationship, if any, between software metrics and technical debt. These studies applied existing code smells, coupling and cohesion, and dependency analysis to identify areas of technical debt [7, 11, 22]. There is also work investigating what adequate tool support means when focusing on code analysis and technical debt [6]. Our study highlights that the use of code violation tools and techniques is perceived to be of minimal value in understanding technical debt. Architecture issues as technical debt. Understanding how to manage architectural concerns to avoid technical debt accumulation is an important research topic, as reflected by systematic literature reviews. This body of work includes efforts to come up with architectural measures [25], to map architectural dependencies [24] or pattern drift to decay [10], and to provide an uncertainty-based evolution of architectural refactoring priorities [20]. Our study is the first to empirically demonstrate that a focus on architectural issues has merit in practice as well. Theoretical foundations of technical debt. Schmid explores technical debt as an aspect of software evolution [27], and Shull and others focus on empirical foundations [21]. Understanding the benefit, principle, and interest and mapping properly to software design decisions and evolution have been investigated in industrial case studies without generalizable results to date [3, 12, 30]. A theory of technical debt and its management practices is yet to emerge. Our study is different in that it investigates broad-based professional perceptions and contributes to further understanding of a theory of technical debt, with a timeline for mapping root causes and symptoms. 3. RESEARCH QUESTIONS Our goal in this study was to understand how software engineers relate to technical debt and whether they use tools and techniques to manage it. We formulated the following research questions. RQ1. Do professional software engineers have a shared definition of technical debt? Research Question 1 investigates whether technical debt is a concept with shared meaning and whether there is consensus on what technical debt is at a fine-grained level (e.g., software life-cycle stage). This research topic was motivated by questions raised in the Managing Technical Debt workshop series [17] and a literature review from Li et al. [19]. RQ2. Are issues with architectural elements such as module dependencies, external dependencies, external team dependencies, and architecture decisions among the most significant sources of technical debt? Research Question 2 investigates a mapping to a portion of the definition of technical debt by Steve McConnell: A design or construction approach that s expedient in the short term but that creates a technical context in which the same work will cost more to do later than it would cost to do now (including increased cost over time) [23]. What do these short-term design approaches consist of? RQ3. Are there practices and tools for managing technical debt? Research Question 3 investigates whether software professionals are measuring technical debt, whether they think they should actively manage technical debt, and the role that tools may play. 4. STUDY DESIGN Since we were interested in broad-based, industry practices, a targeted survey of practicing software professionals was appropriate. We paired that with follow-up interviews to investigate our research questions in more detail. We conducted the survey with software professionals including developers, testers, architects, and managers at two large multinational corporations and one government research lab (not ours). Based on the responses to the survey, and motivated by Research Question 2, we identified engineers who were concerned about bad architecture choices as technical debt for follow-up one-hour interviews. Our study design is inspired by that described in Kim et al. on refactoring [14], Gousios et al. on pull-request integration [9], and Seaman [28] on survey and interview analysis. 4.1 Research Protocol The research questions formed the basis for developing our survey and interview instruments and guided our analysis of the data. If respondents indicated they were unfamiliar with the term, our survey instrument first gave McConnell s definition of technical debt ( a design or construction approach that is expedient in the short term but that creates a technical context in which the same work will cost more to do later than it would cost to do now, including increased cost over time [23]). It then opened with multiple-choice ques-
3 Table 1: Collaborator Characteristics Org. Type Description Num. Surveys Sent A B C Multinational forprofit Multinational forprofit Govt. R&D Fortune 500 organization with headquarters in the U.S., hardware and software organization Fortune 500 organization with headquarters in Europe, hardware and software organization U.S.-based research software development lab 3, , tions on demographics and system context. Next, we asked two open-ended (free-text) questions to hear in the respondents own words their understanding of technical debt by asking them to provide a definition and an example. This was followed by closed questions based primarily on Likertstyle rating of agreement or disagreement, with one ranking question. These closed questions were influenced by the definition and practices emerging from the reported results of the Managing Technical Debt research community (attended by academia and industry) [16]. We asked two additional open-ended questions about challenges managing technical debt and tools used. We piloted our survey with a focus group consisting of other researchers and practicing architects to refine our questions. We mapped our questions in the survey to our research questions before analyzing the response data. Our survey and interview instruments are available online. 1 We cannot share actual responses due to confidentiality agreements with our collaborators. To distribute the survey, we leveraged connections to industrial partners, and our partners were enthusiastic and helpful in obtaining broad corporate acceptance of the survey. We distributed the survey to the three different companies using their internal software developer channels, including special interest groups and custom mailing aliases. Table 1 lists their characteristics. The survey was open at each organization for three weeks, with one initial announcement and one reminder midway. In two organizations, a drawing for an ipad was offered for those who participated in the survey. After the survey, we conducted seven follow-up interviews with people who indicated that they were willing to help: four from Organization A, two from Organization B, and one from Organization C. All were senior developers or architects (a distinction without a difference for our subjects). Their systems ranged from 100,000 source lines of code (SLOC) to 1 million SLOC. We followed a predefined interview script (see the online appendix in Note 1) while allowing variation and path exploration as necessary. The interviews focused on the role of architectural decisions in technical debt. 4.2 Respondents We sent the surveys to more than 18,000 potential targets, although it is hard to quantify how many were dupli- 1 cates or inactive accounts. Across all three collaborators, 1,831 respondents began the survey, and 536 respondents answered all questions, an overall response rate of 29%, although response rate varied per question (which we report as we discuss each question). None of the questions were mandatory. Respondents had on average over 6 years experience, with 32% over 15 years; roles selected included developers (42%), system engineers (7%), QA/testers (7%), project leads/managers (32%), architects (7%), and other (6%). There were 39 separate business units represented among the three companies, covering a broad set of domains, from scientific computing to command and control, business information systems, and embedded software. Most projects were web systems (24%) or embedded systems (31%). Projects generally consisted of 10 to 20 people, although 32% had fewer than 9 staff (including contractors and business staff). The systems were on average 3 to 5 years old, but a significant number (29%) were more than 10 years old. The systems were typically between 100,000 SLOC and 1 million SLOC in size. Most respondents used Scrum (33%) or incremental development methods (20%), but some used selfadmitted waterfall methods (15%) and some had no methodology (17%!). 4.3 Analysis For the closed-ended questions, we prefaced each question with a statement to think of your current or most recent project in order to ground the responses. We treat answers to Likert-style questions as ordinal (and not continuously distributed); therefore, comparing answer means is not appropriate. We combined codes from three open-ended questions into a single set, since we found that our codes applied equally to all. These questions asked participants to (1) define technical debt (n = 454), (2) provide an example with cause and result (n = 393), and (3) list challenges to managing technical debt (n = 304). We applied manual coding on the three open-ended questions as follows: Initially, two authors individually coded a set of all answers for one question. This involved open coding as described in Strauss and Corbin [32], then axial coding to derive higher level categories. We chose a research focus technical debt and architecture but otherwise allowed the data to suggest relevant codes. For example, the definition The added cost to properly implement system requirements after short term fixes are removed and proper design is installed led to, among others, the in vivo code added cost. As we did this coding, the first two authors wrote theoretical memos about possible relationships among some of the emerging codes. We used those memos to sort our codes into higher level categories. We then presented a list of the 40 most commonly occurring codes to the remaining authors, along with a sample of 50 survey responses. All of the authors then coded the sample, after which we conducted card sorting to identify common themes and duplicates. Definitions of our codes can be found with our supplementary material (Note 1). Following the synchronization exercise, two of us coded each survey response with at least one and up to three of the finalized codes. We report on interview quotes with a letter and number corresponding to column 1 from Table 1. Other quotes are taken from open-ended responses.
4 Lack of awareness of TD is a problem 7% 14% 79% TD includes both principal and interest 3% 26% 71% TD is used strategically 14% 25% 61% TD depends on future outcomes 17% 39% 44% TD is just a metaphor 65% 20% 15% Percentage Strongly Disagree Disagree Neither Agree nor Disagree Agree Strongly Agree Figure 1: High-level definitions of technical debt. Percentages indicate SD + D, N, and A + SA, respectively. 5. DEFINING TECHNICAL DEBT RQ1 asked whether software professionals have a shared definition of technical debt. 5.1 Technical Debt: A Useful Abstract Metaphor Our data indicated that technical debt was a useful metaphor to communicate more abstract concepts, such as the need for investment. Our respondents know what technical debt is, and they are struggling with it. Of 574 responses to the statement Dealing with the consequences of technical debt has consumed a painful chunk of project resources, 75% agreed or strongly agreed, and only 10% disagreed or strongly disagreed (15% neutral). We found support on a number of questions for convergence on the concept of technical debt (see Figure 1): 79% agree or strongly agree that lack of awareness is a problem and 71% that technical debt implies dealing with both principal and interest. This suggests that there is widespread agreement on high-level aspects of the technical debt metaphor, including some popular financial extensions of the metaphor. Some of the most commonly occurring codes (Awareness, Interest, Time Pressure) on the open-ended questions (Figure 2) were similarly high-level concepts. For example, we coded as Interest the definition extra effort in projects which is not required for purely technical reasons. We coded as Time Pressure the response Business pressure to meet deadline. Less time allocation for design and development and quality testing. These were fairly common as examples of level of detail for an answer to the question How would you define technical debt? Another example was a challenge, coded as Awareness: Getting programs to acknowledge they have it to begin with. These abstract concepts lack the detail for delineating the source of technical debt from the causes and consequences. Less common were answers pointing to the source such as Code that has been incrementally developed over the years that is now so complicated or bugs and crash-downs. Interview data also supported that technical debt is a useful metaphor for communicating with technical management. For example, (A2) I think the vocabulary of technical debt is useful for getting the interests aligned. The answers coded as Awareness seemed contradictory: how can technical debt be a useful metaphor, yet awareness still be a challenge? We think this is due to technical debt being at a nascent stage as a concept in software engineering. While early adopters (our respondents) have recognized its importance, a major perceived use is to begin conversations with those who are unaware of it, that is, convincing product managers and stakeholders on the value proposition of managing the debt. 5.2 Moving Beyond the Metaphor 65% of respondents disagreed that technical debt was only a metaphor, possibly because they recognize that a metaphor is not on its own sufficient to drive measurable outcomes. For that, one needs a reification of the metaphor: what specific elements of this project (architecture, code, defects, for example) need improvement? Is there one particular element that merits more attention? We found that only architecture was commonly seen as a major source of technical debt, irrespective of context. Project context such as framework choices, language, and life-cycle phase clearly changes how technical debt is associated with each project instance. We can point to the broad number of business areas our survey covered (39), as well as the array of project ages and methodologies, as evidence of this. This diversity appears in the data as well. In some cases, respondents were concerned about hardware impacts on technical debt ( Changes in hardware area are made without understanding the impact on other areas (software) of the system. ). Others were more concerned with documentation ( Comments in code have not been kept commensurate with the actions of the code whenever functionality has been changed. ). In another, the database decisions long ago were paramount sources of technical debt ( Over 10 years ago there was a performance problem caused by the increasing size of the operational database. ). We asked respondents a number of questions to probe
5 Architecture Choice Awareness Time Pressure Interest Requirements Shortfall Legacy Modernization Code Problems Defects Inadequate Testing Rework Process Measurement Lack of Documentation Cost Pressure Limited Knowledge Tools None 0% 10% 20% 30% 40% 50% 60% 70% 80% Figure 2: Coding frequency for open-ended questions. whether there was a shared understanding of what constitutes sources of technical debt (n = 570). Figure 3 shows agreement on some items (e.g., architecture, that technical debt should not be treated in isolation from software development) and disagreement on others (e.g., defects and process). We interpret this to mean that for some project elements, there is confusion over what is and is not technical debt. For example, 45% of respondents agree or strongly agree that defects are technical debt, while 32% disagree or strongly disagree, showing little agreement. Figure 2 the open-coding results showed a similar result: apart from architecture, which we cover in the following section, there is no obvious agreement on the source of technical debt. For instance, code occurred in only 18% of answers, and defects in only 11%. This is in contrast to the focus of current commercial tools and research, which predominantly deal with code quality, or industry thought leaders, such as Cunningham, who referred to shipping first time code [4], although ideally, code in an agile perspective should encapsulate architectural choices directly. RQ1: Do professional software engineers have a shared definition of technical debt? Finding 1: The technical debt metaphor is useful and commonly understood at an abstract level to convey urgency about accumulating software costs. Finding 2: Apart from architecture, software professionals do not agree on which other project elements are sources of technical debt. 6. ARCHITECTURAL SOURCES OF DEBT RQ2 asked whether or not architecture was perceived as a major source of technical debt. Our interest in architecture is motivated by our past research [26, 25], as well as the high level of responses that included examples of technical debt as architecture choices and architecture drift in the data we collected. We examined what problems it might cause and what such issues looked like. We found that architectural choices have the greatest impact based on our analysis of the closed and open-ended questions and interview data. 6.1 Architectural Choices Are Key We asked participants (n = 544) to rank a randomly ordered list of 14 choices (shown in Figure 4) with respect to the amount of debt (1 = high, 14 = low) they represent on this project. These choices reflect different possible sources, including code, requirements, and architecture, that emerged from several workshops, detailed in [17]. There are a number of ways to measure what the top choice was. Figure 4 shows the percentage of times that respondents ranked a choice in the top three choices. Bad architecture choices stood out from others at 296 of the top three responses (54%). In terms of the mean rank, the top three were Bad architecture choices (mean rank 4.3), Overly complex code (6.0), and Lack of code documentation (6.5). For the median, we have the same top three choices, with values 3, 5, 6, respectively. Finally, we conducted a Friedman rank sum test [5], which rejected the null hypothesis that all items are ranked equally (df = 13, p < 2.2E6). Architecture choice was a code in the open-ended questions that we defined as a combination of intentional shortcut and poor decision in hindsight. It describes choices (intentional or not) made about high-level project design, including library choices, framework use, and reference architectures (such as JEE). 73% of the open-coded examples fall into this category. For example, one response gave as an example... platform was not designed with scalability in mind so transferring design from a traditional microprocessor + external memory system to a microcontroller single chip system required about 4 man-years of work. Definitions of technical debt from McConnell [23] and Cunningham [4] both support the notion of a shortcut for expediency that is interpreted mostly as bad code. Our examples offer cases different from bad code, since decisions are made earlier and involve more strategic design. For example, (B2) the work that we re doing now to introduce a service layer and also building some clients using other technology is an example of, you know, decisions that could have been done at an earlier stage if we had had more time and had the funding and the resources to do them at the time instead of doing it now.
6 TD also architectural 3% 11% 85% TD part of S/W development context 8% 10% 82% Unimplemented features not TD 24% 20% 57% Defects not TD 45% 23% 32% Process not TD 49% 22% 29% TD not measurable 45% 27% 28% Percentage Strongly Disagree Disagree Neither Agree nor Disagree Agree Strongly Agree Figure 3: Sources of technical debt. Percentages indicate SD + D, N, and A + SA, respectively. We heard a similar architecture focus in our interviews. Five of seven participants told stories about architecture choices in the context of a heavy emphasis on fast delivery of features and limited budget. Participants framed these choices in terms of development veering from an important architectural decision (in the form of a pattern or application framework) that was no longer followed. One participant offered an example of the model-viewcontroller pattern: (A3) In retrospect we put messaging/ communication... in the wrong place in the model view controller architecture which limited flexibility. The correct implementation would put it at the model layer (supporting communication interaction between models) rather than at the presentation layer. As a result modifying or adding new roles requires more work than it should. 6.2 The Need to Manage Drift Between Source and Original Design The age of most of the systems represented by the respondents was greater than 3 years (74%), and 28% had more than 1 million SLOC. This time frame and size inevitably led to variance over time from the original vision, observed as technical debt today. This drift is consistent with what Lehman refers to as software entropy (systems needing ongoing maintenance) [18]. Some of the examples for this drift include changing system uses ( over the years, other sites would begin using the system and would require changes to how the workflow operated ); poor initial understanding of requirements, off-the-shelf technology, and quality attribute interaction ( poor business knowledge led to poor system design lead to poor user experience lead to rework ); and prototype-becomes-product antipatterns ( The original objective was simply a proof-of-concept and using good software design practices was not a concern. ). While architecture choices were the greatest source of technical debt, dealing with that debt was more problematic. Both the long life spans of many of these projects and the drift from the original decisions, designs, and documentation make paying down technical debt a challenge. For example, (A2) There were some problems in the infrastructure code where there was originally an architecture in place, but it wasn t necessarily followed consistently.... So thought had been given to that, but in the implementation... shortcuts were taken and dependencies were not clean. The challenge of paying down technical debt and its interest charges is also highlighted by codes for requirements and legacy migration, with 15% and 10% frequency, respectively (Figure 2). These codes applied often to definitions of technical debt or examples of systems that were facing high development costs to re-architect to fix previous decisions. These challenges could be due to poor requirements gathering (e.g., [we had] an unrefreshed approach for capture of infrastructure software requirements ) or legacy decisions made without foresight ( our development follows the lifecycle of MS Technologies like.net, Windows OS etc. A significant effort is wasted in the technology migration without adding real value to the software ). The degree of drift is related to system age. We found a weak association between system age and the perceived importance of architectural issues, using Yule s Q [34] as a measure (n = 483, q = 0.42). 89% of those with longer lived systems ( 6 years old) agreed or strongly agreed with the notion that architectural issues were a significant source of debt, compared to 80% of those with newer systems (<3 years old). A chi-square test of independence (χ 2 = , df = 12, p = ) showed that the two factors (system age and importance of architectural debt) are not independent. Incurring technical debt is often positioned as either deliberate and strategic or inadvertent and accidental (e.g., Martin Fowler s quadrant 2 ). Our results show most debt occurs in the inadvertent/prudent quadrant. That is, most of the decisions incurring debt were made long ago by other people. The decision was likely deliberate, and may have appeared correct at the time, but subsequent events led to problems: Not foreseeing the need of final users to customize results of our [redacted] tools or The initial design was intended to support our nearer term needs with regards to performance. What is not happening, in contravention 2
7 Figure 4: Ranking sources of technical debt. Choice 1 is represented by hatches; Choice 2, dashes; and Choice 3, dots. to commonly accepted practice in the agile community, is refactoring/re-architecting. As Cunningham says, refactoring or modifying the program to look as if we had known what we were doing all along. 3 is an important aspect of building and maintaining software, yet that activity rarely appeared in our results. This may be because the teams which are refactoring do not deal much with technical debt, and so our investigation did not reach those teams. One implication of this drift from original designs is a need for better monitoring of decisions and approaches. Respondents gave many examples of engineers unaware of critical decisions. For example, (A1) We have... an architectural concept [for managing databases]. And so originally it was supposed to be a series of classes that you would write for a particular feature that would check your database data after you re done.... And over the years what has happened is because people didn t realize that s what it was supposed to be, we now get basically all kinds of database stuff in there. An example of what type of monitoring might help is typified in the following anecdote from our interviews: (A2) I believe we started tracking technical debt kinds of issues when we saw them. So that we could get a handle on what s there and we could point to that This particular test took longer than expected because we ran into certain kinds of problems. RQ2. Are issues with architectural elements among the most significant sources of technical debt? Finding 3: Architectural issues are the greatest source of technical debt. Finding 4: Architectural issues are difficult to deal with, since they were often caused many years previously. Finding 5: Monitoring and tracking drift from original design and rationale are vital MANAGING TECHNICAL DEBT RQ3 asked, Are there practices for managing technical debt? In particular, we wanted to understand what tools and practices might be used and whether those tools were adequate. Contrary to the increased emphasis of research, consulting, and tool vendors on measuring technical debt, tooling and measurement did not appear much in our data. 7.1 Few Systematic Management Practices 65% of respondents had no defined technical debt management practice, and of the remaining respondents, 25% managed it at the team level (n = 490, Figure 5). While there is no explicit standard approach for managing technical debt, there is some management of technical debt within existing processes in many cases (e.g., 60% track technical debt as part of risk processes or backlog grooming (n = 480, Figure 6). We asked about tool use (n = 482), and 41% do not use tools for managing technical debt (26% have no opinion; only 16% thought tools were giving appropriate detail). For our question concerning who is aware of technical debt, our respondents most of whom are developers, architects, or program managers said that executives and business managers were largely unaware (42%). Only 10% said their business managers were actively managing technical debt. 7.2 Tools Are Inadequate Figure 6 suggests that tool use in identifying technical debt is low (16%, n = 480). A substantial number of respondents (27%) do not identify technical debt: fail first, identify technical debt as cause, or when the schedule exploded. Where tools are used, issue tracking predominates (25% explicitly track it). Some respondents reported using social processes (using architecture evaluations, risk management, or retrospectives). Furthermore, the open-coded data (Figure 2) indicated that awareness is a big obstacle to managing technical debt. This suggests that making techni-
8 No Std Approach Team Level Program Level Business Unit Level Company Level 6.1 % 12.0 % 10.2 % 25.1 % 65.3 % Issue tracker Social process Depend. analysis Security analysis Code rule checkers Code metrics Test automation Excel Other IDE Code coverage CI/Build Inhouse TD 11 % 10 % 10 % 9 % 6 % 5 % 5 % 5 % 3 % 3 % 3 % 3 % 28 % Figure 5: At what level is technical debt management standardized? Figure 7: Tool use as percentage of answers, with Unknown and None excluded. Implicit part of backlog Retrospectives Part of overall risk mgmt. Not identified/other Explicit part of backlog Part of systematic arch. eval. Result of slowing cadence Using TD tools 16 % 21 % 27 % 25 % 25 % 31 % 31 % 29 % Figure 6: At what point do you identify technical debt? cal debt visible and measurable may be a key gap in practice. Tools specific to managing technical debt were rarely used to manage architectural issues. Some were installed, but the complexity of configuring them or interpreting results meant that they sat unused. We collated responses to an openended question on tools ( What tools, if any, are used to analyze technical debt on this project? ; n = 242) into the most-frequently cited tool categories, seen in Figure 7. Issue trackers, which include tools such as Redmine, Jira, and Team Foundation Server, were the most prevalent (28%). After that, no tool category exceeded 11%, including dependency analysis (e.g., SonarQube, Understand), code rule checking (e.g., CPPCheck, Findbugs, SonarQube), and code metrics (e.g., Sloccount). 50% of respondents said that no tools were used. A related question on tool use (n = 482) found that 41% of respondents did not use tools, and only 16% said tools gave enough detail. The interviews revealed that tools produce too many false positives, which is a well-known challenge [2], and the tools often require context-specific tailoring. For example, tools do not know what areas of code are poor quality, but will never be fixed for other reasons, and thus should be ignored. They need a way to better narrow and focus static analysis results when modifiability is a key concern. Outputs from tools do not deal well with the challenge of making management aware of the problem. For example, (B1) regarding static analysis we have the source code static analysis tools, but this is to assure proper quality of source code. But how architectural changes are impacting I don t know. And, in fact, this is something we don t do. Furthermore, those tools are difficult to set up: (C1) it showed up on Jenkins - the CI server - there s a billion lit- tle warnings. And so it seems a little bit overwhelming. But it was only after explicitly identifying the issue that resources were available: (A2) Yeah, so once a structural problem was identified, we were able to take that to the program management and get authorization and kind of buy-in to tackle that problem directly. And we were able to say, Because of the way this is currently structured, we keep encountering these problems and it s making it more expensive to maintain so we like focused efforts going. So why do static analysis tools not help with management of technical debt, and what is taking their place? Our interviews suggest a wide range of potential architectural issues. Due to the nature of the problem, some of these tools may be a good fit for module static analysis and some may not. In many cases, technical debt remains something that at best is managed with identifying tags on the issue tracker. For example, [we track] occasionally by explicit tech debt items, usually by pain, or not at all. RQ3. Are there practices and tools for managing technical debt? Finding 6: Tools do not capture the key areas of accumulating problems in technical debt. Finding 7: From a developer s perspective, management remains largely unaware of technical debt and the value of managing it. 8. DISCUSSION As a result of our empirical investigation, we found the following: 1. The technical debt metaphor is useful and commonly understood at an abstract level to convey urgency about accumulating software costs. 2. Apart from architecture, software professionals do not agree on which other project elements are sources of technical debt. 3. Architectural issues are the greatest source of technical debt. 4. Architectural issues are difficult to deal with, since they were often caused many years previously. 5. Monitoring and tracking drift from original design and rationale are vital. 6. Tools do not capture the key areas of accumulating problems in technical debt.
9 7. From a developer s perspective, management remains largely unaware of technical debt and the value of managing it. Interviewees and survey respondents placed significant emphasis on describing perceived root causes of technical debt (e.g., uneducated developers, time pressure) that are outside of their control. Consequently, technical debt management is largely reactive since it often must cause significant pain on multiple fronts before it is addressed. Fixing root causes requires different strategies than fixing the current state of the system. This is an area where ongoing and future research on technical debt should contribute, providing clarifications on separating analysis techniques that focus on the artifacts of the system to fix the problem today, from process and awareness approaches to to avoid making early decisions that will incur technical debt later in the life cycle. 8.1 Technical Debt Timeline We propose a simple timeline approach as an aid to identifying and understanding technical debt, particularly debt caused by variation from an original design. The timeline captures the states that a particular technical debt issue goes through. We identify some key points, shown by numbers in Figure 8. Figure 8: Technical debt timeline, with time increasing to the right. 1. The time when technical debt is taken on (incurred). For example, rather than investing in identifying common services, developers copy and modify code. The respondents could mostly identify architectural issues that map to the point where the debt starts. Beyond these, most examples stayed at the abstract level, such as inexperienced developers writing inadequate code that confuses the developers and prohibits taking concrete action against the debt. 2. The time when technical debt is recognized and traced back to the source. Ideally, this should be visible to both engineers and management and overlap with the time that technical debt is taken on (Point 1). The respondents reported identifying technical debt at different points along the spectrum, as part of the development backlog (56%), in retrospectives (31%), and as a result of slowing project cadence (21%). We found tools are not heavily used to analyze technical debt; those who used tools most frequently used issue trackers and then dependency-focused metrics tools. However, in many cases the metrics tools were run to check a box for management, and teams took a one-size-fitsall approach to running generic reports. Teams often became overwhelmed with the results and threw out the data. 3. The ideal time to plan and re-architect to pay back the debt. This is a function of the ongoing cost of the debt accumulating during the interval t i. 61% of the respondents agreed or strongly agreed that technical debt is strategically used to support business objectives. Yet most of their examples showed that technical debt is handled after reaching this tipping point where paying back the debt can exceed the benefit of the features developed at the expense of the debt. 4. Organizations decide whether to pay back some or all of the debt. The interval, t j, between Point 3 and Point 4 is often the time when organizations recognize the pain, which is what we saw in our survey and interview responses. Respondents know that the debt exists, but they have no management strategies for dealing with the debt. As noted earlier, a plurality of respondents (66%) do not pay down debt or pay it down only when it becomes a roadblock. The accumulated issues of the technical debt now exceed the initial perceived short-term benefits. 5. Organizations decide to deliberately manage the rest of the existing and future debt. They ideally begin monitoring the accumulating technical debt and accounting for it during planning cycles. A timeline perspective helps bring visibility and understanding to the causes, sources, symptoms, and consequences so they can be managed. One of our respondents recognized this challenge: I can see that a large challenge is corralling what different people mean by technical debt. Based on the questions, I wonder if my definition and thoughts are broader than most; maybe that is limiting what I believe I can affect. Mapping techniques for identifying and tracking technical debt can assist with determining how tools can benefit development teams. Our future work includes validating this time line and mapping analysis approaches onto it. 8.2 Study Limitations External validity: Our corporate partners are large organizations dealing, in most cases, with long-lived, complex software and hardware systems built for external customers. Smaller, self-contained teams developing product software or doing greenfield development would likely be less concerned with legacy decisions. We would not expect to hear much about architectural technical debt from teams that have the time and management support to follow established design best practices, or that have no legacy code with which to contend. There is a chance that the finding of architecture as problem may be a Hawthorne effect of our institution being widely known as an architecture research institute. However, none of the open-ended questions, nor the preliminary text, mention architecture as an important issue. It was only in the interviews that we specifically asked about architecture. Our results reflect the views of people who presumably had an interest in the issue of technical debt. However, we attracted participation from a wide range of experience, system size, and domains. Internal validity: We checked our inter-rater reliability by having two of us code each response to a survey question or interview transcript, then comparing the codes using Cohen s kappa statistic. This was 0.45, which is low to moderate agreement. We resolved disagreements between raters
10 by always choosing from the first rater. We confirmed the sensitivity to architecture results by noting that two survey questions independently query for architecture as a choice. There is a possibility of acquiescence bias to truisms like architecture is important, but we asked for specific examples in order to avoid this. Interview respondents were selected opportunistically and may not be typical. Construct validity: Likert scales are one-dimensional and assume that respondents can accurately map their responses to a question into that dimension (e.g., strongly agree or disagree). In some cases, since technical debt is a complex concept, this may not be realistic. Survey rank questions may not be 100% mutually exclusive and exhaustive, although we tried to ameliorate this with our pilot survey. 9. CONCLUSION Our findings tell us the following: Software practitioners agree on the usefulness of the metaphor (Finding 1), notwithstanding different interpretations of what makes up technical debt in particular contexts (Finding 2). There is consensus on McConnell s definition of a design and construction approach that is expedient in the short term [23]. Our data and analysis strongly support that the leading sources of technical debt are architectural choices (Finding 3), answering our second research question. Architectural design decisions take many years to evolve; hence they are difficult to deal with (Finding 4), and managing this drift is vital in managing technical debt (Finding 5). Developers perceive management as unaware of technical debt issues (Finding 7), and they desire standard practices and tools to manage technical debt that do not currently exist (Finding 6). We suggest that research in technical debt tooling focus on monitoring the gap between development and architecture, improving ongoing architecture analysis and conformance. Tooling is a necessary component of any technical debt management strategy. We offered the technical debt timeline as a way to map discovered issues in order to guide a management strategy. Continued work moving technical debt from metaphor to practice is an important challenge. As one of our respondents said, I am pleased to see that [our organization] (and hopefully the industry as a whole) is taking an interest in the issue of technical debt. Traditionally it has been very difficult for developers to relay this concern to leadership and customers. 10. ACKNOWLEDGMENTS Many thanks to the many participants in our surveys and interviews, as well as our industrial partners. Copyright 2015 ACM. This material is based upon work funded and supported by the Department of Defense under Contract No. FA C-0003 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center. This material has been approved for public release and unlimited distribution. DM REFERENCES [1] N. Alves, L. Ribeiro, V. Caires, T. Mendes, and R. Spínola. Towards an ontology of terms on technical debt. In International Workshop on Managing Technical Debt, [2] A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler. A few billion lines of code later: Using static analysis to find bugs in the real world. Communications of the ACM, 53(2):66 75, Feb [3] Z. Codabux and B. Williams. Managing technical debt: an industrial case study. In International Workshop on Managing Technical Debt, pages 8 15, San Francisco, [4] W. Cunningham. The WyCash portfolio management system. In Object-oriented Programming Systems, Languages, and Applications, pages Vancouver, [5] J. Demšar. Statistical comparisons of classifiers over multiple data sets. Journal of Machine Learning Research, 7:1 30, [6] D. Falessi, M. Shaw, K. Mullen, and M. Stein. Practical considerations, challenges, and requirements of tool-support for managing technical debt. In International Workshop on Managing Technical Debt, pages 16 19, San Francisco, [7] F. Fontana, V. Ferme, and S. Spinelli. Investigating the impact of code smells debt on quality code evaluation. In International Workshop on Managing Technical Debt, pages 15 22, Zurich, [8] M. Fowler. Technical debt quadrant. TechnicalDebtQuadrant.html, [9] G. Gousios, A. Zaidman, M.-A. Storey, and A. van Deursen. Work practices and challenges in pull-based development: The integrator s perspective. In International Conference on Software Engineering, [10] I. Griffith and C. Izurieta. Design pattern decay: an extended taxonomy and empirical study of grime and its impact on design pattern evolution. In Conference on Empirical Software Engineering and Measurement, Baltimore, MD, [11] I. Griffith, D. Reimanis, C. Izurieta, Z. Codabux, A. Deo, and B. Williams. The correspondence between software quality models and technical debt estimation approaches. In International Workshop on Managing Technical Debt, pages 19 26, Victoria, [12] Y. Guo, C. Seaman, R. Gomes, A. Cavalcanti, G. Tonin, F. DaSilva, A. Santos, and C. Siebra. Tracking technical debt an exploratory case study. In International Conference on Software Maintenance, pages , Williamsburg, [13] C. Izurieta, A. Vetro, N. Zazworka, Y. Cai, C. Seaman, and F. Shull. Organizing the technical debt landscape. In International Workshop on Managing Technical Debt, pages 23 26, [14] M. Kim, T. Zimmermann, and N. Nagappan. A field study of refactoring challenges and benefits. In SIGSOFT Symposium on Foundations of Software Engineering, Raleigh, NC, November [15] H. Kniberg. Good and bad technical debt (and how
11 TDD helps), henrikkniberg/good-and-bad-technical-debt, October [16] P. Kruchten, R. L. Nord, and I. Ozkaya. Technical debt: From metaphor to theory and practice. IEEE Software Special Issue on Technical Debt, 29(6):18 21, [17] P. Kruchten, R. L. Nord, I. Ozkaya, and D. Falessi. Technical debt: towards a crisper definition; report on the 4th International Workshop on Managing Technical Debt. SIGSOFT Softw. Eng. Notes, 38(5):51 54, [18] M. M. Lehman. On understanding laws, evolution, and conservation in the large-program life cycle. Journal of Systems and Software, 1: , [19] Z. Li, P. Avgeriou, and P. Liang. A systematic mapping study on technical debt and its management. Journal of Systems and Software, 101: , [20] Z. Li, P. Liang, and P. Avgeriou. Architectural debt management in value-oriented architecting. Economics-Driven Software Architecture, pages 65 86, [21] E. Lim, N. Taksande, and C. Seaman. A balancing act: what software practitioners have to say about technical debt. IEEE Software, 29(6):22 27, [22] R. Marinescu. Assessing technical debt by identifying design flaws in software systems. IBM Journal of Research and Development, 56(5):9:1 9:13, [23] S. McConnell. Technical debt, com/10x_software_development/technical_debt/, [24] R. Mo, J. Garcia, Y. Cai, and N. Medvidovic. Mapping architectural decay instances to dependency models. In International Workshop on Managing Technical Debt, pages 39 46, San Francisco, [25] R. L. Nord, I. Ozkaya, P. Kruchten, and M. Gonzalez-Rojas. In search of a metric for managing architectural technical debt. In Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture (ECSA), pages , Helsinki, Aug IEEE. [26] R. L. Nord, I. Ozkaya, R. Sangwan, J. Delange, M. Gonzalez, and P. Kruchten. Variations on using propagation cost to measure architecture modifiability properties. In International Conference on Software Maintenance, pages , Eindhoven, September [27] K. Schmid. A formal approach to technical debt decision making. In International Conference on Quality of Software Architectures, pages , Vancouver, British Columbia, Canada, [28] C. Seaman. Qualitative methods in empirical studies of software engineering. IEEE Transactions on Software Engineering, 25(4): , [29] F. Shull, D. Falessi, C. Seaman, M. Diep, and L. Layman. Technical debt: Showing the way for better transfer of empirical results. In Perspectives on the Future of Software Engineering, pages , [30] C. Siebra, G. Tonin, F. DaSilva, R. Oliveira, L. Antonio, R. Miranda, and A. Santos. Managing technical debt in practice: An industrial report. In International Symposium on Empirical Software Engineering and Measurement, pages , [31] R. Spinola, N. Zazworka, A. Vetrò, C. Seaman, and F. Shull. Investigating technical debt folklore: Shedding some light on technical debt opinion. In International Workshop on Managing Technical Debt, [32] A. Strauss and J. M. Corbin. Basics of Qualitative Research : Techniques and Procedures for Developing Grounded Theory. Sage Publications, Thousand Oaks, [33] E. Tom, A. Aurum, and R. Vidgen. An exploration of technical debt. Journal of Systems and Software, 86(6): , [34] G. Yule. On the methods of measuring association between two attributes. Journal of the Royal Statistical Society, LXXV: , 1912.
Coverity White Paper. Effective Management of Static Analysis Vulnerabilities and Defects
Effective Management of Static Analysis Vulnerabilities and Defects Introduction According to a recent industry study, companies are increasingly expanding their development testing efforts to lower their
Patterns to Introduce Continuous Integration to Organizations
Patterns to Introduce Continuous Integration to Organizations Kenichiro Ota Shift inc. Tokyo Japan [email protected] [email protected] Hiroko Tamagawa Shift inc. Tokyo Japan [email protected]
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material,
The Basics of Scrum An introduction to the framework
The Basics of Scrum An introduction to the framework Introduction Scrum, the most widely practiced Agile process, has been successfully used in software development for the last 20 years. While Scrum has
Chapter 9 Software Evolution
Chapter 9 Software Evolution Summary 1 Topics covered Evolution processes Change processes for software systems Program evolution dynamics Understanding software evolution Software maintenance Making changes
Agile Projects 7. Agile Project Management 21
Contents Contents 1 2 3 Agile Projects 7 Introduction 8 About the Book 9 The Problems 10 The Agile Manifesto 12 Agile Approach 14 The Benefits 16 Project Components 18 Summary 20 Agile Project Management
Agile Development and Software Architecture: Understanding Scale and Risk
Agile Development and Software Architecture: Understanding Scale and Risk Software Engineering Institute Carnegie Mellon University Pittsburgh, PA 15213 Robert L. Nord SSTC, April 2012 In collaboration
Software Engineering 1
THE BCS PROFESSIONAL EXAMINATIONS Diploma April 2006 EXAMINERS REPORT Software Engineering 1 General Comments Most of the scripts produced by candidates this year were well structured and readable, showing
Practical Experiences of Agility in the Telecom Industry
Practical Experiences of Agility in the Telecom Industry Jari Vanhanen 1, Jouni Jartti 2, and Tuomo Kähkönen 2 1 Helsinki University of Technology, Software Business and Engineering Institute, P.O. Box
Enabling Continuous Delivery by Leveraging the Deployment Pipeline
Enabling Continuous Delivery by Leveraging the Deployment Pipeline Jason Carter Principal (972) 689-6402 [email protected] Pariveda Solutions, Inc. Dallas,TX Table of Contents Matching
ITIL V3 and ASL Sound Guidance for Application Management and Application Development
For IT V3 and Sound Guidance for Application and Application Development Machteld Meijer, Mark Smalley & Sharon Taylor Alignment White Paper January 2008 V3 & : A Comparison Abstract In May 2007, the Office
Who Doesn t Want to be Agile? By: Steve Dine President, Datasource Consulting, LLC 7/10/2008
Who Doesn t Want to be Agile? By: Steve Dine President, Datasource Consulting, LLC 7/10/2008 Who wants to be involved in a BI project or program that is labeled slow or inflexible? While I don t believe
Software Engineering. So(ware Evolu1on
Software Engineering So(ware Evolu1on 1 Software change Software change is inevitable New requirements emerge when the software is used; The business environment changes; Errors must be repaired; New computers
Balancing the Outsourcing Equation
Whitepaper Balancing the Outsourcing Equation A Blueprint on how to obtain the benefits of outsourcing without the risks. 2013 Blueprint Software Systems Inc. All rights reserved Executive Summary This
Chapter 12. The Product Coordination Team
Chapter 12. The Product Coordination Team In theory, theory and practice are the same. In practice, they are different. Attributed to many. In This Chapter This chapter describes the challenge of teams
SLDS Workshop Summary: Data Use
SLDS Workshop Summary: Data Use Developing a Data Use Strategy This publication aims to help states detail the current status of their State Longitudinal Data System (SLDS) data use strategy and identify
A Capability Maturity Model (CMM)
Software Development Life Cycle (SDLC) and Development Methods There are some enterprises in which a careful disorderliness is the true method. Herman Melville Capability Maturity Model (CMM) A Capability
Keywords document, agile documentation, documentation, Techno functional expert, Team Collaboration, document selection;
Volume 4, Issue 4, April 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com A Document Driven
Nova Software Quality Assurance Process
Nova Software Quality Assurance Process White Paper Atlantic International Building 15F No.2 Ke Yuan Yi Road, Shiqiaopu, Chongqing, P.R.C. 400039 Tel: 86-23- 68795169 Fax: 86-23- 68795169 Quality Assurance
Establishing your Automation Development Lifecycle
Establishing your Automation Development Lifecycle Frequently I engage clients in assessing and improving their automation efforts. The discussion normally starts from a position of frustration We ve invested
Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology
Process Methodology for Wegmans Deli Kiosk Version 1.0 Prepared by DELI-cious Developers Rochester Institute of Technology September 15, 2013 1 Table of Contents 1. Process... 3 1.1 Choice... 3 1.2 Description...
Executive Summary. At the end of the twentieth century and. Enterprise Systems for Higher Education Vol. 4, 2002
01 Executive Summary At the end of the twentieth century and into the twenty-first, higher education has invested, by a conservative estimate, $5 billion in administrative and enterprise resource planning
TEN TIPS FOR A SUCCESSFUL INFOR IMPLEMENTATION
TEN TIPS FOR A SUCCESSFUL INFOR IMPLEMENTATION Copyright 2015 Panorama Consulting Solutions. All Rights Reserved. 720.515.1377 Panorama- Consulting.com Successfully implementing an Infor ERP system involves
Defect Tracking Best Practices
Defect Tracking Best Practices Abstract: Whether an organization is developing a new system or maintaining an existing system, implementing best practices in the defect tracking and management processes
A Comparison between Five Models of Software Engineering
International Journal of Research in Information Technology (IJRIT) www.ijrit.com ISSN 2001-5569 A Comparison between Five Models of Software Engineering Surbhi Gupta, Vikrant Dewan CSE, Dronacharya College
Obstacles and opportunities for model-based testing. in an industrial software environment
Obstacles and opportunities for model-based testing in an industrial software environment Harry Robinson Test Architect, Enterprise Management Division Microsoft Corporation [email protected] Abstract
Risk Management Framework
Risk Management Framework Christopher J. Alberts Audrey J. Dorofee August 2010 TECHNICAL REPORT CMU/SEI-2010-TR-017 ESC-TR-2010-017 Acquisition Support Program Unlimited distribution subject to the copyright.
Errors in Operational Spreadsheets: A Review of the State of the Art
Errors in Operational Spreadsheets: A Review of the State of the Art Stephen G. Powell Tuck School of Business Dartmouth College [email protected] Kenneth R. Baker Tuck School of Business Dartmouth College
Why Test Automation Fails
Why Test Automation Fails in Theory and in Practice Jim Trentadue Enterprise Account Manager- Ranorex [email protected] Thursday, January 15, 2015 Agenda Agenda Test Automation Industry recap Test
Automated Acceptance Testing of High Capacity Network Gateway
Automated Acceptance Testing of High Capacity Network Gateway Ran Nyman 1, Ismo Aro 2, Roland Wagner 3, 1,2,3 Nokia Siemens Network, PO Box 1 FI-02022 Nokia Siemens Networks 1 [email protected], 2 [email protected],
Software Architecture
Cairo University Faculty of Computers and Information Computer Science Department Premasters Studies Software Architecture Report on Software Product Line Submitted to: Dr. Hany Ammar Submitted by: Hadeel
A Variability Viewpoint for Enterprise Software Systems
2012 Joint Working Conference on Software Architecture & 6th European Conference on Software Architecture A Variability Viewpoint for Enterprise Software Systems Matthias Galster University of Groningen,
A Comparison of Issues and Advantages in Agile and Incremental Development between State of the Art and an Industrial Case
A Comparison of Issues and Advantages in Agile and Incremental Development between State of the Art and an Industrial Case Kai Petersen,a,b, Claes Wohlin a a School of Engineering, Blekinge Institute of
Development Testing for Agile Environments
Development Testing for Agile Environments November 2011 The Pressure Is On More than ever before, companies are being asked to do things faster. They need to get products to market faster to remain competitive
Agile Methodologies and Its Processes
International Journal of Computational Engineering Research Vol, 03 Issue, 9 Agile Methodologies and Its Processes 1, Akanksha, 2, Akansha Rakheja, 3, Latika Kapur, 4, Kanika Ahuja 1,2,3,, Information
Systems Engineering with RUP: Process Adoption in the Aerospace/ Defense Industry
March 2004 Rational Systems Engineering with RUP: Process Adoption in the Aerospace/ Defense Industry Why companies do it, how they do it, and what they get for their effort By Dave Brown, Karla Ducharme,
SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island
SPECIFICATION BY EXAMPLE How successful teams deliver the right software Gojko Adzic MANNING Shelter Island Brief Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Preface xiii Acknowledgments xxii
Netstar Strategic Solutions Practice Development Methodology
Netstar Strategic Solutions Practice Development Methodology Netstar Corporation Abstract This document contains a high level description of the development methodology used by the Netstar Strategic Solutions
Managing Successful Offshore QA Delivery
1 Managing Successful Offshore QA Delivery White Paper Authored for: 13th International Conference, QAI Author 1: Prasuna Potteti Date: 13-Sep-2011 Email: [email protected] Deloitte Consulting India
IMQS TECHNOLOGY AGILE METHODOLOGY
IMQS TECHNOLOGY AGILE METHODOLOGY OVERVIEW Agile software development refers to a group of software development methodologies that promotes development iterations, open collaboration, and process adaptability
Basic Trends of Modern Software Development
DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-business Solutions Basic Trends of Modern Software Development 2 3 Software Engineering FAQ What is software engineering? An engineering
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) Supriyo Bhattacharjee MOF Capability Maturity Model (CMM) A bench-mark for measuring the maturity of an organization s software process CMM defines 5 levels of process
Application Lifecycle Management White Paper. Source Code Management Best Practice: Applying Economic Logic to Migration ALM
ALM Application Lifecycle Management White Paper Source Code Management Best Practice: Applying Economic Logic to Migration Summary: Is there a Business Case for Migration? Ultimately, what is the value
Partnering for Project Success: Project Manager and Business Analyst Collaboration
Partnering for Project Success: Project Manager and Business Analyst Collaboration By Barbara Carkenord, CBAP, Chris Cartwright, PMP, Robin Grace, CBAP, Larry Goldsmith, PMP, Elizabeth Larson, PMP, CBAP,
Adopting a Continuous Integration / Continuous Delivery Model to Improve Software Delivery
Customer Success Stories TEKsystems Global Services Adopting a Continuous Integration / Continuous Delivery Model to Improve Software Delivery COMMUNICATIONS AGILE TRANSFORMATION SERVICES Executive Summary
Operationalizing Data Governance through Data Policy Management
Operationalizing Data Governance through Data Policy Management Prepared for alido by: David Loshin nowledge Integrity, Inc. June, 2010 2010 nowledge Integrity, Inc. Page 1 Introduction The increasing
Smarter Balanced Assessment Consortium. Recommendation
Smarter Balanced Assessment Consortium Recommendation Smarter Balanced Quality Assurance Approach Recommendation for the Smarter Balanced Assessment Consortium 20 July 2012 Summary When this document was
BI Dashboards the Agile Way
BI Dashboards the Agile Way Paul DeSarra Paul DeSarra is Inergex practice director for business intelligence and data warehousing. He has 15 years of BI strategy, development, and management experience
Managing Agile Projects in TestTrack GUIDE
Managing Agile Projects in TestTrack GUIDE Table of Contents Introduction...1 Automatic Traceability...2 Setting Up TestTrack for Agile...6 Plan Your Folder Structure... 10 Building Your Product Backlog...
Implement a unified approach to service quality management.
Service quality management solutions To support your business objectives Implement a unified approach to service quality management. Highlights Deliver high-quality software applications that meet functional
Documentation for data centre migrations
Documentation for data centre migrations Data centre migrations are part of the normal life cycle of a typical enterprise. As organisations expand, many reach a point where maintaining multiple, distributed
How do I manage the complexity in my organization?
Insights into organization How do I manage the complexity in my organization? Suzanne Heywood Rubén Hillar David Turnbull How do I manage the complexity in my organization? 1 Why is this important? All
Building Software in an Agile Manner
Building Software in an Agile Manner Abstract The technology industry continues to evolve with new products and category innovations defining and then redefining this sector's shifting landscape. Over
a new generation software test automation framework - CIVIM
a new generation software test automation framework - CIVIM Software Testing is the last phase in software development lifecycle which has high impact on the quality of the final product delivered to the
Computing & Communications Services
2010 Computing & Communications Services 2010 / 10 / 04 Final Kent Percival, M.Sc., P.Eng. Defining the Value of the Business Analyst In achieving its vision, key CCS partnerships involve working directly
Realizing business flexibility through integrated SOA policy management.
SOA policy management White paper April 2009 Realizing business flexibility through integrated How integrated management supports business flexibility, consistency and accountability John Falkl, distinguished
Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University
Software Engineering Introduction & Background Department of Computer Science Kent State University Complaints Software production is often done by amateurs Software development is done by tinkering or
Improved Software Testing Using McCabe IQ Coverage Analysis
White Paper Table of Contents Introduction...1 What is Coverage Analysis?...2 The McCabe IQ Approach to Coverage Analysis...3 The Importance of Coverage Analysis...4 Where Coverage Analysis Fits into your
Reducing Friction in Software Development
FOCUS: THE FUTURE OF SOFTWARE ENGINEERING Reducing Friction in Software Development Paris Avgeriou, University of Groningen Philippe Kruchten, University of British Columbia Robert L. Nord and Ipek Ozkaya,
Abstract. Keywords: Program map, project management, knowledge transition, resource disposition
Journal of Economic Development, Management, IT, Finance and Marketing, 6(1), 1-22, March 1 How to Prepare a Program Roadmap Kevin Byrne, Robert Keys, Cynthia Schaffer, Andrew N. Solic Drexel University,
Five best practices for deploying a successful service-oriented architecture
IBM Global Services April 2008 Five best practices for deploying a successful service-oriented architecture Leveraging lessons learned from the IBM Academy of Technology Executive Summary Today s innovative
A Strategic Approach to Web Application Security The importance of a secure software development lifecycle
A Strategic Approach to Web Application Security The importance of a secure software development lifecycle Rachna Goel Technical Lead Enterprise Technology Web application security is clearly the new frontier
Chartis RiskTech Quadrant for Model Risk Management Systems 2014
Chartis RiskTech Quadrant for Model Risk Management Systems 2014 The RiskTech Quadrant is copyrighted June 2014 by Chartis Research Ltd. and is reused with permission. No part of the RiskTech Quadrant
Driving Quality Improvement and Reducing Technical Debt with the Definition of Done
Driving Quality Improvement and Reducing Technical Debt with the Definition of Done Noopur Davis Principal, Davis Systems Pittsburgh, PA [email protected] Abstract This paper describes our experiences
TRAINING NEEDS ANALYSIS
TRAINING NEEDS ANALYSIS WHAT IS A NEEDS ANALYSIS? It is a systematic means of determining what training programs are needed. Specifically, when you conduct a needs analysis, you Gather facts about training
SOACertifiedProfessional.Braindumps.S90-03A.v2014-06-03.by.JANET.100q. Exam Code: S90-03A. Exam Name: SOA Design & Architecture
SOACertifiedProfessional.Braindumps.S90-03A.v2014-06-03.by.JANET.100q Number: S90-03A Passing Score: 800 Time Limit: 120 min File Version: 14.5 http://www.gratisexam.com/ Exam Code: S90-03A Exam Name:
Principles of Qualitative Research: Designing a Qualitative Study
Principles of Qualitative Research: Designing a Qualitative Study John W. Creswell, Ph.D. Vicki L. Plano Clark, M.S. Objectives As a group activity, to plan a qualitative study on the topic of leadership
Understanding Agile Project Management
Understanding Agile Project Management Author Melanie Franklin Director Agile Change Management Limited Overview This is the transcript of a webinar I recently delivered to explain in simple terms what
A Systematic Method for Big Data Technology Selection
A Systematic Method for Big Data Technology Selection John Klein Software Solutions Conference 2015 November 16 18, 2015 Copyright 2015 Carnegie Mellon University This material is based upon work funded
Why Do Developers Neglect Exception Handling?
Why Do Developers Neglect Exception Handling? Hina Shah, Carsten Görg, Mary Jean Harrold College of Computing, Georgia Institute of Technology, Atlanta, Georgia, U.S.A. {hinashah,goerg,harrold}@cc.gatech.edu
Information Management
G i Information Management Information Management Planning March 2005 Produced by Information Management Branch Open Government Service Alberta 3 rd Floor, Commerce Place 10155 102 Street Edmonton, Alberta,
Code Qualities and Coding Practices
Code Qualities and Coding Practices Practices to Achieve Quality Scott L. Bain and the Net Objectives Agile Practice 13 December 2007 Contents Overview... 3 The Code Quality Practices... 5 Write Tests
Applying CMMI SM In Information Technology Organizations SEPG 2003
Applying CMMI SM In Information Technology Organizations Mark Servello, Vice President Jim Gibson, Senior Consultant ChangeBridge, Incorporated Page 1 Portions Copyright 2002 Carnegie Mellon University
Integrating Scrum with the Process Framework at Yahoo! Europe
Integrating Scrum with the Process Framework at Yahoo! Europe Karl Scotland Yahoo! Europe [email protected] Alexandre Boutin Yahoo! International [email protected] Abstract Large enterprise
Solving the Software Quality Challenges of Agile Development
Solving the Software Quality Challenges of Agile Development 2 Solving the Software Quality Risks of Agile Development Agile software development is a series of iterative and incremental development methods
Virtual Platforms Addressing challenges in telecom product development
white paper Virtual Platforms Addressing challenges in telecom product development This page is intentionally left blank. EXECUTIVE SUMMARY Telecom Equipment Manufacturers (TEMs) are currently facing numerous
Job Satisfaction and Motivation in a Large Agile Team
Job Satisfaction and Motivation in a Large Agile Team Bjørnar Tessem 1, and Frank Maurer 2 1 Department of Information Science and Media Studies, University of Bergen, NO-5020 Bergen, Norway [email protected]
Call for Tender for Application Development and Maintenance Services
ADM Partners Reference #: 100001200 Call for Tender for Application Development and Maintenance Services Annex 2 - Agile Application Development and Maintenance Appendix A - OECD s Agile Practices and
(Refer Slide Time: 01:52)
Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This
Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series
Overview This is a 15-day live facilitator-led or virtual workshop is designed to prompt your entire team to work efficiently with Microsoft s Application Lifecycle Management solution based around Visual
Continuous Risk Management Guidebook
Carnegie Mellon Software Engineering Institute Continuous Guidebook Audrey J. Dorofee Julie A. Walker Christopher J. Alberts Ronald P. Higuera Richard L. Murphy Ray C. Williams The ideas and findings in
State of Medical Device Development. 2014 State of Medical Device Development seapine.com 1
State of Medical Device Development 2014 2014 State of Medical Device Development seapine.com 1 Executive Summary The demand for smarter, safer, more connected medical devices has introduced new complexities
Ensure Merge Accuracy in Continuous Integration Development Environments
Ensure Merge Accuracy in Continuous Integration Development Environments 2 Defect Challenges in Continuous Integration Development Modern software development is rapidly moving to incremental development
EXECUTIVE BEHAVIORAL INTERVIEW GUIDE
EXECUTIVE BEHAVIORAL INTERVIEW GUIDE INTERVIEW GUIDE INSTRUCTIONS: This Interview Guide is intended to help hiring executives conduct behavioral interviews for executive classifications covered by the
The Contextualization of Project Management Practice and Best Practice
The Contextualization of Project Management Practice and Best Practice Claude Besner PhD, University of Quebec at Montreal Brian Hobbs PhD, University of Quebec at Montreal Abstract This research aims
Solution Spotlight KEY OPPORTUNITIES AND PITFALLS ON THE ROAD TO CONTINUOUS DELIVERY
Solution Spotlight KEY OPPORTUNITIES AND PITFALLS ON THE ROAD TO CONTINUOUS DELIVERY C ontinuous delivery offers a number of opportunities and for organizations. By automating the software buildtest-deployment
Integrated Risk Management:
Integrated Risk Management: A Framework for Fraser Health For further information contact: Integrated Risk Management Fraser Health Corporate Office 300, 10334 152A Street Surrey, BC V3R 8T4 Phone: (604)
VMware vcenter Log Insight Delivers Immediate Value to IT Operations. The Value of VMware vcenter Log Insight : The Customer Perspective
VMware vcenter Log Insight Delivers Immediate Value to IT Operations VMware vcenter Log Insight VMware vcenter Log Insight delivers a powerful real-time log management for VMware environments, with machine
When User Experience Met Agile: A Case Study
When User Experience Met Agile: A Case Study Michael Budwig User Experience Manager PayPal 2211 North 1 st Street, San Jose, California 95131 USA [email protected] Soojin Jeong Manager, User Interface
