The auxiliary processes of life cycle include: Software life cycle models. Life cycle - what is it in a formal sense?

The structure of the software life cycle in accordance with the ISO/IEC 12207 standard is based on three groups of processes (Fig. 1):

· main processes of software life cycle (purchase, delivery, development, operation, support);

· auxiliary processes that ensure the implementation of the main processes (documentation, configuration management, quality assurance, verification, certification, assessment, audit, problem solving);

· organizational processes (project management, creation of project infrastructure, definition, evaluation and improvement of the life cycle itself, training).

Rice. 1. Processes life cycle software.

Acquisition Process(acquisition process). It consists of actions

and tasks of the customer purchasing the software. This process covers the following steps:

1) initiation of acquisition;

2) preparation of bid proposals;

3) preparation and adjustment of the contract;

4) supervision of the activities of the supplier;

5) acceptance and completion of work.

Delivery process(supply process). It covers the activities and tasks performed by the vendor who supplies the customer with a software product or service. This process includes the following steps:

1) initiation of delivery;

2) preparing a response to bid proposals;

3) preparation of the contract;

4) planning;

5) execution and control;

6) inspection and evaluation;

7) delivery and completion of work.

Development process(development process). It provides for the actions and tasks performed by the developer, and covers the creation of software and its components in accordance with specified requirements, including the preparation of design and operational documentation, the preparation of materials necessary for testing the functionality and appropriate quality of software products, materials necessary for organizing training personnel, etc.

The development process includes the following steps:

1) analysis of system requirements;

2) design of system architecture;

3) analysis of software requirements;

4) software architecture design;



5) detailed software design;

6) software coding and testing;

7) software integration;

8) software qualification testing;

9) system integration;

10) qualification testing of the system;

11) software installation;

12) acceptance of software.

Operation process(operation process). It covers the actions and tasks of the operator - the organization operating the system. This process includes the following steps:

1) operational testing;

2) operation of the system;

3) user support.

Maintenance process(maintenance process). It provides for the actions and tasks performed by the accompanying organization (escort service). This process is activated when there are changes (modifications) software product and related documentation caused by problems encountered or needs for modernization or adaptation of the software. In accordance with the IEEE-90 standard, maintenance refers to making changes to software in order to correct errors, improve performance, or adapt to changed operating conditions or

requirements. Changes made to existing software must not violate

its integrity. The maintenance process includes transferring software to another environment (migration) and ends with decommissioning of the software.

The maintenance process covers the following actions:

1) analysis of problems and requests for software modification;

2) software modification;

3) inspection and acceptance;

4) transfer of software to another environment;

5) decommissioning of the software.

The group of auxiliary processes includes:

Documentation;

Configuration management; quality assurance;

Verification; certification;

Participatory assessment;

Problem resolution.

Documentation process(documentation process). It provides a formalized description of the information created during the software life cycle. The documentation process includes the following steps:

1) design and development;

2) release of documentation;

3) documentation support.

Configuration Management Process(configuration management process). It involves the use of administrative and technical procedures throughout the software life cycle to determine the status of software components in the system, manage software modifications, describe and prepare reports on the status of software components and requests for modification, ensure completeness, compatibility and correctness of software components, manage storage and delivery BY. According to the IEEE-90 standard, software configuration is understood as the totality of its functional and physical characteristics.

characteristics established in technical documentation and implemented in software.

Configuration management allows you to organize, systematically take into account and control changes to software at all stages of the life cycle. General principles and recommendations for software configuration management are reflected in the draft standard ISO/I EC CD 12207-2: 1995 "Information Technology - Software Life Cycle Processes. Part 2.

Configuration Management for Software". The configuration management process includes the following actions:

1) configuration identification;

2) configuration control;

3) accounting of configuration status;

4) configuration assessment;

5) release management and delivery.

Quality Assurance Process(quality assurance process). It provides appropriate assurance that the software and its life cycle processes comply with specified requirements and approved plans. Software quality is understood as a set of properties that characterize the ability of software to satisfy specified requirements. To obtain reliable assessments of the software being created, the process of ensuring its quality must occur independently of the entities directly related to software development. The results of other supporting processes such as verification, validation, joint assessment, audit and problem resolution may be used. The quality assurance process includes the following activities:

