Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Английский язык I курс / Наука и техника. II часть.doc
Скачиваний:
29
Добавлен:
15.06.2014
Размер:
666.62 Кб
Скачать

The objectives of software engineering

Software engineering is the profession which is likely to replace programming and systems analysis over the next ten years. The objectives of software engineering are as stated above: the development of very large, complex , software items, which satisfy strict standards of performance and correctness, in a controlled, scheduled, budgeted and cost-effective way. Software engineers require, in addition to a proficiency in programming, a knowledge of formal mathematics and logic, computing science, economics and management.

Software engineering is carried out by teams of people. When a software development project is started, the teams are set up with a management structure corresponding to the structure of the software itself. A schedule is drawn up for the project, and costs are allocated to the various portions and stages. Each team has a team leader, whose task is to make sure that the software developed by the team is correct, properly structured, has the right interfaces to the software being developed by the other teams, and is on schedule and within budget. This is a very difficult task, which requires a wide range of technical and management skills.

Software engineering is concerned with the entire lifecycle of a software project: design. development, testing, use and maintenance. All the work done is aimed at the highest possible standards at the lowest possible costs throughout this lifecycle.

Program structure

It is now quite clear that the only way of achieving the required standards of correctness, performance and reliability of software is through the very careful design of the structure of a program. A well-structured program must satisfy the following conditions:

• The program must have a clear overall structure in terms of modules, with each module carrying out a specific task. Modules may be implemented as functions, procedures or segments, depending on the programming language used.

• There must be a clearly defined interface between modules. This is particularly important when interfaces are between modules written by different software engineers.

• Each module should be a simple combination of the elementary constructions of the programming language. Modules should be easy to read by people other than their original programmer.

• There must be a close correspondence between the structure of a module and the structure of the data on which it operates.

• Each module should leave the data structures on which it operates in a state which is consistent with their defining properties. This is particularly important with pointers: they should not be left 'hanging loose' by one module, on the assumption that another module will tidy them up.

• A module must have no side effects: it must not make any changes to data values, or to the state of the program, apart from those it is intended to make.

Achieving a program structure which satisfies these conditions is a very difficult task. Some help is given by the program structuring properties of the language. New programming languages are being developed which will give even greater assistance, particularly with the last two requirements of a structured program.