Software development is impossible without understanding the so-called program life cycle. The average user may not need to know this, but it is desirable to learn the basic standards (it will be further said why this is necessary).
Software life cycle : what is it in a formal sense?
The life cycle of any software product is understood to mean the time of its existence, starting from the development stage and until the moment of complete abandonment of use in the chosen field of application until the complete removal of the application from use.
In simple terms, information systems in the form of programs, databases, or even “operating systems” are in demand only if the data and capabilities provided by them are relevant.
It is believed that the definition of the life cycle does not in any way apply to test applications, for example, to beta versions, which are the most unstable in operation. The software life cycle itself depends on many factors, among which one of the main roles is played by the environment in which the program will be used. However, we can distinguish the general conditions used in determining the concept of a life cycle.
Initial requirements
As is commonly believed, for any software product several conditions are used regarding its development and application, namely:
- formulation of the problem;
- analysis of the mutual requirements of future software for the system;
- design;
- programming;
- coding and compilation;
- testing;
- debugging
- implementation and maintenance of a software product.
Software development consists of all the above stages and cannot do without even one of them. But for control for such processes special standards are established.
Software Life Cycle Process Standards
Among the systems that predetermine the conditions and requirements for such processes, today there are only three main ones:
- GOST 34.601-90;
- ISO / IEC 12207: 2008;
- Oracle CDM.
There is a Russian counterpart for the second international standard. This is GOST R ISO / IEC 12207-2010, responsible for system and software engineering. But the software life cycle described in both rules is essentially identical. The reason is simple enough.
Types of software and updates
Modern information systems are such that generally accepted concepts of a scope are established for them.
For example, there are system programs and utilities, multimedia, device drivers, office applications, etc. For any type of software products, you can determine the stages of the life cycle of existence.
For its extension, update tools are most often used (both for operating systems, and for platforms and application software). Probably no need to explain that any user of a Windows-based computer system went through the stage of updating the system itself or components like the Microsoft .NET Framework or the Java virtual machine.
Design stage
Now a few words directly about the stages of development. The software life cycle initially includes project planning, analysis of system and target requirements, the possibility of preliminary or detailed design, coding and testing, the possibility of using programs in specialized systems, etc.
Software life cycle models suggest that the initial task of creating software should be to develop universal applications or software products that use a specific launch environment.
Development
Development systems are programming languages. Software design in the first stage can come down to just that.
Whether it will be C + / C ++, Java, Delphi or the same obsolete Pascal is not so important. The question is how much the created application can integrate into the operating system and work without failures.
In this sense, 1 software life cycle is the time of its testing from the initial installation of the product to its complete removal due to non-compliance with the system requirements, inoperability or inability to complete the tasks originally set.
Subsequent steps
Further support, which determine the software life cycle, boils down to encoding and obtaining the source code of the application.
In the case of its free (open) distribution, a so-called certificate based on the GNU license is used, which provides for the possibility of changing the software product at the request of a third-party user who is familiar with the programming language with which the application was created.
When it comes to closed source, you can use utilities like Disassembler. But in this case, it is possible to achieve only decoding the executable EXE-file, and by no means attached dynamic DLLs.
But this is a theory. In practice, the stages of the software life cycle include many more elements in their list. Even the simplest simulated situation consists of considering standards and formulating comments (high-level architecture requirements, compliance of executable code, verification tools and techniques). This is the software life cycle process. But here it is important to understand some principles of managing such programs and systems.
Management basics
Management of the software life cycle is carried out on the basis of dividing programs into components, which gives a fairly wide selection of tools for their creation.
There is a flip side to the coin. The choice of modules is limited by the developer of the original platform, on the basis of which programming is performed. Of course, if we take into account the unification and typification of the applied development tools (especially reusable modules), there are no questions.
But the stages of the software life cycle without fail contain the creation of data processing protocols, routines, standard libraries and much more.
Used modules
And not a single software life cycle process is complete without the use of very specific components. Among them, the following are considered priority:
- the main (head) module responsible for launching the software product;
- a control module responsible for calling plug-in components or dynamic libraries;
- functional and service data processing tools and additional utilities.
The executable file, as a rule, for Windows-systems is presented in the form of an "executable". The control components have an extension of configurators (config.sys for operating systems), additionally connected libraries have an extension of DLL. Tools for controlling and processing the functions and settings of some applications may look like XML files.
By the way, for most of today's well-known multimedia programs, they are a means of preserving the basic configuration parameters. The use of this type of software, of course, is quite limited, but understanding the general principles of working with the same media players will not hurt. And that's why.
In fact, in them the software life cycle is laid down only at the level of the term for updating the version of the player itself or installing codecs and decoders. And audio and video transcoders are integral attributes of any audio or video system.
Example based on FL Studio
Initially, the virtual studio sequencer FL Studio was called Fruity Loops. The software life cycle in its initial modification has expired, but the application has transformed somewhat and acquired its current form.
If we talk about the stages of the life cycle, first, at the stage of setting the task, several mandatory conditions were set:
- creating a drum module by the type of rhythm machines like Yamaha RX, but using one-shot samples or sequences in WAV format recorded live in studios;
- integration into Windows operating systems;
- the ability to export the project in the formats WAV, MP3 and OGG;
- project compatibility with the optional Fruity Tracks app.
At the development stage, C programming language tools were used. But the platform looked quite primitive and did not give the end user the necessary sound quality.
In this regard, at the testing and debugging stage, the developers had to follow the path of the German corporation Steinberg and apply Full Duplex mode support in the requirements for the main sound driver. The sound quality became higher and allowed to change the tempo, pitch and apply additional FX effects in real time.
The end of the life cycle of this software is considered to be the release of the first official version of FL Studio, which, unlike its ancestors, already had a full-fledged sequencer interface with the ability to edit parameters on a virtual 64-channel mixing console with unlimited addition of audio tracks and MIDI tracks.
Program promotion was not limited to this. At the project management stage, support was introduced for connecting plug-ins of the VST format (first the second, and then the third version), which was once developed by Steinberg. Roughly speaking, any virtual synthesizer supporting VST-host could connect to the program.
It is not surprising that soon any composer could use analogues of “iron” models, for example, complete sets of sounds of the once popular Korg M1. Further more. The use of modules like Addictive Drums or the universal Kontakt plug-in made it possible to reproduce live sounds of real instruments recorded with all shades of articulation in professional studios.
At the same time, the developers tried to achieve maximum quality by creating support for the ASIO4ALL drivers, which turned out to be a cut above the Full Duplex mode. Accordingly, the bitrate also increased. To date, the quality of the exported sound file can be 320 kbps with a sampling frequency of 192 kHz. And this is a professional sound.
As for the initial version, its life cycle could be called completely completed, but this statement is relative, since the application only changed its name and gained new opportunities.
Development prospects
What constitutes the stages of the software life cycle is already clear. But the development of such technologies is worth mentioning separately.
Needless to say, any software developer is not interested in creating a fleeting product that is unlikely to last on the market for several years. In the future, everyone is looking at its long-term use. This can be achieved in many ways. But, as a rule, almost all of them come down to the release of updates or new versions of programs.
Even in the case of Windows, such trends can be seen with the naked eye. It is unlikely that today there will be at least one user using systems like modifications 3.1, 95, 98 or Millennium. Their life cycle ended after the release of XP. But server versions based on NT technologies are still relevant. Even Windows 2000 today is not only very relevant, but also in some installation or security parameters even surpassing the latest developments. The same goes for the NT 4.0 system, as well as the specialized modification of Windows Server 2012.
But in relation to these systems, support at the highest level is still declared. But the sensational Vista was clearly experiencing a sunset cycle. Not only was it incomplete, there were so many mistakes in it and there were so many holes in its security system that one can only guess how it was possible to launch such an untenable solution on the software market.
But if we say that the development of software of any type (manager or application) does not stand still, we can only state the facts. Indeed, today the matter concerns not only computer systems, but also mobile devices, in which the applied technologies are often ahead of the computer sector. The emergence of processor chips based on eight cores - what is not the best example? But still not every laptop can boast of the presence of such "iron".
Some additional questions
As for understanding the software life cycle, it can be said very conditionally that it ended at a certain point in time, because software products still have support from the developers who created them. Rather, the ending refers to outdated applications that do not meet the requirements of modern systems and cannot work in their environment.
But even taking into account technological progress, many of them may already be insolvent in the near future. And then you will have to make a decision either on the release of updates, or on a complete revision of the whole concept, originally laid down in the software product. Hence the new cycle, which provides for changing the initial conditions, development environment, testing and possible long-term application in a certain area.
But in computer technology today, preference is given to the development of automated control systems (ACS), which are used in production. Even operating systems, in comparison with specialized programs, lose.
The same environments based on Visual Basic remain much more popular than Windows systems. But we are not talking about application software for UNIX systems at all. What can I say, if almost all communication networks of the same United States work exclusively for them. By the way, systems like Linux and Android were also originally created on this platform. Therefore, most likely, UNIX has much more prospects than other products combined.
Instead of a total
It remains to add that in this case only general principles and stages of the software life cycle are given. In fact, even the initially set tasks can vary very significantly. Accordingly, differences can be observed in the remaining stages.
But the basic technologies for developing software products with their subsequent maintenance should be clear. The rest should take into account the specifics of the software being created, the environment in which it is supposed to work, the capabilities of the programs provided to the end user or production, and much more.
In addition, sometimes life cycles may depend on the relevance of development tools. If, say, some programming language becomes obsolete, no one will write programs based on it, and even more so - to introduce them into automated control systems in production. Here, not even programmers, but marketers, who must respond in a timely manner to changes in the computer market, come to the fore. And there are not many such specialists in the world. Highly qualified personnel, able to keep abreast of the market, are becoming the most demanded. And they are often the so-called "gray cardinals" on which the success or loss of a particular software product in the field of IT depends.
Although they do not always understand the essence of programming, they are clearly able to determine the models of the software life cycle and the duration of their application, based on global trends in this area. Effective management often gives more tangible results. Yes, at least PR-technologies, advertising, etc. Maybe the user doesn’t need any application, but if the user is actively publicizing it, the user will install it. This is, so to speak, a subconscious level (the same effect of the 25th frame when information is laid in the mind of the user independently of himself).
Of course, such technologies are forbidden in the world, but many of us do not even realize that they can still be used and affect the subconscious in a certain way. What does “zombie" cost with news channels or Internet sites, not to mention the use of more powerful means, such as exposure to infrasound (this was used in one opera production), as a result of which a person may experience fear or inappropriate emotions.
Returning to the software, it is worth adding that some programs use a sound signal that attracts the user's attention when starting up. And, as studies show, such applications are more viable than other programs. Naturally, the software life cycle is also increasing, no matter what function is assigned to it initially. And this, unfortunately, is used by many developers, which raises doubts about the legality of such methods.
But it is not for us to judge this. Perhaps in the near future, tools will be developed that define such threats. So far this is only a theory, but, according to some analysts and experts, there is very little left for practical application. If you are already creating copies of the neural networks of the human brain, then what can I say?