Program development tools. Software Development Technology Study of Enterprise Software Development Tools

Introduction

On development stage software A large amount of the most versatile software (software) is used. This course of lectures examines when and what is used throughout the entire application development phase.

To give a more complete understanding of the role of each utility or development section in the software creation process, all the tools discussed in this course of lectures will be discussed using the example of application development using one of their high-level languages. For simplicity, all the tools used can be divided into 4 groups. Let's take a closer look at each of the groups.

Required

The necessary tools are those without which it is in principle impossible to obtain executable code; This group includes:

§ text editors;

§ compilers and assemblers;

§ linkers or editors;

Often used

These are means the use of which, unlike necessary ones, can be avoided. But without them, the development process is very difficult and lengthened; Among the frequently used means it is worth mentioning:

§ utilities for automatic project assembly;

§ debuggers;

§ programs for creating installers;

§ resource editors;

§ profilers;

§ version support programs;

§ programs for creating help files (documentation).

Specialized

These tools are used in exceptional cases and solve quite specific problems:

§ dependency tracking programs;

§ disassemblers;

§ decompilers;

§ hex editors;

§ programs for monitoring system activity and changes occurring in the system;

§ verifier programs and containers (create a virtual environment for individual classes of programs in which the behavior of the program can be examined);

Integrated Development Environments

Integrated development environments contain most of the above programs and make it easier to create applications. By and large, a development environment is a program that brings together several tools from the first and second (and sometimes third) groups.

In the future, we will get acquainted in more detail with the main representatives of each group, and also consider how it all works in an integrated development environment.

CLASSIFICATION OF TOOLS

TOPIC 1 CONCEPT OF TOOLS.

CLASSIFICATION OF TOOLS.

Programming Technology Tool System is an integrated set of software and hardware tools that supports all processes of development and maintenance of large software systems throughout its entire life cycle within a certain technology.

Instrumental programming technology systems can be divided into three main components:

· repository,

· tools,

· interfaces.

Tools- a set of tools that defines the capabilities provided by the system to the development team. Typically this set is open and structured. In addition to the minimum set ( built-in tools), it contains means of its extension ( imported tools). In addition, due to its integrated actions, it consists of a certain common part of all tools ( kernels) and structural (sometimes hierarchically related) classes of tools.

Interfaces are divided into user and system. Custom The interface provides developers with access to the tools. It is being implemented shell systems. System Interfaces provide interaction between tools and their common parts. System interfaces are identified as architectural components due to the openness of the system - new ones are required to use them ( imported) tools included in the system.

The most general architecture of programming technology instrumental systems is presented in Fig.

Rice. General architecture of instrumental systems of programming technology.

There are two classes of programming technology tool systems: project support tool systems and language-dependent tool systems.

Instrumental project support system- This open system, capable of supporting the development of software in different programming languages ​​after its appropriate expansion with software tools focused on the selected language. The set of tools of such a system supports software development, and also contains programming language-independent tools that support software development (text and graphic editor, report generators, etc.). In addition, it contains system expansion tools. The core of such a system provides, in particular, access to the repository.

Language-sensitive tool system is a system for supporting the development of software in any one programming language, which essentially uses the specifics of this language in organizing its work. This specificity can affect both the capabilities of the kernel (including the structure of the repository) and the requirements for the shell and tools.

Instrumental software is software intended for use in the design, development and maintenance of programs.

In the process of studying the subject area, tools for creating virtual excursions were explored. The following were explored as means of creating a virtual excursion:

KPresenter is a free presentation program that is part of the KOffice and KDE projects. The program interface is shown in Figure 6.

Figure 6- Kpresenter.

Adobe Photoshop was chosen over a number of other programs (Paint, Paint.net, Photoshop online, etc.) due to the fact that it is quite easy to learn and use. A large number of video lessons have been created on it, and besides, it is included in the study program. With its help, distortions that constantly arise will be removed. The program interface is shown in Figure 7.


Figure 7 - Adobe Photoshop.

Microsoft Paint is a multifunctional, but at the same time quite easy-to-use raster graphics editor from Microsoft, included in all operating systems. Windows systems, starting from the first versions. The program interface is shown in Figure 8.


Figure 8- Paint.

Paint.NET is a free raster graphics editor for Windows NT based on the .NET Framework. The app started as a project developed by a group of Washington State University students to Microsoft Windows led by Microsoft. Paint.NET is written in C#, with some C++ used during installation and shell integration.

Photoshop online - free Internet resource located at http://photoshop.domfailov.ru. A graphic editor that is equipped with a lot of features. An application that allows you to perform various actions to improve and process the image. Such actions include: color processing, installation and much more. The program interface is shown in Figure 9.


Figure 9 - Photoshop online.

Microsoft Office Word 2003 is a word processor designed for creating, viewing and editing text documents, with local application of the simplest forms of table-matrix algorithms. Produced by Microsoft Corporation as part of the Microsoft Office package. The program interface is shown in Figure 10.


Figure 10 - Microsoft Office Word 2003.

Microsoft Power Point is a program for creating and conducting presentations, which is part of Microsoft Office and is available in editions for operating systems. The program interface is shown in Figure 11.


Figure 11 - Microsoft Power Point.

Microsoft ICE Autopano Giga, Ulead Cool 360, The Panorama Factory, PTGui Pro due to its ease of use and the fact that it is free. To combine photos into a panorama, you just need to move them to the program’s work area and then the program operates automatically. The program interface is shown in Figure 12.


Figure 12 - Microsoft ICE.

Autopano Giga - The entire creation process is fully automated: it will correct and balance brightness and color, adjust fragments, and automatically find photos suitable for gluing in the folder specified by the user. A considerable number of formats are supported (including RAW format). The program interface is shown in Figure 13.


Figure 13 - Autopano Giga.

PTGui Pro - commercial (shareware) computer program for creating panoramic photographs, developed and supported by the Dutch company New House Internet Services based in Rotterdam, founded in 1996. PTGui was originally a graphical interface to a set of free Panorama Tools (hence the name of the program), but later versions of the program work on its own photo stitching algorithm. The program interface is shown in Figure 14.


Figure 14 - PTGui Pro.

Microsoft Office SharePoint Designer 2007 - The program is easy to use and distributed free of charge. The program has a wide range of capabilities, in particular, it can automatically send changes made by the site developer to the source texts in real time. The program interface is shown in Figure 15.


Figure 15 - Microsoft Office SharePoint Designer.

