SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャ入門
∼構造化,オブジェクト指向の歴史を振り返って
北九州市立大学 山崎 進
1
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化以前
• プログラムに構造がなく無秩序だ
と主に次の品質特性(quality
characteristics)が悪化する
• 保守性(maintainability)
• 解析容易性(analyzability)
• 変更容易性
(changeability)
• 安定性(stability)
• テスト容易性(testability)
• 移植性(portability)
• 俗にスパゲティ状態という
2
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化への道
入れ子構造
• 入れ子構造(nesting)
• 構造の中に別の構造がすっ
ぽり収まっている
• 1つの入口と出口を持つ
• 中身を局所化・隠蔽できる
• goto文を排除する
• 構造化定理
• 任意のプログラムを入れ子
構造のプログラムに等価変
換できる(意訳)
3
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
構造化への道
関数や手続きの概念
• 関数(function)
手続き(procedure)
• 入れ子に名前を付けたもの
• 名前で共用参照する
• 中身を局所化・隠蔽できる
• 構造化プログラミング
(structured programming)
• 1967年ダイクストラが提唱
4
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向への道
大域変数の排除
• 大域変数(global variable)
• どの場所からでもアクセスできる変数
• データフロー構造が複雑化し,理解しにくくなる
• プログラム変更時に問題が多発する可能性が大きい
• 局所化により大域変数を排除
• ブロック(block)内
• 関数・手続き内
• モジュール(module)内
5
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向へ
の道
6
• 結合度(coupling)
• モジュール間の関連性
• 低い方がいい
• 凝集度(cohesion)
• モジュール内の関連性
• 高い方がいい
• 次のような設計指針がよい
• 関連性の高い情報を
モジュールにまとめる
• 関連性の低い情報は
モジュールを分ける
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
オブジェクト指向への道
抽象データ型
• 抽象データ型(abstract data type)
• 凝集度を高くするために
• データと,データへの操作をモジュールとしてまとめる
• モジュールとしてまとまった操作は共通するデータを扱う
• 結合度を低くするために
• モジュールの外からのデータへのアクセスを禁止する
• モジュール間で直接データを共有しない
• オブジェクト指向プログラミング(OOP: object-oriented programming)
• オブジェクト=抽象データ型+実体(実際の値としてのデータ)
• 言語の例
• Simula(1960s), Smalltalk(1970s), C++(1980s), Java(1990s)
7
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャ
• ソフトウェアの急速な大規模化
• モジュール数が増加し,多数の開発者が関わるようになる
• 秩序が必要(特にモジュール間の関係)
• (ソフトウェア)アーキテクチャ(software architecture)
• 基本定義: モジュールの相互接続を記述したもの
• 世の中には100種類以上もアーキテクチャの定義がある
http://www.sei.cmu.edu/architecture/definitions.html
• アーキテクチャスタイル(architectural style)
アーキテクチャパターン(architectural pattern)
• モジュールと,モジュール間の関係の型
8
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
アーキテクチャスタ
イルの例
• レイヤーアーキテクチャ
(layered architecture)
• 関連性の高いモジュール群
を1つのパッケージ
(package)にする
• パッケージが層状に積み重
なった形にする
• 上位層が下位層を呼び出す
関係を保つ
• 呼出関係の構造が単純化
• 最も基本的なアーキテクチャ
• 例: OSI参照モデル, TCP/IP
9
2009年6月27日土曜日
Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved.
まとめ
• ソフトウェアに構造がないと保守性と移植性が悪化する
• 構造化プログラミングにより,制御構造が構造化された
• 結合度と凝集度の概念はソフトウェアの構造を決める上で重要である
• オブジェクト指向プログラミングにより,データ構造も含めて構造化された
• アーキテクチャの概念により,モジュール間の関係が構造化された
• 最も基本的なアーキテクチャスタイルの1つはレイヤーアーキテクチャである
10
2009年6月27日土曜日

Más contenido relacionado

Más de Susumu Yamazaki

要求開発の1手法を体感してみよう!〜フィーチャーモデリング
要求開発の1手法を体感してみよう!〜フィーチャーモデリング要求開発の1手法を体感してみよう!〜フィーチャーモデリング
要求開発の1手法を体感してみよう!〜フィーチャーモデリングSusumu Yamazaki
 
ソフトウェア工学概論〜要求開発の要点
ソフトウェア工学概論〜要求開発の要点ソフトウェア工学概論〜要求開発の要点
ソフトウェア工学概論〜要求開発の要点Susumu Yamazaki
 
コンピュータシステムの原理を理解させる
アクティブ・ラーニング
コンピュータシステムの原理を理解させる
アクティブ・ラーニングコンピュータシステムの原理を理解させる
アクティブ・ラーニング
コンピュータシステムの原理を理解させる
アクティブ・ラーニングSusumu Yamazaki
 
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計Susumu Yamazaki
 
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...Susumu Yamazaki
 
