設計ってなんですか 図(44)

#  設計(design)
Programは、あらかじめ図にするという意味です。

運動会のプログラム、音楽会のプログラム。プログラムといったら計画のことです。

計算機のプログラムは、計算機をあらかじめどのように動かすかの計画です。

その計画を、図または言語で書くのがプログラミングです。

計画には、いろいろな構造がありえます。

どういう構造を選ぶかも、プログラムのうちです。

構造を図で書いて、そこからソースコードを自動生成させてもかまいません。

プログラマが知っているとよい英単語の語源。英語(1)
https://qiita.com/kaizen_nagoya/items/9de6d47c47e2c211222b

HDLというハードウェアを記述する言語では、ソースコードで書くことを設計(design)といい、ソースコードをコンパイルして配線図にして機能配置をすることを実装(implementation)と言います。

ソフトウェアでも、ソースコードで書くのを設計といい、リンカ、ロケータ、ローダなどに具体的なメモリ上での配置をすることを実装（implementation)と言うと対応関係がよくわかります。

RTL設計スタイルガイド Verilog HDL編(System Verilog対応版）
https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

プログラマが知っているとよい設計指針（4）STARC RTL 設計スタイルガイド
https://qiita.com/kaizen_nagoya/items/7a3298801259409bd1b9

RTL設計スタイルガイド Verilog HDL編
https://qiita.com/kaizen_nagoya/items/c883b9aab40c53c1d259

# 何を設計するか

ソフトウェアは、ソフトウェアで作ることがしばしばあります。

最終的に動かすソフトウェアと、そのソフトウェアを生成するソフトウェアを同じ構造にしておいたり、同じライブラリを使うようにしておくと、道具と製品を同時によくすることができます。

例えば、CコンパイラをC言語で記述している状況を考えて見ましょう。

C言語規格と、Cコンパイラのどちらもよくすることを考えると、飛躍的によくなるかもしれません。一方づつよくした方がよくなることもあるかもしれません。

基準とか、手順とか、規則とかを決めて作業すると効率的だったのは、メインフレームという大型計算機が５年に１度のハードウェアとソフトウェアの更新があるのに対応して改定していくとよいという部分最適な習慣があった頃の話です。

毎年、何かのOSが更新し、何かの言語が更新し、何かの通信規約が更新する状況では、基準とか、手順とか、規則が、設計対象よりも長い期間存在することを前提にしない方がいいかもしれません。

移動標的(moving target)は、最適化しづらいと思うかもしれません。模型記述すれば、自動追尾ソフトウェアは自動生成できるかもしれません。

# 模型(model)

発電所、製鉄所のような大規模で空間的に動かないものと、航空機、自動車、鉄道のように中規模で空間的に動くものと、CPUのような小さくそれ単体では動かないものと、OS、プログラミング言語のように軽くてどこへでもすぐに行ってしまうものを、一体で設計する手法がまだ確立していないのでしょうか。

大事なのは、わかっていないことを、根拠なく決めないことです。
あるいは、自分の環境、自分の制約条件を、他人に押し付けないことです。

自分の環境、自分の制約条件を、他人に押し付けることが決して悪いことではありません。対価をお支払いいただいたり、長期的な戦略をたてられていたり、それまでよりも効率的なものの考え方をご提案いただけるのであれば。

連続系を記述するMatlab/Simulink/Targetlinkとその記述規則とソースコード生成規則、離散系を記述するUMLの記述規則とソースコード生成規則。その２つを一体で管理できるOS、通信規約の記述規則とソースコード生成規則。それらの３つを一体で管理する設計指針。

TOPPERS の AUTOSAR への貢献 II (改定中)

https://qiita.com/kaizen_nagoya/items/4614c04cfff70a241f77

TOPPERS のAUTOSARへの貢献(更新中), AUTOSAR(15)

https://qiita.com/kaizen_nagoya/items/d363cf06e2176207b391

# 音楽を題材に

楽譜が設計図ですね。

実際の楽譜があっても、演奏は、指揮者の采配でいろいろ変わります。

プログラムは音楽だ (A program is a music.) 仮説（54）

https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8

ソースコードだって、コンパイルスイッチでいろいろ変わるし、コンパイルする順番でかわることもある。
古いライブラリリンクしてから、ライブラリコンパイルしたってしょうがない。
ソースコードがあれば、Implementationが終わったと思う人は一人もいない気がする。
ソースコードがあれば、設計がようやく終わったっていうことで。
リンクスクリプトでどうなるか、ロケータでどう配置するか、ローダで実際にメモリにいつ、どう入るか、全然変わります。ソースコードを書いた後に、Implementationの作業がいっぱいあるのです。

# 関連資料
' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e
## 自己記事一覧
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真：社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

「何を」よりも「誰を」。１０年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

Qiitaの記事に３段階または５段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学 
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba

図(0) state, sequence and timing. UML and お絵描き 
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

品質一覧 
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語（０）一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説（0）一覧（目標100現在40）
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

音楽　一覧(0) 
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧 
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

安全（0）安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ　 ベクタージャパン　
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧　
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

小川清最終講義、最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.
### 文書履歴
ver. 0.01 初稿 20220301
ver. 0.02 音楽追記　20220302
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
####  Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.