Pano2VR is the simplest of the other options (Photo Warp, Tourweaver, Panorama2Flash, Pano2QTVR free, JATC, Easypano Studio Pro); there are very few well-known programs with such capabilities, and the undisputed leader in this area is the American company IPIX Corporation (http://www. ipix.com), which is the author of virtual tour technology. Therefore, its software products are most often used in the development of tours, including in Russia. However, there are very interesting alternative options from other companies that also provide excellent results, but cost much less.

Easypano Studio The package includes two software modules: Panoweaver and Tourweaver. The first of them is a 360×360 spherical panorama stitcher, which is possible both in fully automatic and manual mode, and the second allows you to combine panoramas, as well as other information, in virtual tours. The Tourweaver application can be used not only in conjunction with Panoweaver, but also stand-alone, since it supports importing panoramas created in other stitchers. For example, you can import cylindrical panoramas produced in Panorama Factory, or panoramas generated in 3D packages, particularly 3D Studio Max. In addition, it is possible to import panoramas from digital panoramic cameras Kaidan's 360 One VR, Panoscan, RoundShot, etc. The program interface is shown in Figure 16.

Figure 16 - 360 Degrees Of Freedom Developer Suite.

SP_VTB, SP_STITCHER - The Spherical Panorama company specializes in developing software for creating different types of panoramas and combining them into virtual tours, however, in our case, the SP_STITCHER image stitcher into panoramas and the SP_VTB virtual tour builder are of greatest interest. They are supplied as separate applications, but when developing virtual tours they complement each other, since SP_VTB allows you to create tours only based on panoramas in spf format obtained in the SP_STITCHER environment. Both applications are quite easy to use, and the accompanying detailed documentation, several fisheye stitching test kits, and a trial virtual tour will help you quickly understand the intricacies of the work. The program interface is shown in Figure 17.

Figure 17 - SP_VTB, SP_STITCHER.

IPIX Interactive Studio, IPIX Real Estate Wizard, IPIX i-Linker - As applications for creating virtual tours, IPIX offers the IPIX i-Linker 3.1 and IPIX Multimedia Toolkit software packages, which make sense to use only in conjunction with the IPIX stitcher, since both applications are configured to use IPIX panoramas. IPIX Interactive Studio and IPIX Real Estate Wizard packages can be used as programs for stitching panoramas. The program interface is shown in Figure 18.

Figure 18 - SP_VTB, SP_STITCHER.

Well, actually Pano2VR is a program for those involved in the production of virtual 3D panoramas, the new product will provide all the necessary modern capabilities for presenting content based on Flash technology. In addition to post-production, you can also perform texture transformations (there is a large selection) and create preview images (thumbnail). The new concept has been rewritten from scratch, adding a huge number of improvements and features. Although the program, as before, supports conversion to the QTVR format, the main emphasis in this edition was placed on Flash technology. Application to convert spherical or cylindrical panoramic images into QuickTime VR (QTVR) or Adobe Flash 8 and Flash 9/10 (SWF). With the ability to create your own templates for panoramas, buttons, add animation and sound, and automatic rotation. The program interface is shown in Figure 19.

Figure 19 - Pano2VR.

Pano2VR tools:

Patch Tool. Allows dynamic correction of the original image. You can select a panorama area and export it to image editing software. Supports the ability to edit only the selected areas that need to be corrected and the rest of the image is not affected.

Skin Editor. Ability to create your own panorama template. You can add your own buttons and graphics, designs. You can also add animations and sound effects to your template.

Sound Editor. Ability to add various sounds to panoramas.

Flash Export. Export panoramas, including all graphic elements as one SWF file format. This greatly simplifies the process of posting a panorama to a content management system, or placing it on a blog. Cylindrical as well as cubic panoramas can be rotated automatically with a choice of movement direction, speed and delay. Panoramas can contain hot spots, as well as predefined or fully customizable templates. The built-in template editor also allows you to add maps, links, logos and other information to the panorama in a user-friendly form.

QuickTime VR Export. Ability to export cylindrical and cubic panoramas to QuickTime VR format.

Adobe Flash Player is the program through which the excursion will be demonstrated; other options are possible (Java applets recorded on CDs are viewed using special excursion browsers), but thanks to the popularity of the Adobe brand and the widespread use of Flash Player, this is what will be used

Share Point Designer 2007 -WYSIWYG HTML- free editor and a web design program from Microsoft, a replacement for Microsoft Office FrontPage and part of the SharePoint family. It is one of the components of the Microsoft Office 2007 suite, but is not included in any of the office suites (installed separately). The change in name from FrontPage to SharePoint Designer is due to its purpose: creating and designing Microsoft SharePoint websites. SharePoint Designer has the same HTML rendering engine as Microsoft Expression Web and does not rely on the browser's Trident engine Internet Explorer, which is less compatible with common standards.

Yandex Internet is the most modern and therefore faster and more promising browser. The excursion will be tested on it; the choice was made from many options: Google Chrome(Figure 2), Chromium (Figure 22), Chrome from Yandex (Figure 23), Microsoft Internet Explorer (Figure 24), Mozilla Firefox(Figure 25), Opera (Figure 26), Yandex (Figure 20), etc.

Figure 20 - Yandex browser.

Figure 21 - Google Chrome.

Figure 22 - Opera.

Figure 23 - Chromium.

Figure 24 - Chrome from Yandex.

Figure 25 - Internet Explorer.

Figure 26 - Mozilla Firefox.

The programs listed below are selected from the list of tools for the reasons listed below.

Justification for the choice of development tools and software

Based on a study of software development tools, the following will be used as tools for developing a virtual tour of school No. 2:

Adobe Photoshop CS3 - is able to work with a large number of formats, create, save, edit and change images in various ways. A multifunctional graphic editor, which is perfect for a more accurate result of combining photos into a panorama.

Microsoft ICE version 1.4.4.0 - the program is needed to combine many individual photographs of one object with the correct sequence into one panoramic image.

Pano2VR version 4.1.0 pro - a program for combining panoramas into excursions.

Adobe flash player 13 plugins free program to view the tour.

Yandex Internet 14.4.1750.13414 is the newest, most convenient and fastest browser.

Share Point Designer 2007 - free editing program web pages, an HTML editor and web design program from Microsoft, a replacement for Microsoft Office FrontPage and part of the SharePoint family.

Microsoft Word is a text editor and document editor. It impresses with its functionality and applicability, it is able to work with various formats.

Microsoft Office PowerPoint is part of Microsoft Office. This allowed PowerPoint to become the most widely used presentation program worldwide. PowerPoint presentation files are often sent by program users to other computers, which means that competitors' programs need to be compatible with them.

The selected development tools were researched and installed on the computer. Software development will be carried out with their help.

1. Development tools software. In the process of software development, computer support for software development processes is used to one degree or another. This is achieved by presenting at least some software documents of the PS (primarily programs) on computer storage media (for example, disks) and making available to the software developer special software or special devices included in the computer, created for any processing of such documents. As such a special software, you can specify a compiler from any programming language.

The compiler relieves the software developer of the need to write programs in the computer language that is intended for the developer. A PS would be extremely inconvenient - instead, it compiles programs in a programming language convenient for it, which the corresponding compiler automatically translates into computer language. An emulator of a language can serve as a special device that supports the software development process. An emulator allows you to execute (interpret) programs in a language different from the language of the computer that supports the development of the software, for example, in the language of the computer for which this program is intended. A software designed to support the development of other software will be called a software tool for software development, and a computer device specifically designed to support the development of software will be called a hardware tool for software development.

Software development tools can be used throughout the entire software life cycle to work with different program documents. So a text editor can be used to develop almost any software document. From the point of view of the functions that tools perform during software development, they can be divided into the following four groups: · editors, · analyzers, · converters, · tools that support the process of program execution.

Editors support the design (formation) of certain program documents at various stages of the life cycle. As already mentioned, you can use one universal text editor for this. However, specialized editors can provide stronger support: each type of document has its own editor. In particular, in the early stages of development, graphical means of description (diagrams, diagrams, etc.) can be widely used in documents. In such cases, graphic editors can be very useful. At the programming (coding) stage, instead of a text editor, a syntactically controlled editor oriented to the programming language used may be more convenient. Analyzers perform either static processing of documents, carrying out various types of control, identifying certain of their properties and accumulating statistical data (for example, checking the compliance of documents with specified standards), or dynamic analysis of programs (for example, to identify the distribution of program operating time across software modules). Converters allow you to automatically convert documents to another form of representation (for example, formatters) or translate a document of one type to a document of another type (for example, converters or compilers), synthesize a document from separate parts, etc.

Tools that support the process of program execution allow you to execute on a computer descriptions of processes or individual parts thereof, presented in a form other than machine code, or machine code with additional features his interpretations. An example of such a tool is an emulator of another computer's code. This group of tools also includes various debuggers. Essentially, each programming system contains a run-time software subsystem that executes the most typical program fragments for a programming language and provides a standard response to exceptional situations that arise during program execution (we will call such a subsystem executive support) - can also be considered as a tool for this groups.

2. Tool environments for developing and maintaining software. Currently, each programming system is associated not with individual tools (for example, a compiler), but with a certain logically connected set of software and hardware tools that support the development and maintenance of software in a given programming language or are focused on a specific subject area. We will call such a set the instrumental environment for software development and maintenance. Such tool environments are characterized, firstly, by the use of both software and hardware tools, and, secondly, by a certain orientation towards either a specific programming language or a specific subject area. The tool environment does not necessarily have to function on the computer on which the software developed with its help will be used. Often such a combination is quite convenient (if only the power of the computer used allows it): there is no need to deal with computers of different types; components of the tool environment itself can be included in the developed software.

There are three main classes of tool environments for developing and maintaining PS programming environments, · computer technology workplaces, · tool systems for programming technology. The programming environment is intended mainly to support the processes of programming (coding), testing and debugging of the software. Workplace computer technology is focused on supporting the early stages of software development (specifications) and automatic generation of programs according to specifications. The programming technology tool system is designed to support all development and maintenance processes throughout the entire software life cycle and is focused on the collective development of large software systems with a long life cycle.

3. Tool programming environments contain, first of all, a text editor that allows you to construct programs in a given programming language, tools that allow you to compile or interpret programs in this language, as well as test and debug the resulting programs. In addition, there may be other tools, for example, for static or dynamic program analysis. These tools interact with each other through regular files using standard capabilities file system. The following classes of programming tools are distinguished: general-purpose environments, language-oriented environments.

General-purpose programming environments contain a set of software tools that support the development of programs in different programming languages ​​(for example, a text editor, a link editor, or an interpreter for the language of the target computer) and usually represent some extension of the capabilities of the operating system used. To program in such an environment in any programming language you will need additional tools oriented to this language (for example, a compiler). . . Classification of programming tools

4. The concept of computer technology for software development and its jobs. There are some difficulties in developing a strict definition of CASE technology (computer technology for software development). CASE is an acronym for Computer-Aided Software Engineering. But without the help (support) of a computer, software systems have not been developed for a long time (at least a compiler is used). In fact, this concept is given a narrower (special) meaning, which is gradually blurred (as always happens when a concept does not have a strict definition). Initially, CASE was understood as the engineering of the early stages of software development (definition of requirements, development of external description and architecture of the software) using software support (software tools). Now CASE can also be understood as engineering of the entire life cycle of a software system (including its maintenance), but only in the case when programs are partially or completely generated from documents obtained at these early stages of development. In this case, CASE technology began to fundamentally differ from the manual (traditional) technology of software development: not only the content of technological processes has changed, but also their totality.

Currently, computer software development technology can be characterized by: - ​​The use of software support for the development of graphic requirements and graphic specifications of the software, - automatic generation of programs in any programming language or in machine code (partially or completely), - software support for prototyping.

A programming technology tool system is an integrated set of software and hardware tools that supports all processes of development and maintenance of large software systems throughout the entire life cycle within a certain technology. From this definition follow the following main features of this class of computer support: · complexity, · focus on collective development, · technological certainty, · integration.

Taking into account the discussed properties of instrumental systems of programming technology, three of their main components can be distinguished: · development database (repository), · tools, · interfaces.

A repository is a central computer storage of information related to the project (development) of a software system throughout its entire life cycle. Toolkit - a set of tools that defines the capabilities provided by the system to the development team. Typically, this set is open: in addition to the minimal set (built-in tools), it contains means of its extension (imported tools), and structured, consisting of some common part of all tools (the core) and structural (sometimes hierarchically related) classes of tools. Interfaces are divided into 1) user 2) system. The user interface provides developers with access to tools (command language, etc.) and is implemented by the system shell. System interfaces provide interaction between tools and their common parts. System interfaces are highlighted as architectural components due to the openness of the system - they are required to be used by new (imported) tools included in the system.

