I have become active in the Linked-in Community, especially regarding predictive analytics, as there are many very good discussion groups.
So, to save effort and still get a couple of hours of sleep, a lot of my posting here will come from there.
The below is not a predictive analytics post, but an answer to question on how to ensure software quality beyond simply meeting the customer requirements that I thought I would share. There are other aspects besides Extensibility, Scalability, Traceability, and Reliability, but these are four pretty good starting pillars.
Software quality assurance requires disciplined softwaredevelopment, risk management, planning, and ongoing evaluation. Many systemsstart out as satisfactory to the users, but are illusions. One analogy is thatyou can build a house without a satisfactory foundation and it might be fine atfirst until it starts falling down and there is no way to repair it withoutrebuilding.
The same thing often happens in software development. Manytimes, what is intended as a throw-away solution for demonstration purposes butlacks the robust architecture needed to support growing the systems areimplemented as production systems due to time or cost deadlines. However, thecost is paid later.
Quality software should possess the following capabilities
2) The ability to extend functionality without redesigningthe system. This requires careful planning in creating a well-structured(normalized) database, developing components in a modular way so that they canbe re-used easily, and creating the system in logical layers for presentation,business rules, data access, etc. This can be thought of as extensibility.
3) Building a testing and documentation framework into thesystem rather than as an afterthought (ensuring reliability). Many systems gointo production inadequately tested resulting in far greater cost than if theyhad been tested thoroughly. Documentation goes along with this in describinghow the system is expected to operate, what defines success, and the methodsfor verifying that the system works effectively.
4) An effective change management system must be used totrack all changes and help with the planning (Traceability). There are somevery good products available to help with this including Microsoft TeamFoundation Server.
A key method for achieving software quality is the use of aniterative development cycle and test-driven development to regularly createvalue for the customer and verify the software is meeting the requirements.This fosters a framework for continuous improvement. It is usually impossibleto foresee all the requirements for a system and technology continually enablesnew functionality, so incremental delivery is the most cost-effective long-termstrategy for not only customer satisfaction but ongoing software quality.
There are more formal definitions of software quality, butreliability, scalability, extensibility, and traceability are key elements.There are frameworks and approaches defined to help instill accountability intothe software development process to help achieve software quality includingCapability Maturity Model (CMM), Microsoft Solutions Framework (MSF), andAgile/Scrum development approaches. The links for these are below: