ユースケースの推敲

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

ソースコードの正しさ

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

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

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

曖昧な表現という問題

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

義理と人情

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

鬼平にみる営業の苦悩

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

論外な人たち

システム開発に於いてもしもプラットフォームやフレームワーク、開発ガイドがないならスクラッチで作るしかない。つまり技術者の属人性に頼りはじめから作るしかない。 現代のシステム開発で其れは非現実的である。何故ならプロジェクトのメンバーを自社社員…

GOA

どうすれば曖昧な仕様書を見つけることができるか。この問題に対する答えは簡単ではない。これまで多くの者が取り組み、そして挫折してきた。しかし出来ないことではない。画面の必須項目チェックや桁数、型、和名、英名などの制約、関連性や整合性など、仕…

仕様書の曖昧さに気づくことの重要性

昨日は曖昧な仕様書に気づかない技術者の話をしたが、ではどうすれば曖昧な仕様書を見つけることができるのだろうか。いや、そもそもそんなことができるのだろうか。答えはYESだ。勿論簡単ではない。これまでその問題に多くの者が取り組み挫折してきた経緯か…

仕様書を理解していない技術者

皆さんは、自分が仕様書を本当に理解しているか自分自身に問いかけをしているだろうか。先日、私はある仕様書について担当者に質問をした。その仕様書は酷く曖昧で一目ではとても理解できない内容だったからだ。するとその担当者は「これは〜という意味です…

ブローカーを潰さぬ限り未来はない

ある漫画で、風俗店に風俗嬢を紹介するスカウトマンの話が出てくる。彼等は街で女の子に声をかけ風俗店に紹介する。そして面談。果たして女の子が採用されれば、その後の女の子の売り上げの1割程度がスカウトマンにバックされる。毎月である。女の子が200万…

ウォーターフォールでテストファーストを実現する法

JUnitはXPに於けるテストファーストプラクティスのツールである。もちろんXP以外でも採用されるがそれにしてもアジャイルである。このツールはテストファースト、則ちテストコードを書いてからプログラミングを始めるという手法の為にある。だが多くの現場は…

ALFパターンについて

Webシステムの概要説明で「我々のシステムはMVCパターンを使っている」というのは些か問題である。なぜなら「MVCパターンを使っている」といった表現は何も説明していないに等しいからである。現代のWebシステム開発では殆どがMVCパターンを採用している。MV…

要求仕様書の正体

要求定義の最大の難所は次の確認である。⑴顧客の真の要求をベンダーが理解しているか(機能要求と非機能要求)⑵予算と期日を守れるのか(実現性)要求定義工程ではベンダーが「叩き台」を元にヒアリングをする。その結果が要求仕様書となる。だが、これはノウハ…

STAP細胞

小保方女史のSTAP細胞。この世紀の発見の本質は汎用化と多態性である。どの業界に於いても技術者にとって汎用化&多態性はエキサイティングだ。それにしても、小保方女史のアプローチは斬新でネイチャー誌に酷評される程というから驚きだ。レビューアに「生…

ストラテジパターンのリスク

JavaプログラマGoldの試験範囲にデザインパターンの理解がある。ではデザインとはどのようなパターンか。JavaプログラマGold教科書にはこうある。「パターンはある文脈の問題に対して繰り返し適用可能な解決策と定義されています。文脈とは取り巻く環境、状…

良い管理者の選定

プロジェクトの結果は管理者の裁量で決まる。だからこそプロジェクトの責任者はプロジェクトを成功に導くために良い管理者を選定しなければならない。では良い管理者とはどんな管理者のことか。よくあるイメージは「プロジェクトをいくつも成功させている管…

ホーアトリプルのデメリット

ホーアトリプル導入にはプログラム正当性確保というメリットがあるが設計者の作業負荷増大というデメリットもある。ではどんな作業負荷があるのか。ひとつは設計者が仕様書に表明を書かなければならなくなるということだ。通常のプロジェクトでは設計者は仕…

プログラムの正当性

コンピュータ理論のひとつにホア論理というのがある。この論理の中心はHoare Tripleという式である。{P}C{Q} この式はプログラム実行による状態変化を表す。CはPの状態に始まりQの状態で終わる。Cはコマンド、Pは事前状態、Qは事後状態である。プログラムの…

ソフトウェアの寿命

ソフトウェアの寿命とは何時か。誰もが認めるのは、寿命はソフトウェアが使われなくなった時である、という考えだ。企業システムの多くは長期運用が前提だ。運用されなくなれば寿命がきたと云える。その寿命が早ければ開発費を回収できなくなる。では寿命を…

例外の一般的な対処方法

よくこんな質問がある。「例外は何か」答えはこうだ。「表明違反により起きたイベントである」呼び出し側がこのイベントを放置すれば処理は失敗に終わる。そうなりたくなければ例外を捕捉し リトライによる回復 を試せばよい。それでも成功しなければ今度は …

バグとは何か

バグとは何かという質問に答えられないプログラマはおそらく居ないだろう。だが、その答えは誰もが同じではない。或る人は「バグとは不具合である。」と云い、或る人は「バグとは欠陥である。」と云い、或る人は「バグとはエラーである。」と云い、或る人は…

イカとスルメ

ノウハウという資産を過去のSIer達は見つけ育てていた。其れこそ会社の成長の源だと知っていたからだ。ノウハウとは無能技術者が有能技術者に勝つ知恵である。誰でもノウハウがあれば有能技術者と渡り合える。成果を出せる。 いろいろな社員をかかえる会社が…

基準の話

COBOLやPL-1、Cの時代は「バグ率」は品質のひとつに過ぎなかった。所が最近は品質=「バグ率」と皆考えるようになった。少なくとも私にはそう思える。SIerの優秀なSEもバグ率には熱心だが、変更性、解析性、環境性、規格性等々の品質は測ろうともしない。 何…

PMの罪

管理について、そもそも進捗管理をエクセルでやるというのはどうなんだろうと思う。RedMineのようなツールを使えば管理コストは減るのにこれを使わない理由は彼らに知識がないからとしか思えない。エクセルで日々の進捗をつけていたら時間はいくらあっても足…