There are two classes of programming technology tool systems: 1) project support tool systems and 2) language-dependent tool systems. The instrumental project support system is an open system capable of supporting the development of software in different programming languages ​​after its appropriate expansion with software tools focused on the selected language. Such a system contains a kernel (providing, in particular, access to the repository), a set of tools that support management of software development, programming language-independent tools that support software development (text and graphic editors, report generators, etc.), as well as system expansion tools. A language-dependent instrumental system is a system for supporting the development of software in any one programming language, which essentially uses the specifics of this language in organizing its work. This specificity can affect both the capabilities of the kernel (including the structure of the repository) and the requirements for the shell and tools.

Unified Modeling Language UML Most existing object-oriented analysis and design (OOAP) methods include both a modeling language and a description of the modeling process. A modeling language is a notation (mostly graphical) that is used by a method to describe projects. Notation is a collection of graphical objects that are used in models; it is the syntax of the modeling language. For example, class diagram notation defines how elements and concepts such as class, association, and multiplicity are represented. A process is a description of the steps to be followed in developing a project. The Unified Modeling Language (UML) is the successor to that generation of OOAP methods that appeared in the late 80s and early 90s.

UML is a general-purpose visual modeling language that is designed for specifying, visualizing, designing, and documenting software components, business processes, and other systems. The UML language is both a simple and powerful modeling tool that can be effectively used to build conceptual, logical and graphic models complex systems for various purposes. Constructive use UML language based on understanding general principles modeling complex systems and features of the object-oriented design (OOP) process in particular. The choice of expressive means for constructing models of complex systems predetermines the tasks that can be solved using these models. At the same time, one of the basic principles for constructing models of complex systems is the principle of abstraction, which prescribes including in the model only those aspects of the designed system that are directly related to the system’s performance of its functions or its intended purpose. In this case, all minor details are omitted so as not to overly complicate the process of analysis and research of the resulting model.

UML contains a standard set of diagrams and notations of a wide variety of types. A diagram in UML is a graphical representation of a set of elements, most often depicted as a connected graph with vertices (entities) and edges (relationships). Diagrams are drawn to visualize a system from different perspectives. A diagram is, in a sense, one of the projections of the system. As a rule, except in the most trivial cases, diagrams provide a condensed view of the elements that make up the system. The same element may be present in all diagrams, or only in a few (the most common option), or not present in any (very rare). In theory, diagrams can contain any combination of entities and relationships. In practice, however, a relatively small number of standard combinations are used, corresponding to the five most common types that make up the architecture of a software system.

UML distinguishes the following types of diagrams: – use case diagrams – for modeling the organization’s business processes (system requirements); – class diagrams – for modeling the static structure of system classes and the connections between them. These diagrams show classes, interfaces, objects, and collaborations, as well as their relationships. When modeling object-oriented systems, this type of diagram is used most often. Class diagrams correspond to the static view of the system from a design point of view; – system behavior diagrams (behavior diagrams); interaction diagrams – for modeling the process of exchanging messages between objects. – statechart diagrams – for modeling the behavior of system objects during the transition from one state to another.

– activity diagrams – for modeling the behavior of the system within different use cases or modeling activities. – implementation diagrams: component diagrams – for modeling the hierarchy of components (subsystems) of the system; deployment diagrams – for modeling the physical architecture of the system.

Stage 1: to mid-50s.

The main costs are related to coding (in machine codes). Autocodes (languages ​​using mnemonic command notations) and translators from them (assemblers) appear.

The possibilities of separate compilation and relocation of programs are implemented. Loaders and program linkers appear.

Stage 2: mid-50s to mid-60s.

The size of programs is increasing, and a gap is emerging between the concepts of problem domains and machine-oriented languages. Different languages ​​emerge high level(algorithmic, universal):

Fortran (1954-1957);

Algol-60 (1958-1960);

Cobol (1959-1961);

and translators from them (compilers). Almost all basic data types, operations on them, control structures and methods of representing them in programs, and various options for parameterizing subroutines are invented and tested.

Stage 3: mid-60s – early 70s.

The size of the software is increasing sharply, and there is a transition to the collective nature of work. Software requirements are increasing due to the transition to commercial production.

The ratio of software development costs is changing (40% or more is spent on debugging, design and documentation), coding is one of the most simple types works “Large” programming languages ​​are used and created - PL/1, ALGOL-68, SIMULA-67, generalizing and integrating previously found solutions.

Developed programming systems appear with optimizing and debugging translators, macro libraries, libraries of standard programs, specialized text editors, analysis tools and interactive debugging in terms of the input language. Developed operating systems, the first DBMS, numerous documentation automation systems, software configuration management systems (tracking modifications and assembling software versions) are being developed.

Stage 4 (“stage of crisis in software development”): early 70s–mid 70s.

Despite the development of tools, the productivity of programmers is not growing. Moreover, due to increasing requirements for software and a non-linear increase in its complexity, labor productivity is falling. Software development deadlines are missed, its cost is rising, its quality is unpredictable, traditional methods (providing additional human and material resources) do not work, which is characterized as a “software crisis.”

The methodology of structured programming is gaining recognition (Dijkstra, 1968), and the foundations of programming technology are being formed (Pascal language (N. Wirth), 1971).

Stage 5: 1976 – our time. Stage of post-crisis development of tools.

1976 – publication of Boehm’s work, which introduces the concept of the software life cycle and indicates that the main costs are not in development, but in maintaining programs.

Programming languages:

C (early 1970s, first described quite fully in 1978);

Modula-2 (1978, development - Oberon language (1988));

Prolog (1972, widespread since 1980);

Smalltalk (1970s, introduced in 1980 as Smalltalk-80);

C++ (early 1980s, name – 1983, exists in its usual form since 1990);

Java (version Java 1.0 – 1996, Java 2.0 – 1998, Java 5 – 2004...);

C# (1998–2001, version 1.0 – 2000–2002, version 2.0 – 2003-2005, version 3.0 – 2004–2008, version 4.0 – 2008–2010).

Integrated software development tool environments are being developed. The object-oriented approach to design and programming is gaining recognition. Programs are being developed to support software creation at every stage.

Control questions:

1. What activities does the development of a software product include?

2. What stages in software development are identified within the Rational Unified Process (RUP)?

3. What ensures the use of tools?

4. What components are included in the program? The purpose of each part.

5. Definitions of program and software.

6. What properties should the software have?

7. What programming languages ​​are used when developing programs?

8. Definition of software tools.

9. What four groups can software be divided into? Examples of software for each group.

10. By what criteria can programs from the same class be compared?

11. What are the stages in the development of software development tools?

12. Purpose and main characteristics of compilers (assemblers) and link editors.

13. Purpose and main characteristics of text editors.

14. Purpose and main characteristics of debuggers.

15. Purpose and main characteristics of programs for creating installers.

16. Purpose and main characteristics of resource editors.

17. Purpose and main characteristics of profilers.

18. Purpose and main characteristics of version support programs.

19. Purpose and main characteristics of programs for creating help files (documentation).

20. Purpose and main characteristics of documentation generators.

21. Purpose and main characteristics of disassemblers and decompilers.

22. Purpose and main characteristics of programs for monitoring system activity and changes occurring in the system.

23. Purpose and main characteristics of verifier programs and containers.

24. Purpose and main characteristics of programs for protecting developed software (protectors).

25. Purpose and main characteristics of SDK.

26. Purpose and main characteristics of parsers.

27. Purpose of technological standards.


SUBJECT: Software development methodologies.

Literature: 1. Zelkowitz M., Shaw A., Gannon J. Principles of software development.

2. Ghezzi C., Jazayeri M., Mandrioli D. Fundamentals of software engineering.

3. Kamaev V. A., Kosterin V. V. Programming technologies.

Let's consider the concepts of methodology, method and means.

Definition 1: Method(from the Greek methodos - a way of research or knowledge, theory or teaching) - a technique or system of techniques for the practical implementation of something in any subject area, a set of techniques or operations for the practical or theoretical development of reality, subordinated to the solution of specific problems.

The method includes facilities- how the action is carried out and ways- how the action is carried out.

Definition 2: Methodology is a system of principles, as well as a set of ideas, concepts, methods, methods and means that determine the style of software development.

A methodology is an implementation of a standard. The standards themselves only speak of what should be, leaving freedom of choice and adaptation.

Specific things are implemented through the chosen methodology. It is she who determines how the development will be carried out. There are many successful software development methodologies. The choice of a specific methodology depends on the size of the team, the specifics and complexity of the project, the stability and maturity of the company’s processes, and the personal qualities of the employees.

Methodologies represent the core of software development management theory.

Depending on the life cycle model used, methodologies are divided into:

Waterfall (cascade);

Iterative (spiral).

There is also a more general classification into:

Predictable;

Adaptive.

Predicted methodologies focus on detailed planning for the future. The planned tasks and resources for the entire duration of the project are known. The team has difficulty reacting to possible changes. The plan is optimized based on the scope of work and existing requirements. Changing requirements may result in significant changes to the plan as well as the design of the project. Often a dedicated "change management" committee is created to ensure that only the most important requirements are addressed in the project.

Adaptive methodologies are aimed at overcoming the expected incompleteness of requirements and their constant change. When requirements change, the development team also changes. A team involved in adaptive development has difficulty predicting the future of the project. There is an exact plan only for the near future. More distant plans exist only as declarations of the project's goals, expected costs and results.

Cascade development or waterfall model - a model of the software development process in which the development process looks like a flow, successively passing through the phases of requirements analysis, design, implementation, testing, integration and support.

