📜 ⬆️ ⬇️

Modern software design technologies in the context of communication theory and decomposition method

Using native language for beginners to learn programming is a traditional practice in the process of learning computer science. She is opposed by professional and scientific software development, in which English is “lingvo franca”. Where formal English is the carefully chosen names of keywords and variables, addressed to associative and creative thinking in the original language.

Bjorn Stroustrup, noting the close connection between the language in which we think and program, and also between tasks and their solutions, which can be imagined in our imagination, says that “limiting the possibilities of a language only to finding a programmer’s mistakes is dangerous at best.” [ one]

So Modern professional programming presupposes the presence of an English-speaking individual or bilingual - a person who equally speaks two languages. Here, in practice, we often have mixed bilingualism of varying degrees, due to the fact that formal English has a very limited vocabulary.

Sociolinguistics defines 3 degrees of bilingualism at a higher rate: Subordinate bilingualism, Coordinating bilingualism and Mixed bilingualism. [2]
')
A non-English speaking individual who speaks formal English can be attributed to a subordinate group, in the sense of interfering with the natural language as a result of the primitiveness of grammatical, semantic and other structures, and a coordinating bilingual group in the sense of owning a formal language as autonomous in the bilingual mind. Neither the first nor the second option makes it possible to build in the speaker's mind equal communication systems.

In the annotation to one of the well-known scientific programming methodologies - Literary Programming (Literate Programming), Donald Knuth [3] compares the work of a programmer with the work of an essayist, whose main concern is exposure and perfection of style. “Such an author, with a dictionary in hand, carefully chooses the names of variables and explains why each of them is needed.” Thus there is an assimilation of formal representations. Claude Shannon in the mathematical theory of communication calls such actions compression, comparing two extreme examples of the redundancy of English prose, basic English with great redundancy and the book of James Joyce. [four]

For example, an attempt to implement Literary Programming with BASIC ENGLISH will lead to a significant increase in the volume of the program.

Software engineering (software engineering) as a special field of knowledge, uses formal and flexible methodologies for designing information systems (IS) [5], which is being developed, therefore, it is of interest to describe this process through available scientific methods to develop such an approach to methodologies. programming, which in the contexts “group of researchers is an object” or “researcher is an object”, gave us the most optimal way to solve the problem.

To do this, we abstract away from specific implementations of the variety of engineering methodologies from the standpoint of the general theory of systems and the theory of communication (systemic-cybernetic methodology), we introduce 2 main elements - Decomposition and Communication .
We use the following definitions:
Decomposition is a scientific method that uses the structure of the problem and allows replacing the solution of one large task with the solution of a series of smaller tasks. Most often, decomposition is carried out by building a tree of goals and a tree of functions. [6] [7]

In the general theory of systems, it is proved that most systems can be decomposed into basic representations of subsystems. Thus, the system can be displayed in a hierarchical structure. [6]] [7]

Example of decomposition in XP (eXtremeProgramming) - Hierarchy of User history-tasks (tasks).

Communication - in the theory of communication (system-cybernetic methodology), this is a specific operation, characterizing exclusively social systems, during which there is a redistribution of knowledge and ignorance. Communication is established through the synthesis of three different selections - namely, the selection of information, the selection of the message of this information and the selective understanding or misunderstanding of the message and its information. [eight]
Systems theory suggests that Nothing carries over. Redundancy is created in the sense that communication generates memory. [eight]

It is believed that the volume of communication in a successful project can take up to 50% of the working time. “Only through effective communications can a synergistic effect be achieved that distinguishes a team from just a group.” [9]

It should be noted that effective communication (EC) is established only when the differentiation of a message and information is understood at least once. The effectiveness of communications in a rigid hierarchical structure is unlikely. It is directly related to the goodwill of interpersonal relationships. “One should not expect a fruitful exchange of information if the project participants are placed in a competitive environment or are separated by barriers in the job hierarchy” [9]
In this case, we can talk about the presence of a network principle, which implies the absence of any division of the system under investigation into vertically aligned levels. In the case of network interaction of active agents, each of them, depending on the situation and the task being solved, can act both as a controlled subject and as a governing body [10].

Niklas Luhmann in the theory of communication (system-cybernetic methodology), argues that "only communication can communicate and that only in a network of such communications is what we understand as an action." [8]

At the same time - the history of communications can be classified and structured in the form of a hierarchy, where the effectiveness of certain communications can be evaluated by all project participants. (For example, the collective work on the Essay on Wikipedia)

It can be assumed that decomposition and communication are descending and ascending processes, where the Decomposition receives the redundancy generated by the Communication options, which makes it possible to effectively reconfigure the original structure in accordance with changing requirements. Decomposition is perceived here as an action, so self-organization or autopoiesis occurs - as a way to reproduce this system ...

For example, in the Scrum [5] methodology, the result of this practice is called “willingness to change.”

Based on these assumptions, it is possible to identify problems specific to existing software design methodologies:

