最近、新しく追加された試験「Architecture Specialization」のサンプル問題が公開されています。
各問題を確認し、回答に必要な資料へのリンクと解説をまとめます。
全部で10問で、この記事では6問目-10問目が対象。
試験問題は、
https://www.outsystems.com/learn/certifications/
の、「Architecture Specialist (OutSystems 11)」項目のリンク「Exam Details (.pdf)」でダウンロードできる資料から。
6 命名規則の重要性
モジュールの命名のスライド「命名規則のメリット」が問題そのもの。
- 各モジュールや要素の性質を明確にできる
- 参照アーキテクチャを適用できる
- パターンを正規化できる
つまり、選択肢のすべてが正しいので、Dが正解。
7 Discovery
ForgeにDiscoveryというツールがあり、アーキテクチャの検証(ルール違反の検出)を支援してくれます。
この問題は、このDiscoveryの診断結果から、アーキテクチャ上の問題点を読み取るものです。
このツールについては、以下の動画の後半で解説されています。日本語字幕が利用可能であり、更に教材も日本語化されています。
アーキテクチャの検証
Discoveryで発見できるアーキテクチャ上の問題点は以下の3種類(スクリーンショットはツールのヘルプから)。
これは、4 3つの検証ルールで書いた検証ルールそのものですね。
というわけで画像を見ると、
- End-userレイヤーで循環参照が1つ、横参照がたくさん
- Coreレイヤーで上方参照と循環参照がそれぞれ複数
- Foundationレイヤーで循環参照が2つ
検出されています。
合致する選択肢は、最初の問題点End-userレイヤーで横参照がたくさん検出されている → つまりEnd-userレイヤーなのに再利用されているshared serviceがあることを示すC。
8 要素の他モジュールへの移動
問題は「要素を別のモジュールに移動させる時、注意を要するものはどれか」というもの。
Refactoring an Applicationで例の説明があります。ここは教材には記載がないので動画の字幕で見る必要があります。
一例は、エンティティをモジュール間で移動する場合です。あるエンティティをモジュールから取り除き、別のモジュールへ貼り付けるか、そこで作成すると現在からのデータベース内で新たなテーブルが作成されます
選択肢を見てみると、この例通りのものがあります。データ永続化を含む要素(Entityなど)が論理的な定義を移動するだけで、別のテーブルを作成することになるから、としているBが正解。
9 複数レイヤーのフレームワークがアーキテクチャ設計に重要な理由
恐らく、アーキテクチャの重要性の教材にあるスライド「アーキテクチャの一般的な問題」が参考になる。挙げられている問題点の解決のためにArchitecture Canvasというツールがあるはずなので。
- サービスが適切に抽象化されていない
- 依存関係が管理できていない
- レガシーシステムの更新が低速で柔軟性がない
1が選択肢A、2がB、3がCに対応していそうです。
よって全て正しいとするDが正解。
10 スタイルガイド
アプリケーションに共通する見た目を提供するためのモジュールをスタイルガイドと呼びます。
いくつかの標準のスタイルガイドが提供されていますが、問題は、どのようなときにカスタムのスタイルガイドを作成すべきか、というもの。
カスタムのスタイルガイドについては、以下の動画で解説されています。
動画の教材中の「カスタムスタイルガイドのアプローチ」スライドにスタイルガイドを、どのようにプロジェクトの要求に合わせて用意するか、4つのアプローチが挙げられています。
- 基本となるスタイルガイドを使用する(基本となるテンプレートアプリから)
- 基本となるスタイルガイドを加工する
- 基本となるスタイルガイドをカスタマイズする
- 「一から」作成する
カスタマイズしない選択肢があることから、「常に」としている選択肢Dは×。
また、「アプリケーションがデプロイの独立性と他アプリとの低レベルでの相互依存を必要とする場合に」としている選択肢Cはスタイルガイドで解決しようとする問題「共通の見た目の提供」からずれるので×。
残った選択肢AとBは、既存テーマで要求を満たせない場合にカスタムスタイルガイドを利用するという点では共通。
A:カスタムスタイルガイドを「最も複雑な既存テンプレートをクローンして」作る
B:カスタムスタイルガイドを「最も基本的なテンプレートから」作り始める
という点が違っています。
ただ、ちょっとこれは微妙ですね。
クローンするテンプレートを変更することで要求を実現できるならAで正解だし、既存テンプレートでは全く要求を満たさない場合は、Bを取るべき。
答えはBとされています。
仮説としては、Aは「最も複雑な」としていて、「要求に適した」テンプレートではない点が問題なのかもしれません。