Instructional Design of Exercise-Centric Teaching Materials on UML Modeling
Instructional Design of Exercise-Centric Teaching Materials on UML ModelingInstructional Design of Exercise-Centric Teaching Materials on UML Modeling
Instructional Design of Exercise-Centric Teaching Materials on UML ModelingSusumu Yamazaki
 
Application of Workshop-based Instruction to Guide Project-based Research Lea...
Application of Workshop-based Instruction to Guide Project-based Research Lea...Application of Workshop-based Instruction to Guide Project-based Research Lea...
Application of Workshop-based Instruction to Guide Project-based Research Lea...Susumu Yamazaki
 
研究室紹介 2014 年版 (北九州市立大学 山崎進)
研究室紹介 2014 年版 (北九州市立大学 山崎進)研究室紹介 2014 年版 (北九州市立大学 山崎進)
研究室紹介 2014 年版 (北九州市立大学 山崎進)Susumu Yamazaki
 
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用Susumu Yamazaki
 
研究室紹介 2013 (北九州市立大学 山崎進)
研究室紹介 2013 (北九州市立大学 山崎進)研究室紹介 2013 (北九州市立大学 山崎進)
研究室紹介 2013 (北九州市立大学 山崎進)Susumu Yamazaki
 
Instructional Design of a Highly Effective Blended Learning Course with Group...
Instructional Design of a Highly Effective Blended Learning Course with Group...Instructional Design of a Highly Effective Blended Learning Course with Group...
Instructional Design of a Highly Effective Blended Learning Course with Group...Susumu Yamazaki
 
Introduction to the Software Engineering Laboratory 2012 (zacky1972)
Introduction to the Software Engineering Laboratory 2012 (zacky1972)Introduction to the Software Engineering Laboratory 2012 (zacky1972)
Introduction to the Software Engineering Laboratory 2012 (zacky1972)Susumu Yamazaki
 

Más de Susumu Yamazaki (14)

要求開発の1手法を体感してみよう!〜フィーチャーモデリング
要求開発の1手法を体感してみよう!〜フィーチャーモデリング要求開発の1手法を体感してみよう!〜フィーチャーモデリング
要求開発の1手法を体感してみよう!〜フィーチャーモデリング
 
ソフトウェア工学概論〜要求開発の要点
ソフトウェア工学概論〜要求開発の要点ソフトウェア工学概論〜要求開発の要点
ソフトウェア工学概論〜要求開発の要点
 
コンピュータシステムの原理を理解させる
アクティブ・ラーニング
コンピュータシステムの原理を理解させる
アクティブ・ラーニングコンピュータシステムの原理を理解させる
アクティブ・ラーニング
コンピュータシステムの原理を理解させる
アクティブ・ラーニング
 
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計
情報工学教育における知識定着と直観的理解を意図した反転授業〜アクティブラーニングの授業設計
 
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...
Instructional Design of a Workshop 
“How a Computer Works” 
Aimed at Improvin...
 
Instructional Design of Exercise-Centric Teaching Materials on UML Modeling
Instructional Design of Exercise-Centric Teaching Materials on UML ModelingInstructional Design of Exercise-Centric Teaching Materials on UML Modeling
Instructional Design of Exercise-Centric Teaching Materials on UML Modeling
 
Application of Workshop-based Instruction to Guide Project-based Research Lea...
Application of Workshop-based Instruction to Guide Project-based Research Lea...Application of Workshop-based Instruction to Guide Project-based Research Lea...
Application of Workshop-based Instruction to Guide Project-based Research Lea...
 
研究室紹介 2014 年版 (北九州市立大学 山崎進)
研究室紹介 2014 年版 (北九州市立大学 山崎進)研究室紹介 2014 年版 (北九州市立大学 山崎進)
研究室紹介 2014 年版 (北九州市立大学 山崎進)
 
研究紹介 2014年版
研究紹介 2014年版研究紹介 2014年版
研究紹介 2014年版
 
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用
「反転授業の研究」オンライン勉強会 Idに基づく学習目標の立て方の実際と反転授業への応用
 
研究室紹介 2013 (北九州市立大学 山崎進)
研究室紹介 2013 (北九州市立大学 山崎進)研究室紹介 2013 (北九州市立大学 山崎進)
研究室紹介 2013 (北九州市立大学 山崎進)
 
Fd id-jset-slide share
Fd id-jset-slide shareFd id-jset-slide share
Fd id-jset-slide share
 