1) ensuring product quality;

2) ensuring the quality of the process;

3) ensuring other indicators of system quality.

Verification process(verification process). It consists in determining that software products that are the results of some action fully satisfy the requirements or conditions determined by previous actions (verification in the narrow sense means formal proof of the correctness of the software).

Attestation process(validation process). It involves determining the completeness of compliance of the specified requirements and the created system or software product with their specific functional purpose. Certification usually refers to confirmation and assessment of the reliability of software testing.

Participatory assessment process(joint review process). It is intended to assess the status of work on the project and the software created during the execution of these works (actions). It focuses primarily on controlling the planning and management of project resources, personnel, equipment and tools.

Audit Process(audit process). It is a determination of compliance with requirements, plans and contract terms.

Problem resolution process(problem resolution process). It involves the analysis and resolution of problems (including detected inconsistencies) regardless of their origin or source, which are discovered during development, operation, maintenance or other processes. Each detected problem must be identified, described, analyzed and resolved.

The group of organizational processes of the software life cycle includes:

Control;

Creation of infrastructure;

Improvement;

Release of new versions;

Education.

Management process(management process). It consists of activities and tasks that can be performed by any party managing their processes. This party (manager) is responsible for product release management, project management and task management of related processes, such as acquisition, delivery, development, operation, maintenance, etc.

Infrastructure creation process(infrastructure process). It covers the selection and support (maintenance) of technology, standards and tools, selection and installation of hardware and software used for development, operation or maintenance of software. The infrastructure must be modified and maintained in accordance with changes in the requirements for the relevant processes. Infrastructure, in turn, is one of the objects of configuration management.

Improvement process(improvement process). It provides for the assessment, measurement, control and improvement of software life cycle processes. Improving software life cycle processes is aimed at increasing the productivity of all specialists involved in them by improving the technology used, management methods, selection of tools and training

personnel.

Learning process(training process). It covers initial training and subsequent ongoing staff development.

Hello, dear Khabrovsk residents! I think it will be interesting for someone to remember what models of development, implementation and use of software existed previously, what models are mainly used now, why and what it actually is. This will be my little topic.

Actually, what is it software life cycle- a series of events that occur with the system during its creation and further use. In other words, this is the time from the initial moment of creation of any software product to the end of its development and implementation. The software life cycle can be represented in the form of models.

Software life cycle model- a structure containing action processes and tasks that are carried out during the development, use and maintenance of a software product.
These models can be divided into 3 main groups:

  1. Engineering approach
  2. Taking into account the specifics of the task
  3. Modern technologies of rapid development
Now let's look at the existing models (subclasses) and evaluate their advantages and disadvantages.

Error Coding and Elimination Model

A completely simple model, typical for university students. It is according to this model that most students develop, let’s say, laboratory work.
This model has the following algorithm:
  1. Formulation of the problem
  2. Performance
  3. Checking the result
  4. If necessary, go to the first point
Model also terrible outdated. It is typical for the 1960-1970s, so it has practically no advantages over the following models in our review, but the disadvantages are obvious. Belongs to the first group of models.

Waterfall software life cycle model (waterfall)

The algorithm of this method, which I show in the diagram, has a number of advantages over the algorithm of the previous model, but also has a number of significant shortcomings.

Advantages:

  • Sequential implementation of project stages in a strictly fixed order
  • Allows you to evaluate the quality of the product at every stage
Flaws:
  • No feedback between stages
  • Does not correspond to real conditions of software product development
Belongs to the first group of models.

Cascade model with intermediate control (whirlpool)

This model is almost equivalent in algorithm to the previous model, however, it has feedback connections with each stage of the life cycle, and it gives rise to a very significant drawback: 10-fold increase in development costs. Belongs to the first group of models.

V model (test-driven development)

This model is closer to modern methods The algorithm, however, still has a number of shortcomings. It is one of the main practices of extreme programming.

