DSMによるアーキテクチャ改善概論

概要

 既存のプロジェクトマネジメントや開発方法論で提唱されている内容は、大規模または複雑なソフトウェア構造に起因する開発進捗の停滞を解消することは不可能となっています。これには様々な理由が考えられますが、実際のソフトウェアを分解・分析し、どのように改善していくかの作業を抽出する観点が薄いことが最も大きな理由と考えられます。既に開発が終盤に近づき、大規模化・複雑化しているソフトウェアを廃棄し、新たに作り直すことは、通常の開発スケジュールではありえません。特に、プロダクトライン型開発では、ソフトウェアのシリーズ化において、アーキテクチャを維持&進化させていくことは、既存のIDEやソフトウェアメトリクス、UMLなどのオブジェクト指向技術の適用に限界があります。このような状況の中、既存のソフトウェアを延命しつつ、コアとなる資産を切り離し、ソフトウェアを再構築するための手段として、DSM(Dependency Structure Matrix/Design Structure Matrix)の実績が報告され、有効性が認められつつあります。本セミナーでは、DSMの基本を手始めに、アーキテクチャ改善の基本的な考え方を網羅的に理解し、アーキテクトとしてのスキルを効率よく学習することができます。
 ※DSMの概要については、こちらの記事を参考にしてください。
 ※DSMによる分析を行うツールには、Imagix4D / Lattix / Understand等がございます。

目標

  1. DSMの目的、利点、限界を理解する
  2. オブジェクト指向によるアーキテクチャ改善の法則を理解する
  3. DSMを用いたアーキテクチャ解析において、初期の分析視点を獲得することができる

前提条件

  • 現在、既存のソフトウェアの維持、機能拡張を行っていること

対象者

  • 開発経験5年以上のソフトウェア開発技術者
  • ソフトウェアの複雑性に悩んでいるソフトウェア/システムアーキテクト
  • SEPG等、ソフトウェア開発組織の改善スタッフ

研修内容

  • 1.本セミナーの目的とゴール
  • 2.アーキテクチャとは?
    • ソフトウェア開発の問題、課題
    • アーキテクチャとは?
    • アーキテクチャの基本
    • 既存のシステム構造と.オブジェクト指向設計の違い
    • 凝集度と結合度
    • 様々なアーキテクチャパターン
    • 演習
  • 3.DSMによるアーキテクチャの可視化と改善
    • DSMとは?. - 悪い構造と良い構造
    • DSMの利点と限界
    • DSMによるアーキテクチャの改善
    • DSMに関するメトリクス
    • コードクローンの弊害について
    • 演習
  • 4.アーキテクチャの維持
    • DSMによる解析
    • 劣化したアーキテクチャの事例
      • 硬さ、脆さ、移植性のなさ、扱いにくさ、不必要な複雑さ、不必要な繰り返し、不透明さ
    • 循環参照の排除
    • 変更影響度のモニタリング
    • DSMによるアーキテクチャ維持サイクル
    • 演習
  • 5.アーキテクチャ改善手法
    • 循環依存の種類と改善方法
    • 変更プロパゲーションの見極めと対策
    • 様々な設計手法
      • 単一責任の原則 (SRP : Single Responsibility Principle)
      • オープン・クローズドの原則 (OCP : Open-Closed Principle)
      • リスコフの置換原則 (LSP : Liskov Substitution Principle)
      • 依存性逆転の原則 (DIP : Dependency Inversion Principle)
      • インタフェース分離の原則 (ISP : Interface Segregation Principle)
    • パッケージ設計の原則
      • 再利用、リリース等価の原則(REP:Reuse-Release Equivalency Principle)
      • 全再利用の原則(CRP:Common Reuse Principle)
      • 閉鎖性共通の原則(CCP:Common Closure Principle)
      • 非循環依存関係の原則(ADP:Acyclic Dependencies Principle)
      • 安定依存の原則(SDP:Stable Dependencies Principle)
      • 安定度・抽象度等価の原則(SAP:Stable Abstractions Principle)
    • 演習