神がシステム開発を変える

上流工程でアシスタントが作成する文書は以下の通り。

神がシステム開発を変える

GODモデルのROIだが、たとえばV字モデルで期間3年、200人年というようなプロジェクトがあったとする。控えめに計算してもGODモデルなら期間2年、100人年くらいにはなる。成果物のほとんどを自動生成するからだ。GODモデルで自動生成される成果物一覧…

神がシステム開発を変える

昨今ではAjile開発が増えてきているがこれは小規模開発の話だ。大規模開発では依然としてV字モデルが採用されているのが日本の現状である。 V字モデルとは重厚長大なプロジェクトが中心であった時代に登場し日本で最も普及している開発モデルだ。だがQCD*1の…

ユースケースの推敲

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とパスワードを正しく入力し、ログインボタンを押すとトップ画面に移る。これは正常系というログインの本来の事象だ。 これに対し、ユ…

ソースコードの正しさ

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

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

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