2021-05-13 設計 オブジェクト指向

1
ほえほえ@スプシマン @hoehoe1234

オブジェクト指向はソフトウエア開発に革命をもたらしたけど上流設計にはそれほど影響を与えてないようにおもえて、こちらに革命をもたらしたのはやはりRDBとER図(正規化)だろうと思うんだよね。

2021-05-13 18:10:45
ほえほえ@スプシマン @hoehoe1234

RDBとオブジェクト指向が同時に流行りだしたのはよく分かる。お互いに補完するからね。RDBは上流設計とデータ抽象化に革命をもたらし、オブジェクト指向はプログラミングのしかた自体を変えた。この2つはとても良い時期に同時に生まれたと思う。

2021-05-13 18:12:10
ほえほえ@スプシマン @hoehoe1234

ただ、オブジェクト指向的な手法を上流に持ち込んでもうまく言ってないように思える。データから整理し直すER図のほうが圧倒的に業務を正しく整理できると思う。この辺は有名人のブログにも詳しい。実際に要件定義の基礎は業務フロー、要件一覧、ER図でありオブジェクト指向的なものは少ない。

2021-05-13 18:13:38
ほえほえ@スプシマン @hoehoe1234

基本設計あたりからは設計と実装でオブジェクト指向的なものがないまぜになる。クラス関連図、シーケンス図というものと従来の機能仕様、方式案というものが混じっている感じ。UMLは良いといわれるが使い込んだことがないのでわからない。むしろ記述密度が下がっているように思う。

2021-05-13 18:15:28
ほえほえ@スプシマン @hoehoe1234

いや、使い込んでないのでわからないんだけどね。クラス図とシーケンス図はもちろん使うけど、UMLの一部という感じじゃないと感じてる。ユースケースよりも業務フローが好き。 cacoo.com/ja/blog/what-i…

2021-05-13 18:17:15
ほえほえ@スプシマン @hoehoe1234

クラス図、シーケンス図はクラス設計に必須だから使ってたけどコミュニケーション図はつかってなかったな。同様に①ユースケースー②アクティビティ図はビジネスフロー、③業務フローー、④システムフローとして書いていたかな。旧来の記法でw。①と③、②と④が対応する粒度みたいな感じ。

2021-05-13 18:48:51
ほえほえ@スプシマン @hoehoe1234

ステートマシン図は状態遷移表/図そのものなので割愛。こう考えるとオブジェクト指向であたしく追加された記法はクラス図と(その動的な挙動である)シーケンス図だけのように見えるね。

2021-05-13 18:50:26
ほえほえ@スプシマン @hoehoe1234

あと、これは慣れの問題かもしれないけど、上流でのデータ整理術はER図が圧倒的によいように思える。なんといっても(一部)手法が確立しているのと、そのままRDBに実装可能なところが強い。オブジェクト指向的な分析とほぼかぶるからどっちでもいいと思うけどね。

2021-05-13 18:51:36
ほえほえ@スプシマン @hoehoe1234

システム設計でのオブジェクトは?ってなると当然データであり、エンティティ、関連の認識であるのでこの点で両者はほぼ同じかな?違うのはER図がRDBにそのまま実装できることで、これは大きいかな。オブジェクト図はアプリの構成に使う感じ?

2021-05-13 18:52:45
ほえほえ@スプシマン @hoehoe1234

で、ここでインピーダンスミスマッチが起きるのかな?似た手法、似たモデリングでRDBとアプリが作られると必然的に「合わない部分」がでてくる。データであるRDB(ER図)に寄せるのが正解だとは思うけどいろいろ制限とか効率、手法の問題があってそういう流れでORMとかがあるように感じている。

2021-05-13 18:54:00
ほえほえ@スプシマン @hoehoe1234

これに関しては、ワイは集合で切ってしまうのがええのかな?と思っていて、更新系はストアドプロシージャ、クエリ系はSQLフル活用からのレコードオブジェクト生成みたいな。でもこんなのはだれでも思いつくことだからやはり自動生成されるORMなんかは便利なんだろうなと思う。

2021-05-13 18:55:10
ほえほえ@スプシマン @hoehoe1234

経験からストアドでの更新系はホント楽なのでそうもっているだけで、ORMももしかしたら楽なのかもしれない。でも仕組み的に明らかにミスマッチが起きそうなんだけどその変はあまり経験がないからわからない。最初からORMで行くと割り切れば案外よいのかもしれないね。

2021-05-13 18:56:16
ほえほえ@スプシマン @hoehoe1234

ただ、要件定義の段階でER図とオブジェクト分析を併用するのは単純に無駄というか同じことなのでワイはER図を使用することを推奨したいかな。それにER図が業務の人(お客さん)とシステムの人の共通言語だと考えるとこちらのほうが理解難易度もひくそうだしね。

2021-05-13 18:58:01
ほえほえ@スプシマン @hoehoe1234

もちろん、要件定義にはER図、基本設計にはER図を元にしたクラス階層図(オブジェクト指向的設計)になるんだとは思うけどね。上位概念はER図で、クラス設計はER図を反映した実装のための設計図ってことだね。クラス図から直接クラスを生成できるからね。

2021-05-13 19:01:20