Reduce software development costs with these 5 handy tips, including defect tracking, definition-stage user testing and the prototype methodology.
Software development teams are getting smaller and more agile, project cycles are getting shorter… but software development lifecycle (SDLC) costs and incidence of reworks don’t always go down in tandem. At least according to former Gartner researcher Theresa Lanowitz, who in her role as Founder of voke found that agile software project teams reported an increase in project cost from $3.2 million to $3.4 million over a four year period. If outlay on teams and time really is shrinking, why the increase in cost?
The answer may be two-fold: rework and defects. IEEE’s report ‘Why Software Fails’ notes that programmers spend up to 50% of their time on avoidable rework, and the cost of fixing errors after development can be up to 100x higher than before development. One National Institute of Standard Technology study from back in 2002 found that it can take 15 hours to fix a defect in the production stage, as compared to 5 hours in the coding stage. Most software project/product managers would happily wave goodbye to these kinds of statistics.
The following 5 SDLC cost-reduction tips are mainly based on one central tenet: prevention is better than cure, and early prevention is better than late prevention. The earlier in a lifecycle an error is uncovered, the less it will cost to fix.
Check out this short video for more stats on rework and defect costs
Document, define and manage requirements from day 1
Meaningful requirements are the secret sauce for success in any SDLC. Both functional and non-functional requirements have to be defined, documented and accessible throughout the SDLC, or teams will run into trouble.
A lack of well-documented and agreed functional requirements can lead to building a product misaligned with client needs, even when developers feel they’ve followed their brief to the letter. Not only will this create animosity between client and software team, but will most likely lead to rework and delays.
Faulty non-functional requirements don’t exclude the possibility of delivering the functionality requested by a client, but can result in a system with flawed execution processes; in other words, your software does what it should, but the how is a hot mess. Again, rework strikes.
The root of all faulty requirements is bad communication, which can be improved by documenting and defining all requirements in a prototyping tool during the systems development phase. Providing easy access to requirements that are directly linked to software features within a prototype helps ensure mutual understanding between clients and teams, plus you have access to versioned histories of all modifications, and requirements can be organized into categories for easy management.
Implement the prototype model in both systems and software definition phases
There are plenty of methodologies by which an SDLC can be organized, but the prototype model is a good option if tackling bad communication and its ramifications is part to your rework reduction strategy.
The prototype model of software development promotes early-stage interaction between users, developers, designers and paying clients. Here’s how it works, in a simplified version: the developers create initial lo-fi prototypes based on their interpretation of the requirements document within the prototyping tool; user guinea pigs and stakeholders can then give developers some honest feedback on prototypes; requirements are tweaked and expanded accordingly; designers and developers iterate until everyone’s happy; coded development gets underway.
The prototype model approach to software development doesn’t just smooth communication and thus avoid reworks. Other benefits include:
- Greater stakeholder engagement
- Better end-user engagement in product
- Timely proof-of-concept
- Better iteration and idea-cycling
Document the defects
While implementing a prototype model to the SDLC will certainly reduce defects, there’s no silver bullet to catch them all. So effective defect tracking is an essential step towards reducing SDLC costs. Documenting defects, investigating them, finding individual solutions and, perhaps most importantly, creating a system to solve defects will go a long way towards stopping defect-related costs spiraling out of control.
Whether bugs are logged in a project management tool, in a prototyping tool or in a spreadsheet, it’s important to include the following:
- Describe the defect clearly
- The phase where it occurs
- Interactive comments linked to specific features in a prototyping tool; or screenshots
- Details of who found the defect
Early user acceptance testing
User acceptance testing is obviously crucial to a successful and low-cost software project; after all, if you get to the end of the lifecycle and suddenly find out users can’t work your product, you’ve got problems. Expensive problems.
User acceptance testing (UAT) should be done after unit testing and functional testing, but can still be started in the prototyping stage, particularly if working with simulated or functional prototypes (obviously, UAT will have to be done when you’re all coded and ready to launch as well).
Build test scenarios around user journeys or personas, and have either an industry expert or a user experience expert run the tests. There is a wealth of UAT approaches and, as long as built into the SDLC early on, all will help reduce rework time, and may help catch defects.
QA all the way
Finally, Quality Assurance can play a huge part in reducing development costs, especially if it’s implemented early on in the project. As Justinmind recently wrote in a guest blog for NVP Software Solutions, early stage Quality Assurance keeps both development and maintenance costs at a reasonable level. Call in QA experts as early as in the systems definition phase, and have them weigh in on functional and non-functional requirements; thereby they will be able to design relevant testing procedures that much earlier, and give their 2 cents on whether requirements are testable. This smooths the QA process without jeopardizing project scope.
Reducing software development costs – the takeway
Defining and developing software can be a costly business, but it doesn’t have to be if development teams implement cost saving strategies throughout the SDLC. By leveraging resources such as prototyping tools, quality assurance and user testing, and agile requirements management, teams and managers can bring down software development costs.