<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    jsea
   </journal-id>
   <journal-title-group>
    <journal-title>
     Journal of Software Engineering and Applications
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    1945-3116
   </issn>
   <issn publication-format="print">
    1945-3124
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/jsea.2025.184009
   </article-id>
   <article-id pub-id-type="publisher-id">
    jsea-142051
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Computer Science 
     </subject>
     <subject>
       Communications
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    Test and Defect Driven Development (T3D): A Novel Approach to Software Development
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Wasim
      </surname>
      <given-names>
       Haque
      </given-names>
     </name>
    </contrib>
   </contrib-group> 
   <aff id="affnull">
    <addr-line>
     aWoodstock, GA, USA
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     21
    </day> 
    <month>
     04
    </month>
    <year>
     2025
    </year>
   </pub-date> 
   <volume>
    18
   </volume> 
   <issue>
    04
   </issue>
   <fpage>
    139
   </fpage>
   <lpage>
    147
   </lpage>
   <history>
    <date date-type="received">
     <day>
      8,
     </day>
     <month>
      March
     </month>
     <year>
      2025
     </year>
    </date>
    <date date-type="published">
     <day>
      18,
     </day>
     <month>
      March
     </month>
     <year>
      2025
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      18,
     </day>
     <month>
      April
     </month>
     <year>
      2025
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    Software development methodologies have evolved significantly, transitioning from traditional Waterfall models to more flexible Agile frameworks. However, the role of Quality Assurance (QA) in Agile methodologies has diminished, reducing QA’s influence in the development process. This paper introduces Test and Defect Driven Development (T3D), a novel methodology that integrates QA more deeply into the software development lifecycle (SDLC). Unlike traditional Test-Driven Development (TDD), T3D emphasizes the proactive role of QA by creating and marking test cases as failed before development begins, allowing developers to fix defects in real time. This paper discusses the need for T3D, its advantages and disadvantages, and its potential impact on modern software development. 
   </abstract>
   <kwd-group> 
    <kwd>
     Software Development
    </kwd> 
    <kwd>
      Software Engineering
    </kwd> 
    <kwd>
      Agile
    </kwd> 
    <kwd>
      Scrum
    </kwd> 
    <kwd>
      Development Methodology
    </kwd> 
    <kwd>
      TDD (Test Driven Development)
    </kwd> 
    <kwd>
      QA (Quality Assurance)
    </kwd> 
    <kwd>
      Defect Driven Development (DDD)
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>Modern software development methodologies aim to improve efficiency, reduce defects, and enhance collaboration among teams. Agile methodologies such as Scrum, XP, TDD, and Defect-Driven Development (DDD) have gained popularity, but they often limit QA team’s role just to execution rather than strategic involvement.</p>
   <p>I’m proposing Test and Defect Driven Development (T3D) as an alternative that maintains Agile’s adaptability while enhancing QA team’s role. By having QA define test cases before code implementation and pre-marking them as failed, T3D allows developers to address defects early. This paper explores the rationale behind T3D, its potential impact, and how it can integrate seamlessly into existing development frameworks.</p>
   <p>Although T3D could work with Agile Teams of any size, irrespective of their geolocation and composition (Dev, QA and Ops). I think a perfect candidate for implementing T3D would be:</p>
  </sec><sec id="s2">
   <title>2. A Brief Look at Agile Software Development Methodologies</title>
   <p>In the last decade, the adoption of Agile Methods has grown substantially, highlighting the need for a deeper exploration of their underlying principles. This paper offers a concise overview of some of the key frameworks currently in use and examines how they align with the core values outlined in the Manifesto for Agile Software Development <xref ref-type="bibr" rid="scirp.142051-1">
     [1]
    </xref>.</p>
   <sec id="s2_1">
    <title>2.1. Scrum</title>
    <p>The Scrum development process addresses various technical and environmental factors that may evolve throughout a project. It is designed to help teams maintain their focus on software development while adapting to changing conditions <xref ref-type="bibr" rid="scirp.142051-2">
      [2]
     </xref>. Scrum is divided into three phases: pre-development, development, and post-development. The pre-development phase consists of two key components: planning and architecture/high-level design. During the planning stage, the team gathers system requirements and creates a list of features and modifications.</p>
    <p>The architecture phase refines and evolves the design based on the backlog list. In the development phase, the team works in iterative cycles (sprints) to improve the system and introduce new functionalities. Each sprint typically includes tasks such as analysis, design, evolution, and delivery.</p>
    <p>Sprints usually last between two weeks to one month. Typically, three to eight sprints are completed before the system is ready for release. However, there are some technology companies that release new or enhanced features in their software products every sprint. The post-development phase marks the conclusion of the development effort, during which no further modifications or features are added. Retrospective is also held at the end of the sprint to help all members share honest feedback on tasks, the project overall, and any challenges encountered. We then collaboratively brainstorm solutions to address these roadblocks, ensuring we’re better equipped for upcoming sprints.</p>
   </sec>
   <sec id="s2_2">
    <title>2.2. Extreme Programming (XP)</title>
    <p>Like Scrum, Extreme Programming (XP) breaks down project work into short development cycles known as “iterations” <xref ref-type="bibr" rid="scirp.142051-3">
      [3]
     </xref>. This approach allows Agile teams to quickly adapt to changing user requirements, even during the later stages of the product development lifecycle. Additionally, XP plays a significant role in enhancing product quality.</p>
    <p>What distinguishes XP from other Agile methodologies is its strong emphasis on technical excellence specifically, producing high-quality code. Developers receive immediate feedback and continuously refine their code through practices like pair programming and both manual and automated testing. Project managers facilitate daily stand-up meetings to monitor progress and address obstacles. Meanwhile, product owners and stakeholders provide feedback based on acceptance tests and the product’s performance after each iteration.</p>
    <p>These core practices of XP foster effective teamwork, encourage adherence to coding best practices, and help maintain high standards for code quality and overall deliverables.</p>
   </sec>
   <sec id="s2_3">
    <title>2.3. Test Driven Development</title>
    <p>Test-Driven Development (TDD) is a software development methodology where developers write automated tests before writing the actual code <xref ref-type="bibr" rid="scirp.142051-4">
      [4]
     </xref>. This approach begins with creating unit test cases that define the expected behavior of a feature, guiding the subsequent development of the code itself. It follows an iterative cycle that integrates programming, unit test creation, and continuous refactoring.</p>
    <p>The TDD workflow is structured around a repetitive cycle known as Red-Green-Refactor:</p>
    <p>TDD helps maintain a reliable and bug-free codebase by catching errors early in the development process. It also promotes better design practices, as writing tests first forces developers to think critically about the intended functionality and structure of the code.</p>
    <p>Additionally, since tests are an integral part of the development process, TDD leads to higher code coverage. It simplifies future modifications or refactoring by ensuring existing features remain stable and thoroughly tested.</p>
    <p>Rooted in the principles of the Agile Manifesto and Extreme Programming (XP), TDD emphasizes test-driven development as the foundation for writing effective, maintainable code. Developers create small, focused test cases based on their initial understanding of each feature. Code is written or modified only when a test fails, reducing redundancy and ensuring that every piece of code serves a validated purpose.</p>
   </sec>
   <sec id="s2_4">
    <title>2.4. Defect Driven Development (DDD)</title>
    <p>Defect-Driven Development (DDD) is a software development approach where the process is heavily influenced by defects found during testing or production. Instead of following a traditional feature-driven or test-driven approach, teams prioritize fixing defects as they emerge, leading to continuous refinement and improvement of the codebase <xref ref-type="bibr" rid="scirp.142051-5">
      [5]
     </xref>.</p>
    <p>Key Characteristics of Defect-Driven Development:</p>
    <p>Defect-Driven Development is often combined with Test-Driven Development (TDD) and Continuous Integration/Continuous Deployment (CI/CD) practices to create a balanced software quality approach.</p>
   </sec>
  </sec><sec id="s3">
   <title>3. Pitfalls of Agile Software Development Methodologies</title>
   <p>While Agile, DevOps, and CI/CD have revolutionized software development by promoting speed and flexibility, they also introduce several potential pitfalls that teams need to be aware of to fully realize their benefits <xref ref-type="bibr" rid="scirp.142051-6">
     [6]
    </xref>. Top 3 potential pitfalls are discussed below.</p>
   <sec id="s3_1">
    <title>3.1. Overemphasis on Speed over Quality</title>
    <p>Rushing to meet tight deadlines can compromise code quality and lead to technical debt. For example, frequent sprints in Agile may pressure QA team to deliver quickly without sufficient testing leading to a potential customer escalation. In several cases, it has been seen that QA team is bullied into giving their signoff.</p>
    <p>Poor software quality is incredibly costly for companies, both in direct financial losses and indirect impacts. Here are some key stats and insights:</p>
   </sec>
   <sec id="s3_2">
    <title>3.2. Lack of Clear Ownership</title>
    <p>Lack of clear ownership can significantly hinder Agile development methodologies in several ways:</p>
   </sec>
   <sec id="s3_3">
    <title>3.3. Security Risks in Fast-Paced Development</title>
    <p>Security checks are sometimes overlooked to maintain rapid deployment cycles. In DevOps, pushing code without thorough vulnerability scans increases the risk of breaches or in the absence of a QA team for security testing could potentially ship products to customers leaving them vulnerable to serious risks like DoS (Denial of Service) and SQL injections thus crippling their day-to-day operations leading to huge financial losses, latest one being the CrowdStrike security patch mayhem in the year 2024 that brought US Airlines operations to a halt resulting in loss of billions of dollars.</p>
    <p>The data-driven reality highlights that modern Agile methodologies often prioritize velocity over quality, leading to a lack of motivation for delivering high-quality products. While Agile excels in speed, it frequently overlooks the importance of robust testing and defect management. So, how can we overcome these challenges while maintaining agility and ensuring QA teams regain their significance? One possible solution is a new methodology—T3D (Test &amp; Defect Driven Development)—designed to address these shortcomings. Let’s explore how it can enhance both quality and agility.</p>
   </sec>
  </sec><sec id="s4">
   <title>4. Test &amp; Defect Driven Development (T3D)</title>
   <p>You may come across information about DDD (Defect Driven Development) on the internet, but that’s not the focus of this article. While it might sound like Test Driven Development (TDD), it’s something entirely different—something you’ll understand fully by the end of this article.</p>
   <p>All development methodologies consist of multiple phases or steps which are interlinked with each other. It will be easier for the readers to understand if a walkthrough of those steps is given so that they can create an impression of the flow of process as it begins and ends in a chronological order:</p>
   <p>1) The sprint begins with requirements or user stories being baselined and finalized after planning sessions.</p>
   <p>2) Rather than the developers writing business logic first, the QA team prepares end-to-end (E2E) and Integration manual test cases, which are then reviewed by the Leads or Product Owners. Meanwhile in parallel, developers can complete their SCM duties, get architecture and design reviews, and begin writing unit tests.</p>
   <p>a) For QA team to write effective manual E2E and integration TCs they should be fully aware of the functionality and its impact on other systems. This can be achieved by involving QA during sprint planning and grooming and other relevant design sessions.</p>
   <p>b) The tests don’t have to be very exhaustive but should be detailed enough for developers to execute and product managers to review.</p>
   <p>3) Once the test cases are approved, the QA team marks the test cases as “Failed” in their test management tool.</p>
   <p>4) Next, defects are raised for all failed test cases and assigned to the development team. Modern test management tools streamline this process by generating defects directly from test cases, reducing manual effort.</p>
   <p>5) Developers then begin implementing business logic. As they complete features or functions, they conduct initial testing before releasing them to QA, checking for any defects identified in step 4 as their reference frame.</p>
   <p>6) Development continues iteratively until all critical, high, and preferably medium-severity defects are resolved. As fixes are made, developers progressively release the updated codebase to QA.</p>
   <p>7) Once QA receives the build, they retest the defects and take appropriate actions (Close or Re-Open). Resolved defects are marked as “Closed”, and the corresponding test cases are updated to “Passed”. Any test cases failing due to minor, low-priority defects remain marked as “Failed”.</p>
   <p>8) At this stage, Automation, Performance, and Security Engineers can begin their tasks, including automating E2E and integration tests, evaluating system performance, and conducting security scans to identify and mitigate vulnerabilities.</p>
   <p>9) In parallel, testers can perform exploratory and regression testing to ensure no new defects have been introduced. Depending on severity, newly discovered defects may be fixed within the sprint, deferred to a future release, or moved to the next sprint. The QA team could also update the test suite with cases for any missed defects.</p>
   <p>10) As the sprint nears completion, all critical and high-severity defects should be resolved. Automation, Performance, and Security Engineers finalize their tasks and provide feedback.</p>
   <p>11) The sprint concludes with a review where all stakeholders (Developers, QA, and DevSecOps) showcase their work and determine whether to release the product or feature. If approved, the codebase is released to production; otherwise, unresolved issues are added to the next sprint’s backlog.</p>
   <p>12) Finally, a sprint retrospective allows teams to reflect on the process and identify areas for improvement, fostering continuous enhancement of workflow and efficiency.</p>
   <p>The pictorial presentation of T3D can be seen below in <xref ref-type="fig" rid="fig1">
     Figure 1
    </xref>.</p>
   <fig id="fig1" position="float">
    <label>Figure 1</label>
    <caption>
     <title>Figure 1. T3D development process.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/9303398-rId14.jpeg?20250421113212" />
   </fig>
   <sec id="s4_1">
    <title>Example Implementation</title>
    <p>Let’s understand the process better with the help of an example. Say an agile team is planning to work on 3 user stories of varying complexities.</p>
    <p>Post sprint planning the QA team should come up with a map and get it reviewed by the Product and Dev teams as shown below in <xref ref-type="table" rid="table1">
      Table 1
     </xref>.</p>
    <table-wrap id="table1">
     <label>
      <xref ref-type="table" rid="table1">
       Table 1
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.142051-"></xref>Table 1. User story map.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td rowspan="2" class="aleft" width="27.46%"><p style="text-align:left">User story Id</p></td> 
       <td class="aleft" width="72.54%" colspan="3"><p style="text-align:left">Test &amp; Defect</p></td> 
      </tr> 
      <tr> 
       <td class="custom-bottom-td custom-top-td aleft" width="22.54%"><p style="text-align:left">No. of E2E tests</p></td> 
       <td class="custom-bottom-td custom-top-td aleft" width="30.90%"><p style="text-align:left">No. of integration tests</p></td> 
       <td class="custom-bottom-td custom-top-td aleft" width="19.10%"><p style="text-align:left">No. of defects</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="27.46%"><p style="text-align:center">US-001 (High)</p></td> 
       <td class="custom-top-td acenter" width="22.54%"><p style="text-align:center">3</p></td> 
       <td class="custom-top-td acenter" width="30.90%"><p style="text-align:center">5</p></td> 
       <td class="custom-top-td acenter" width="19.10%"><p style="text-align:center">8</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.46%"><p style="text-align:center">US-002 (Medium)</p></td> 
       <td class="acenter" width="22.54%"><p style="text-align:center">2</p></td> 
       <td class="acenter" width="30.90%"><p style="text-align:center">3</p></td> 
       <td class="acenter" width="19.10%"><p style="text-align:center">5</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="27.46%"><p style="text-align:center">US-003 (Low)</p></td> 
       <td class="acenter" width="22.54%"><p style="text-align:center">1</p></td> 
       <td class="acenter" width="30.90%"><p style="text-align:center">2</p></td> 
       <td class="acenter" width="19.10%"><p style="text-align:center">3</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>As developers write code and when believe they’ve logically concluded a function or a story they will begin with testing with 2 goals:</p>
    <p>1) Acceptance criteria documented in the story is achieved.</p>
    <p>2) The 16 defects raised above don’t appear to block or impact the story.</p>
    <p>This improves the build quality that will be delivered to the QA team, there won’t be any surprises and the turnover and back-forth between Dev and QA will also reduce. As a result, Regression testing, Performance and Security evaluations would be faster.</p>
    <p>In any iterative development process not all stories may be delivered to the QA team, there’s a possibility stories delivered earlier may develop defects due to code changes done for other stories, but the chances of this happening in T3D are very less due to the nature of tests (E2E &amp; integration) written by QA for devs. However, if by chance Devs miss anything QA is there to provide the safety net.</p>
    <p>Once all the 16 defects (plus additional that team would have discovered) are resolved and closed, the 16 test cases (6 E2E &amp; 10 intg.) are now marked as “Passed”. If the team decides to defer any defects, then the corresponding test case remains in failed state until the defect is resolved as shown below in <xref ref-type="table" rid="table2">
      Table 2
     </xref>.</p>
    <table-wrap id="table2">
     <label>
      <xref ref-type="table" rid="table2">
       Table 2
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.142051-"></xref>Table 2. Sample results.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td rowspan="2" class="aleft" width="14.39%"><p style="text-align:left">Tests</p></td> 
       <td class="custom-bottom-td aleft" width="14.39%" colspan="3"><p style="text-align:left">Test &amp; Defect</p></td> 
      </tr> 
      <tr> 
       <td class="custom-bottom-td custom-top-td aleft" width="14.39%"><p style="text-align:left">Story Id</p></td> 
       <td class="custom-bottom-td custom-top-td aleft" width="14.39%"><p style="text-align:left">Test result</p></td> 
       <td class="custom-bottom-td custom-top-td aleft" width="14.39%"><p style="text-align:left">Defects open</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="14.39%"><p style="text-align:center">TC-01</p></td> 
       <td class="custom-top-td acenter" width="14.39%"><p style="text-align:center">US-001</p></td> 
       <td class="custom-top-td acenter" width="14.39%"><p style="text-align:center">Passed</p></td> 
       <td class="custom-top-td acenter" width="14.39%"><p style="text-align:center">N/A</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="14.39%"><p style="text-align:center">TC-05</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">US-002</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">Passed</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">N/A</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="14.39%"><p style="text-align:center">TC-10</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">US-003</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">Failed</p></td> 
       <td class="acenter" width="14.39%"><p style="text-align:center">BUG-003-10</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>During sprint review, everything gets reviewed, and decisions are made to release features and to defer some to upcoming releases. Next sprint same process is followed where the team works on new backlog items along with multi-sprint stories and defects that were deferred from previous sprints.</p>
   </sec>
  </sec><sec id="s5">
   <title>5. Pros and Cons of T3D</title>
   <p>Like any agile development methodology discussed in Section 2, T3D too has its advantages and disadvantages.</p>
   <sec id="s5_1">
    <title>5.1. Pros</title>
   </sec>
   <sec id="s5_2">
    <title>5.2. Cons</title>
   </sec>
  </sec><sec id="s6">
   <title>6. Discussion</title>
   <p>T3D represents an evolution of test-driven methodologies, adapting to the increasing complexity of modern software systems. Unlike traditional TDD, which emphasizes unit testing, T3D integrates functional test cases as a precursor to development, ensuring real-world defects are anticipated and addressed proactively. The methodology does not conflict with existing Agile frameworks; instead, it enhances them by reinforcing collaboration and ensuring continuous quality.</p>
   <p>By leveraging defect tracking tools and automation, T3D can be seamlessly incorporated into DevOps pipelines. Companies that adopt T3D may experience higher first-pass success rates, reduced testing cycles, and improved overall software quality.</p>
  </sec><sec id="s7">
   <title>7. Conclusion</title>
   <p>T3D offers a balanced approach to software development, addressing the gaps left by traditional Agile and TDD methodologies. By involving QA at an earlier stage and ensuring developers have clear defect insights before coding, T3D enhances efficiency, collaboration, and product stability. While adoption challenges exist, organizations willing to experiment with T3D can benefit from improved software quality and a more cohesive development process.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.142051-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Agile Alliance (n.d.) Agile 101. &gt;https://www.agilealliance.org/agile101
    </mixed-citation>
   </ref>
   <ref id="scirp.142051-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Schwaber, K. and Sutherland, J. (2020) The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game. Scrum.org&amp;Scrum Inc. &gt;https://www.scrumguides.org/scrum-guide.html
    </mixed-citation>
   </ref>
   <ref id="scirp.142051-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Beck, K. and Andres, C. (2004) Extreme Programming Explained: Embrace Change. 2nd Edition, Addison-Wesley.
    </mixed-citation>
   </ref>
   <ref id="scirp.142051-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Beck, K. (2002). Test-Driven Development by Example. Addison-Wesley.
    </mixed-citation>
   </ref>
   <ref id="scirp.142051-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nachiengmai, W., Ramingwong, S., Cosh, K., Ramingwong, L. and Eiamkanitchat, N. (2019) Defect-Driven Development: A New Software Development Model for Beginners. Geomate Journal, 17, 149-155. &gt;https://geomatejournal.com/geomate/article/view/2150
    </mixed-citation>
   </ref>
   <ref id="scirp.142051-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Shore, J. and Warden, S. (2007) The Art of Agile Development. O’Reilly Media.
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>