ヘッダー

2019年に学習したシステム設計の手法をまとめてみる

システムの設計の手法、と言っても数多あります。
最近メジャーな所だと「ドメイン駆動設計」「デザイン思考
古くからある所だと「オブジェクト指向」「モジュール化
デザインパターン」なんかもこの例でしょう

これらの多くの中から、どれをどう使うのか?というのは完全に趣味・好みの世界だと考えています。
後は若干の政治的理由(という名の根本的理由)。

そういう理由で、主に2019年に白柳が触れた設計手法を独断と偏見から備忘録的にまとめてみよう、というだけの記事です。
それぞれの手法で使えるフェイズが違いますので、フェイズ毎に分けて挙げていきます。

フェイズの分割は適当。
内容も後から追加したり修正したりするかもしれない。
この記事の一番の目的は、自分のためのメモなのだから。

要件定義

RDRA2.0
「リレーショナル駆動要件分析」という手法
PowerPoint上で色々な種類の表を作って、それを行き来しながら要件を炙り出していく方式、と感じた。

知ってること/知らないことがどんどん浮かび上がってくる。
実践だと、その「知らない部分」で手が止まってしまうのが苦しい部分。
とりあえず知らないものはブラックボックス扱いしてしまって、全体図をサクサク作ってみるのが良いのではないか?

最初は、PowerPointのテンプレートを活用してみてるのが良いと思う。
慣れてきたら付箋や手書きを利用してみるのも良いだろう。
PrantUMLを利用してRDRAをやってみるという記事もある。

概要設計

DDD
「ドメイン駆動設計」という流行りの手法

エヴァンス本を読んでいない僕には、多くを語ることはできない。
ただ、その真髄は「ValueObject」でも「型定義」でもなく、「関心の責務の分離の実践方法」だったり「レイヤー分割による分析の手法」ではないか?と考えている。

ある人に先日「ユビキタス言語に担保された、誰でも理解できる形のモデルを、そのままコードへ持っていけること」がドメイン駆動設計の本質だと教えて頂いた。
まだ飲み込めていないのだが、きっと正しい気がする。

プログラム設計

ここに書きたいものがあった筈なのだが、忘れてしまった。
その忘れてしまったという事実も含めて、僕自身にとっては大切なことなので枠だけを置いておく。

GUI設計

・アトミックデザイン、コンポーネント思考

これについては今後調べていく課題。

GUI部品を、システム上の最小機能単位の「ATOM」に分けてそれを結合しながら大きな部品を作っていく、という考え方はとてもオブジェクト指向的。

ファイル数が多くなる事が気持ち悪く感じてしまうが、それはもうそういうモノだと割り切る事にした。
塊の単位や機能の種類の単位で管理すれば良さそう、という知見を得たのでその気持ち悪さも緩和されるだろう。

データ設計

・ValueObject
自信を持って言える。ValueObjectはDDDそのものではない。
ValueObjectは、オブジェクト指向を実践する上での、データとその振る舞いに特化した、開発設計手法である。

データと、それが持つべき振る舞いを型に集約することで、
・型とデータの内容を強力に紐付けてしまう
・データの取り違えを、型のエラーに切り替えてしまう
・型の中に嵌める事で、データの安全性を担保する
という考え方だろう。

テスト設計

・TDD
「テスト駆動開発」という手法

自動化テストをやっていないので、語ることが無いのだけれど興味はとてもある。

前提としてユースケース、ユーザーシナリオをしっかりと用意すること、っぽい。
個人的には、テストの肝は「ユーザーがこちらの意図を超えた場合(イレギュラーケース)への対応」にあると感じているのだけれど、そこを埋める何かはあるのだろうか?


この記事が気に入ったらサポートをしてみませんか?