I'll start by defining some key terms here.
When I think of software quality, my mind is usually drawn to how the piece of code (instructions) are able to meet the functional and non-functional requirements of the end-product.
This is the ratio between software development output (Quantity of software produced) and input (total cost of development). A more productive programmer is expected to be able to build and evolve software systems.
This refers to the difficulty of writing very efficient and useful computer programs within the required time as a result of the use of software development techniques that do not meet current demands.
In my opinion, I do not think that software crisis can ever be completely resolved. This is because the demand for more complex software has been on the increase due to advancement in technology and it is evident that developers simply cannot keep up with the ever increasing complexities.
Recall that in the 1960s, computer engineers experienced a software crisis when they were unable to build the software they were being asked for. The primary reason for the software crisis at that time could be linked to the low programmer productivity at that time, and the increased demand for quality software. The programmers at the time simply had very limited capabilities, while the demand for quality software at the time was rising. This issue was addressed by the NATO Software Engineering Conferences in 1968 and 1969 (Ref: http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/), but there are indications today that reveal that software crisis has never and might never be completely resolved.
You will find that most of the software problems identified at the conference in 1968 and 1969 such as software being unreliable, hard to maintain, delivered over budget, late delivery etc. are problems still existing today in the software development scene.
The singular fact that software problems that have existed since 1960s are still around with little improvement over the years convinces me that we are still in a software crisis today.
Software Crisis is often linked to the following;
- Software projects running over-budget
- Software developed being inefficient or of very low quality
- Software not meeting functional and non-functional requirements
- Software being difficult to maintain
- Software project running over-time
- Software that was never delivered.
and many more..
The truth remains that large software projects will always be vulnerable to large, unanticipated problems of this nature.
Most attempts today at solving the problem of software crisis are geared towards improvements in computing power. The problem with this approach is that these improvements in computing power and introduction of new technologies quickly outpaces the ability of programmers to effectively utilize those capabilities.
How has code reuse contributed to the problem or solution?
Software reuse has contributed more to the solution than the problem. Software reuse increase programmer productivity by lowering the cost associated with software development. A good process of software reuse leads to enhance the reliability, productivity, quality and the reduction of time and cost. Software reuse must be embraced by all software craftsmen, if the problem of software crisis is to be curtailed.