Software Engineering  – This occupation ( profession ) and process aimed at creating and maintaining efficiency, quality and reliability of software using the technology, methodology and practice of computer science , project management , mathematics , engineering and other areas of knowledge.

The complexity of software development

Like other traditional engineering disciplines, custom software development addresses quality, value, and reliability issues. Some programs contain millions of source code strings that are expected to be executed correctly under changing conditions. The complexity of software is comparable to the complexity of the most complex of modern machines, such as airplanes .

Sections of discipline

Software development can be divided into several sections. It:

  1. Software Requirements : Extract, Analyze, Specify, and Ratify Software Requirements.
  2. Software design , software design tools Automated Software Development (CASE) and standard format descriptions, such as Unified Modeling Language ( UML ), using different approaches: problem-oriented design , and so on. Etc ..
  3. Software engineering : software development using programming language.
  4. Software Testing : Search and fix bugs in the program.
  5. Software maintenance : software systems often have compatibility and portability problems, and require further modifications long after their first version is created. The sub-area deals with these problems.
  6. Managing Software Configuration : Because software systems are very complex and modified during use, their configurations should be managed in a standardized and structured way.
  7. Management of software development : software system management has borrowing from project management , but there are nuances that do not occur in other disciplines of management.
  8. The process of software development : the process of software development is hotly debated among practitioners, the main paradigms are considered agile or waterfall .
  9. Software development tools, see CASE : a method for assessing the complexity of the system, the choice of tools for the development and application of the software system.
  10. Software quality : methodology for evaluating software product quality criteria and reliability requirements.
  11. Localization of software , branch of the language industry.

Process and methodology

For several decades, the task is to find a repeatable, predictable process or methodology that would improve performance, quality and reliability of the development. Some tried to systematize and formalize this, apparently, unpredictable process. Others applied it to project management methods and software engineering methods . Others believed that without constant control by the customer, software development was out of control, eating too much time and money. Experience in managing program development is reflected in the relevant manuals, customs and standards. If several standards and normative documents are used in the development, it makes sense to make a profile . Computer Scienceas a scientific discipline offers and uses on the basis of methods of structural programming the technology of reliable software development, using software testing and verification on the basis of evidence-based programming methods for systematic analysis of algorithms and programming without algorithmic errors. This methodologyis aimed at solving problems on the computer, a similar technology of algorithms and software development, used at the Olympiads with programming by domestic students and programmers using test and structural pseudo code for document programming in the IBM corporation from the 70’s. The methodology of structured software design can be used with the use of a variety of languages ​​and programming tools to develop robust applications of a variety of purposes. One such project was the development of on-board software for the Buran spacecraft , which first used an onboard computerfor automatic control of the machine, which successfully launched and landed the spacecraft. When choosing a methodology for software development should be guided by the fact that the complexity of the methodology is comparable to the complexity of the structure of the software product, and unnecessary for the product of this complexity, the complexity of the methodology only unjustifiably increase the cost of development. An example of a modern design methodology can be problem-oriented design.