The fundamental feature of the cascade approach is: the transition to the next stage is carried out only after the work at the current stage is completely completed, and no returns to completed stages are provided . Each stage ends with some results that serve as input for the next stage (Fig. 1).

Rice. 1. Cascade life cycle model.

Each stage ends with the release of a set of documentation sufficient to allow development to be continued by another development team. The criterion for the quality of development with this approach is the accuracy of fulfillment of the technical specifications.

Advantages of using the cascade method:

At each stage, a complete set of design documentation is generated that meets the requirements of completeness and consistency;

The stages of work carried out in a logical sequence make it possible to plan the completion time of all work and the corresponding costs.

The cascade approach has proven itself well in the construction of electronic information systems, for which at the very beginning of development all requirements can be quite accurately and completely formulated in order to give developers the freedom to implement them technically as best as possible.

At the same time, this approach has a number of disadvantages, caused primarily by the fact that the actual process of creating software never completely fits into such a rigid scheme. The process of creating software is, as a rule, iterative in nature: the results of the next stage often cause changes in design solutions developed at previous stages. Thus, there is a constant need to return to previous stages and clarify or revise previously made decisions (Fig. 2). The depicted diagram can be attributed to a separate model - a model with intermediate control, in which interstage adjustments provide greater reliability compared to the cascade model, although they increase the entire development period.

The main disadvantage of the cascade model is a significant delay in obtaining results and, as a consequence, a high risk of creating a system that does not meet the changing needs of users. This is due to two reasons:

Users cannot state all their requirements at once and cannot anticipate how they will change during development;

During development, changes in the external environment may occur that will affect the requirements for the system.

Rice. 2. Cascade life cycle model in practice.

As part of the cascade approach, the requirements for the product being developed are fixed in the form of technical specifications for the entire time of its creation, and the results obtained are agreed upon with users only at points planned after the completion of each stage (it is possible to adjust the results based on user comments if they do not affect the requirements , set out in terms of reference). Thus, users can make significant comments only after work on the system is completely completed. Users may receive a system that does not meet their needs. As a result, we have to start new project, which may suffer the same fate.

To overcome these problems, a spiral life cycle model was proposed in the mid-80s (Fig. 3).

Rice. 3. Spiral (iterative) life cycle model.

Its fundamental feature is the following: application software is not created immediately, as in the case of the waterfall approach, but in parts using the prototyping method .

Under prototype is understood as an operating software component that implements individual functions and external interfaces of the software being developed. Prototyping is carried out in several iterations, or spiral turns. Each iteration corresponds to the creation of a fragment or version of the software, at which the goals and characteristics of the project are clarified, the quality of the results obtained is assessed, and the work of the next iteration is planned. At each iteration, a thorough assessment of the project's schedule risk and cost is made to determine whether another iteration is necessary, whether the system requirements are fully and accurately understood, and whether the project should be terminated.

The spiral model relieves users and developers of the need to accurately and completely formulate system requirements at the initial stage, since they are refined at each iteration. Thus, the details of the project are deepened and consistently specified, and as a result, a reasonable option is selected, which is brought to implementation.

The spiral model is a classic example of the application of an evolutionary design strategy. The spiral model (by Barry Boehm, 1988) is based on the best properties of classical life cycle and prototyping, to which a new element is added - risk analysis, which was previously missing.

The spiral model defines four actions, represented by individual sectors of the spiral:

1. Planning - defining goals, options and limitations.

2. Risk analysis - analysis of options and risk recognition/selection.

3. Design - development of a next level product.

4. Evaluation - the customer’s assessment of the current design results.

The integrating aspect of the spiral model is obvious when the radial dimension of the spiral is taken into account. With each iteration in a spiral (moving from the center to the periphery), more and more full versions BY.

In the first turn of the spiral, initial goals, options and limitations are determined, risk is recognized and analyzed. If the risk analysis shows uncertainty in the requirements, prototyping (used in the design quadrant) comes to the aid of the developer and customer. Simulation can be used to further identify problematic and refined requirements. The customer evaluates the engineering (design) work and makes proposals for modification. The next phase of planning and risk analysis is based on the customer's proposals. In each spiral cycle, the results of the risk analysis are formed in the form of “continue, do not continue.” If the risk is too great, the project may be stopped.

In most cases, the spiral continues, with each step moving developers towards a more general model of the system.

With the iterative method, the missing part of the work can be done in the next iteration. The main task is to show system users a workable product as quickly as possible, thereby activating the process of clarifying and supplementing requirements.

The spiral model does not exclude the cascade approach at the final stages of the project in cases where the requirements for the system are fully defined.

The main problem of the spiral cycle is determining the moment of transition to the next stage. To solve it, it is necessary to introduce time restrictions for each of the life cycle stages. The transition proceeds as planned, even if not all planned work is completed. The plan is drawn up based on statistical data obtained from previous projects, and personal experience developers.

Advantages of the spiral model:

Most realistically (in the form of evolution) it reflects software development;

Allows you to explicitly take into account risk at every stage of development evolution;

Includes a systematic approach step in the iterative development structure;

Uses simulation to reduce risk and improve software product.

Disadvantages of the spiral model:

Novelty (there is no sufficient statistics on the effectiveness of the model);

Increased requirements for the customer;

Difficulties in monitoring and managing development time.

Today, the following iterative software development methodologies can be distinguished:

Rational Unified Process (RUP)

Agile development methodologies (SCRUM, KANBAN, DSDM, MSF, ALM, XP)

Agile development methodology(English: Agile software development).

Most agile methodologies aim to minimize risk by reducing development to a series of short cycles called iterations, which usually last one to two weeks. Each iteration itself looks like a miniature software project, and includes all the tasks necessary to deliver a mini-increment in functionality: planning, requirements analysis, design, coding, testing and documentation. Although a single iteration is generally not sufficient to release a new version of a product, the assumption is that an agile software project is ready for release at the end of each iteration. At the end of each iteration, the team re-evaluates development priorities.

Agile methods emphasize direct, face-to-face communication. Most agile teams are located in the same office. At a minimum, it includes “customers” (customers who define the product; these can also be product managers, business analysts or clients). The office may also include testers, interface designers, technical writers and managers.

One of the most famous and advanced agile methodologies is the SCRUM methodology.

SCRUM- a methodology designed for small teams (up to 10 people). The entire project is divided into iterations (sprints) lasting 30 days each. A list of system features that are planned to be implemented during the next sprint is selected. The most important conditions are the constancy of the selected functions during one iteration and strict adherence to the deadlines for the next release, even if it is not possible to implement all the planned functionality by its release. The development manager holds daily 20-minute meetings, which are called scrum, the result of which is to determine the functions of the system, those implemented over the previous day, the difficulties encountered and the plan for the next day. Such meetings allow you to constantly monitor the progress of the project, quickly identify problems and respond promptly to them.

KANBAN– flexible, task-oriented software development methodology.

Basic Rules:

Development visualization:

o dividing work into tasks;

o use of marks about the position of the task in development;

Limiting work performed simultaneously at each stage of development;

Cycle time measurement (average time to complete one task) and process optimization.

Advantages of KANBAN:

Reducing the number of parallel tasks significantly reduces the execution time of each individual task;

Quick identification of problematic tasks;

Calculation of time to complete an average task.

DYNAMIC SYSTEM DEVELOPMENT METHOD(DSDM) was the result of the work of a consortium of 17 English companies. An entire organization is developing manuals on this methodology, organizing training courses, accreditation programs, etc. In addition, DSDM has a monetary value.

It all starts with studying the feasibility of the program and its scope. In the first case, you are trying to understand whether DSDM is suitable for a given project. The scope of application of the program is expected to be explored through a short series of seminars where programmers learn about the area of ​​business for which they will be working. The main provisions regarding the architecture of the future system and the project plan are also discussed here.

The process is then divided into three interconnected cycles: cycle functional model is responsible for creating analytical documentation and prototypes, the design and construction cycle is responsible for bringing the system into working condition, and finally, the last cycle - the implementation cycle - ensures the deployment of the software system.

The basic principles on which DSDM is built:

Active interaction with users;

Frequent version releases;

Independence of developers in decision making;

Testing throughout the entire work cycle.

Like most other agile methodologies, DSDM uses short iterations, lasting two to six weeks each. Particular emphasis is placed on high quality work and adaptability to changes in requirements.

MICROSOFT SOLUTIONS FRAMEWORK(MSF) is a software development methodology proposed by Microsoft Corporation. The MSF draws on Microsoft's practical experience and describes how to manage people and work processes during the solution development process.

Basic concepts and principles of the MSF process model:

A unified vision of the project - all interested parties and simply project participants must clearly imagine the final result, everyone must understand the goal of the project;

Managing trade-offs - finding trade-offs between project resources, schedule and feasibility;

Flexibility – readiness for changing design conditions;

Concentration on business priorities - focusing on the impact and benefit that the consumer of the solution expects to receive;

Encouraging free communication within the project;

Creating a basic version - recording the state of any project artifact, including program code, project plan, user manual, server settings and subsequent effective change management, project analytics.

MSF provides proven methodologies for planning, designing, developing and implementing successful IT solutions. Thanks to its flexibility, scalability and lack of rigid regulations, MSF is able to meet the needs of an organization or project team any size. The MSF methodology consists of principles, models and disciplines for managing people, processes, technological elements and related issues that are typical for most projects.

Application Lifecycle Management(ALM) - developed and supported by Borland.

Extreme Programming(XP) - Extreme Programming, supported by an open community of independent developers.

Essay