Instructional Design of a Highly Effective Blended Learning Course with Group...
Instructional Design of a Highly Effective Blended Learning Course with Group...Instructional Design of a Highly Effective Blended Learning Course with Group...
Instructional Design of a Highly Effective Blended Learning Course with Group...
 
Introduction to the Software Engineering Laboratory 2012 (zacky1972)
Introduction to the Software Engineering Laboratory 2012 (zacky1972)Introduction to the Software Engineering Laboratory 2012 (zacky1972)
Introduction to the Software Engineering Laboratory 2012 (zacky1972)
 

アーキテクチャ入門

  • 1. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. アーキテクチャ入門 ∼構造化,オブジェクト指向の歴史を振り返って 北九州市立大学 山崎 進 1 2009年6月27日土曜日
  • 2. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. 構造化以前 • プログラムに構造がなく無秩序だ と主に次の品質特性(quality characteristics)が悪化する • 保守性(maintainability) • 解析容易性(analyzability) • 変更容易性 (changeability) • 安定性(stability) • テスト容易性(testability) • 移植性(portability) • 俗にスパゲティ状態という 2 2009年6月27日土曜日
  • 3. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. 構造化への道 入れ子構造 • 入れ子構造(nesting) • 構造の中に別の構造がすっ ぽり収まっている • 1つの入口と出口を持つ • 中身を局所化・隠蔽できる • goto文を排除する • 構造化定理 • 任意のプログラムを入れ子 構造のプログラムに等価変 換できる(意訳) 3 2009年6月27日土曜日
  • 4. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. 構造化への道 関数や手続きの概念 • 関数(function) 手続き(procedure) • 入れ子に名前を付けたもの • 名前で共用参照する • 中身を局所化・隠蔽できる • 構造化プログラミング (structured programming) • 1967年ダイクストラが提唱 4 2009年6月27日土曜日
  • 5. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. オブジェクト指向への道 大域変数の排除 • 大域変数(global variable) • どの場所からでもアクセスできる変数 • データフロー構造が複雑化し,理解しにくくなる • プログラム変更時に問題が多発する可能性が大きい • 局所化により大域変数を排除 • ブロック(block)内 • 関数・手続き内 • モジュール(module)内 5 2009年6月27日土曜日
  • 6. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. オブジェクト指向へ の道 6 • 結合度(coupling) • モジュール間の関連性 • 低い方がいい • 凝集度(cohesion) • モジュール内の関連性 • 高い方がいい • 次のような設計指針がよい • 関連性の高い情報を モジュールにまとめる • 関連性の低い情報は モジュールを分ける 2009年6月27日土曜日
  • 7. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. オブジェクト指向への道 抽象データ型 • 抽象データ型(abstract data type) • 凝集度を高くするために • データと,データへの操作をモジュールとしてまとめる • モジュールとしてまとまった操作は共通するデータを扱う • 結合度を低くするために • モジュールの外からのデータへのアクセスを禁止する • モジュール間で直接データを共有しない • オブジェクト指向プログラミング(OOP: object-oriented programming) • オブジェクト=抽象データ型+実体(実際の値としてのデータ) • 言語の例 • Simula(1960s), Smalltalk(1970s), C++(1980s), Java(1990s) 7 2009年6月27日土曜日
  • 8. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. アーキテクチャ • ソフトウェアの急速な大規模化 • モジュール数が増加し,多数の開発者が関わるようになる • 秩序が必要(特にモジュール間の関係) • (ソフトウェア)アーキテクチャ(software architecture) • 基本定義: モジュールの相互接続を記述したもの • 世の中には100種類以上もアーキテクチャの定義がある http://www.sei.cmu.edu/architecture/definitions.html • アーキテクチャスタイル(architectural style) アーキテクチャパターン(architectural pattern) • モジュールと,モジュール間の関係の型 8 2009年6月27日土曜日
  • 9. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. アーキテクチャスタ イルの例 • レイヤーアーキテクチャ (layered architecture) • 関連性の高いモジュール群 を1つのパッケージ (package)にする • パッケージが層状に積み重 なった形にする • 上位層が下位層を呼び出す 関係を保つ • 呼出関係の構造が単純化 • 最も基本的なアーキテクチャ • 例: OSI参照モデル, TCP/IP 9 2009年6月27日土曜日
  • 10. Copyright © 2007-2009, Susumu Yamazaki, All Rights Reserved. まとめ • ソフトウェアに構造がないと保守性と移植性が悪化する • 構造化プログラミングにより,制御構造が構造化された • 結合度と凝集度の概念はソフトウェアの構造を決める上で重要である • オブジェクト指向プログラミングにより,データ構造も含めて構造化された • アーキテクチャの概念により,モジュール間の関係が構造化された • 最も基本的なアーキテクチャスタイルの1つはレイヤーアーキテクチャである 10 2009年6月27日土曜日