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

Using the 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 the “lingua franca”. Where formal English is the carefully chosen names of keywords and variables, addressed to associative and creative thinking in the original language.

Björn Straustrup, noting the close connection between the language in which we think and program, as well as between tasks and their solutions, which you can imagine in your imagination, argues that “limiting the language’s capabilities to only searching for programmer errors is dangerous at best.” [ 1]

T.O. modern professional programming involves 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 in increasing order: Subordinate bilingualism, Coordinate bilingualism and Mixed bilingualism. [2]

A non-English speaking individual who knows formal English can be assigned 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 to a coordinating bilingual group in the sense of owning a formal language as autonomous in the bilingual consciousness. Neither the first nor the second options make it possible to build equal communicative systems in the speaker’s mind.

In the annotation to one of the famous scientific programming methodologies - Literate Programming, Donald Knuth [3]compares the work of a programmer with the work of an essayist, whose main concern is exposition and the perfection of style. “Such an author, with a dictionary in his hand, carefully selects the names of the variables and explains why each of them is needed.” the assimilation of formal representations takes place. Claude Shannon in the mathematical theory of communication calls such actions compression, comparing two extreme examples of redundancy in English prose, basic English with enormous redundancy and the books of James Joyce. [4]

For example, an attempt to implement Literary Programming using 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 the design of information systems (IP) [5] whose development continues, therefore it is of interest to describe this process through available scientific methods in order to develop such an approach to methodologies programming, which in the context of "a group of researchers - an object" or "researcher - an object" gave us the most optimal way to solve the problem.

To do this, we abstract from specific implementations of a variety of engineering methodologies from the perspective of the general theory of systems and the theory of communication (system-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 you to replace the solution of one large problem with a series of smaller problems. Most often, decomposition is carried out by constructing 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 as a hierarchical structure. [6]] [7]

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

Communication - in the theory of communication (systemic-cybernetic methodology),it is a specific operation that characterizes exclusively social systems, during which redistribution of knowledge and ignorance occurs. Communication is established through the synthesis of three different breeding - 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. [8]
Systems theory suggests that nothing is tolerated. Redundancy is created in the sense that communication begets memory. [8]

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

It should be noted that effective communication (EC) is established only when the differentiation of message and information is understood at least once. Communication efficiency in a rigid hierarchical structure is unlikely. It is directly related to the goodwill of interpersonal relationships. “You should not expect a fruitful exchange of information if the project participants are placed in a competitive environment or separated by barriers to 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 studied system into vertically built levels. In the network interaction of active agents, each of them, depending on the situation and the problem to be solved, can act both as a managed entity and as a managing body [10].

Niklas Luman in the theory of communication (systemic-cybernetic methodology), argues that "only communication can communicate and that only in the network of such communications is what we understand as 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, teamwork on essays on Wikipedia)

It can be assumed that decompositions and communications are downward and upward processes, where the decomposition receives the redundancy of options generated by Communication, which makes it possible to efficiently reconfigure the original structure in accordance with changing requirements. Decomposition is perceived here as an action, i.e. self-organization or autopoiesis occurs - as a way to reproduce a given system ...

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

Based on these assumptions, it is possible to highlight the problems characteristic of existing software design methodologies:

1. Due to the fact that direct communication for flexible methodologies plays an important role - in communication theory we are talking about creating a memory that 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 install them in a geographically distributed environment, large groups, apparently numbering 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 project history, the so-called additional context and do not provide an answer to a number of questions - why and why. Therefore, it is not possible to conduct a detailed analysis and make a forecast for the further development of both a single project and engineering methodologies in general.

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

In turn, each of these documents leads to a doubling of reality by creating two versions of it, which in practice can lead to errors or multiply them. For example, programmers tend to forget some requirements when reading a task.

Each new communication substrate is a representation of a system element 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 differentiates the system represented from other parts of the system.

An example of such paradoxes is documents that are not synchronized with code, which can turn into bulky, logically contradictory sources of untruthful information and are unlikely to be put into practice. [12]

Using verbal discussions in XP (eXtremeProgramming) or formal specifications in a cascading method are ways to achieve 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-referential system and a doubling of reality through the creation of two versions of it.

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

Summarizing the above, we can conclude that the texts of the project, if possible, should be a single substrate of communication, or a literary work written in "lingua franca" of the project, understandable to all its participants. In this case, at any stage of design, we are able to generate or modify or supplement the project in a minimum number of separate substrates. It seems that the optimal 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, in contrast to the "lingua franca" of the English language used by an individual community of professionals.

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 are presented in an order that is best for human understanding." [3] ;
- scientific methodologies can solve extremely complex problems, and, therefore, can be applied in the process of teaching programming;
- “communication redundancy” is accumulated in each project in the form of a project development history, which makes it possible to create a basis for further successful development and development of the project, regardless of the time or the initial development team.

To solve this problem, the following approach is proposed, which is a set of ideas and methods:

1. The use of ready-made and time-tested, open source solutions, such as LLVM GCC or the like, which allows the development of 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 invariable model of programming languages ​​with practical developments in the internationalization of software, in particular, the use of objects and dictionaries of keywords in the compilation process, can be considered as a variable 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.

References:
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. Executive 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 (English) // Bell System Technical 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 .: FAZIS, 1998.
7. The decomposition method in the construction of adaptive sonar systems. I.A. Kirichenko, I.B. Starchenko. Engineering Herald of the Don. Number 4 (part 1), 2012
8. What is communication? - Nicholas Luman.
9. Psychology of managing software projects S. Arkhipenkov
10. Novikov D.A. Network structures and organizational systems. - M.: IPU RAS, 2003 .-- S. 4.
11.Nazarchuk A.V. Communication theory in modern philosophy. —M .: Progress-Tradition, 2009. —C. 186-189.
12. Fast development of programs. Principles, Examples, Practice. Author: Robert C. Martin, James W. Newkirk, Robert S. Koss - Williams Publishing House 2004.

Also popular now: