EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

PlantUMLを通じてドメインモデル図の書き方を学ぶ

目次

  • 目次
  • はじめに
  • プロジェクトの開始時にやるべきこと
  • ドメインモデル図とは
  • ドメインモデル図を描く手順
    • 1. 「名詞」の抽出
    • 2. モデル同士の関係を線と矢印で表す
    • 3. 中心となるモデルに色を付ける
  • ドメインモデル図を用いる際の注意点
  • ドメインモデル図の活用方法
  • ドメインモデル図の作成例
    • 例1. 認証システムの場合
    • 例2. 課金システムの場合
    • 例3. 本屋の場合
    • 例4. 投稿システムの場合
  • GitHub
  • 参考資料

はじめに

ソフトウェアの仕様書、設計書の作成や管理を効率化するために、Markdown + PlantUMLによる作成方法を日々模索しています。
しかしながら、そもそもUML図の正式な書き方というものをちゃんと分かっていないというのが正直なところなので、PlantUMLを通じてUMLの各種図の書き方を勉強していきます。

  • 本稿のテーマは、「UMLによるドメインモデル図の書き方」です。
  • 本稿におけるUML図の作成は、Markdown + PlantUMLがベースであることを前提とします。
続きを読む

PlantUMLを通じてロバストネス図の書き方を学ぶ

目次

  • 目次
  • はじめに
  • ロバストネス分析の目的
  • ロバストネス図とは
  • ロバストネス図のシンボル
    • アクター
    • バウンダリ(インターフェース)
    • エンティティ
    • コントロール
  • PlantUMLでの記述例
  • ロバストネス図とその周囲のダイアグラムの整合性
  • ロバストネス図の秘密
    • コントロールは何から生まれて何になるのか?
    • コントロールはユニットテストの良い対象
  • GitHub
  • 参考資料

はじめに

ソフトウェアの仕様書、設計書の作成や管理を効率化するために、Markdown + PlantUMLによる作成方法を日々模索しています。
しかしながら、そもそもUML図の正式な書き方というものをちゃんと分かっていないというのが正直なところなので、PlantUMLを通じてUMLの各種図の書き方を勉強していきます。

  • 本稿のテーマは、「UMLによるロバストネス図の書き方」です。
  • 本稿におけるUML図の作成は、Markdown + PlantUMLがベースであることを前提とします。

このロバストネス図を描く工程は、下記の記事にて述べたクラス図を描くための準備段階にあたります。

www.eureka-moments-blog.com

続きを読む

PlantUMLを通じてクラス図の書き方を学ぶ

目次

  • 目次
  • はじめに
  • クラス図とは
  • クラス図を作るまでの流れ
  • クラス図を構成する要素
    • クラス(Class)
    • クラス間の関係と線種
    • 関連(Association)
    • 汎化(Generalization)と特化(Specialization)
    • 実現(Realization)
    • 集約(Aggregation)と合成(Composition)
    • 依存(Dependency)
    • ロール名(Role name)
    • 多重度(Multiplicity)
    • ステレオタイプ(Stereotype)
    • 制約(Constraint)
    • 特殊クラス
    • ロリポップ
  • パッケージ
    • パッケージの定義
    • パッケージスタイル
    • ネームスペース
  • ノート
    • クラスに対するノート
    • 関係を使ったノート
    • リンクへのノート
  • オブジェクト図
  • パッケージ図
  • GitHub
  • 参考資料

はじめに

ソフトウェアの仕様書、設計書の作成や管理を効率化するために、Markdown + PlantUMLによる作成方法を日々模索しています。
しかしながら、そもそもUML図の正式な書き方というものをちゃんと分かっていないというのが正直なところなので、PlantUMLを通じてUMLの各種図の書き方を勉強していきます。

  • 本稿のテーマは、「UMLによるクラス図の書き方」です。
  • 本稿におけるUML図の作成は、Markdown + PlantUMLがベースであることを前提とします。

Markdown + PlantUMLでドキュメントを作成する環境の構築方法については、下記の記事を参照ください。

www.eureka-moments-blog.com

続きを読む

MarkdownとPlantUMLでソフトウェアの仕様書や設計書を書くための環境構築手順

目次

  • 目次
  • はじめ
  • Markdownで書くメリット
  • Markdown記法一覧
  • 環境構築手順
    • 1. Visual Studio Codeをインストールする
    • 2. PlantUMLをインストールする
    • 3. Javaをインストールする
    • 4. Graphvizをインストールする
    • 5. Markdown Preview Enhancedをインストールする
  • 環境構築後の動作確認
  • Markdownでドキュメントを書く際に便利な拡張機能
    • 1. Paste Image
    • 2. markdown-index
  • 作成したドキュメントをHTMLやPDFに変換する
  • 今回参考にさせていただいた記事

