通信理論と分解法の文脈における最新のソフトウェア設計技術

プログラミング言語を習得するために初心者が母国語を使用することは、コンピューターサイエンスを学習するプロセスの伝統的な慣習です。 彼女は、英語が「共通語」である専門的および科学的なソフトウェア開発に反対しています。 正式な英語は、キーワードと変数の慎重に選択された名前であり、元の言語の連想的かつ創造的な思考に対応しています。



BjörnStraustrupは、私たちが考えている言語とプログラムの間、および想像力で想像できるタスクとそのソリューションの間の密接な関係に注目して、「プログラマーのエラーのみを検索するように言語の機能を制限することは、せいぜい危険である」と主張します。[ 1]



T.O. 現代のプロフェッショナルプログラミングには、英語を話す個人またはバイリンガルの存在が含まれます。2人の言語を等しく話す人です。 ここで、実際には、正式な英語の語彙が非常に限られているという事実のために、さまざまな程度のバイリンガリズムが混在しています。



社会言語学では、下位バイリンガリズム、調整バイリンガリズム、混合バイリンガリズムの 3つのバイリンガリズムを昇順に定義しています。 [2]



正式な英語を話す非英語圏の個人は、文法、意味、およびその他の構造の原始性の結果として自然言語に干渉するという意味で下位グループに割り当てられ、バイリンガル意識で自律的な形式言語を所有するという意味での調整バイリンガルグループに割り当てられます。 最初の選択肢も2番目の選択肢も、話者の頭の中に同等のコミュニケーションシステムを構築することを可能にしません。



有名な科学的プログラミング手法の1つであるLiterate Programmingへの注釈で、ドナルドクヌース[3]は、プログラマーの仕事をエッセイストの仕事と比較しています。 「そのような著者は、辞書を手に、変数の名前を慎重に選択し、それぞれの変数が必要な理由を説明します。」 正式な表現の同化が行われます。 クロードシャノンは、このようなアクションを数学的コミュニケーション理論の圧縮と呼び、英語の散文の冗長性の2つの極端な例を比較します。 [4]



たとえば、基本的な英語を使用してリテラリープログラミングを実装しようとすると、プログラムのボリュームが大幅に増加します。



特別な知識分野としてのソフトウェアエンジニアリング(ソフトウェアエンジニアリング)は、開発が継続している情報システム(IP)[5]の設計に形式的で柔軟な方法論を使用しているため、方法論へのアプローチを開発するために、利用可能な科学的方法を通じてこのプロセスを記述することが興味深い「研究者のグループ-オブジェクト」または「研究者-オブジェクト」の文脈で問題を解決するための最適な方法を提供したプログラミング。



これを行うために、 システム一般的な 理論とコミュニケーション理論(体系的サイバネティック方法論)の観点から、工学的方法論の多様性の特定の実装から抽象化し、 分解コミュニケーションの 2つの主要な要素を紹介します

次の定義を使用します。

分解は、問題の構造を使用する科学的な方法であり、1つの大きな問題の解決策を一連の小さなタスクに置き換えることができます。 ほとんどの場合、分解は目標の木と機能の木を構築することによって実行されます[6]。 [7]



システムの一般理論では、ほとんどのシステムがサブシステムの基本的な表現に分解できることが証明されています。 したがって、システムは階層構造として表示できます。 [6]] [7]



XP分解の例(eXtremeProgramming)-ユーザータスク履歴(タスク)の階層。



コミュニケーション - コミュニケーション 理論(全身サイバネティック方法論)では、それは社会システムのみを特徴付ける特定の操作であり、その間に知識と無知の再分配が発生します。 コミュニケーションは、情報の選択、この情報のメッセージの選択、メッセージとその情報の選択的な理解または誤解の3つの異なる繁殖の統合を通じて確立されます。 [8]

システム理論では、何も許容されないと想定しています。 冗長性は、コミュニケーションが記憶を生むという意味で作成されます。 [8]