Model based on prototype development

This model is based on the development of prototypes and product prototyping.
Prototyping used in the early stages of the software life cycle:
  1. Clarify unclear requirements (UI prototype)
  2. Choose one of a number of conceptual solutions (implementation of scenarios)
  3. Analyze project feasibility
Classification of prototypes:
  1. Horizontal and vertical
  2. Disposable and evolutionary
  3. paper and storyboards
Horizontal prototypes - models exclusively the UI without affecting the processing logic and database.
Vertical prototypes - testing of architectural solutions.
Disposable prototypes - for rapid development.
Evolutionary prototypes are the first approximation of an evolutionary system.

The model belongs to the second group.

Spiral Software Life Cycle Model

The spiral model is a software development process that combines both design and incremental prototyping to combine the benefits of bottom-up and top-down concepts.

Advantages:

  • Get results quickly
  • Increased competitiveness
  • Changing requirements are no problem
Flaws:
  • Lack of stage regulation
The third group includes such models as extreme programming(XP) SCRUM, incremental model(RUP), but I would like to talk about them in a separate topic.

Thank you very much for your attention!

The life cycle structure according to the ISO/IEC 12207 standard is based on three groups of processes: main, auxiliary, organizational.

Basic life cycle processes.

The main processes include recruitment certain actions and related tasks that must be performed during the life cycle of a software product (SP).

The main processes of the software life cycle include the processes of acquisition, delivery, development, operation and maintenance.

The acquisition process covers the customer's actions to acquire software. These actions include:

  • 1) Initiating an acquisition involves many tasks, including the customer identifying its acquisition needs and developing or improving the PP system.
  • 2) Preparation of bid proposals involves the development and preparation of proposals, which must contain: requirements for the system being developed or purchased; list of required software; terms and agreements; technical limitations.
  • 3) Preparation and adjustment of the contract includes the following tasks: selection by the supplier of criteria for evaluating proposals; selection of a specific supplier based on analysis of proposals; preparation and conclusion of an agreement with the supplier; making changes (if necessary) to the contract during its implementation.
  • 4) Supervision of the supplier's activities is carried out in accordance with the actions provided for in the joint audit assessment process.
  • 5) Acceptance and completion of work.

During the acceptance process, the necessary tests are prepared and performed. Completion of work under the contract is carried out if all acceptance conditions are met.

The delivery process covers the activities and tasks of a supplier in providing a software product or service to a customer.

These actions include:

  • 1) Initiation of delivery consists of the supplier reviewing bid proposals and making a decision.
  • 2) Preparation of a response to bid proposals is carried out in accordance with the decisions made.
  • 3) The contract is prepared after the customer selects a specific supplier.
  • 4) Planning is carried out after the conclusion of the contract and includes the following tasks: making a decision by the supplier regarding the performance of work on its own or with the involvement of a subcontractor; development by the supplier of a project management plan containing organizational structure project, division of responsibilities, technical requirements to the development environment, management of subcontractors.
  • 5) Execution and control.
  • 6) Verification and evaluation.
  • 7) Delivery and completion of work is carried out in accordance with the acceptance and completion actions agreed upon during the initiation process.

The development process covers the actions and tasks of the developer and provides for the following main areas of work:

  • 1) Creation of a software package and its components with specified requirements, including preparation of design and operational documentation.
  • 2) Preparation of materials necessary to check the performance and quality of the software.
  • 3) Preparation of materials necessary for organizing personnel training, etc.

The operation process covers the actions and tasks of the operator - the organization involved in the operation of the developed software. These actions include: preparatory work, operational testing, system operation, user support consists of providing assistance and advice when errors are detected during the operation of the software.

Maintenance process. This process is activated when there are changes (upgrades) to the software and related documentation caused by problems that have arisen.

The main goal of these processes is to create a reliable software that fully satisfies the customer’s requirements within the time frame established by the contract.

Supporting life cycle processes

The main goal of these processes is to create a reliable software that fully satisfies the customer’s requirements within the time frame established by the contract. Supporting processes include documentation, configuration management, quality assurance, verification, certification, joint assessment, audit, and problem resolution.

