When is a software project finished, why the high costs?

When is a project completed, in particular, when is a software development project finally completed? This a question I even ask myself, and also often wonder about. Even though a lot of development is done through agile methodologies, this still begs the question if the project actually comes to an end. I understand with developing games, the patch support usually stops, or the product that is sold is usually the final given product, and no added changes are made unless their is pattern of issues that occur with the final product, and customers complain enough to have it fixed. Also, with gaming some games are released for free (though with added content costing extra money). PC games that allow for a lot of leniency for modification and updating, require a lengthy amount of time for support and patches to keep the game content exciting and relevant.

Though with business applications or your normal day-to-day websites do not ever seem to have and end-time or final date for development. They are constantly updated, modified, or completely remade (rewritten). This would also mean continuous refactoring and/or optimization of code to stay up-to-date with the latest frameworks and technologies.

Constraining and cutting down on time spent fixing issues has somewhat been a way software optimization and maintenance inadvertently creeps up. With the advent of TDD (Test Driven Development, why it is involved in another post.), this has become a useful way to mitigate issues before they even appear. In some ways like predicting the future, which means in some since Agile Developers are like oracles, excuse the analogy.

Believe it or not, this is useful aspect to consider for an individual working in development, according to asq.org (http://asq.org/public/wqm/how-to-save-on-software-maintenance-costs.pdf) Omnext’s whitepaper, maintenance accounts for 90% of software cost. This is insanely large number. The main concern is size and complexity of software, which left uncheck can lead to an enormous amount of cost.

Source: http://asq.org/public/wqm/how-to-save-on-software-maintenance-costs.pdf

Furthermore,  we have to consider critical paths, and how they sum to a longer overall time of completion.

Critical path is the sequence of activities which add up to the longest overall

duration. It is the shortest time possible to complete the project. Any delay of

an activity on the critical path directly impacts the planned project completion

date (there is no float on the critical path). A project can have several, parallel,

near critical paths. An additional parallel path through the network with the

total durations shorter than the critical path is called a sub-critical or non-critical

path.

From: http://web.stanford.edu/class/cee320/CEE320B/CPM.pdf

Ideally, the more time spent on innovation and creativity, the better. This would  likely lead to more expansive and available technologies, while being less error prone throughout the process. The deviation from the project plan to continued maintenance does not mean a project is complete. In other words, a project is not complete until all the issues/problems are fixed right? So why the continuous patching and maintenance of software? Well, this simply means how the process works as of now is based on the thought of being agile directly relates how responsive to change development is. So the more software is delayed may correlate to how much maintenance is involved.

To alleviate this Omnext describes six methods to saving on maintenance cost: Redocumentation, Eliminating dead code, Eliminating cloned code, Avoiding and eliminating bugs, Focused test activities,  and In general: Reduce complexity leads to improved maintainability.

These are often repeated patterns in software development, especially eliminating redundant code being fundamental. The less obvious one is most likely redocumentation, as Agile Development specifically is not focused on documentation (View the Agile Manifesto for what this means with the following link: http://agilemanifesto.org/).

“In one of the few controlled experiments relating to this topic, research [5] has shown

that the programmers who had no documentation spent 21.5% longer understanding the

code. Knowing that understanding may take around 50% of the total costs of software

maintenance, we could save 12% of the total cost of software maintenance if we had

documentation in place.”

Form: http://asq.org/public/wqm/how-to-save-on-software-maintenance-costs.pdf

So largely, the less understandable the software, the more in complexity, leading to enormous drag in software completion time, and direct increase in cost. There is so much more to this topic as companies try to offset maintenance cost with purchasing other technologies, such Saas ( Software as a Service). So as other technologies become a valued asset to solve these problems without the lingering maintenance contracts, so does cost for these technologic services.

Manjit Singh, CIO of Chiquita Brands, says he’s been watching maintenance fees for the software vendors he uses creep up from an average of about 18% a few years ago to 21% or 22%. “And for that, what am I getting? I’m not getting to dictate product strategy, and I don’t get premier support,” Singh says. “I’m getting the right to code fix it and to upgrade.

With more pressure on his IT budget, Singh is looking at what maintenance contracts he can cancel–typically software nearing the end of its life cycle. With some other applications, he’s switching to software as a service, bypassing the conventional maintenance fee structure altogether.”

From: http://www.informationweek.com/software/software-maintenance-fees-time-for-this-model-to-change/d/d-id/1075860?

Essentially, building a model or system that requires TDD and avoidance of too much complexity would be ideal which then may require the use of more elegant API’s. Less time developers spend trying to understand overly complicated code, the better for the consumer and hopefully an actual final product. So touch, on the comparison of game development and software development in general, there can be a lot to learn about how the game industry completes their projects. As typically with a game, once it is completed and shipped for sell, there really is no more than maintenance unless the standard customer support is consider that.

 

Leave a Reply