Building a software system is a very laborious task, especially in our time when the usual volume of the software exceeds hundreds of thousands of operators. A future specialist in the field of software development should have an understanding of the methods of analysis, design, implementation, and testing of software systems, as well as navigate existing approaches and technologies.
Programming is a relatively young and rapidly developing branch of science and technology. Everything you want to learn about technologies and development you may find here. The experience of conducting real developments and improving existing software and hardware is constantly rethought, resulting in new methods, methodologies, and technologies, which, in turn, serve as the basis for more modern software development tools.
Depending on the purpose, programming is subdivided into:
• system – development of general software tools, including operating systems, auxiliary programs, software packages for general system purposes, such as automated control systems, database management systems, etc .;
• applied – development and debugging of programs for end-users, such as accounting, word processing, etc.
Depending on the method, programming is subdivided into:
• procedural – a method according to which programs are written as lists of sequentially executed commands. In this case, procedural-oriented programming languages are used, for example, PL / 1, Algol-68, Pascal, C;
• structural, modular – a method of writing programs in small independent structured parts (modules), each of which is associated with a procedure or function. The resulting program is organized in the form of a set of modules interconnected according to certain rules. This simplifies the development of complex software products and their testing. Languages for modular programming Turbo Pascal, C ++, Ada, Modula;
• declarative – a method designed to solve problems of artificial intelligence. In this context, the program describes the logical structure of the solution to the problem, indicating mainly what needs to be done without going into details. Programming languages such as Prolog are used;
• parallel – development of programs that ensure the simultaneous execution of operations related to data processing;
• object-oriented (OOP) – a method based on the use of the concept of an object that abstracts its specific implementation in the domain. In this case, the data is closely related to the procedures performed on the objects;
• functional – a method based on dividing the algorithm for solving a problem into separate functional modules, as well as describing their connections and the nature of the interaction. For this, the most widely used languages are Nora and M, partly C and other languages;
• heuristic – a method based on modeling human mental activity. It is used to solve problems that do not have a strictly formalized algorithm or are associated with the incompleteness of the initial data;
• component – a method of creating software by collecting component objects (physically separate existing pieces of software) interacting with each other through standardized binary interfaces into libraries or executable files.
Modern technological process
In any organization engaged in software development, there is a certain set of rules and procedures according to which employees release a software product. These rules can be carefully documented or, conversely, chaotic, but they are precisely what is called the development process.
One of the most well-known development process models is the Waterfall model, proposed back in the 70s. XX century. After it, a wide variety of process models appeared: iterative, spiral, Rational Unified Process, extreme Programming, etc. There are even international standards for development processes (ISO 9000, CMM / CMMI).
The main reason for this diversity is the desire to reduce the production cycle without worsening the end result – the software product itself. As an optimal solution, it is proposed to use one or another model, depending on the size of the project: the complexity of the product, the number of programmers in the team, etc. However, no model has made any really significant improvements yet.
It should be noted that the phases of the technological process practically do not change. Depending on the process model, the order or interaction of phases with each other can change. Several models offer methodologies and tools for use in each phase.
For software companies, the highest priority is usually the delivery time of the product to the customer, and not the quality of the program in terms of programming. In a situation where the delivery of the product is just around the corner, and the program is not yet ready, an attempt to reduce any of the development phases leads to a deterioration in the quality of the final product.
Here’s what it is about:
• while reducing testing costs, the reliability of the system naturally decreases;
• Reducing the cost of architecture development will primarily lead to a longer coding cycle;
• shortening the documentation phase affects the quality of user documentation. At the same time, it is not a fact that anyone at all will understand how to use the program;
• when the phase of collecting and analyzing requirements is shortened, there is a risk that the finished product will turn out to be completely different from what the customer required.
Therefore, you always need to contact those specialists who are well-known in the programming market.
Programmers are developing increasingly powerful and complex programs. Modern methods of developing high-quality programs significantly reduce the time and cost of their creation. This is structured programming, step-by-step top-down refinement, decomposition into functions (modules), object-oriented, and component programming. Multiprogramming is widely used, when several tasks or programs simultaneously share computer resources.