ユースケースの推敲

UC図をOO開発経験の浅い者が作成した場合とても読み辛いものとなる。UC図は様々な目線の者が読む文書である。そのためその様々な目線に耐えうる記述でなければならない。すべての関係者にわかるような記述が必要ということだ。だが、経験の浅い者はその記述…

ユースケース

OOAでは機能要求を「ユースケース図」に記述する。「ユースケース図」にはユースケースの説明文として以下のような「ユースケース記述」が付与される。主処理フローはメインフローに記述されるがケースにより代替フロー、例外フローも記述される。またフロー…

ビジネスルールの概要

ビジネスルールはユースケース抽出と平行で分析する。 このルールはドメイン分析にて抽出され最終的にはドメインクラスとして定義される。ビジネスルールの概要には次のように定義されている。 ビジネスルールとは、ビジネスの1つの側面を定義あるいは制限す…

ロバストネス図作成におけるプラクティス

ロバストネス分析を行うにあたり有効なアジャイルモデリング(AM)のプラクティスを抜粋。 基本プラクティス 利害関係者の積極的な参加:これはXPの「オンサイトの顧客」を拡張したものです。「オンサイトの顧客」とは、開発対象のシステムに関する情報を提供…

ロバストネス分析

ロバストネス図とは何か。 ロバストネス図の概要にはこうある。 『In Use Case Driven Object Modeling With UML』においてDoug RosenbergとKendall Scott(1999)は、ロバストネス分析という技法を説明しています。その基本となる考えは、ユースケースのステ…

ドメインについて(6)

ビジネスという関心事を分離し品質を向上させることがドメイン設計の目的である。 具体的にどのようにすればいいのか。云うまでもなくシステム開発ではアーキテクチャの選定が重要である。だがドメイン開発ではこのアーキテクチャは決まっている。これについ…

ドメインについて(5)

FDDはDe Lucaによって開発され、シンガポールプロジェクトで彼がCoadと作業している時に修正された。ますます短期化するビジネスライフサイクルへのレスポンスタイムに取り組むためには不要な工程を切り捨てる必要があった。 Coadは云った。「10年前、私たち…

ドメインについて(4)

ドメイン分析を開始するにあたってドメイン辞書の作成、つまり語彙の収集を始めなければならない。 語彙は「解釈」と「関連」を持つ。そして語彙は一度定義すれば完了というものではない。改良され続ける事になる。 「意味」ではなく「解釈」としているのは…

ドメインについて(3)

システム開発にドメイン設計を導入する最大のメリットは凝集化である。ドメイン(ビジネス)に関わることを全て「ドメイン層」に閉じ込めることで高凝集システムとなる。 高凝集と低結合はどちらも重要な概念である。だが高凝集は低結合に比べこれまで議論さ…

ドメインについて(2)

「分析」とは何か。一般的な「分析」とは収集した情報を要素に分けて整理し、分析目的に合致した意味合い(メッセージ)を得ることである。システム開発に於ける「分析」も同様である。情報を分け、整理し、メッセージを得ること。だがシステム開発の現場で…

ドメインについて(1)

一般的なドメインの意味とはなんだろうか。グロービスマネジメントスクールのMBA用語集は次のように定義している。 ドメインとは、企業が定めた自社の競争する領域・フィールドのこと。事業ドメインともいう。企業はドメイン(事業ドメイン)の設定により、…

ファサードクラス担当者の苦労

ファサードと言われてイメージするのは、帳票ファサードであり、ネットワークファサードであり、ログファサードであり、DBファサードである。要するに外部システムにアクセスできる「簡易API」としてのファサードである。ファサードのメリットは何であろうか…

SIerの組織レベルについて

プロジェクトが破綻する原因にトラックナンバー問題がある。知識が個人に独り占めされ様々なトラブルがおきるという問題だ。その人が事故や病気になれば破綻するし、或いはその人に問い合わせが集中して多忙になればチームは破綻する。これは個人が知識伝播…

DIへの賛否

1.DIへの賛否10年ほど前、DIはソフトウェア産業の問題を解決する銀の弾丸として喧伝され、それを実現するDIフレームワークのspringやseasarが登場した。DIはとても流行し最終的にはEJB3.0に取り込まれるまでになった。ではDIとは一体何者なのだろうか。ここ…

ソフトウェアの再利用について

ソフトウェア再利用は開発効率と品質を向上させるための方法論の中でも最も重要なもののひとつである。だが、多くの組織はこの方法論の適用に対し積極的とは云えない。それはなぜだろうか。ヨードンは、その理由は4つあると説明している。・ソフトウェア工…