SOFTWARE - a set of information processing system programs and program documents necessary for the operation of these programs (GOST 19781-90). Also - a set of programs, procedures and rules, as well as documentation related to the operation of the data processing system (ST ISO 2382/1-84).

TOOL SOFTWARE – software intended for use in the design, development and maintenance of programs. Usually this term is used to emphasize the difference of this class Software from application and system software.

COMPILER – a translator that converts a program written in the source language into an object module.

INTERPRETER - a program (sometimes hardware) that analyzes commands or program statements and immediately executes them.

OPERATING SYSTEM - a set of control and processing programs, which, on the one hand, act as an interface between computer system devices and application programs, and on the other, are designed to control devices, manage computing processes, effectively distribute computing resources between computing processes and organize reliable computing .

APPLICATION PROGRAM - a program designed to perform certain user tasks and designed for direct interaction with the user.

VISUALBASIC is a software development tool developed by Microsoft Corporation that includes a programming language and development environment.

VISUALBASICFORAPPLICATION - a slightly simplified implementation of the programming language Visual Basic, built into the Microsoft Office line of products (including versions for Mac OS), as well as many other software packages such as AutoCAD, SolidWorks, CorelDRAW, WordPerfect and ESRI ArcGIS.

The purpose of the work is to study the types and functions of software, in particular instrumental software.

Software classification:

Types of tool software:

1) Text editors

4) Compilers

5) Interpreters

6) Linkers

8) Assemblers

9) Debuggers

10) Profilers

11) Documentation generators

To create a program in the chosen programming language you need to have the following components:

2. Compiler or interpreter. The source text is translated into intermediate object code using a compiler program.

Result of the work: The software, its functions and types, in particular instrumental software, its essence, and tasks are considered. The third chapter discusses Microsoft Visual Basic as a software development tool and its dialect - Microsoft Visual Basic for Application. IN course work an algorithm for solving a financial and economic problem was implemented using the Pascal programming language.

Introduction

IN modern world More than one person who has tasted the benefits of civilization cannot imagine his life without the use of computer technology. Its use occurs in any sphere of human activity: production, trade, education, entertainment and communication of people, their scientific and cultural activities. All this is thanks to the ability to select computer equipment to solve any, even the most complex problem.

However, both the versatility and specialization of computer technology is ensured by the use of a different set of software on the basis of almost any computer that provides a solution to any assigned tasks.

We all see the huge variety of computer programs and the staggering pace of their growth and improvement, and only a small part of us understand the invisible side of their design, development and creation. However, this area of ​​computer technology is, in our opinion, the most important, since the future of computer technology will depend on its development.

And since the development of any computer program occurs using Instrumental Software, in our course work I would like to dwell on it in detail, highlighting it from all software and revealing its essence and features.

For clarity, we will look at instrumental software (object of study) using the example of the VisualBasicforApplication software package (subject of study), used for programming in the Microsoft Office environment - the most widespread and popular office package.

1. Software

1.1 Concept and essence of software

Software (software) is an integral part computer system. It is a logical continuation of the technical means of any computer. The scope of application of a particular computer is determined by the software created for it. The computer itself does not have knowledge of any application. All this knowledge is concentrated in programs running on computers that have a set of specific functionality and are designed to perform specific, in most cases, highly specialized functions, such as creating and processing graphic images or sound files.

Software currently comprises hundreds of thousands of programs that are designed to process a wide variety of information for a wide variety of purposes.

Software also includes the entire area of ​​activity in software design and development:

1) program design technology (for example, top-down design, structured and object-oriented design);

2) methods of testing programs;

3) methods for proving the correctness of programs;

4) analysis of the quality of programs;

5) documenting programs;

6) development and use of software tools that facilitate the software design process, and much more.

There are many different definitions of software. In general, software is a set of information processing system programs and program documents necessary for the operation of these programs (GOST 19781-90). Also - a set of programs, procedures and rules, as well as documentation related to the operation of the data processing system (ST ISO 2382/1-84).

Software is one of the types of support for a computer system, along with technical (hardware), mathematical, information, linguistic, organizational and methodological support.

In computer slang, the word software is often used from the English word software, which in this sense was first used in an article in the American Mathematical Monthly by Princeton University mathematician John W. Tukey in 1958.

Other definitions:

1) SOFTWARE is a set of programs that allow automated processing of information on a computer.

2) SOFTWARE (mathematical support for an electronic computer), a set of programs for a data processing system and program documents necessary for implementing programs on an electronic computer.

3) SOFTWARE - a set of programs for controlling the process of computer operation and automating programming.

4) SOFTWARE - a set of computer programs that provides data processing or transmission.

All definitions are similar and reflect the essence of software - organizing the interaction of the hardware (technical) part, in the form of various built-in nodes and peripheral devices, their control and coordination of the overall interaction of the computer system with each other and with the user.

1.2 Software functions

The above concepts of software determine the functions performed by software during the operation of computer equipment. The list of these functions is very diverse, but they can be roughly divided into the following five types:

1. Hardware and mechanical. They interface various computer components and ensure the transmission of a hardware signal from one component to another.

2. Machine-Logical. Process and interpret a set of hardware electromagnetic pulses into a logically meaningful program code, having a certain structure and properties.

3. Information and command. They check the compliance of the program code with the principles of the system and create a logical structure of information and carry out its execution.

4. Interface. Provide processing and interpretation of program code into a display format accessible to the user. Creates a favorable environment for “Computer-Human, Human-Computer” interaction.

5. Applied. Performs mathematical, logical, physical and other actions with a set of available data, in other words, processing of available information to solve certain problems.

This list is far from exhaustive, which indicates the diversity and ambiguity of the functions performed by the software.

1.3 Types of software

Depending on the functions provided by a certain computer component, there is a need to create its own specialized software for it, which is the fundamental motive for creating software various types shown in (Fig. 1):

a) Application programs that directly support the execution of work required by users;

b) system programs, designed to control the operation of a computer system, perform various auxiliary functions, for example:

1) computer resource management;

2) creating copies of the information used;

3) checking the functionality of computer devices;

4) issuing reference information about the computer, etc.;

c) instrumental software systems, facilitating the process of creating new computer programs.

System software ensures the operation and maintenance of the computer, as well as the automation of the process of creating new programs. System software includes: operating systems and their user interface; software tools; maintenance systems.

Operating system is a mandatory part of special software that ensures efficient operation personal computer in various modes, organizing the execution of programs and user interaction and external devices with a computer.

User interface (service programs) are software add-ons to the operating system (shell and environment) designed to simplify the user’s communication with the operating system.

Programs that provide the interface retain the form of communication (dialogue) between the user and the operating system, but change the language of communication (usually the command language is converted into a menu language). Service systems can be divided into interface systems, operating system shells and utilities.

Interface systems are powerful service systems, most often graphic type, improving not only the user, but also the program interface of operating systems, in particular, implementing some additional procedures for sharing additional resources.

Operating system shells provide the user with a qualitatively new interface compared to that implemented by the operating system and make knowledge of the latter optional.

Utilities automate the execution of certain standard, frequently used procedures, the implementation of which would require the user to develop special programs. Many utilities have a developed interactive interface with the user and approach the level of communication to shells.

Software tools (programming systems) are a mandatory part of the software with which programs are created. Software tools include tools for writing programs (text editors); means of converting programs into a form suitable for execution on a computer (assemblers, compilers, interpreters, loaders and link editors), means of monitoring and debugging programs.

Text editors allow you to conveniently edit, form and combine program texts, and some allow you to control the syntax of the created programs.

A program written in an algorithmic language must be converted into an object module written in machine language (binary code). Such a conversion is performed by translators (assembler - from the Assembler language and compilers - from high-level languages). For some algorithmic languages, interpreters are used that do not create an object module, but, with each successive execution of the program, translate each of its separate line or machine language operator. The object module is processed by a loader - a link editor, which converts it into an executable machine program.

Debugging tools allow you to trace programs (step-by-step execution with information about execution results), check program syntax and intermediate results at breakpoints, and modify variable values ​​at these points.

Maintenance and service systems are software tools for monitoring, diagnosing and restoring the functionality of a computer, disks, etc.

Application software provides solutions to user problems. The key concept here is the application package.

An application software package is a set of programs for solving a range of problems on a specific topic or subject. The following types of application packages are distinguished:

1) general purpose - focused on automating a wide range of user tasks ( word processors, table editors, database management systems, GPUs, publishing systems, design automation systems, etc.);

2) method-oriented - implementation of various economic and mathematical methods for solving problems (mathematical programming, network planning and management, queuing theory, mathematical statistics, etc.);

3) problem-oriented - aimed at solving a specific task (problem) in a specific subject area (banking packages, accounting packages, financial management, legal reference systems, etc.).

Application software includes service software that serves to organize a convenient working environment for the user, as well as to perform auxiliary functions (information managers, translators, etc.).

When constructing a software classification, one must take into account the fact that the rapid development of computing technology and the expansion of the scope of computer applications have sharply accelerated the process of software evolution. If earlier it was easy to list the main categories of software - operating systems, translators, application software packages, now the situation has changed radically. Software development has gone both in depth (new approaches to building operating systems, programming languages, etc. have appeared) and in breadth (application programs have ceased to be applied and have acquired independent value). The relationship between the required software products and those available on the market is changing very quickly. Even classical software products, such as operating systems, are constantly evolving and endowed with intelligent functions, many of which previously related only to human intellectual capabilities.

2. Tooling software

2.1 The essence and concept of software tools

Instrumental software (IPO) is software intended for use in the design, development and maintenance of programs.

