WR blog

about Enterprise IT, Oracle Database, Jazz/Fusion Music, etc…

WR blog RSS Feed
 
 
 
 

Archive for May 22nd, 2005

PoEAA 3rd

PoEAA読書会 第3回に参加した。まとまりなく書いてみる。

発表資料はこちら

駆け込みで前夜に資料作成

前夜1:00am-6:00amぐらいで3章のサマリをPPTで作成し、持参&発表。 直前に駆け込みで作ったこともあり、内容はイマイチだったけど、議論のベースとして機能したので結果オーライ。ということにする。んで、質は量に転化する。ということにする。(これまでも、これからも)

あ、資料作成の際には昔WOMeetingで使った資料を流用したりした。継承の実装方式の図や、RDBMSのイメージとかEnterpriseObject(笑)とか。ちょっと手を抜けた。

進め方など

当初、15~25分程度でさくっと進めるつもりだったのだけど、実際始めてみると、 発表しつつ、議論しつつな感じで進めたほうがよさそうな印象を受けたので、そうすることにした。 自分が2部以降をキチンと読み込んでいなかったため、議論についていけなかったり、議論の整理がうまくなかったりした部分があったのは反省点。でも、読み込む時間がないのよねー。あと、情報を体系化して、脳みそへ定着するための時間が。

議論に参加してくれた方、感謝。いろいろ話して、楽しくやりましょう。 特に、ひがさんには感謝!感謝!有益なネタ振りをたくさんしてくれた。しかも、カナリ読み込んでるし! つーか、発表者のくせしてあまり読み込んでなくてごめんなさい。たたき台として存在する意味があると自分に言い聞かせる。

UnitOfWork

EOEditingContext! EOF最強! 楽○○○○○○御が実質的に機能しない点を除いては!(苦笑)

外部キー制約、参照整合性

外部キー制約付けない派が大多数。なるほど。確かに実務上は付けないほうがよさそうではあるのだけど。 ちょっと意外ではあった。

依存

依存概念をCASCADE ON XXX制約でカバーできるかどうか?については良くわからない。 EOFの場合、(確か) 親Objectと子Objectのリレーションシップを切断すると、子Objectが削除されたはず。 というわけで、Objectの世界で依存概念の意味をどこまで規定するかに依存すると思われる。 ただ、たいていの場合、CASCADE ON XXX制約で十分な気がしている。

一瞬、ER図にも依存概念を導入したほうが良いかなと妄想した。うーん、IDEF1xとかだと入ってそうだな。でも、あれを理解する気にはなれない・・・。ま、いいや。

EOF/WebObjects

発表が終わって、ogijunさんとボソボソ。 やっぱ、EOFはいけてるねーとか。

O/Rマッパーに必要な概念のほとんどを実装しているからねぇ。 Apple買収後も、XML対応とかいろいろ適切な方向に進化してくれたら面白かったのに!とか思う。

あと、Webフレームワークがステートフルな方向に行くのなら、WebObjectsフレームワークも・・・って、完全に脱線だなコリャ。

ちょっとWebobjectsに興味をもたれたかたは、ここらへんとか、suzukiさんの有益な資料(spice-of-life.net - WebObjects)などをごらんくださいまし。

概念をビジュアル化することの効能

余談だけど、概念を脳みそへ定着させるために発表スライドをつくるというのは結構有益。 ソフトウェアをビジュアル化する作業は、モデリング技術の延長上にある。複雑なもの・見えないものをある側面に着目して、表現することに相当する。短期的・長期的に有益。 というわけで、誰か、次回のサマリ担当に立候補してくれないかなーと。

ポジションペーパ

リンク集発見!

ありがとうございます。koicさん。

Day by day(2005-05-23)

Russian Doll と Salami Slice

スキーマ設計とクラス図 | ノート

なるほど。興味深い。

同じことを書くのに、ちょっと自由度があるのがイヤンなかんじもするな。

エラーの分類とエラーハンドリング戦略

