会話による ソフトウェア工学の開発実践15 - フレームワーク

Posted by WZhong on Sunday, January 21, 2024

TOC

単語

コーディング標準 ひょうじゅん 编码规范
アプローチ 方法,手段
意識させる 让…意识到
実行システム 运行系统
マルチレイヤー 多层次(架构)
いよいよ 马上
出来上がる 完成
アーキテクチャー 架构
その辺 へん 那一方面,那个方面
~わけです 理当…如此
はっきり 明确,明显
ビジネスフロー 业务流程
デザインパターン 设计模式
分割する ぶんかつ 分割,分解
画面周り がめんまわり 界面周围
振舞い ふるまい 行为
データアクセス 数据存取
複雑みたい ふくざつ 好像很复杂
名前のとおり 顾名思义
ラッパー wrapper 包装
~にすぎない 只不过是
繋ぎます つなぎます 连接,联系
データベーススキーマ database schema
ビジネスオブジェクト 业务对象
ビューオブジェクト 视图对象
それこそ 正因为如此
プレゼンテーション層 そう 表现层
ビジネスロジック層 业务逻辑层
データアクセス層 数据存取层
レイヤー layer
出発する 出发,开始

ポイント

  • 全員に認識してもらいたい。 → 请大家都认识到…。

  • 統一したアプローチ。 → 统一的方法。

  • 複雑みたいですね。 → 好像很复杂的哦。

  • クラスが登場します。 → 类登场了。

  • わざわざもう1つの薄いレイヤーを用意し。 → 特意准备了另一个薄层。

  • マルチ・レイヤー・アーキテクチャー

会話

会話の背景

  • コーディングをする前に、開発チーム全員にフレームワークとコーディング標準のことを話し、統一的なアプローチを全員に意識させることが必要である。
  • フレームワークとは、開発環境のフレームワークと実行システムのフレームワークの2つがある。本節では MVC の Struts また ORM の Hibernate という2つの開発フレームワーク、それと J2EE の実行システムのマルチレイヤーについて触れる。

登場人物

  • 近藤:システムアーキテクト
    鈴木:開発チームリーダー
    山田、田中:開発チームメンバー

会話内容

  • 鈴木:

    • こんにちは。
    • いよいよコーディングに入ります。いつものように、コーディングと開発したシステムの質をあげるため、また生産性を高めるため、フレームワークを使います。今日は、このフレームワークの使い方および注意点に関して、チーム全員に認識してもらいたいと思います。
    • それでは、近藤さんに説明していただきます。近藤さん、お願いします。
  • 近藤:

    • そうですね。
    • 今回の開発では我々は開発環境としてEclipseを使って、その上にMVCのStrutsフレームワークと、ORMのHibernateフレームワークを使います。また、開発されたシステムには、J2EEのマルチレイヤ―を持つように設計していますので。その辺皆に議論をしてもらい、統一したアプローチで開発を行いたいですから。何か質問があるでしょうか?
  • 田中:

    • これまで、我々はJSP/servlet/Beanで構成したシステムをいくつか開発しましたが、今回MVCのStrutsフレームワークと比べて、どのように違うでしょうか?
  • 近藤:

    • それはいい質問ですね。実はStrutsフレームワークでも、基本的にはJSP/servlet/Beanによりシステムを開発するわけです。ただし、考えてみたら、ここまでの開発では、例えば、JSPからデータベースのアクセス、またJSPにもビジネスロジックを含んだことが度々あります。ときに、JSP/servlet/Beanに各自の責任をはっきり強制的に分担させていませんから。
    • 今回StrutsはActionという概念を導入し、servletクラスは直接書かずに、ビジネスの流れはActionで書くことにします。これで、JSPは画面ロジック、Actionはビジネスフロー、BeanはビジネスロジックというようにMVCのデザインパターンを強制的に実施させるため、1つのシステムを3つの側面にきれいに分割できると思います。
  • 田中:

    • なるほど。これは、例のMVCすなわちモデル、ビュー、コントローラーですね。
  • 近藤:

    • その通りです。それにより、今回の開発では、画面周りあるいは振る舞いのコーディングはほとんどJSPとActionを書きますが、データアクセスはBeanあるいはドメインクラスを書きます。
  • 山田:

    • ドメインクラスとは、ビジネスロジックもあり、データベースのアクセスもあり、ちょっと複雑みたいですね。
  • 近藤:

    • そうですね。ですから、今回我々はORMのフレームワークHibernateを導入します。
  • 山田:

    • ORMでもHibernateでも初めて聞いたので、説明してもらえませんか?
  • 近藤:

    • もちろんです。
    • ORMとはObject Relational Mappingの省略で、名前のとおり、これはオブジェクトとリレーショナルのデータベースとのマッピングです。コーディングから見ると、ただのJDBCのラッパーに過ぎないとも言えます。
    • 今回我々が使おうとするHibernateツールはデータベースとオブジェクトの間をXMLにより、緊密に繋ぎますから、コーディングの立場から見ると、今度はビジネスロジックを書く時には、とにかくオブジェクトの世界でコーディングすればいい、データベースのスキーマにはあまり気にしなくてもいいです。
  • 山田:

    • それはいいですね。そうすると、テーブルからオブジェクトへのマッピングのコーディングを誰かに書いてもらうのでしょうか?
  • 近藤:

    • そのマッピングはHibernateがやってくれて、我々はXMLだけを書けばいいと思います。それと、最近いろいろなツールが出てきますから、それらのツールを使えば、永続的なドメインクラスを自動生成したり、またデータベースが変更される時にも連動できます。
  • 山田:

    • これは大変便利ですね。それならば、我々のビジネスロジックを書く人は何を書くわけでしょう?
  • 近藤:

    • そうですね。一般論としては、この永続的なドメインクラスには、画面クラスや、コントローラークラスなどが直接アクセスしてはいけません。それで、ビジネスオブジェクトのクラスが登場します。
    • 実際的には、おそらくコントロータークラスと永続的なドメインクラス間にはビジネスロジックを含んだビジネスオブジェクトのカラスがあると思いますが、画面クラスと永続的なドメインクラスの間にもそれらを繋ぐためのビューオブジェクトのクラスがあると思います。
    • それこそ、出来上がるシステムはJ2EEのマルチレイヤーのアーキテクチャーを持ちます。すなわち、プレゼンテーション層、ビジネスロジック層、データアクセス層になります。
  • 山田:

    • 分かりました。そうしたら、早速書きましょう。
  • 鈴木:

    • そうですね。先ほど近藤さんが説明したフレームワークが2つあります。StrutsとHibernateです。皆さんにこれらのフレームワークを上手に使ってもらうため、今回のプロジェクトでは、わざわざもう1つの薄いレイヤーを用意しておきます。すなわち、StrutsとHibernateに対するスーパークラス:KaiwaJSP、KaiwaAction、KaiwaActionForm、KaiwaViewClass、KaiwaBusinessClassなどを書いておきますから、皆のコーディングはこれらのスーパークラスから出発すれば良いのです。
  • 近藤:

    • それと、各スーパークラスの使い方に関しても、例題のクラスを用意していますので、皆さん参考にしてください。
  • 皆:

    • どうもありがとうございます。
  • 鈴木:

    • それでは、今日のミーティングはここまでです。
    • 近藤さん、ご苦労様でした。皆さん、お疲れ様でした。
  • 皆:

    • お疲れ様です。

「真诚赞赏,手留余香」

WZhong

真诚赞赏,手留余香

使用微信扫描二维码完成支付