Tooling is used in the development phase. Tooling software is a collection of programs used to assist programmers in their work, to assist software development managers in their efforts to control the development process and the resulting products. The most famous representatives of this part of the software are translators from programming languages ​​that help programmers write machine commands. Instrumental programs are translators from the languages ​​Fortran, Cobol, Joe-vial, BASIC, APL and Pascal. They facilitate the process of creating new work programs. However, language translators are only the most well-known part of instrumental programs; there are a great many of them.

Using computers to help create new programs is far from obvious to people who are not professional programmers. It often happens that professionals talk about tool (development phase) and system (use phase) software in the same breath, assuming that those not privy to the secrets of their craft are aware of this role of tool software. Same as in the use phase (for application programs), system support It also works in the development phase, but only in conjunction with the tooling. Tool software or programming systems are systems for automating the development of new programs in a programming language.

In the most general case, to create a program in the selected programming language (language system programming) you need to have the following components:

1. Text editor to create a file with the source text of the program.

2. Compiler or interpreter. The source text is translated into intermediate object code using a compiler program. The source code of a large program consists of several modules (source files). Each module is compiled into a separate file with object code, which then must be combined into one.

3. A link editor or assembler that links object modules and produces a working application as an output - executable code.

Executable code is a complete program that can be run on any computer that has the operating system for which the program was created. As a rule, the resulting file has the extension .EXE or .COM.

Recently, visual programming methods (using scripting languages) aimed at creating Windows applications have become widespread. This process is automated in rapid design environments. In this case, ready-made visual components are used, which are configured using special editors.

The most popular editors (program programming systems using visual tools) for visual design:

1) Borland Delphi - designed to solve almost any application programming problem.

2) Borland C++ Builder is an excellent tool for developing DOS and Windows applications.

3) Microsoft Visual Basic is a popular tool for creating Windows programs.

4) Microsoft Visual C++ - this tool allows you to develop any applications running in an OS environment such as Microsoft Windows

Thus, the essence of software tools is to create any executable program, by converting formally logical expressions into executable machine code, as well as its control and adjustment.

2.2 Tasks and functions of the tool software

Instrumental software, as a special type of software, is characterized by general and private

functions, as for all software in general. We have discussed the general functions above, and the specialized functions that are unique to this type programs are:

1. Creating the text of the program being developed using specially established code words (programming language), as well as a certain set of characters and their location in the created file - program syntax.

2. Text translation created program into machine-oriented code accessible for computer recognition. If the volume of the created program is significant, it is divided into separate modules and each of the modules is translated separately.

3. Connecting individual modules into a single executable code, in compliance with the necessary structure, ensuring coordination of the interaction of individual parts with each other.

4. Testing and monitoring the created program, identifying and eliminating formal, logical and syntactic errors, checking programs for the presence of prohibited codes, as well as assessing the performance and potential of the created program.

2.3 Types of software tools

Based on the tasks assigned to the instrumental software, we can distinguish a large number of different types of instrumental software:

1) Text editors

2) Integrated Development Environments

4) Compilers

5) Interpreters

6) Linkers

7) Parsers and parser generators (see Javacc)

8) Assemblers

9) Debuggers

10) Profilers

11) Documentation generators

12) Code coverage analysis tools

13) Continuous integration tools

14) Automated testing tools

15) Version control systems, etc.

It should be noted that shells for creating application programs are also created by tool programs and therefore can be classified as application programs. Let us briefly consider the purposes of some instrumental programs.

Text editors.

A text editor is a computer program designed to process text files, such as creating and making changes.

Types of text editors.

Conventionally, there are two types of editors: streaming text editors and interactive ones.

Stream text editors are computer programs that are designed to automatically process input text data received from a text file in accordance with rules predefined by users. Most often the rules are regular expressions, in a dialect specific to this particular text editor. An example of such a text editor is the Sed editor.

Interactive text editors are a family of computer programs designed to make changes to a text file interactively. Such programs allow you to display the current state of text data in a file and perform various actions on it.

Often interactive text editors contain significant additional functionality designed to automate part of the editing actions, or to change the display of text data, depending on their semantics. An example of the latter type of functionality is syntax highlighting.

Text editors are designed for creating and editing text documents. The most common are MS WORD, Lexicon. Main functions text editors are:

1) working with document fragments,

2) insertion of objects created in other programs

3) breaking the text of the document into pages

4) entering and editing tables

5) entering and editing formulas

6) paragraph formatting

7) automatic creation lists

8) automatic creation of a table of contents.

Dozens of text editors are known. The most accessible are NOTEPAD (notepad), WORDPAD, WORD. The operation of a particular text editor is usually determined by functions, the purpose of which is reflected in menu items and in the help system.

Integrated Development Environment

Integrated development environment, ISD, is a software system used by programmers to develop software. Typically the development environment includes:

1) text editor

2) compiler and/or interpreter

3) assembly automation tools

4) debugger.

Sometimes it also contains tools for integration with version control systems and various tools to simplify the design of a graphical user interface. Many modern development environments also include a class browser, an object inspector, and a class hierarchy diagram for use in object-oriented software development. Although, there are development environments designed for several programming languages ​​- such as Eclipse, NetBeans, Embarcadero RAD Studio, Qt Creator or Microsoft Visual Studio, usually the development environment is intended for one specific programming language - such as Visual Basic, Delphi, Dev-C++.

A special case of ISR - environment visual development, which include the ability to visually edit the program interface.

SDK.

SDK (from the English SoftwareDevelopmentKit) or “devkit” is a development kit that allows software specialists to create applications for a specific software package, core development software, hardware platform, computer system, video game consoles, operating systems and other platforms.

The programmer, as a rule, receives the SDK directly from the developer of the target technology or system. Often the SDK is distributed over the Internet. Many SDKs are distributed free of charge to encourage developers to use a given technology or platform.

SDK vendors sometimes replace the term Software in Software Development Kit with a more precise word. For example, Microsoft and Apple provide Driver Development Kits (DDK) for developing device drivers, and PalmSource calls its development toolkit the PalmOS Development Kit (PDK).

SDK Examples :

5) Java Development Kit

6) Opera Devices SDK

Compilers.

Compiler -

1) A program or technical tool that performs compilation.

2) The machine program used for compilation.

3) A translator that converts a program written in the source language into an object module.

4) A program that translates program text in a high-level language into an equivalent program in machine language.

5) A program designed to translate high-level language into absolute code or, sometimes, into assembly language. Input information for the compiler ( source) is a description of the algorithm or program in a problem-oriented language, and the output of the compiler is an equivalent description of the algorithm in a machine-oriented language (object code).

Compilation -

1) Translation of a program into a language close to machine language.

2) Translation of a program written in the source language into an object module. Carried out by the compiler.

Compile - translate a machine program from a problem-oriented language into a machine-oriented language.

Types of compilers :

1) Vectorizing. Translates source code into machine code on computers equipped with a vector processor.

2) Flexible. Modular, table-driven, and programmed in a high-level language or implemented using a compiler of compilers.

3) Dialogue.

4) Incremental. Retransmits program fragments and additions to it without recompiling the entire program.

5) Interpretive (step-by-step). Sequentially performs independent compilation of each individual statement (command) of the source program.

6) Compiler of compilers. A translator that accepts a formal description of a programming language and generates a compiler for this language.

7) Debug. Eliminates certain types of syntax errors.

8) Resident. Lives permanently in main memory and is available for reuse by many tasks.

9) Self-compiling. Written in the same language from which the broadcast is carried out.

10) Universal. Based on a formal description of the syntax and semantics of the input language. Components such a compiler are: kernel, syntactic and semantic loaders.

Types of compilation :

1) Batch. Compiling multiple source modules into one job item.

2) Line by line.

3) Conditional. Compilation in which the translated text depends on conditions specified in the source program. So, depending on the value of a certain constant, you can turn on or off the translation of part of the program text.

Compiler structure.

The compilation process consists of the following steps:

1) Lexical analysis. At this stage, the sequence of characters in the source file is converted into a sequence of tokens.

2) Syntactic (grammatical) analysis. The sequence of tokens is converted into a parse tree.

3) Semantic analysis. The parse tree is processed to establish its semantics (meaning) - for example, binding identifiers to their declarations, types, checking compatibility, determining expression types, etc. The result is usually called "intermediate representation/code", and can be extended by the parse tree, a new tree, an abstract set of commands, or something else convenient for further processing.

4) Optimization. Removing unnecessary structures and simplifying the code while maintaining its meaning. Optimization can be at different levels and stages - for example, on intermediate code or on final machine code.

5) Code generation. From the intermediate representation, code in the target language is generated.

In specific compiler implementations, these stages can be separated or combined in one form or another.

Broadcast and post-production.

An important historical feature of the compiler, reflected in its name (English: compile - to put together, compose), was that it could also perform linking (that is, it contained two parts - a translator and a linker). This is due to the fact that separate compilation and linking as a separate assembly stage emerged much later than the advent of compilers. In this regard, instead of the term “compiler”, the term “translator” is sometimes used as a synonym: either in old literature, or when they want to emphasize its ability to translate a program into machine code (and vice versa, the term “compiler” is used to emphasize the ability to compile from many files one).

Interpreters.

Interpreter (programming language) -

1) A program or technical tool that performs the interpretation.

2) A type of translator that performs statement-by-statement (command-by-command) processing and execution of the source program or query (as opposed to a compiler that translates the entire program without executing it).

3) A program (sometimes hardware) that analyzes commands or program statements and immediately executes them.

4) A language processor that analyzes the source program line by line and simultaneously performs the prescribed actions, rather than generating a compiled program in machine language that is subsequently executed.

