managing software debt
< tingletech
Get flash to fully experience Pearltrees
At Yelp, we push new code live every day. Pushing daily allows us to quickly prototype new features and squash bugs in a proactive manner. Because we aim to deploy new code so often, we're always looking for ways to make the process efficient and painless.
Forrester Research analysts Dave West and Tom Grant just published their report on Agile 2010 . Here is the section in their report on managing technical debt: Managing technical debt Dave: The Agile community has faced a lot of hard questions about how a methodology that breaks development into short iterations can maintain a long-term view on issues like maintainability.
In this paper, we propose an agile approach, for the migration of legacy software which combines a user story-based iterative process with automated acceptance testing. The proposed approach, named Storytest-Driven Migration (STDM), requires that acceptance tests are written both on the legacy and target versions of a software system. Because of their relevance, the quality of automated acceptance tests is assured through software inspections. As a proof of concept, we conducted a first migration project of a web application towards both a web application framework and a mobile platform.
Ron Jeffries started an interesting topic on the XP mailing list. He said, "I think sometimes there's too much refactoring, and refactoring in the wrong places. ... How can we find a balance between too much refactoring and too little?" I thought this was a great topic. Test-Driven Development gets all of the attention, but I think merciless refactoring is the part of XP that has all of the subtleties, and where the coolest stuff happens. Imagine!
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage. I vividly remember one of my first sightings of a large software project. I was taking a summer internship at a large English electronics company.
Which door represents your code? Which door represents your team or your company? Why are we in that room?
Advance Praise “For refactoring to be valuable it must be going somewhere, not just an abstract intellectual exercise. Patterns document program structures with known good properties. Put the two together and you have Refactoring to Patterns .
Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.
Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit , jMock , RSpec , Groovy , Scala , Vulcans , and other fascinating life forms. If you happen to be at 33rd Degree , come visit Luke Daley's Spock and Geb talks this Tuesday!
Pyccuracy is a Behaviour-Driven-Development-style tool written in Python that aims to make it easier to write automated acceptance tests. It improves the readability of those tests by using a structured natural language – and a simple mechanism to extend this language – so that both developers and customers can collaborate and understand what the tests do. Go to the “ overview ” section for more details.
STIQ is a mashup of Selenium and FitNesse . It is "wiki-ized" Selenium with widgets and features that make it easier to write and organize Selenium tests. When developing web applications, it is helpful for a cross-functional team to have a definitive and executable view of the requirements for an iteration.
Paul Duvall is the CEO of Stelligent, a firm that helps clients create production-ready software every day. A featured speaker at many leading software conferences, he has worked in virtually every role on software projects: developer, project manager, architect, and tester. He is the principal author of Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, 2007), a 2008 Jolt Award Winner. Paul contributed to the UML 2 Toolkit (Wiley, 2003), writes a series for IBM developerWorks called Automation for the people, and contributed a chapter to No Fluff Just Stuff Anthology: The 2007 Edition (Pragmatic Programmers, 2007). He is passionate about automating software development and release processes and actively blogs on IntegrateButton.com and TestEarly.com. Stephen M.
"The unique thing about Fit for Developing Software is the way it addresses the interface between customers/testers/analysts and programmers. All will find something in the book about how others wish to be effectively communicated with. A Fit book for programmers wouldn't make sense because the goal is to create a language for business-oriented team members. A Fit book just for businesspeople wouldn't make sense because the programmers have to be involved in creating that language. The result is a book that should appeal to a wide range of people whose shared goal is improving team communications." --Kent Beck, Three Rivers Institute