はじめ

自分はこれまでソフトウェア開発において仕様書や設計書を作成する際、Enterprise ArchitectというGUIで操作するソフトウェア設計支援ツールを用いてUML図を描いてきました。
必要なコンポーネントをドラッグアンドドロップするだけでUML図を作成できるので簡単なのですが、図のレイアウトは自分の手で微調整しなければならないので少々面倒です。また、それらの図を挿入する先のドキュメント本体はWordやExcelで作成するのですが、ドキュメント本体もUML図も同じ環境で一度に作成する方法はないかと思っていました。
今回いろいろ調べたところ、自分が愛用するエディタであるVisual Studio Codeであれば、Markdownでドキュメントを書くのとUML図の作成を一度にできるということを知ったので、その方法についてメモしておこうと思います。

続きを読む

読書メモ: Effective Python

目次

  • 目次
  • はじめ
  • PEP8スタイルガイドに従う
  • シーケンスをどのようにスライスするか知っておく
  • 大きな内包表記にはジェネレータ式を考える
  • try/except/else/finallyの各ブロックを活用する
    • finallyブロック
    • elseブロック
  • Noneを返すよりは例外を選ぶ
  • リストを返さずにジェネレータを返すことを考える
  • 可変長位置引数を使って、見た目をすっきりさせる
  • 辞書やタプルで記録管理するよりもヘルパークラスを使う
  • プライベート属性よりはパブリック属性が望ましい
  • ローカルタイムクロックにはtimeではなくdatetimeを使う
    • timeモジュールについて
    • datetimeモジュールについて
  • 全ての関数、クラス、モジュールについてドキュメンテーション文字列を書く
    • モジュールのドキュメンテーション
    • クラスのドキュメンテーション
    • 関数のドキュメンテーション
  • 最適化の前にプロファイル

はじめ

Pythonコードのより良い書き方を学ぶための技術書として有名なEffective Pythonを友人から借りることが出来たので読んでみました。
今回の記事は、この書籍を読んで参考になった事のメモになります。

続きを読む

自動運転技術を手掛ける企業の技術動向: RADAR編

  • 背景・目的
  • 自動運転におけるRADARの役割
  • 大手企業の動向
  • 自動運転向けシミュレータの開発
  • RADAR開発に取り組む未上場の現存企業
  • Lunewave
  • Echodyne
  • Arbe Robotics
  • Metawave
  • Oculii

背景・目的

先日リリースされた下記の記事を読んだことで、車の自動運転というものは様々な技術が組み合わさる事で実現される、また各カテゴリにおいて、その技術を手掛ける様々なスタートアップ企業が存在する、ということを改めて実感しました。

www.nikkei.com

f:id:sy4310:20181127220257p:plain

ここで紹介されている各スタートアップ企業の取り組みにどういう特徴があるのか詳しく知りたくなってきたので、今回から複数回に分けて各企業の特徴を調査してメモしていこうと思います。今回はRADAR編となります。

続きを読む

PythonからC言語の関数を呼び出してユニットテストする環境を作る: Cython編

目次

  • 目次
  • はじめに
  • Cythonとは
  • PythonとC言語を組み合わせるメリット
  • 参考記事
  • ステップ1: C言語のコードを書く
  • ステップ2: C言語のコードをラッピングするCythonコードを書く
  • ステップ3: Cythonコードをビルドするsetup.pyを書く
  • ステップ4: コンパイル・ビルドする
  • ビルドする際のハマりポイント
  • ステップ5: ユニットテストのPythonコードを書く
  • 今後の課題

はじめに

自分は普段の仕事でC言語のプログラムを実装するのがメインです。しかしながら、今の職場にて自分が実装したC言語のソフトをデバッグするためには、実際のコントローラに書き込んでからベンチシミュレータで動かす、くらいしか方法がありません。
いちいちコントローラに書き込んだりするのが面倒だし、コントローラ内部でステップ実行なんて事もできないので、開発用PCの中である程度のデバッグを行う方法はないか、と考えていたところで思いついたのが、PythonからC言語のプログラムを呼び出してデバッグするというものでした。
今回は、数あるやり方の一つであるCythonを使ったやり方を試してみたので、その流れや注意点について書こうと思います。

続きを読む