変数(variable)と値(value)

はじめてScalaに触れたとき、変数宣言(var)と値宣言(val)を使い分ける言語仕様に、なるほどなあ、と思った。簡単に言えば、変数(var)は再代入できて、値(val)は再代入できない。 プログラミングのスタイルとして、var宣言は命令的なプログラミング、val宣…

ドメイン駆動設計というソフトウェア開発のやり方

この記事はドメイン駆動設計を取り入れたソフトウェア開発を実際にどのようなやり方で進めているかの事例紹介です。 2021年10月のモデルベースで要件定義をやってみた - connpassで発表した資料の解説です。 設計の効果 良い設計は悪い設計よりも変更が楽で…

ドメイン駆動設計の集約のわかりにくさの原因と集約を理解するためのヒント

『ドメイン駆動設計』のモデル要素のひとつとして「集約」があります。 アプリケーションの対象となる事業活動の仕組みや決め事をソフトウェアで表現する技法のひとつとして集約の考え方はとても役に立ちます。 集約パターンはデータベースのデータ整合性の…

7つの設計原則とオブジェクト指向プログラミング

設計原則はよい設計をするための指針です。 では、よい設計とはなんでしょうか? もっとも重要なソフトウェア品質は発展性 ソフトウェアの発展性がビジネス価値を生む 発展性をうみだす7つの設計原則 モジュール化 モジュール化の2つのアプローチ 型による…

ビジネスロジックのモデリングと実装

ビジネスロジック(ドメインロジック)をどうやってモデリングして、どうやって実装するかの実践例を公開しました。 RDRA 2.0 ハンドブックの図書館システムの実装例 (github) ビジネスロジックのもとになる業務モデルやビジネスルールのモデリングは、 モデ…

要件定義・仕様化・実装の継ぎ目をなくすCCSR開発手法

ソフトウェア開発の問題点 従来のウォータフォール方式で、フェーズ分けと分業を重視し、手続き的なモジュール構造でソフトウェアを開発するやり方には次の問題があります。 大量のドキュメントの作成に膨大な時間と費用がかかる(工程が多く、必要な人員が…

ソフトウェアのもっとも重要な品質は発展性

ソフトウェアでもっとも重視すべき品質は「発展性」なんだと思う。 機能要求や非機能要求は、時間とともに変化する。その要求の変化に対応してソフトウェアを発展させていける能力、つまり発展性こそがソフトウェアの価値を大きく左右する。 発展性に問題が…

モダンなSIer開発手法 勉強会

昨日、株式会社ディマージシェアさん主催の モダンなSIer開発手法 勉強会 - connpassでお話した内容です。 発表に使った資料 要約 発展性に焦点をあわせる(プロジェクト型からプロダクト型へ転換する) オブジェクト指向ソフトウェア構築の考え方(型による…

オブジェクト指向プログラミングを学ぶための推薦図書

オブジェクト指向プログラミングを学ぶ オブジェクト指向プログラミングという言葉は、広い意味で使われている。 オブジェクト指向プログラミングをキーワードにすべての情報をかき集めて理解するというアプローチは現実には無理。 目に付いた重要そうなとこ…

ドメイン駆動設計を理解する3つのキーワード

ドメイン駆動設計を理解するための三つのキーワードの紹介。 ビジネスルール、計算モデル、型指向のプログラミング。

アウトプットから始まる学び

ドメイン駆動設計やオブジェクト指向設計について、あれこれ考えていることを、自分なりに言語化して、少しずつアウトプットしてみようと思う。 アウトプットの機会を作ると、いろいろなインプットと試行錯誤が始まって、自分の学びが加速するはず。 創造的…