【事例】大手金融系システム会社様向けシステム基盤再構築支援(開発フェーズ)

概要

【事例】大手金融系システム会社様向けシステム基盤再構築支援 の開発フェーズ。

フレームワーク構築、実装ガイドの提供、開発プロセス標準化により、大規模開発が軌道に乗るまでの支援を行った。アプリケーションアーキテクチャを統一することで、開発チームが業務ロジックの実装に集中できるようにした。その後も実際の開発でのフィードバックにより改善を実施した(進化的アーキテクチャ)。

また顧客自身が開発を行えるよう、内製化をプロジェクトメンバーとして OJT することで支援。アプリ開発期間中発生する技術課題を解決するチームを組織。サブシステム横断的な支援も行った。
 

顧客の目的

  1. 開発の効率化
  2. 開発者の技術力不足解消
  3. デグレードの検出自動化
     

支援内容

  • フレームワークが持つ機能や API の説明を含む、構築したアーキテクチャ上で作成するアプリケーションの包括的な設計・実装ガイドの作成
  • 開発プロセスの標準化
    • 開発工程、成果物、仕様書の定義
    • ソフトウェア、仕様書の構成管理
    • CI 環境の整備、プロセスへの組み込み
    • ドメインモデル、オブジェクト指向での開発
  • アーキテクチャを構築して終わりではなく開発者の声や内部での気づきをもとに改善を行っていく進化的アーキテクチャの実践
  • 内製化支援 (顧客システム部門の教育)
    • 開発を通じた OJT
  • 数百名の多数の協力会社を横断した技術課題解決
    • プロセス、ガイドの説明、教育
    • プロセス導入支援
    • アプリケーション開発チームからのQ&A対応
    • アプリケーション共通部品の設計、開発
    • 設計、コードレビュー
    • 実際にチームの一員となっての開発支援 (ペアプログラミング等の活用)
    • 各種煩雑な作業の自動化
    • 性能対策、他チームの性能改善
    • UI テストの自動化
  • アプリケーションチームとインフラチームの窓口
    • 課題とりまとめ、解消
  • 難易度の高いアプリケーションを実際に最初に開発
    • 要件定義の支援
    • 非同期処理や外部サービスとの連携
    • 難易度の高いドメインロジックの実装
       

1. 開発の効率化

  • 基幹システムのアプリケーションアーキテクチャの統一
    • DDD や オブジェクト指向 による設計、実装
    • フレームワーク、共通部品で煩雑な処理を隠蔽
    • ドキュメント
      • 開発者ガイド(Web/Batch/帳票/非同期処理/ワークフロー/Webサービス)
      • ドキュメントコメントの書き方ガイド(Javadoc/JavaScript)
      • アーキテクチャ基本設計書(アプリ)
      • アプリケーション設定ガイド
      • プロファイラー使用手順書
      • コーディングチェックシート
      • ソースコードレビュー表
    • ソースコード
      • フレームワーク
  • 開発プロセスの標準化
    • ソフトウェア、仕様書の構成管理、チケットドリブンによる課題管理
    • コミュニケーション管理(会議体の設定、運営)
    • 開発環境の標準化
    • CI環境の整備、プロセスへの組み込み
    • ドキュメント
      • 画面設計標準
      • 画面仕様書、機能仕様書、DB設計書
      • 用語辞書
      • 命名規約書
      • コーディング規約(Java/JavaScript)
         

2. 開発者の技術力不足解消

  • 開発チームを横断的にサポートする組織の立ち上げ
    • 難易度の高い機能の実装
    • アーキテクチャーや共通機能の説明会実施
    • テスト支援
      • 自動テストツール(後述するUIテストの自動化)
    • ドキュメント
      • 共通ライブラリ利用ガイド
      • アーキテクチャ基本設計書(データ)
      • データソース層開発Tips
    • ソースコード
      • 共通ライブラリ
    • セルフレビュー
      • 設計モデルチェックシート
      • コーディングチェックシート
      • リファクタリングによるコードの最適化指針
      • トラブルシューティング集
  • いくつかのアプリについては豆蔵が開発を担当
    • 要件や機能が複雑なアプリケーションをまず豆蔵が開発することで、ほかのアプリケーションの開発リスクを低減
      • 共通機能をライブラリー化し配布することで、ほかのアプリケーションの開発効率を向上
    • 開発ガイドへのフィードバック
       

3. デグレードの検出自動化

  • UI テストの自動化 (Selenium を導入)
  • UI テストのソースコードの半自動生成 (PageObjectデザインパターンの PageObject を自動生成)
  • UI テストの期待値作成、更新を自動化
  • UI テストの結果更新された DB のデータについても自動的に検証し、画面に現れないデグレを検出
     

効果

  1. 開発プロセスの統一による開発効率向上
    • 手順、仕様書の標準化で人員流動性向上
  2. フレームワーク、共通部品の充実により、業務ロジックの実装にリソースを集中
  3. 予期しないデグレードを自動検出する仕組みによる品質確保
     

適用サービス