The documentation process provides for a formalized description of information created during the software life cycle.

This process includes:

  • 1) Preparatory work required to determine and agree necessary list documents and documented procedures.
  • 2) Design and development of documentation, which are carried out in the process of working on the software and are completed simultaneously with the completion of its life cycle.
  • 3) Release of documentation, which is carried out as it is ready.
  • 4) Maintenance includes actions to adjust and update documentation during the software life cycle.

The configuration management process involves the use of administrative and technical procedures throughout the life cycle of the software.

The software configuration is understood as the totality of its functional and physical characteristics, established in the technical documentation and implemented in the software.

This process includes:

  • 1) Preparatory work, which consists of planning configuration management.
  • 2) Configuration identification - establishes rules with which you can uniquely identify and distinguish software components and their versions. In addition, each component and its versions correspond to a unique set of documentation.
  • 3) Configuration control - intended for the systematic assessment of proposed modifications of the software and their coordinated implementation, taking into account the effectiveness of each modification and the costs of its implementation.
  • 4) Accounting for configuration status - is a registration of the state of software components, preparation of reports on all implemented and rejected modifications of versions of software components.
  • 5) Configuration assessment - consists of assessing the functional completeness of software components.
  • 6) Release and delivery management includes the production of master copies of programs and documentation, their storage and delivery to users in accordance with the procedure adopted in the organization.

The quality assurance process provides adequate assurance that the software and its life cycle processes conform to specified requirements and approved plans.

To obtain reliable assessments of the created software, the process of ensuring its quality must occur independently of the entities directly related to the development of the software.

The verification process consists of proving that the software resulting from some action fully satisfies the requirements or conditions that depend on the previous actions.

Verification can be carried out either by the contractor himself or by another specialist of this organization, as well as by a specialist third party organization. Verification in the narrow sense means formal proof of the correctness of the software. This process may include analysis, evaluation and testing.

The certification process involves determining the completeness of compliance with the specified requirements for the system or software being created.

Certification usually means confirmation and assessment of the reliability of the software testing performed. The qualification must ensure full compliance and that it can be used safely and reliably by the user.

The participatory assessment process is designed to assess the status of the project and PP work. It consists mainly of control over the planning and management of resources, personnel, equipment and tools of the project.

The audit process is a determination of compliance with the requirements, plans and terms of the contract of both the progress of work on creating the software and the product itself.

The audit serves to establish the conformity of actual work and reports, therefore auditors (auditors) should not have direct dependence on software developers.

The problem resolution process involves analyzing and resolving problems found during development, operations, and other processes, regardless of their problem or source. Each detected problem must be identified, described, analyzed and resolved.

Problem resolution is carried out throughout the entire life cycle of the software.

Organizational life cycle processes

The main goal of organizational processes is to organize the process of developing a reliable software product that fully satisfies the customer’s requirements within the time frame established by the contract and to manage this process. Organizational processes include management processes, infrastructure creation, improvement, and training.

The project management process consists of activities and tasks that can be performed by any party managing their processes. This party (manager) is responsible for managing the product release, project and tasks of related processes, such as acquisition, delivery, development, operation, maintenance, etc.

The process of creating an infrastructure includes the selection and support (maintenance) of technology, standards and tools, the selection and installation of hardware and software used for the development, operation and maintenance of software.

The improvement process involves assessment, measurement, control, and improvement of PP life cycle processes.

Improvement of PP life cycle processes is aimed at increasing the labor productivity of all specialists involved in them by improving the technology used, management methods, selection of tools and personnel training.

The training process covers initial training and subsequent staff development. Basic processes largely depend on the level of knowledge and qualifications of personnel.

The necessary resources and technical automation tools must be planned for this process.

Software development is impossible without understanding the so-called software life cycle. The average user may not need to know this, but it is advisable to master the basic standards (later it will be said why this is necessary).

What is life cycle in a formal sense?

The life cycle of any application is usually understood as 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, up to the complete withdrawal 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 the opportunities they provide are up-to-date.

