There are many different processes for creating software. Tem however, technologies considering the full life cycle software development project that combines a scientific approach, a serious research base and having a history of real-world use and relatively little adaptation.
Over several decades of hardware evolution improved significantly. computing power, which ten or fifteen years ago, only a few could afford scientific institutions and the maintenance of which required a whole staff specialists are now available to almost every engineer. However, these capacities require appropriate software security. And it is in this area, despite the fact that the hardware resources have become much more available, there are significant Problems.
So, according to American researchers, in the 80s only 14% software development projects were completed successfully. But even today, after several decades of evolution of programming languages, development tools, with practically unlimited (compared to the 70s and 80s) computer time – the percentage of successfully completed projects is only 26%.
In the USSR, achievements in the field of software production were significantly the best. The following objective prerequisites contributed to this:
– the planned organization of production was optimally combined with waterfall model of software development;
– control of project success was focused not on customer satisfaction, and satisfaction initially agreed TOR;
– software development was usually carried out by highly qualified specialists in specialized institutes;
– since the projects were mainly focused on the military-industrial complex, budgets were virtually unlimited (according to today’s standards).
But for a number of reasons, the Soviet school of software development stopped its development and many achievements were lost. In market conditions (rapidly changing requirements, limited budgets, focus on results, intense competition for highly qualified personnel), the use of old practices of the Soviet school turned out to be limited to very narrow areas.
The term “technology” – it emphasizes the analogy between the creation software product and industrial production. It reflects modern trend towards the introduction of discipline, organization and instrumentation in such a creative process as programming. The word captures the point of view that programming, despite being intellectual and creative nature of this activity, needs to be organized and regulation, a set of agreements and rules, not to mention instrumental support. Now it seems trivial, but in In the 1960s, such a point had to be defended. Yes, even now sometimes there are frictions on the basis of regulation of activities developers.
The term “programming technology” was introduced by the academician Andrey Petrovich Ershov. He interpreted the term “programming” in a generalized form and meant all the activities carried out during the creation software systems. In the west to define this activity the term “engineering” was used. Now a generalized term, applicable to the creation of software is denoted as “development” or “construction”. The correct formula is:
development = analysis + design + programming
(coding) + testing + debugging
Sometimes “accompaniment” is also included here. To highlight the industrial and production aspect, they talk about “technology development” or “construction technology”.
Stages of development
It wasn’t until the early 1990s that the British computing community technology (British Computer Society) began to assign developers programs for the title of engineer. In the USA only in 1998 it became possible at least somewhere to register as a professional engineer software. But still, even at the beginning of this century, it is generally recognized that the development of software support lacks a sufficiently developed scientific base. By eight by some estimates, 75% of organizations involved in the development programs do it at a primitive level.
Since its inception, software development technology has experienced several ups and downs in its development. One of them is related to the publication letters from Edster Dijkstra to the Association computer technology, entitled as follows: “On the dangers of using GOTO statement (GOTO statement considered harmful, 1968). Those program times were written with active use of operators unconditional transition. Paying attention to the shortcomings of such programs, Dijkstra proposed his concept of structural programming to avoid the use of such operators.
Dijkstra’s concept was based on the observation Bema and Jacobi (Flow Diagrams, Turning Machines and languages with only two formation rules, 1966) that for recording any program in principle only three control structures are sufficient – sequential execute, branch and loop. That is, theoretically, the need for use of jump operators is missing.
The next step in the development of structured programming involves with the introduction of the apparatus of functions that allow breaking down the structural program into manageable parts. With this approach the program is written in terms of calling top-level functions, which are implemented using lower-level functions. Top-down programming was also called modular programming.
Structural programs lacked one important property – in their structure did not directly display the essence of the subject areas. Because of this, it was difficult to modify them in conditions changing requirements. Later, the paradigm of object orientation. It is based on the use of objects, combining data and functionality. On the OO paradigm many modern programming languages and systems are based.
Henry Ford is said to have revolutionized manufacturing cars when noticed that the car nodes can be standardize, so that when assembling cars of a given model any instance of the required node can be used.
Just as important is the possibility of development of some applications to borrow ideas, architecture, design and source code for other applications. If applications are designed nine so that different parts of them can be used many times, it eventually leads to a decrease application development costs. However, for this to be possible, applications should be modular. application modularity, actually, and means that it consists of easily identifiable and replacement parts. For this reason, with proper design software product, special attention should be paid to modularity, especially at the stage of architecture development.
Formal design methods are those methods which are based on mathematics. Formal methods help to solve problems of software reliability assurance. They can be applied as in the analysis of requirements to ensure the accuracy of the wording requirements, and in the process of implementation to ensure compliance program code formulated requirements. Usually formal methods use mathematics in its logical aspect. AT in the computational aspect, mathematics is involved in connection with using metrics, which we will discuss next.
Today there are a huge number of different processes for software creation. However, it is precisely the technologies that consider the full life cycle of a software development project, combining scientific approach, a serious research base and having a history real use and adaptation, relatively little. From methodologies and technologies that have gained some recognition in at the moment, we can name the following: Datarun, CMM, Microsoft Solution Framework (MSF), Oracle Method, Rational Unified Process (RUP), SADT (IDEFx).
A special place in this list is occupied by Rational technology. Software. Its methodology uses the most modern process-oriented approach: since software development is production, then, as in any production, when identifying problems in the product (symptoms) the process needs to be corrected (remove causes). The peculiarity of this technology is that its creation involves leading methodologists in the field of software development, such as G. Booch (OOAP), J. Rambo (OMT), A. Jacobson (Objectory), who have made a significant contribution to the theory and practice of developing modern ON. In addition, it should be noted that this technology has evolved and tested with the participation of the US military department.