EurekaMoments

新米エンジニアが一人前を目指す修行の日々を記していくブログです。

Software Development

読書メモ: モダンC言語プログラミング

はじめに メモ はじめに 自分の職場では、プログラムの設計や開発環境構築、コーディングやテストなどで、非効率なやり方だと感じる部分がちょいちょいあり、そろそろ本格的に改善したいという思いが強くなっています。そこで、改善案の参考にしようとこの書…

PlantUMLで描いたUML図をEnterprise Architectからインポートして共有する方法

はじめに Enterprise Architect(EA)とは PlantUMLの図をEAからインポートする手順 1. PlantUMLでUML図を描く 2. 作成した図をXMI形式でエクスポートする 3. EAからXMIファイルをインポートする 4. インポートされたUML図を確認する まだまだ知らないEAの便利…

CUnitを使ってC言語プログラムのユニットテストを実行する方法

はじめに CUnit for Mr.Andoについて CUnitの導入からサンプル実行までの流れ 1. CUnitのダウンロード 2. ダウンロードされるファイルの内容 3. CUnitの使い方 4. テストの対象とするコードを書く 5. テストコードを書く 6. ソースコードのフォルダ構成を決…

ソフトウェアのモジュール設計について学べる良記事リンク集

はじめに モジュール化について考えてみたときのまとめ モジュール化設計について 設計の原則: モジュール化 はじめに 最近の自分のソフトウェア設計業務にて、機能設計とモジュール設計について考えさせられる機会がありました。今回の問題では、機能設計の…

PlantUMLを通じてシーケンス図の描き方を学ぶ

はじめに シーケンス図とは 設計プロセスにおけるシーケンス図の立ち位置 シーケンス図の描き方についてのヒント ヒント1 ヒント2 シーケンス図を構成する要素 メッセージ 自己メッセージ 外部とのメッセージのやり取り ライフライン 実行仕様(イベント)の表…

PlantUMLを通じてユースケース図の書き方を学ぶ

はじめに ユースケース記述とユースケース図 ユースケースを洗い出す際のポイント 基本コースと代替コース ユースケース図を構成する要素 アクター ユースケース 対象 ユースケース図を描く流れ 1. アクターを列挙する 2. アクター毎のユースケースを列挙す…

Gitによる複数人でのバージョン管理をSourceTreeを使って体験してみる

はじめに 前提条件 作業対象とするGitHubリポジトリ SourceTreeについて 今回のシナリオ Step1: リモートリポジトリをローカルにクローンする Step2: 3人それぞれのブランチをmasterから作成して作業開始 Step3: Bの作業が先に完了→プルリクを作成してマージ…

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

はじめに プロジェクトの開始時にやるべきこと ドメインモデル図とは ドメインモデル図を描く手順 1. 「名詞」の抽出 2. モデル同士の関係を線と矢印で表す 3. 中心となるモデルに色を付ける ドメインモデル図を用いる際の注意点 ドメインモデル図の活用方法…

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

はじめに ロバストネス分析の目的 ロバストネス図とは ロバストネス図のシンボル アクター バウンダリ(インターフェース) エンティティ コントロール PlantUMLでの記述例 ロバストネス図とその周囲のダイアグラムの整合性 ロバストネス図の秘密 コントロール…

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

はじめに クラス図とは クラス図を作るまでの流れ クラス図を構成する要素 クラス(Class) クラス間の関係と線種 関連(Association) 汎化(Generalization)と特化(Specialization) 実現(Realization) 集約(Aggregation)と合成(Composition) 依存(Dependency) …

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

背景・目的 Markdownで書くメリット Markdown記法一覧 環境構築手順 1. Visual Studio Codeをインストールする 2. PlantUMLをインストールする 3. Javaをインストールする 4. Graphvizをインストールする 5. Markdown Preview Enhancedをインストールする 環…

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

背景・目的 Cythonとは PythonとC言語を組み合わせるメリット 参考記事 ステップ1: C言語のコードを書く ステップ2: C言語のコードをラッピングするCythonコードを書く ステップ3: Cythonコードをビルドするsetup.pyを書く ステップ4: コンパイル・ビルドす…

Visual Studio Codeによるソフトウェア開発環境構築のメモ

背景・目的 VS Codeのインストール Gitのインストール Gitの初期設定 VS Code上で開く統合ターミナルをGit bashにする VS Codeの拡張機能を自動でインストールする 事前準備1. インストールしたい拡張機能のリストファイルを作る 事前準備2. 自動インストー…

良く使うGitコマンドの逆引きメモ

背景・目的 参考文献 リモートリポジトリからクローンする ブランチを作成する 今いるブランチを*で示す ブランチ一覧を確認する 作業ブランチを切り替える(チェックアウト) ブランチ作成 + チェックアウト 既存ブランチと同じ名前のブランチを強制的に再生…

ソフトウェア開発におけるレビューについての勉強メモ

背景 目的 参考文献 レビューの種類と目的 改善点①: 新規開発機能の教育レビュー不足 「最悪を最初に」を基本としたレビュー 改善点②: 簡単なところからレビューを始めがち 改善点③: コードレビューがメールベース レビューとインスペクション中の指針となる…

読書メモ ~エンジニアリング組織論への招待~

背景・目的 参考文献 思考のリファクタリング メンタリングの技術 アジャイルなチームの原理 学習するチームと不確実性マネージメント 技術組織の力学とアーキテクチャ 読んだ感想 背景・目的 ここ最近の自分のソフトウェア開発業務は、開発の納期に追われつ…

プログラマーとして習慣づけるべきこと

背景・目的 参考記事 エラーが出ても慌てず、メッセージを読もう ネット情報を鵜呑みにしない 公式ドキュメントから読もう 当てずっぽうで試していかない 未知のものは、まっさらな環境で試そう ライブラリを見つける力と目利きを鍛えよう 大雑把に理解でき…

プログラミングにおけるネーミングについての勉強メモ

背景・目的 参考文献 参考記事 抽象度 抽象度とクラス名 タスクを小さく分割する 最後に 背景・目的 大規模なシステムを動かすプログラムを開発していると、クラスやメソッド、変数の名前を既存のものと区別できるように考えるのですが、ネタ切れになってく…

オブジェクト指向プログラミングについて学んだ事のメモ

目次 目次 背景・目的 参考文献 オブジェクト指向のイメージ 大変な作業を無くせる バグをなるべく混入させないための基礎 クラス中のメソッド数を少なくする メソッド中のステップ数を少なくする クラス中の行数を小さくする ネストを小さくする 変数をむや…