It is believed that the life cycle definition does not apply in any way to test applications, such as 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, it is also possible to highlight General terms, used in defining the concept of life cycle.

Initial requirements

  • formulation of the problem;
  • analysis of mutual requirements of future software for the system;
  • design;
  • programming;
  • coding and compilation;
  • testing;
  • debugging;
  • implementation and maintenance of the software product.

Software development consists of all the above-mentioned stages and cannot do without at least one of them. But special standards have been established for control of such processes.

Software Life Cycle Process Standards

Among the systems that predetermine the conditions and requirements for such processes, today we can name only three main ones:

  • GOST 34.601-90;
  • ISO/IEC 12207:2008;
  • Oracle CDM.

For the second international standard there is a Russian analogue. This is GOST R ISO/IEC 12207-2010, which is responsible for system and software engineering. But the software life cycle described in both rules is essentially identical. This is explained quite simply.

Types of software and updates

By the way, for most currently known multimedia programs, they are a means of saving basic configuration parameters. The use of software of this type is, of course, quite limited, but understanding the general principles of working with the same media players will not hurt. And that's why.

In fact, they include the software life cycle only at the level of 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 life cycle of the software in its initial modification has expired, but the application has been somewhat transformed and acquired its current form.

If we talk about the stages of the life cycle, first, at the stage of setting the problem, several mandatory conditions were set:

  • creating a drum module similar to rhythm machines like the 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 a project in WAV, MP3 and OGG formats;
  • Compatibility of projects with the additional application Fruity Tracks.

At the development stage, C programming language tools were used. But the platform looked quite primitive and did not give the end user required quality sound.

In this regard, at the testing and debugging stage, the developers had to follow the path of the German Steinberg corporation and apply support for Full Duplex mode in the requirements for the main sound driver. The sound quality has become higher and allows you 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 the interface of a full-fledged sequencer with the ability to edit parameters on a virtual 64-channel mixing console with unlimited addition of audio tracks and MIDI tracks.

It didn't stop there. 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 that supports VST-host could connect to the program.

It is not surprising that soon any composer could use analogues of “hardware” 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 plugin made it possible to reproduce the 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 ASIO4ALL drivers, which turned out to be head and shoulders above the Full Duplex mode. Accordingly, the bitrate also increased. Today, the quality of the exported audio file can be 320 kbps at a sampling rate of 192 kHz. And this is professional sound.

As for the initial version, its life cycle could be called completely complete, but such a statement is relative, since the application only changed its name and acquired new capabilities.

Development prospects

What the stages of the software life cycle are 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 survive in the market for several years. In the long term, everyone is looking at its long-term use. This can be achieved different 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 OS, 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 in some installation or security parameters it even surpasses the latest developments. The same applies to the NT 4.0 system, as well as a specialized modification of Windows Server 2012.

But in relation to these systems, support is still declared in reality. high level. But the once sensational Vista is clearly experiencing the decline of its cycle. Not only did it turn out to be unfinished, but there were so many errors in it and gaps in its security system that one can only guess how such an untenable solution could be released onto the software market.

But if we say that the development of software of any type (control or application) does not stand still, we can only say that today it concerns not only computer systems, but also mobile devices, in which the technologies used are often ahead of the computer sector. The emergence of processor chips based on eight cores is not the best best example? But not every laptop can boast of having such hardware.

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 legacy applications that do not meet the requirements modern systems and cannot work in their environment.

But even taking into account technological progress, many of them may soon become untenable. Then you will have to make a decision either to release updates or to completely revise the entire concept originally incorporated into the software product. Hence the new cycle, which involves changing the initial conditions, development environment, testing and possible long-term use 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.

Visual Basic-based environments remain much more popular than Windows systems. And we are not talking about application software for UNIX systems at all. What can we 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. In fact, even the initially set tasks can vary very significantly. Accordingly, differences can be observed at other stages.

But the basic technologies for developing software products and their subsequent support should be clear. For the rest, one should take into account the specifics of the software being created, the environments in which it is supposed to work, and the capabilities of the programs provided to the end user or production, and much more.