Types of interpreters.

A simple interpreter analyzes and immediately executes (the actual interpretation) the program command-by-command (or line-by-line), as its source code arrives at the interpreter input. The advantage of this approach is the instant response. The disadvantage is that such an interpreter detects errors in the program text only when an attempt is made to execute a command (or line) with an error.

A compiler-type interpreter is a system consisting of a compiler that translates the source code of a program into an intermediate representation, for example, into bytecode or p-code, and the interpreter itself, which executes the resulting intermediate code (the so-called virtual machine). The advantage of such systems is the greater speed of program execution (due to the removal of source code analysis into a separate, one-time pass, and minimization of this analysis in the interpreter). Disadvantages are a greater requirement for resources and a requirement for the correctness of the source code. It is used in languages ​​such as Java, PHP, Python, Perl (bytecode is used), REXX (the result of source code parsing is saved), as well as in various DBMSs (p-code is used).

If the compiler type interpreter is divided into components, the result is a language compiler and a simple interpreter with minimal source code analysis. Moreover, the source code for such an interpreter does not have to be in text format or be bytecode that only this interpreter understands; it can be machine code of some existing hardware platform. Eg, virtual machines like QEMU, Bochs, VMware include machine code interpreters for x86 family processors.

Some interpreters (for example, for the languages ​​Lisp, Scheme, Python, BASIC and others) can work in dialog mode or the so-called read-eval-printloop (REPL). In this mode, the interpreter reads a complete language construct (for example, an s-expression in Lisp), executes it, prints the results, and then proceeds to wait for the user to enter the next construct.

Unique is the Forth language, which is capable of working in both interpretation and compilation modes of input data, allowing you to switch between these modes at any time, both during translation of the source code and while programs are running.

It should also be noted that interpretation modes can be found not only in software, but also in hardware. Thus, many microprocessors interpret machine code using built-in firmware, and processors of the x86 family, starting with the Pentium (for example, on Intel architecture P6), during the execution of machine code, they pre-translate it into an internal format (into a sequence of micro-operations).

Algorithm for a simple interpreter :

2. analyze the instructions and determine the appropriate actions;

3. take appropriate actions;

4. If the program termination condition is not reached, read the following instructions and go to step 2.

Advantages and disadvantages of interpreters.

1) Greater portability of interpreted programs - the program will run on any platform that has an appropriate interpreter.

2) As a rule, more advanced and visual means of diagnosing errors in source codes.

3) Simplification of debugging of program source codes.

4) Smaller sizes code compared to machine code obtained from conventional compilers.

1) An interpreted program cannot be executed separately without an interpreter program. The interpreter itself can be very compact.

2) The interpreted program runs slower because intermediate analysis of the source code and scheduling of its execution requires additional time compared to the direct execution of the machine code into which the source code could be compiled.

3) There is practically no code optimization, which leads to additional losses in the speed of interpreted programs.

Linker.

Linker (also link editor, linker) - a program that performs linking - takes one or more object modules as input and assembles an executable module from them.

To link modules, the linker uses name tables created by the compiler in each of the object modules. Such names can be of two types:

1) Defined or exported names - functions and variables defined in a given module and made available for use by other modules.

2) Undefined or imported names - functions and variables that the module refers to, but does not define them internally.

The linker's job is to resolve references to undefined names in each module. For each imported name, its definition is found in other modules; the mention of the name is replaced by its address.

The linker generally does not check the types and number of parameters of procedures and functions. If you need to combine object modules of programs written in languages ​​with strong typing, then the necessary checks must be performed by an additional utility before launching the link editor.

Assembler.

An assembler (from the English assembler - assembler) is a computer program, a compiler of the source text of a program written in assembly language into a program in machine language.

Like the (assembly) language itself, assemblers are typically specific to a particular architecture, operating system, and variant of language syntax. At the same time, there are multi-platform or even universal (more precisely, limited-universal, because it is impossible to write hardware-independent programs in a low-level language) assemblers that can run on different platforms and operating systems. Among the latter, one can also distinguish a group of cross-assemblers capable of collecting machine code and executable modules (files) for other architectures and operating systems.

Assembly may not be the first or the last step on the path to obtaining an executable program module. Thus, many compilers from high-level programming languages ​​produce the result in the form of an assembly language program, which is further processed by the assembler. Also, the result of assembly may be not an executable, but an object module containing disparate and unrelated parts of machine code and program data, from which (or from several object modules) can later be assembled using a linker program (“linker”) executable file.

A debugger or debugger is a development environment module or a separate application designed to find errors in a program. The debugger allows you to perform step-by-step tracing, monitor, set or change variable values ​​during program execution, set and remove breakpoints or stopping conditions, and so on.

List of debuggers.

1) AQtime is a commercial debugger for applications created for the .NET Framework versions 1.0, 1.1, 2.0, 3.0, 3.5 (including ASP.NET applications), as well as for Windows 32- and 64-bit applications.

2) DTrace - dynamic tracing framework for Solaris, OpenSolaris, FreeBSD, Mac OS X and QNX.

3) Electric Fence - memory debugger.

4) GNU Debugger (GDB) - a program debugger from the GNU project.

5) IDA is a powerful disassembler and low-level debugger for Windows and Linux operating systems.

6) Microsoft Visual Studio - a software development environment that includes debugging tools from Microsoft.

7) OllyDbg is a free low-level debugger for Windows operating systems.

8) SoftICE is a low-level debugger for operating systems of the Windows family.

9) Sun Studio - software development environment, including the dbx debugger for Solaris and Linux OS, from Sun Microsystems Corporation.

10) Dr. Watson is a standard Windows debugger that allows you to create memory dumps.

11) TotalView is one of the commercial debuggers for UNIX.

12) WinDbg is a free debugger from Microsoft.

Documentation generator is a program or software package that allows you to obtain documentation intended for programmers (API documentation) and/or for end users of the system, for specially commented source code and, in some cases, for executable modules (obtained at the output of the compiler).

Typically, the generator analyzes the source code of the program, highlighting syntactic structures corresponding to significant program objects (types, classes and their members/properties/methods, procedures/functions, etc.). The analysis also uses meta-information about program objects, presented in the form of documenting comments. Based on all the collected information, ready-made documentation is generated, usually in one of the generally accepted formats - HTML, HTMLHelp, PDF, RTF and others.

Documenting comments.

A documenting comment is a specially formatted comment on a program object intended for use by a specific documentation generator. The syntax of the constructs used in documenting comments depends on which documentation generator is used.

Documenting comments may contain information about the author of the code, describe the purpose of the program object, the meaning of input and output parameters for a function/procedure, examples of use, possible exception situations, and implementation features.

Documenting comments are typically formatted as multiline C-style comments. In each case, the comment must appear before the element being documented. The first character in a comment (and at the beginning of comment lines) must be *. Blocks are separated by blank lines.

3. Visual Basic for Applications

software operating system

3.1 The essence of VisualBasic and its brief history

Microsoft Visual Basic (VB) is a software development tool developed by Microsoft Corporation that includes a programming language and development environment. The Visual Basic language inherited the spirit, style and partly the syntax of its ancestor - the BASIC language, which has many dialects. At the same time, Visual Basic combines the procedures and elements of object-oriented and component-oriented programming languages. The VB development environment includes tools for visually designing user interfaces. (see table).

Visual Basic (key features)

Visual Basic is considered a good tool for quickly developing program prototypes, for developing database applications, and in general for a component-based method of creating programs running under operating systems of the Microsoft Windows family.

In the process of evolution, Visual Basic went through a number of successive stages that allowed it to become one of the most popular programming languages ​​today. So evolution VisualBasic went the following way:

1. May 1991 - Visual Basic 1.0 was released for Microsoft Windows. The QBasic syntax was taken as the basis of the language, and the innovation that later brought the language enormous popularity was the principle of connection between the language and the graphical interface.

2. September 1992 - Visual Basic 1.0 for DOS was released. It was not fully compatible with the Windows version of VB, since it was a subsequent version of QuickBASIC and ran in a text-based screen mode.

3. November 1992 - Visual Basic 2.0 released. The development environment became easier to use and faster.

4. in the summer of 1993 - Visual Basic 3.0 was released in Standard and Professional versions. In addition, an engine for working with Access databases has been added to the package.

5. August 1995 - Visual Basic 4.0 - a version that could create both 32 and 16-bit Windows programs.

6. February 1997 - Visual Basic 5.0 - starting with this version, it became possible, along with regular applications, to develop COM components.

7. In mid-1998, Visual Basic 6.0 was released. After this, Microsoft dramatically changed its policy regarding Basic languages. Instead of developing Visual Basic, a completely new language, Visual Basic .NET, was created.

8. In 2005, a new version of Visual Basic was released, bundled with Visual Studio. She was pleased with the new interface and capabilities. The language is based on Visual Basic.NET.

9. At the end of 2007 Microsoft released new version Visual Basic - Visual Basic 2008, which was also based on Visual Basic.NET.

Based on the functionality and specifics of the application, the following types of this program can be distinguished:

1. Classic Visual Basic (versions 5-6) This language is very strongly tied to its development environment and to the Windows operating system, being exclusively a tool for writing Windows applications

2. VisualBasicforApplications (VBA) This is a programming tool, practically no different from the classic Visual Basic, which is designed for writing macros and other application programs for specific applications. It gained the greatest popularity due to its use in the Microsoft Office suite. The widespread use of Visual Basic for Applications, combined with an initial lack of attention to security issues, has led to the widespread use of macro viruses.