成功したプロジェクトでのコミュニケーションの量は、作業時間の最大50%を占めると考えられています。 「効果的なコミュニケーションを通じてのみ、チームとグループを区別する相乗効果を達成できます。」 [9]



効果的なコミュニケーション(EC)は、メッセージと情報の区別が少なくとも1回理解された場合にのみ確立されることに注意してください。 厳格な階層構造での通信効率はほとんどありません。 それは、対人関係の善意に直接関係しています。 「プロジェクト参加者が競争環境に置かれている場合、または職務階層の障壁によって隔てられている場合、有益な情報交換を期待すべきではありません」 [9]

この場合、ネットワーク原則の存在について話すことができます。これは、調査対象のシステムが垂直に整列したレベルに分割されていないことを意味します。 アクティブなエージェントのネットワークインタラクションでは、状況と解決する問題に応じて、それぞれが管理対象エンティティと管理機関の両方として機能します[10]。



Niklas Lumanは、コミュニケーションの理論(全身サイバネティック法)において、「コミュニケーションのみがコミュニケーションでき、そのようなコミュニケーションのネットワーク内のみが行動として理解している」と主張しています[8]。



同時に、コミュニケーションの履歴は階層として分類および構造化でき、特定のコミュニケーションの有効性をすべてのプロジェクト参加者が評価できます。 (たとえば、ウィキペディアのエッセイのチームワーク)



分解と通信は、通信によって生成されたオプションの冗長性を受け取る下向きおよび上向きのプロセスであると想定できます。これにより、変化する要件に従って元の構造を効率的に再構成できます。 ここでは、分解はアクションとして認識されます。 自己組織化またはオートポイエーシスが発生します-このシステムを再現する方法として...



たとえば、スクラム方法論[5]では、このプラクティスの結果は「変化への準備」と呼ばれます。



これらの仮定に基づいて、既存のソフトウェア設計手法に特有の問題を強調することができます。



1.柔軟な方法論のための直接通信が重要な役割を果たしているという事実のために-通信理論では、時間の経過とともに低下する傾向があるメモリの作成について話している-忘れられている。



2.柔軟な方法論では、効果的なコミュニケーションを作成するプロセスは、地理的に分散した環境、大規模なグループ、明らかに15人以上の番号、および異なるスキルの開発者の混合チームにインストールできないため、機能しなくなります。



正式で柔軟なソフトウェア設計方法論のエンジニアリングに共通-いわゆるプロジェクト履歴を残しません コンテキストを追加し、多くの質問に対する答えを提供しない-理由と理由。 したがって、詳細な分析を実施し、一般に単一のプロジェクトと工学的手法の両方のさらなる発展のための予測を行うことはできません。



したがって、多くのコミュニケーターの会合が発生し、同時にコミュニケーションの記憶とその境界が保持されるコミュニケーションの基盤が必要です[11]。 私たちの場合のこのような基板は、プログラムのソースコード、TK、アルゴリズム、プロジェクトアーキテクチャの説明、およびドキュメントです。



次に、これらのドキュメントはそれぞれ、2つのバージョンを作成することで現実を2倍にしますが、実際にはエラーになったり、エラーが増えたりします。 たとえば、プログラマはタスクを読むときにいくつかの要件を忘れがちです。



新しい通信基板はそれぞれ、システムの一部またはその表現によるシステム要素の表現であり、この意味では常に逆説的です。 パラドックスは、基本部分を表現するために、表現されたシステムをシステムの他の部分と区別するという事実にあります。



そのような逆説の例としては、コードと同期していないドキュメントがあります。これは、かさばる、論理的に矛盾する不誠実な情報源となり、実際に適用される可能性は低いです。 [12]



XP(eXtremeProgramming)で口頭での議論またはカスケード方式で正式な仕様を使用することは、パラドックスの除去を達成する方法です。



同様に、英語圏以外の「言語フランカ」としての英語の存在は、自己参照システムと、2つのバージョンの作成による現実の倍増の例でもあります。