ソフトウェアの再利用について

ソフトウェア再利用は開発効率と品質を向上させるための方法論の中でも最も重要なもののひとつである。だが、多くの組織はこの方法論の適用に対し積極的とは云えない。それはなぜだろうか。ヨードンは、その理由は4つあると説明している。・ソフトウェア工…

仕様変更における対応

システム開発で仕様変更が発生した時に開発者たちは通常どうするのだろいか。ある開発者はこんな云い方をした。「先ずは仕様書を修正するのがスジだ。ただそれは時間との兼ね合いだ。より優先すべきはプログラムとテストであり、仕様書の修正は時間のある時…

ホットスポットを実装する

[リーダブルコード]コメント:ライターズブロックを乗り越える これがJavaであれば、私ならテンプレートメソッドパターンで局所化しプログラム完了の遅延を図る。 テンプレートメソッドパターンではフックメソッドの実装を下位クラスに委ねる。このパターン…

可視性の高いコード

[リーダブルコード]コメント:情報密度の濃さ:正確に書く なかなか面白いことを書いている。 もしも私がプログラマで、コードレビューでこのような指摘がでたらなかなか厳しいレビューアだなと思うだろうが確かにその通りである。行数カウンタなどの機能に…

経験をもっとすべし

色んな人が「オブジェクト指向やデザインパターンを中途半端な知識で使うな」という趣旨の事を仰っています正論です。パターンや設計手法は「考え方の見本」であり、それらを考えなしに使うというのは本末転倒です (中略) けれど私はやはり、「やりたいな…

猿でも分かる継承の作法

継承は、新しい機能を追加するだけでなく、既存の機能を差し替えることにより、基本クラスを拡張することができます。具体的には、基本クラスのメソッド(あるいはプロパティ)を派生クラスで再定義して、置き換えるというものです。これは「メソッドのオー…

オブジェクト指向入門という本

ここで、オブジェクト指向が禁止なら継承もできないのか、のように、裏返せば継承つかったらオブジェクト指向のような認識であるなら、メイヤーの「オブジェクト指向入門」2冊を隅から隅まで読んで出直すべきだ*1。 そこまで云うのであればこの人はその2冊…

ラムダについての懸念

JAVAの新機能ラムダ。関数型プログラム到来と絶賛されているが私はこの評価に戸惑いを覚える。そもそもこのラムダは関数型プログラムにパラダイムシフトできる人間だけがそのメリットを教授できる。一介のプログラマが手を出せる代物ではない。だが技術者に…

バグとは何か

「仕様と違う結果」が起きる原因をバグと云う。バグはエラーとは異なる概念だ。 ログイン画面を考えてみよう。 ユーザーIDとパスワードを正しく入力し、ログインボタンを押すとトップ画面に移る。これは正常系というログインの本来の事象だ。 これに対し、ユ…

ソースコードの正しさ

システム開発に於けるソースコードの正しさとは何か。バグがないこと、ではない。仕様書の記載をソースコードが守っていることだ。仕様書はソースコードのルールである。遵守していればそのソースコードは正しくそうでなければそのソースコードは正しくない…

仕様書の雛形とアーキテクト責任

仕様書が曖昧になる要因に雛形の不備がある。例えばオブジェクト指向設計に於いてはクラス仕様書は必須である。所がクラス仕様書の雛形がない現場もある。そのような現場ではしばしば他の仕様書の雛形が代用される。勿論出来ないことはないことはない。だが…

曖昧な表現という問題

もしも技術者が常に「明確で論理的な仕様書」を作成できるなら、システム開発など児戯に等しい。然し残念ながら我々にはその能力がない。我々の作る仕様書にはどこかに曖昧な表現がある。この曖昧な表現は人を混乱させ彼等に間違った解釈をさせる。混乱は進…

義理と人情

前に知り合いの営業マンから突然連絡が来たことがある。私を必要としている案件があるというものだったが単価が安くて断ろうとした。然し彼女は面談だけでも出て欲しいと食い下がる。どうやら彼女のビジネスパートナーが技術者を紹介して欲しいと彼女に云っ…

鬼平にみる営業の苦悩

鬼平犯科帳に「盗賊二筋道」という話がある。あらすじはこうだ。高萩の捨五郎という盗人が子供を助けようとして侍に切られてしまう。捨五郎は怪我を理由に盗みの手助けという仕事を断るのだが、それを逆恨みされ、口合人の寺尾の治兵衛と共に命を狙われてし…