3. VisualBasicScriptingEdition (VBScript) A scripting language, which is a somewhat truncated version of the usual Visual Basic. Used primarily to automate the administration of Windows systems, as well as to create ASP pages and scripts for Internet Explorer.

3.2 VisualBasicforApplication interface, main functions and capabilities

By creating VisualBasicforApplication, Microsoft Corporation set as its main goal the creation of tools that are accessible to users who are not professional programmers, but at the same time qualified enough to develop and design application programs and applications based on Microsoft Office. It was to solve this problem that the developers created VBA, endowing it with a number of unique features. One of these, the most valuable for the user, is the ability to create and use non-standard (custom) dialog boxes, adding a UserForm object to the project, as well as a convenient user interface.

The VisualBasicforApplication program interface consists of a complex of various windows and tabs used in design the application being created, the main ones being:

1) Project window (Fig. 2), displaying the structure of the created project.

2) the Program Code window (Fig. 3), displaying the program code of the created project and making it possible to write a program in the classical way using the built-in code word editor, of which there are more than 16 thousand in VBA. This window also allows you to edit the code and check it for errors.

3) the Properties tab (Fig. 4), displaying the parameters set for the specified object and making it possible to change the specified settings.

By moving between windows and tabs, the user can easily customize the created project.

Using VBA user-created forms, you can create custom dialog boxes to display data or receive values ​​from the program user in a way that best suits the program's needs. For example, you can create a test, display a dialog box to display multiple-choice questions, and allow the user to select one of the answer options that they believe is correct.

Non-standard dialog boxes allow the program to interact with its user in the most complex way and provide a varied form of data input and output.

A custom dialog is created in VBA by adding a UserForm object to the project. This object represents an empty dialog box; it has a title bar and a close button, but lacks any other controls. A custom dialog box is created by adding controls to a UserForm object and is usually simply called a form (Figure 5).

Each UserForm object has properties, methods, and events that it inherits from the UserForm object class.

Each UserForm object also contains a class module into which the user adds his own methods and properties or writes event handling procedures for a given form.

The ability to create your own interface, independent of the application environment, such as Excel, using display forms is one of the most valuable features in VBA.

Screen forms are windows of various purposes and types created by the user for his application. They contain controls that allow the user to exchange information with the application.

VBA uses the created graphical design of the form - with settings for the form properties and controls - to obtain all the information necessary to display the dialog box: the dimensions of the dialog box, the controls in it, etc. As a result, VBA allows you to display a dialog box form with a single statement.

To display a custom dialog box, use the Show method of the UserForm object. If the form is not currently loaded into memory, the Show method loads the form and displays it. If the form is already loaded, the Show method simply displays it.

Displaying a single dialog box is usually not enough to complete a task. You almost always want to determine the state of a dialog box's controls to find out what data or options the user has selected. For example, if a dialog box is used to obtain information from the user about which columns and rows a worksheet should be sorted by, you need to be able to find out what values ​​the user entered after the dialog box is closed and before the ordering operation actually begins.

In other cases, you may want to dynamically change the titles of buttons (or other controls) on a dialog box, dynamically update a label or field associated with a counter, or dynamically validate data entered into a dialog box.

In VBA, it becomes possible to significantly expand the set of functions built into a standard application, such as Microsoft Excel, as well as create functions whose values ​​depend on certain conditions and events.

VBA allows you to program table functions. To create a separate worksheet for a program module, use the Insert Module tab from the Visual menu and the Module command from the Insert Macro menu. After this, a new worksheet "Modele1" will appear. In a program module, you need to describe a function in VBA. You can work in the program module window as if you were in a small text editor window.

Embedding of functions is carried out by the Object Browser command from the View menu. User-defined functions are treated as independent objects in the program. VBA has a significant set of built-in functions, dividing them into types.

Visual Basic allows you to reserve variables, with or without size, work with various data types, use constants, work with mathematical operators and functions, and use additional operators. The use of operators is provided For loops Next, Do, objects of the “timer” type (invisible stopwatch in the program). The accuracy of setting the time in the program is 1 millisecond, or 1/1000 sec. The started timer is constantly running - i.e. the corresponding interrupt handling procedure is executed at a specified time interval - until the user stops the timer or disables the program.

In VBA, you can set any property for a form, including title, size, border type, background and character colors, text font, and background image.

If we summarize all the functions of the program, then Visual Basic forApplication allows you to:

1) work with controls

Advantages :

1. High speed creating applications with graphical interface for MS Windows.

2. Simple syntax that allows you to master the language very quickly.

3. Possibility of compilation both into machine code and into P-code (at the programmer’s choice). In debug mode, the program is always (regardless of choice) compiled to P code, which allows you to pause the program, make significant changes to the source code, and then continue execution without the need for a complete recompilation and restart of the program.

4. Protection against errors associated with the use of pointers and memory access. This aspect makes Visual Basic applications more stable, but is also the subject of criticism.

5. Ability to use most WinAPI functions to expand the functionality of the application. This issue has been most fully studied by Dan Appleman, who wrote the book “Visual Basic Programmer's Guide to the Win32 API.”

Criticism :

1. Aspects of Visual Basic are often criticized, such as the ability to disable tracking of declared variables, the ability to implicitly convert variables, and the presence of the “Variant” data type. According to critics, this makes it possible to write extremely bad code. On the other hand, this can be seen as a plus, since VB does not impose " good style", but gives more freedom to the programmer.

2. Lack of pointers, low-level memory access, ASM inserts. Despite the fact that the Visual Basic paradigm allows the average VB programmer to do without all this, these things also often become objects of criticism. And although, using undocumented features and certain tricks, all this can be implemented in VB (for example, using functions for obtaining pointers VarPtr(), StrPtr() and ObjPtr()); Using these tricks is much more difficult than, for example, in C++.

However, it is worth noting that all the disadvantages of the language stem from its main advantage - the ease of developing a graphical interface. Therefore, many programmers use Visual Basic to develop the user interface, and implement the program functionality in the form of dynamic link libraries (DLLs) written in another language (most often C++).

4. Practical part

4.1 Problem statement

Draw a block diagram and write a program in Pascal. Calculate the intrinsic value of securities. The intrinsic value of an asset is determined by the future stream of income from that asset.

pv – current intrinsic value of the stock

c – expected receipt from the asset in question

r – rate of return expected by the investor for income with the corresponding level of risk

n – time factor (in months).

Perform market analysis and sort the results in ascending order of the data obtained.

4.2 Program text in Pascal language

pv: array of real;

writeLn('Enter expected receipt from ',i,'th asset c:');

writeLn('Enter the rate of return expected by investor r:');

pv:=c/exp(ln(1+r)*i);

writeLn('current intrinsic value of asset is', pv[i]:1:3);

writeLn('The intrinsic value of the asset is', s);

for j:=1 to 4 do

if pv[j] > pv then

writeLn('Asset value sorted in ascending order');

for i:=1 to 5 do

writeLn(pv[i]:1:3);

4.3 Test case

4.4 Result of executing the program on a test example

Conclusion

So, summing up all of the above, it should be noted that tool software is one of the types of software, having its general tasks and functions.

However, being a highly specialized type of software, it has a certain set of unique properties and functions that provide solutions to its specific problems.

It is necessary to note the emerging trend towards simplifying the programming process and creating a certain subclass - semi-professional programming for applied purposes.

This is what will allow an experienced computer user, but not a professional programmer, to create certain applications and small files executable in the Microsoft Office environment, used primarily for accounting purposes and document flow in small companies.

It is for this purpose that Microsoft developed the VisualBasicforApplication software package, which simplifies the programming process and makes it possible for users, rather than programmers, to engage in application programming. This opportunity was implemented primarily by creating a program section - “Script Editor” and the ability to record and execute “Macros” as a separate type of graphically programmable modules. The ability to create applications with a graphical interface for MS Windows has been implemented. Another advantage of this type of tool software is its simple syntax, which allows you to quickly master the language and use it for programming in all standard Microsoft Office applications.

Therefore, it is difficult to overestimate the importance of tooling in general, and VisualBasicforApplication in particular, although the shortcomings, as mentioned above, also exist. But these are rather not even negative aspects of the product, but rather guidelines for further improvement of the software in the form of VisualBasicforApplication.

1. Algorithmic languages real time / Ed. Yanga S. / 2004

2. PC Magazine Russian Edition No. 2 2008 Computer today.

3. Computer science. /Ed. Mogilev A.V., Pak N.I., Henner E.K./ - M.: ACADEMIA, 2000.

4. Computer science and information Technology: Textbook / Ed. Romanova D.Yu. / Eksmo Publishing House LLC, 2007.

5. The latest encyclopedia of the personal computer / Ed. Leontyeva V. /Moscow, 1999. – 271 p.

6. New programming languages ​​and trends in their development / Ed. Ushkova V. / 2001

7. Pedagogy / Ed. Pidkasistogo P.I./ – M.: Pedagogical Society Russia, 2000.

8. Programming for Microsoft Excel 2000 in 21 days. /Ed. Kharisa M./ – M.: Williams, 2000.

9. Simonovich S. Informatics: basic course. Textbook for universities. St. Petersburg, Peter, 2002

10. No problem with Excel 2000. /Ed. Kowalski/ – M.: Binom, 2000.

11. “Effective work in Windows 98” / Ed. Stinson K. / 2000. – 247 p.

12. Programming languages. book 5 /Ed. Vaulina A.S. / 2003

13. Programming languages: development and implementation / Ed. Terrence P. / 2001

14. Electronic textbook on computer science. Alekseev E.G. http://www.stf.mrsu.ru/economic/lib/Informatics/text/Progr.html\