たとえば、顧客の母国語でコンパイルされたTKは、アルゴリズムの英語に翻訳する必要があります。 アルゴリズムまたはソースコードを文書化するには、アルゴリズムまたはソースコードで既に開示されているものを翻訳および説明する作業を行う必要があります[12]。



上記を要約すると、プロジェクトのテキストは、可能であれば、すべての参加者が理解できるコミュニケーションの単一の基盤、またはプロジェクトの「lingua franca」で書かれた文学作品であると結論付けることができます。 この場合、設計のどの段階でも、最小限の数の個別の基板でプロジェクトを生成、変更、または補完できます。 たとえば、スクラム(ダンプ)などの現代の工学方法論に対する最適な代替手段は、個々の専門家コミュニティが使用する英語の「lingua franca」とは対照的に、ネイティブスピーチの「lingua franca」における文学作品の科学的方法論であるように思われます。



プログラミングの進化は、正式なアプローチを超えて、ネイティブ言語の一部になる必要があります。



-プログラムのより良い文書化のために、「彼女のアイデアは人間の理解に最適な順序で提示される」ことが必要です[3] ;

-科学的方法論は非常に複雑な問題を解決できるため、プログラミング教育のプロセスに適用できます。

-各プロジェクトでは、「コミュニケーションの冗長性」がプロジェクトの開発履歴の形で蓄積されます。これにより、時間や初期の開発チームに関係なく、プロジェクトの開発と開発をさらに成功させるための基盤を作成できます。



この問題を解決するために、アイデアと方法を組み合わせた次のアプローチが提案されています。



1. LLVM GCCなどの既成で実績のあるオープンソースソリューションの使用。これにより、リソースが限られているものを含む、既存のすべてのコンピューティングプラットフォームに実装できる英語以外のプログラミング言語の開発が可能になります。組み込みシステム。

2.プログラミング言語の不変モデルとソフトウェアの国際化の実際の開発、特にコンパイルプロセスでのキーワードのオブジェクトおよび辞書の使用との組み合わせは、解析の可変文法と見なすことができます。

3. ASCII文字に基づいた一意に可逆の音訳システムを使用して、ソースコードとドキュメントを英語に翻訳するメカニズムを作成します。これは、競合するソースコードを取得するための条件です。



参照:

1. Bjarne Stroustrup。 C ++プログラミング言語、第4版-Pearson Education、Inc. s-17。

2.社会言語用語の辞書。 -M .:ロシア科学アカデミー。 言語学研究所。 ロシア語科学アカデミー。 エグゼクティブエディター:Doctor of Philology V.Yu. ミハルチェンコ。 2006年。

3. 識字プログラミングDonald E. Knuth The Computer Journal 1983年9月

4.シャノンCE数学的コミュニケーション理論(英語)//ベルシステム技術ジャーナル。 -1948。-Vol。 27.-P. 379-423。

5. D.V. Koznov。ソフトウェアエンジニアリングの概要。 パートI サンクトペテルブルク大学出版会、2005年、43ページ。

6.パブロフスキーYu.N.、Smirnova T.G. 数学的モデリングにおける分解の問題。 -M。:FAZIS、1998年。

7. 適応ソナーシステムの構築における分解方法。 I.A. キリチェンコ、I.B。 スターチェンコ。 ドンのエンジニアリングヘラルド。 番号4(パート1)、2012

8. コミュニケーションとは? -ニコラス・ルーマン。

9. ソフトウェアプロジェクト管理の心理学S.アルキペンコフ

10.ノビコフD.A. ネットワーク構造と組織システム。 -M .: IPU RAS、2003 .-- S. 4。

11.Nazarchuk A.V.現代哲学におけるコミュニケーション理論。 —M。:Progress-Tradition、2009。—C。 186-189。

12.プログラムの迅速な開発。 原則、例、実践著者:ロバートC.マーティン、ジェームズW.ニューカーク、ロバートS.コス–ウィリアムズ出版社2004。



All Articles