In addition, sometimes life cycles can depend on the relevance of development tools. If, for example, a programming language becomes obsolete, no one will write programs based on it, much less implement them into automated systems production management. Here it is not even programmers who come to the fore, but marketers who must respond in a timely manner to changes in the computer market. And there are not so many such specialists in the world. Highly qualified personnel who can keep their finger on the pulse of the market are becoming the most in demand. And they are often the so-called “ gray cardinals”, on which the success or failure of a certain software product in the IT field depends.

They may not always understand the essence of programming, but they are clearly able to determine models of the software life cycle and the length of time for their use, based on global trends in this area. Effective management often produces more tangible results. Yes, at least PR technologies, advertising, etc. The user may not need some application, but if it is actively advertised, the user will install it. This is already, so to speak, a subconscious level (the same effect of the 25th frame, when information is put into the user’s consciousness independently of him).

Of course, such technologies are prohibited in the world, but many of us do not even realize that they can still be used and influence the subconscious in a certain way. Just look at the cost of “zombification” by 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 when starting up to attract the user's attention. And, as research shows, such applications are more viable than other programs. Naturally, the software life cycle also increases, no matter what function was initially assigned to it. And, unfortunately, many developers use this, which raises doubts about the legality of such methods.

But it’s not for us to judge this. It is possible that tools will be developed in the near future to identify such threats. So far this is only a theory, but, according to some analysts and experts, up to practical application There's very little left. If they are already creating copies of the neural networks of the human brain, then what can we say?

Annotation.

Introduction.

1. Software life cycle

Introduction.

Riley Programming Process Steps

Introduction.

1.1.1. Formulation of the problem.

1.1.2. Solution design.

1.1.3. Algorithm coding.

1.1.4. Program support.

1.1.5. Software documentation.

Conclusion to clause 1.1

1.2. Determination of LCPO according to Lehman.

Introduction.

1.2.1 System definition.

1.2.2. Implementation.

1.2.3. Service.

Conclusion to clause 1.2.

1.3. Phases and work of LCPO according to Boehm

1.3.1. Cascade model.

1.3.2. Economic justification cascade model.

1.3.3. Improvement of the cascade model.

1.3.4. Determination of life cycle phases.

1.3.5. Main work on the project.

Literature.


Introduction

The industrial use of computers and the growing demand for programs have posed urgent challenges to significantly increase software development productivity, development of industrial methods of planning and program design, transfer of organizational, technical, technical, economic and socio-psychological techniques, patterns and methods from the sphere of material production to the sphere of computer use. A complex approach to the processes of software development, operation and maintenance, he put forward a number of pressing problems, the solution of which will eliminate bottlenecks in program design, reduce the completion time of work, improve the selection and adaptation of existing programs, and perhaps determine the fate of systems with embedded computers.

In the practice of developing large software projects, there is often no unified approach to the assessment of labor costs, work deadlines and material costs, which hinders the increase in software development productivity, and ultimately - effective management software life cycle. Since a program of any type becomes a product (except, perhaps, educational, prototype programs), the approach to its production should in many ways be similar to the approach to the production of industrial products, and program design issues become extremely important. This idea is at the heart of B.W.'s book. Boehm's "Software Engineering" which we used to write this course work. In this book, software design refers to the process of creating a design for a software product.


1 Software life cycle

INTRODUCTION

LCPO is a continuous process that begins from the moment a decision is made about the need to create software and ends at the moment it is completely removed from service.

There are several approaches to determining the phases and activities of the software life cycle (SLC), steps of the programming process, cascade and spiral models. But they all contain common fundamental components: problem statement, solution design, implementation, maintenance.

The most famous and complete, perhaps, is the structure of the life cycle process according to Boehm, which includes eight phases. It will be presented in more detail in the future.

One of possible options a top-level description according to Lehmann, which includes three main phases and represents a description of the life cycle in the most general case, can serve.

And, for variety, we present the steps of the programming process presented by D. Riley in the book “Using the Modula-2 Language”. This idea, in my opinion, is very simple and familiar, and let’s start with it.

1.1 Steps in the Riley Programming Process

