1.4K Views
September 15, 22
スライド概要
設計モデリングLT会 - vol.4の発表資料です。
https://rakus.connpass.com/event/255782/
趣味の組込みソフトウェア開発で設計について考えたことを書きました。
組込みソフトウェアエンジニア。 技術バックボーンはC言語・ベアメタル。 CQ EVカートのオーナーで、ハード・ソフトウェアの改造を通じて自身のスキルアップを日々考え中・・・。 LAPRASポートフォリオ: https://lapras.com/public/k-abe GitHub: http://github.com/grace2riku Qiita: https://qiita.com/juraruming Zenn: https://zenn.dev/k_abe よろしくね。
設計モデリングLT会-vol.4 趣味のソフトウェア開発で設計につい て考えた 2022.9.15 パーソルテクノロジースタッフ株式会社 阿部 耕二 [email protected]
目次 • 自己紹介 • 発表テーマと背景 • 設計について考える 2
自己紹介 • 名前:阿部 耕二(あべ こうじ) メール: [email protected] • 所属:パーソルテクノロジースタッフ株式会社 • 医療機器開発 • 組込みソフトウェア開発。C言語、ベアメタルの開発業務経験がほとんど。 • ポートフォリオ: https://lapras.com/public/k-abe • twitter: @juraruming 3
発表テーマと背景 • 自社向けの勉強会でなにかテーマ(組込み機器)を決めて、ソフトウェア開発の上流工程 から下流工程まで説明する連続講座を開催し、自分のスキルアップしたいと考えた。 開催した勉強会テーマ) ・要求仕様の理解 Qiita ・要求を仕様化する Qiita ・仕様から概要設計する Qiita ・概要設計から詳細設計を行う Qiita 4
発表テーマと背景 • 設計の回で考えたことを発表する。 ★今回はこちらに沿った内容を発表させていただきます。 ・仕様から概要設計する Qiita ・概要設計から詳細設計を行う Qiita 5
設計について考える • 設計とは? • 良い設計とは? • 設計の手順とは? 6
設計について考える ▪設計とは? 再現性ある物をつくるために複雑なものをシンプルに表現する。 ただつくれば良いというものではない。 ●再現性にもとめられること ・変更しやすい。変更の影響範囲がわかりやすい。 →競合に勝てる製品展開をスピーディーに市場に投入できる →良い設計ができるか?は会社の命運を握る??? 7
設計について考える • 設計とは? • 良い設計とは? • 設計の手順とは? 8
設計について考える ▪良い設計とは? ソフトウェアに限らず良い設計と思うものを挙げる。 ソフトウェア設計の領域以外からでも設計の考え方について学べるポイ ントはあるかもしれないと思った。 事例1) テレビCM アイフル そこに愛はあるんか シリーズ 事例2) OSI参照モデル 9
設計について考える ▪良い設計とは? 事例1) テレビCM アイフル そこに愛はあるんか シリーズ ・【そこに愛はあるんか】という汎用的・キャッチーなワードをベースにして様々な CMバリエーションを展開。 ・youtubeの再生リスト数を調べてみると21本の動画がアップロードされていた。拡張 性も良い!!! ・その他、私が良い設計と思う理由 →女将さん(大地真央さん)・板前さん(今野浩喜さん)の責務が明確。 現在のソフトウェア開発は派生開発が開発の大部分を占めると思うので、シンプル・変 更に強い・拡張しやすい構造を持つことはビジネス戦略的にも大事だと個人的に思う。 10
設計について考える ▪ 良い設計とは? 事例2) OSI参照モデル OSI参照モデルはThe設計のお手本と思う。 OSI参照モデルを初めて学んだときはこのような階層化・役割分担をしている意味を理解できなかった。 ある程度業務経験を積んでOSI参照モデルを見直すと設計とはこういうことなんだ、と感じられた。 つぎはOSI参照モデルから学べる設計の勘所だと思う。 ・階層の構造。階層化する意味 ・各階層でやるべきことが明確に決まっている。役割分担。 ・抽象化と具体化のお手本のような設計 OSI参照モデルの説明図を引用させていただきますが見ているだけで良い設計だなぁ、と思います。 11
設計について考える ▪良い設計とは? 事例2) OSI参照モデル 引用) OSI参照モデルとは?TCP/IPとの違いを図解で解説 階層構造になっており各層で明確な役割分担が決められている。 12
設計について考える ▪良い設計とは? 事例2) OSI参照モデル 役割分担は上層ほど知識を持つ層で低層は実現手段を持つ層になっている。 13
設計について考える ▪良い設計とは? 事例2) OSI参照モデル ・高層はユーザの目的を達成するための目的を知っており、低層は高層の目的を達成するための手段を知っ ている。 ・高層はなにをするか(Why)の視点をもっており、低層はどうするか(How)の視点を持つ。 TCP/IPのパケットが高層から低層に向かうにつれてデータが付加されていく様子がわかる(目的を達成するた めの手段の情報が付加されていく)。 14
設計について考える • 設計とは? • 良い設計とは? • 設計の手順とは? 15
設計について考える ▪設計の手順とは? 設計とは何か?はこれまでの思考で自分の中で整理がついてきた。 では設計はどんな手順で、具体的に何をすれば良いか? を整理してみる。 16
設計について考える ▪設計の手順とは? 本を読んだり、こうすると良い設計ができそうだなぁと思ったことです。 ・【何をするのか(Why)】の視点と【どうするのか(How)】の視点で開発対象 の分析・設計図の検証を繰り返す。 顧客の要求を満たせそうであればOK(その他の基準、例えば社内の設計標準 などもある)。 ・設計に絶対解はなく、あるのは最適解。それが楽しい・難しいところ。 1 + 1の答えを求める教育を受けてくるとなかなか設計を学ぶマインドも身に 付くことが難しい気もする。x + y = 2のように回答2に行き着くまでの複数の プロセスの中から最適なものを選択することが設計だと思う。 17
宣伝 設計についてのイベントを2回開催します。よければ参加ください。 ・#3 【連続イベント】組込みソフトウェア基礎 #3〜仕様から概要設計する〜 9/29(木) 19:30〜20:15 https://k-abe.connpass.com/event/260282/ ・#4 【連続イベント】組込みソフトウェア基礎 #4〜概要設計から詳細設計を行 う〜 10/27(木) 19:30〜20:15 https://k-abe.connpass.com/event/260345/ 18
終わり ご静聴ありがとう ございました。 19