エラーの種類を簡単に。

ビジネスロジックエラー(代替フロー) システムエラー 入力エラー プログラミングエラー 内部状態不整合エラー (他にある?)

ビジネスロジックエラー

ユースケースにおける、いわゆる代替フロー。 残高1000円なのに、2000円引き出そうとしたときの処理フローに相当 機能定義・論理設計・基本設計段階で洗い出される必要がある。 機能の一部として、エラー発生時の処理が明確に洗い出されている必要がある。 アプリケーションは、エラー内容に応じた処理を実行するように実装されている必要がある。

システムエラー

動作環境などが正常に動いていない場合のエラー ATMシステムで、ATMとバックエンドシステムのネットワークが疎通していない場合や、バックエンドシステムにおいて、RDBMSが動作していない場合などに相当 基本設計・詳細設計段階で洗い出されている必要がある。 要件にも依存するが、致命的エラーであることをユーザーに通知できれば良い。エラーの種別毎に処理を行うなどは求められないケースが多い。 適切に不具合情報を入れ込んだロギングが重要。 2重化など、システムエラーが起こる原因自体を排除するor発生頻度を低める取り組みについては、ここでは触れない。

入力エラー

いわゆるvalidationエラー。入力したデータが、まずい場合 (機能定義・)論理設計・基本設計段階で洗い出される必要がある。 金額入力欄にアルファベットが入力された場合など (ビジネスロジックと同様?)

プログラミングエラー

API・クラスライブラリ・フレームワーク・ユーティリティクラスを適切に使用していないために生じるエラー。 基本的に、詳細設計・プログラミング作業中にしか発生しない。 結合テストにおいてこのエラーの発生する可能性を可能な限り低めるような努力がなされていなくてはならない。 DAOにConnectionをsetせずにfindXXX()メソッドを呼んだ場合など

内部状態エラー

主に2種類あると考える(もっとあるかも)

システムが保持するデータの不整合

マスタ不一致エラーとか 主に運用のミスによる

プログラムのロジックバグにより、満たされているべき前提条件が満たされなくなったため発生するエラー

たいていの場合DAOにConnectionがキチンと設定されるが、特定の処理を実行するとDAOにConnectionが設定されなくなり、nullPointerExceptionが発生する 設計・テスト段階で洗い出しに失敗したプログラミングエラーが顕在化したケースと考えることが出来る。

要件にも依存するが、致命的エラーであることをユーザーに通知できれば良い。エラーの種別毎に処理を行うなどは求められないケースが多い。 適切に不具合情報を入れ込んだロギングが重要。 (システムエラーと同様?)

フェーズとエラー種別とエラーハンドリング

フェーズとエラー種別により、適切なエラーハンドリング戦略は異なる。 プログラミングフェーズで好ましいエラーハンドリングと、保守・運用フェーズで好ましいエラーハンドリングは異なる。そもそも出るエラーの特性がまったく異なるのだから、乱暴な比較ではあるのだけれども。

すくなくとも、エラーハンドリングの目的が、「機能仕様を満たす」ことか、それとも、次のアクションを起こしやすくするための単なる「情報提供」か、で、求められる戦略が異なる点は留意したほうが良い。

ツッコミは愛をこめて。

artonさんの日記のやりとりに刺激されて、妄想含みで書いてみた。乱文失礼。

Profile

Jazz/Fusion Musicを愛するIT技術者です。 現在、Oracle Database 関連の仕事をしています。

保有資格

  • Oracle Master 10g Platinum
  • Oracle Master 11g Gold
  • Oracle Master Expert 10g RAC
  • Oracle Master Expert Oracle on Linux
  • LPIC level2
  • 日商簿記3級

連絡先

ご連絡は、wrcsus4 _at_ gmail _dot_ com にお願いいたします。

 

May 2005
M T W T F S S
« Apr   Jun »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Recent Posts

Recent Comments

Tags

Categories

Pages

Archives

Meta