The programming process involves four steps (Figure 1):

statement of the problem, i.e. obtaining an adequate understanding of what task the program should perform;

designing a solution to an already stated problem (in general, such a solution is less formal than the final program);

program coding, i.e. translating the designed solution into a program that can be executed on a machine;

program support, i.e. the ongoing process of troubleshooting the program and adding new features.

Rice. 1.Four programming steps.

Programming begins from the moment when user, i.e. someone who needs a program to solve a problem states the problem system analyst. The user and system analyst jointly define the problem statement. The latter is then transmitted algorithmist, who is responsible for designing the solution. A solution (or algorithm) represents a sequence of operations, the execution of which leads to the solution of a problem. Since the algorithm is often not suitable for execution on a machine, it should be translated into a machine program. This operation is performed by the encoder. The accompanying programmer is responsible for subsequent changes to the program. And the system analyst, and the algorithmist, and the encoder, and the accompanying programmer - they are all programmers.

In the case of a large software project, the number of users, system analysts and algorithmists can be significant. In addition, it may be necessary to return to previous steps due to unforeseen circumstances. All this serves as an additional argument for careful software design: the results of each step should be complete, accurate and understandable.

1.1.1 Problem statement

One of the most important steps programming is the statement of the problem. It functions as a contract between the user and the programmer(s). Like a legally poorly drafted contract, a poorly written problem statement is useless. With a good problem statement, both the user and the programmer clearly and unambiguously represent the task that needs to be performed, i.e. in this case, the interests of both the user and the programmer are taken into account. The user can plan to use software that has not yet been created, based on the knowledge of what it can do. A good statement of the problem serves as the basis for formulating its solution.

Formulation of the problem (program specification); essentially means an accurate, complete, and understandable description of what happens when a specific program is executed. The user usually looks at the computer as a black box: for him, it does not matter how the computer works, but what is important is what the computer can do that interests the user. In this case, the main attention is focused on the interaction of man with machine.

Characteristics of a Good Problem Statement:

Accuracy, i.e. eliminating any ambiguity. There should be no question as to what the program's output will be for any given input.

Completeness, i.e. considering all options for a given input, including erroneous or unintended input, and determining the appropriate output.

Clarity, i.e. it must be understandable to both the user and the system analyst, since the statement of the problem is the only contract between them.

Often the requirements for accuracy, completeness and clarity are in conflict. Thus, many legal documents are difficult to understand because they are written in formal language, which allows certain provisions to be formulated with extreme precision, excluding any minor discrepancies. For example, some questions in exam papers are sometimes formulated so precisely that the student spends more time understanding the question than answering it. Moreover, the student may not grasp the main meaning of the question at all due to large quantity details. The best formulation of the problem is one that achieves a balance of all three requirements.

Standard form of problem statement.

Consider the following problem statement: “Input three numbers and output the numbers in order.”

Such a statement does not satisfy the above requirements: it is neither accurate, nor complete, nor understandable. Indeed, should numbers be entered one per line or all numbers on one line? Does the expression "in order" mean ordering from greatest to least, from least to greatest, or the same order in which they were introduced.

Obviously, such a statement does not answer many questions. If we take into account the answers to all the questions, then the statement of the problem will become verbose and difficult to understand. Therefore, D. Riley suggests using a standard form to set the problem, which ensures maximum accuracy, completeness, clarity and includes:

name of the task (schematic definition);

general description (brief summary of the task);

errors (unusual input options are explicitly listed to show users and programmers what actions the machine would take in such situations);

example (a good example can convey the essence of the problem and also illustrate different cases).

Example. Statement of the problem in a standard form.

NAME

Sorting three integers.

DESCRIPTION

Input and output of three integers, sorted from smallest to largest number.

Three integers are entered, one number per line. An integer is one or more consecutive decimal digits, which may be preceded by a plus sign “+” or a minus sign “–”.

The three integers entered are printed, with all three printed on the same line. Adjacent numbers are separated by a space. Numbers are displayed from smallest to largest, from left to right.

1) If less than three numbers are entered, the program waits for additional input.