1. Due to the fact that direct communication for flexible methodologies plays an important role - in the theory of communication, we are talking about the creation of memory, which tends to degrade over time - to be forgotten.

2. In flexible methodologies - the process of creating effective communications ceases to work, due to the inability to establish them in a geographically distributed environment, large groups, most likely with more than 15 people, and in mixed teams of developers of different qualifications.

Common for engineering formal and flexible software design methodologies - they do not leave the history of the project, the so-called. additional context and do not give an answer to a number of questions - why and why. Consequently, it is not possible to carry out a detailed analysis and make a forecast of the further development of both a single project and engineering methodologies as a whole.

Therefore, a communication substrate is needed, where a meeting of many communicants can occur and at the same time the memory of communication and its borders are preserved [11]. In our case, these substrates are the source code of the program, the TOR, algorithms, a description of the project architecture and documentation.

In turn, each of these documents leads to a doubling of reality through the creation of two of its versions, which in practice can lead to errors or multiply them. For example, programmers tend to forget about certain requirements when reading a task.

Each new communication substrate is a representation of an element of the system through a part of the system or its representation, which in this sense is always paradoxical. The paradox is that in order to represent the elementary part, it produces a differentiation of the representation from other parts of the system.

An example of such paradoxes are documents that are not synchronized with the code, which can turn into cumbersome and logically contradictory sources of false information and are unlikely to be used in practice. [12]

Using verbal discussions in XP (eXtremeProgramming) or formal specifications in a cascade method are ways to achieve a paradox removal.

In turn, the existence of the English language as a “lingua franca” outside the English-speaking environment is also an example of a self-reference system and doubling of reality through the creation of two of its versions.

For example, the TK compiled in the customer’s native language must be translated into the English language of the algorithm. In order to document an algorithm or source code, work must be done on the translation and explanation of what is already disclosed in the algorithm or source code itself. [12]

Summarizing what has been said, it can be concluded that, if possible, the texts of the project should be a single communication substrate, or a literary work written in the “lingvo franc” of the project, which is understandable to all of its participants. In this case, at any design stage, we are able to generate or modify or supplement the project in the minimum number of separate substrates. It seems that the best alternative to modern engineering methodologies, such as, for example, Scrum (dump), should be the scientific methodology of a literary work in the "lingua franca" of native speech, as opposed to the "lingvo franca" of the English language used by a single professional community.

The evolution of programming should go beyond the formal approach, and become part of the native language, because:

- for better documentation of programs, it is necessary that “her ideas should be presented in a manner that is best for human understanding.” [3] ;
- scientific methodologies allow to solve extremely complex problems, and, therefore, can be used in the process of learning programming;
- in each project, “communication redundancy” is accumulated, in the form of the project development history, which makes it possible to create a basis for further successful development and development of the project, regardless of time or the initial development team.

To solve the problem, we propose the following approach, which is a combination of ideas and methods:

1. The use of ready-made and time-tested, open source solutions, such as LLVM GCC or similar, which allows you to develop non-English programming languages ​​that can be implemented for all existing computing platforms, including those with limited resources, the so-called embedded systems.
2. The combination of an immutable model of programming languages ​​with practical flows in the internationalization of software, in particular, the use of objects and dictionaries of keywords in the compilation process, can be considered as a changeable grammar of parsing.
3. The use of uniquely reversible transliteration systems based on ASCII characters to create a mechanism for translating source code and documentation into English, which is a condition for obtaining a competitive source code.

Literature:
1. Bjarne Stroustrup. The C ++ Programming Language, 4th Edition - Pearson Education, Inc. s-17.
2. Dictionary of sociolinguistic terms. - M .: Russian Academy of Sciences. Institute of Linguistics. Russian Academy of Linguistic Sciences. Responsible editor: Doctor of Philology V.Yu. Mikhalchenko. 2006
3. Literate Programming Donald E. Knuth The Computer Journal September 1983
4. Shannon CE A Mathematical Theory of Communication (Eng.) // Bell System Technical Journal [en]: journal. - 1948. - Vol. 27. - p. 379-423.
5. D.V. Koznov. Introduction to software engineering. Part I. Publishing house of St. Petersburg University, 2005, 43 p.
6.Pavlovsky Yu.N., Smirnova T.G. The problem of decomposition in mathematical modeling. - M .: FASIS, 1998.
7. The method of decomposition in the construction of adaptive sonar systems. I.A. Kirichenko, I.B. Starchenko. Engineering Bulletin of the Don. Number 4 (part 1), 2012
8. What is communication? - Nicholas Luhmann.
9. Psychology of software project management S.Arkhipenkov
10. Novikov D.A. Network structures and organizational systems. - Moscow: IPU RAS, 2003. - p. 4.
11.Nazarchuk A.V. The Theory of Communication in Modern Philosophy. — .: Progress-Tradition, 2009. —. 186–189.
12. Fast software development. Principles, examples, practice Author: Robert K. Martin, James V. Newkirk, Robert S. Koss –Williams Publishing House 2004.

Source: https://habr.com/ru/post/204692/


All Articles