To understand the necessity of software development, we need to conclude briefly to look back at the latest history of computing. This history will help us to understand the problems that emerged in the late sixties and early seventies, as well as the solutions developed in software development. Some of these problems were referred to as some of the "software crises", so the symptoms of the problem were named. The situation can also be called the "Complexity Barrier", so we named it the primary cause of the problems. Some of the software refer to a crisis in the past. The crisis is far from being realized, but thanks to the development of a number of new technologies, which are now included in the software development title, we have been producing it and we are progressing.
In the First Days of Computing The primary aspect was hardware building or acquisition. They almost waited to take care of software. Consensus says "hardware" is "hard" for change, while "software" is "soft" or can be easily changed. Most people in the industry carefully planned hardware development, but did not think much of the software. If the software did not work, they thought it would be easy to change it until it worked. Why are the plans in this case?
The cost of software was such a small part of hardware costs that no one considered important to manage development. Nevertheless, it was important for everyone to make efficient and fast running programs because it saved time on expensive hardware. People had time to save the machine time. Effective processing of people is less important.
This approach was satisfactory at the beginning of computing when the software was simple. However, as the calculation matures, the programs became more and more complicated and the projects were getting bigger, as programs have been routinely defined, written, operated and maintained by the same person, programs have been developed by the programmers team to meet other people's expectations.
Individual effort made it possible for the team's efforts. Communication and co-ordination, which once went on in the minds of one person, had to happen overhead of many people and made the whole process more complicated. As a result, communication, management, planning and documentation become critical.
Let's consider this analogy: a carpenter can work alone to build a simple house for himself, without the general notion of a plan. He worked out or changed when the work progressed. That's how the early programs were written. But if your home is more complicated, or if someone else is prepared, the carpenter should carefully plan to build the house. The plans must be reviewed before the construction begins with the future owner. And if the house were to be built by many carpenters, the entire project must certainly be planned before starting work, so that one carpenter would build a part of the house and the other would not build the other side of the house. Scheduling becomes a key factor for cement manufacturers to pour the basement walls before the carpenters start framing. As the house becomes more and more complicated and people's work needs to be coordinated, plans and management plans are needed.
Programs become more complex, early methods for drawing (flowcharts) This is a bigger complexity. So it would have been difficult for a person who needed a program that another person, the programmer, just what they wanted, or the programmers had to tell each other what they were doing. In fact, without a better representation method, it would be difficult for a programmer to track what he was doing.
The startup times for programs and costs exceeded all estimates. It was not uncommon for the systems to go more than twice as costly as they were estimated and to wait for more weeks, months, or years. Customer-directed systems often did not work properly because money or time ran out before the programs originally planned. Or the program was so complex that trying to solve every problem caused more problems than it was recorded. Because customers finally saw what they were getting, they often changed their minds as they wanted. At least one very large military software project that counted hundreds of millions of dollars was abandoned because it could never work properly.
The quality of the programs is also a cause for serious concern. As computers and their programs were used for vital tasks such as monitoring life-support systems, program quality has a new meaning. Having increased our dependency on computers and in many cases we could not spare them, we discovered how important it is to function properly.
Change within a complex program has become very expensive. Often, the program may do something that is slightly different, so it was difficult to get rid of the old program and start it. That was, of course, expensive. In the software development approach some of the evolution was that systems were developed that were first built enough to make simple changes.
However, hardware has become cheaper. The tubes were replaced by transistors, and the transistors were replaced by integrated circuits until the microcomputers weighing less than three thousand dollars were in millions of dollars. As a sign of rapid change, a certain amount of IT costs is reduced by half every two years. With regard to the rearrangement, the time and cost of software development was no longer small compared to the hardware that could have been ignored. As the amount of hardware has collapsed, the software is still being described by people whose wives have risen. In software development, savings from productivity gains by assemblers, compilers, and database management systems were not as fast as saving hardware costs. Indeed, you can not ignore the cost of software today, it's bigger than hardware. Some current developments, such as non-continuous (fourth generation) languages and artificial intelligence (fifth generation), promise to increase software productivity, but we are just beginning to see their potential
. That in the past there were often programs that understood what the program was. After the program was completed, the client began to express his dissatisfaction. And if the customer was dissatisfied, then the producer was unhappy. As time passed, software developers learned that they were stapling with paper and pencil exactly what they were planning to do before launching. Then you can examine the plans with the customer to make sure the customer's expectations are met. It's simpler and less costly to change paper and pencil versions than after building a system. Due to good design, it is less likely that changes will be required after the program is completed. Unfortunately, a few years ago, unfortunately, there was no good representation method to describe the systems that are complex as developed today. The only good look is what the product itself will look like. Developers could not tell customers what they were planning on. And the customers did not see what the software was all they wanted until they were finally built. Then it was too expensive to change it.
Consider the analogy of the building structure again. An architect can draw a floor plan. The client can usually understand whether the architect is planning to give feedback on whether it is appropriate. Floor plans are reasonably easy to understand layman, as most people are familiar with drawings depicting geometrical objects. The architect and customer share the common concept of space and geometry. However, software developers need to represent customers with a logical and information processing system. Because they do not have the language of common concepts, the software developer must teach a new language to the client before he can communicate.
It is also important that this language be easy to learn quickly.