Teeda Extension featuring Goya 〜要件定義〜

要件定義→外部設計→(アーキテクチャ)→内部設計→コーディング→単体テスト結合テスト


普段使用されている手法で問題ありませんが、Teeda Extensionの強み/弱みを知らないと、後で苦労することになると思いますので、ここでは、その点について紹介したいと思います。
また、一般の要件定義レベルよりは、後工程でのリスクを軽減するためにも、実装に近いレベルで書きたいと思います。

※2007/02/11時点

Teeda Extensionの特徴

  • JSF拡張
  • ページ駆動開発
    • HTML画面を起点に開発を実施する。画面とそれに関連するデータや処理を、1対1で開発するスタイルを採用しており、画面と画面遷移のアンマッチを解消している。
  • HTMLテンプレート
    • Viewのテンプレートを標準的なHTMLだけで記述することが可能。これまで良くあった、デザイン後のHTMLにタグを埋め込む、などといった非効率な作業を行わなくて済む。

Teeda Extensionの持つ機能

  • バリデーション(JSF標準、StrutsS2JSFなどよりも豊富)
  • 画面遷移(idによる遷移、previousViewId、postback)
  • エラーページ遷移
  • HTMLタグ属性の動的変更(DynamicProperty)
  • グリッド/ツリーコンポーネントサポート
  • ラベルサポート(propertyファイルからの値取得)
  • ポートレット対応
  • セキュリティ(二重送信防止、XSS防止)
  • SMART deploy対応

強み

  1. 2Way HTMLテンプレート
    • 基本は純粋なHTMLだけで記述できるため、特別な知識が不要。デザイナとアプリ開発者で、同じHTMLを共有できる。
    • 拡張したい部分にはJSPと同様のタグライブラリを指定することが可能。MyFacesのコンポーネントや独自の拡張コンポーネントも利用できる。
  2. テスティングフレームワークサポート
    • JUnitを拡張したTeeda用のテスティングフレームワークTeeda Unit)を提供している。
    • TeedaTestCaseを継承したJUnitテストクラスを利用することで、JSFコンポーネントのモック・オブジェクトを使用できる。他のプレゼンテーションフレームワークでは、テストコードを作成しようとしても、プレゼンテーション固有のクラスが必要となるため、作成できないことが多い。
  3. 規約(iRule=Intelligent Rule)重視で設定ファイルレス
    • 画面遷移やコンポーネントのマッピングを、名前により解決する。設定ファイルを作成する必要がほとんどないため、設定ファイルのメンテナンスに工数を費やさなくて済む。
  4. バリデータのターゲット指定
    • 押下するボタンによって、動作するバリデーションを切り替えられる。JSFでは、ボタンごとに切り替えることができなかったが、要件としては多い。
  5. マルチウィンドウ対応
    • 複数画面(ある画面から別画面を開く)の構成にも対応している。
  6. ポートレット(JSR 168)対応
  7. Doltengメインサポート対象プロダクト
    • 自動生成を行うEclipseプラグインであるDoltengが、メインでサポートしている。Doltengがサポートしているプレゼンテーションフレームワークは、現在のところTeeda Extentsionのみ。

弱み

  1. スクリプトレットが利用できない
    • JSPであった、スクリプトレット(<% 〜〜〜 %>)は利用できないため、動的に(サーバサイドで出力する値を使用する)、複雑なレイアウトを構成したり、ページ内へのJavaScript出力をするような処理には向いていない。
  2. 標準で提供されていない機能
    • レイアウト機能
      • StrutsのTiles、ASP.NETのマスターページのようなもの
    • グリッドでのページング/ソート
      • グリッド自体はTeedaコンポーネントとして提供されるが、ページング/ソートが必要な場合は、独自に実装する必要がある。
    • リンク(アンカータグ)でのイベント処理
      • リンククリック時は、Page/Actionクラスのメソッド(doXxx)を呼び出せない
      • 回避策としては、メソッドを呼び出すボタンを非表示状態にしておき、リンククリック時にJavaScriptでボタン押下を実現する。
    • ファイルアップロード
      • 回避策としては、カスタムタグを利用して、MyFacesのファイルアップロードコンポーネントを導入する。

成果物

成果物を決めておくのを忘れていました(汗)。
システムの特性や規模によっても違うとは思いますが、以下のものぐらいは必要でしょう。

  • 要件一覧
    • 要件一覧は、顧客から挙がった要望をリスト化しておく。Excelやカードなどでまとめる程度でも十分。
  • 業務フロー
    • 複雑な業務ルールなどがある場合は、フロー図に説明を補足しておく。
  • 用語集