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 understand the problems that emerged in the late sixties and early seventies, as well as the solutions that created the area of software development. Some of these problems were referred to as "The Software Crisis," so the symptoms of the problem were named. The situation can also be called the "Complexity Barrier", so we named it as the primary cause of the problems. Some report the software crisis over the past period. The crisis is far from being realized, but thanks to the development of many new technologies, which are now included in the software development title, we have been and will continue.
In the first days of the calculation, the primary concern was the acquisition or acquisition of hardware. 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 have carefully planned hardware development, but have given significantly less anticipation to 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?
Software costs represented a small proportion 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 expensive hardware. People had time to save the machine. 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 is mature, the programs have become more and more complicated and the projects have grown steadily, while the programs have since 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. 19659002] Individual effort made it possible for the team's efforts. The communication and coordination that once went on in one person's mind had to be among the leaders of many people, making the whole process more complicated. As a result, communication, management, design and documentation become critical.
Let's look at this analogy: a carpenter can work alone to build a simple house for himself without the general concept of a plan. He worked out or modified how 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 needs to plan the construction of the house more thoroughly. 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 whole project should of course be planned before starting work, when a carpenter builds part of the house and the other does not build the other side of the house. It becomes a key element of the scheduling that cement producers pour the basement walls before the carpenters start framing. As the house becomes more complicated and requires people to work together, plans and management plans are needed.
Programs became more complex, early design methods (flowcharts) were not sufficient to represent this complexity. So it would be difficult for a person who needed a program that another person, the programmer, just what they wanted, or programmers to tell each other what they are doing. In fact, without a better representation method, it would have been difficult for a programmer to track what he was doing.
The time required to complete the programs and the costs began to go beyond all estimates. It was not uncommon for the systems to go more than twice as costly as they were estimated and to last longer than weeks, months, or years. Client-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. As customers finally saw what they were getting, they often changed their minds as they wanted. At least one very large military software project, which cost hundreds of millions of dollars, was released because it could never work properly.
The quality of programs is also a cause for serious concern. As computers and programs have been used for more lifelike tasks, such as monitoring life-support devices, program quality has new meanings. As we increased our dependency on computers and in many cases we could not spare them without it, we realized how important it is to function properly.
Change in a complex program was very expensive. Often, the program did something different, it was so difficult that it was easier to drop the old program and get started. That was, of course, expensive. In the software development approach, evolution is part of developing systems that are pretty much built first to make simple changes.
However, hardware has become cheaper. The tubes were replaced by transistors, and the transistors were replaced by integrated circuits, while the microprocessors were less than three thousand dollars for millions of dollars. As a sign of rapid change, a certain amount of IT costs will be reduced by half every two years. Because of the time and cost of software development, time and cost of software development were no longer as small as hardware to ignore them.
As hardware costs fell, software was still being written by people whose pay was rising. In software development, productivity-enhancing savings from assemblers, translators, and database management systems have not gone as fast as saving hardware costs. In fact, the cost of software can not be ignored today, compared to hardware costs. Some current developments, such as non-continuous (fourth generation) languages and artificial intelligence (fifth generation), promise to increase productivity in software development, but only their potential is seen.
previous programs were often before they fully understood what to do with the program. 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 to sort paper and pencils exactly what they were planning to do before they started. Then you can examine the plans with the customer to see if they meet the customer's expectations. Simplified and cheaper modification of the paper and pencil version than after the system has been built. Using good design is less likely that changes will be required after the program is completed.
Unfortunately, a few years ago, there was no good representation method for describing the right systems as complex as in today's development. The only good look is what will look like the product itself is the finished product itself. 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 know the drawings depicting geometrical objects. The architect and customer share the common concepts 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 terms, the software developer must teach the client a new language before they can communicate.
It is also important that this language is easy to learn so quickly