開発納期が短くなり、クライアントからの要求レベルも高くなっている今、ZUIFUでは「実装しない開発」をテーマとしたプロダクトを開発しました。ここでは、短納期で開発でき、品質も向上する「フレームワーク」の紹介をします。
フレームワークとは?
本フレームワークは、Webアプリケーションの開発プロセスを定義しそれに則りスキルに応じて役割を分担し開発を行う。
IBMが提唱しているRUP(Ratinal Unified Process)の考えを参考にしWebアプリケーションに特化した開発プロセスを定義し開発方法の統一をはかる目的で考案された。
本来であれば開発プロセス自体は実装には左右されないが本フレームワークではJBoss Seamによる実装に固定している。
(今後は別の実装を追加していく。例えば、Apache Struts2.0、Apache Shaleなど)
※RUPとはかなりかけ離れているがRUPの考え方を参考にしている。
開発の背景
開発の背景として、
- 業務開発は納期が短い上クライアントの要求レベルが高く大規模開発になればなるほど品質を保った安定した開発を進めることが難しくなっている。
- 仕様書(設計書)管理に対しても開発期間が短いため十分な時間がとれないためプログラムから仕様書を起こすことになりクライアントの要求がすべて守られているかどうかがわかりにい。
本来であればクライアントの要求から仕様書(設計書)を作成し実装するため仕様書(設計書)と実装との差異が確認できますが実際には先に述べたとおりプログラムから仕様書を作成しているため問題が生じた際に仕様書の問題なのか実装の問題なのか把握することができません。
(把握するための時間がかかります) - 安定した技術者の確保が難しい。
という理由から開発する経緯に至りました。
機能説明
概要説明
開発プロセスの単位として、ページ単位、ページの集合のページフロー単位、ページフローの集合のアプリケーション単位を開発プロセスの粒度とし開発を行います。
また、ビジネスロジックを疎結合に開発することによりビジネスロジック単位での開発も容易に行えます。
このように開発単位を明確にする(開発の責務を明確にする)ことにより技術スキルに応じた分散開発を容易に行うことを実現します。
要素説明
- ページ単位(ページ開発プロセス)
ページでは、入力内容の定義、アクションの定義およびビジネスロジックの指定を行う。 - ページフロー単位(ページフロー開発プロセス)
ページフローでは、ページ間の遷移指定などを行う。 - アプリケーション単位(アプリケーション開発プロセス)
アプリケーションでは、ページフロー間の遷移指定などを行う。 - ビジネスロジック単位(ビジネスロジック開発プロセス)
ビジネスプロセスでは、ビジネスプロセスを呼び出します。
各開発単位(開発プロセス)で単体テストや結合テストを行います。
フレームワークの使用技術として
- JBoss Seam
- JSF,DIコンテナベースのフレームワーク、本開発プロセスの実装として使用する。
POJO(Plain Old Java Object)をベースとし、SOA的なWebアプリケーションの開発が行えます。
→JBoss Seam - JBoss jBPM
- ビジネスプロセスマネージメントの実装として使用します。
→JBoss jBPM - JBoss Rules
- ルールエンジンとして使用します。
また、Jakarta Commons-Validatorとの組み合わせによりルールべースのValidatorを実現します。
→JBoss Rules
→Jakarta Commons-Validator - Jakarta Commonsライブラリー
- その他Jakarta-Commonsライブラリーを使用します。
→Jakarta Commonsライブラリー - POHP(Plain Old HTML Page)ベースでのページ開発機能
- プレゼンティーション層とロジック層を分離してのページ開発が行える。
フレームワークのツール
フレームワークの構成をウィザードや各種設定にすることにより、Webアプリケーションの開発を容易にします。また、Webアプリケーションの「見える化」により、透過的にアプリケーションの把握も可能となります。さらに、開発プロセス単位でドキュメントのまとめが行えるため、仕様書の管理も簡単に行えます。
- 設定のみでWebアプリケーション開発を80%(目標値)まで完了することを目標とします。
- 開発プロセス単位の開発のため開発範囲を縮小することができます。
- プログラムソースとドキュメント(仕様書)を同期をとりながらのバージョン管理ができます。
- 開発を容易にする各種エディター(ページエディター/プロセスエディター/アプリケーションエディター/ビジネスプロセスエディターなど)をそろえています
- サーバへのディプロイ機能、サーバ監視機能、ドキュメント生成機能(PDFファイル/Wordファイルなど)を搭載しています
フレームワークの利用シーン
大規模開発での分散開発の実現を行います。
そのために、SEが各開発プロセスごとにドキュメント(仕様書)をまとめ、プログラマーによる実装を行い、テスターにより単体テストおよび結合テストを行っていきます。
→分散開発、スキル別による開発の容易性、ドキュメント化を実現
クライアントにおいては、Webアプリケーションの「見える可」により全体の仕様の把握が容易になり仕様変更に対して的確な指摘が可能となる。
→ドキュメント化、「見える可」による透過的なアプリケーションの把握が容易
フレームワークのメリット
- 設計の単純化(コンポーネント化)を実現できます
- スキルレベルに応じた開発ができます
- 分散開発が容易になります
- テスト(とくに単体テスト)が容易にできます
- 問題が発生した際の原因特定が簡単となります