UML入門 - 思考と言語研究室

Download Report

Transcript UML入門 - 思考と言語研究室

基礎情報技術
ー第1日目ー
平成19年6月8日(金)
○亀田・中村・千種
本講義担当教員
• 中村太一(CS)
• 千種康民(CS)
• 亀田弘之(CS) (世話役)
講義の順番
• 中村太一 (CS) BS, CS-B, CS-A
• 千種康民 (CS) CS-B, CS-A, BS
• 亀田弘之 (CS) CS-A, BS, CS-B
CS-Aクラス:研A302
CS-Bクラス:研A303
BSクラス: 研A403
日程
• 1期: 4/13 4/27 5/11 6/1
• 2期: 6/8 6/15 6/22 6/29
• 3期: 7/6 7/13 7/20 7/27
少しだけガイダンス
講義内容(1)
• 中村太一先生
– お楽しみ (基礎情報処理技術者試験関連)
• 情報分野の基礎
• 情報処理技術者試験(www.jitec.jp)
– 経済産業省 ・ 国家試験
– 3年生の秋までにはとろう(年2回実施、4月と10月)
– 今年の春は4月15日!
• ディジタル技術検定(www.digital.kentei.or.jp)
–
–
–
–
–
実務技能検定協会
文部科学省 後援・全工協後援・日本技能協会連合会推薦
情報2級部門 がお勧め
4年生までに1級が取れるとすごい
今年は6月24日と11月26日
お知らせ
• 「情報処理技術者試験」に合格するといいこ
とがある!
• 「実践コンピュータ技術」の単位が
取得できる。
• 詳細は、教務課に確認すること。
(ガイダンスでも話があったと
思いますが…)
We have to
strive for what
we want.
講義内容(2)
• 千種康民先生
– 統計処理(gnuplot? R?)
• 具体的内容はお楽しみ。たぶん、…かな?
基礎的かつ重要!
– なぜ高校までの間にしっかり学ばないのか?
– 実務・研究あらゆる分野で人より一歩先んじる
には、統計は不可欠!
– 興味のある人は、統計学を深く学ぶこと!
参考までに(?)
• 本学における統計の講義
– BS:「データと統計」(1年後期)
• 基礎からしっかり
• やや理論寄り
– CS:「確率と統計」(1年後期)
• 基礎からしっかり
• やや理論よりか
– ME:「確率と統計」(1年後期木曜日1限)
• 基礎の基礎から丁寧に
• 実務処理の観点にも重点をおいている
• EXCELでの統計処理とその結果の解釈
– 大学院でも「高度データマイニング」で統計が学べたのに!
講義内容(3-1)
• 亀田弘之
– 第1部
•
•
•
•
UML(Unified Modeling Language)
XML(eXtened Markup Langauage)
UNL(Universal Networking Langaugae)
Semantic Web や Semantic Computing など
– 第2部
• 情報倫理 など
いずれも皆さんの役に立ちます。
講義内容(3-2)
– 第1部
•
•
•
•
UML(Unified Modeling Language)
XML(eXtensible Markup Langauage)
UNL(Universal Networking Langaugae)
Semantic Web や Semantic Computing
– 第2部
• 情報倫理
亀田は、これらのもので何を伝えたいのか。
それは、...
亀田の講義の目的(1)
• IT(Information Technology)を真にかつ
格段に発展させるためには、以下の問題点を
本質的に解決する必要があることを知る。
– 複雑さ(complexity)
– 意味(semantics)
の取り扱いの困難性
亀田の講義の目的(2)
• これらの問題を克服するには...
が本質的である。
(これは亀田の信念)
<<参考>> 興味のある人は、電子情報通信学会「思考と言語」研究会
( http://www.ieice.org/~tl/ ) などを調べること。
講義内容(3-3)
– 第1部
•
•
•
•
UML(Unified Modeling Language)
XML(eXtensible Markup Langauage)
UNL(Universal Networking Langaugae)
Semantic Web や Semantic Computing
– 第2部
• 情報倫理
亀田は、これで何を伝えたいのか。
それは、...
亀田の講義の目的(2)
• 情報化社会において、より豊かで
実り多い生活を送りために。
(不用意なトラブルに巻き込まれないために)
亀田の講義日程
• 亀田弘之(BS)
– 6月 8日 イントロ+α)
– 6月15日 UML(その1)
– 6月22日 UML(その2)
– 6月29日 情報倫理 その他
それでははじめましょう。
基礎情報技術
ー UML入門準備(1日目続き)ー
平成19年6月8日(金)
亀田弘之
背景と問題点
現実世界
実装された
での活動
情報システム
(作成)
モデル
(分析)
ソフトウェア工学とは
• バグのないソフトウェアを効率よく開発・テス
ト・維持するための手法に関する理論・ノウハ
ウの総体
• 従来からさまざまな手法が提案されては消え
ていきました。
• 現状は、UML(Unified Modeling Language)
の登場により、オブジェクト指向を前提とする
手法が主流になりつつあります。
ソフトウェアのライフサイクル(1)
1.
2.
3.
4.
5.
6.
要求分析
設計
プログラミング
デバッグ
評価
運用
⇒再び1へ戻る
ソフトウェアのライフサイクル(2)
•
•
•
•
•
•
何(どんなもの)を作ればいいの?
どう作ればいの?
作成作業そのもの(デバッグもやりながら)
本当にちゃんとできたのかな?
実際に使おう!
ちょっと変更したいな。
ソフトウェア開発モデル
•
•
•
•
•
•
ウォーターフォール(water fall)モデル
プロトタイピングによるソフトウェア開発
インクリメンタルモデルとイテラティブモデル
スパイラルモデル
データフローモデル
アジャイルモデル
=>一長一短あり
自主問題:
ウォーターフォールモデル と スパイラルモデルについて調べよ。
• 進化するソフトウェア
• ソフトウェア開発はムービングターゲット
アジャイル開発手法
• 背景:
– 仕様が確定しない
– 短期開発
– 低コスト化の要請
• 意義
– 優秀な小規模人材のチームの生産性大
– コンカレントエンジニアリングが不可欠
– お客のコミットした仕様を実現したテスト済ソース
コードの生産性(throughput)の最大化
UMLの歴史(背景)No.1
オブジェクト指向分析/設計の方法論
• 1980年代~90年代(pre-historic)
– Grady Booch(Booch method),
– James Rumbaugh(OMT),
– Ivar Jacobson(OOSE; Object Oriented
Software Engineering)
• 1994年 BoochとRumbaughが協力
• 1995年 Jacobsonも加わる(Three amigos)
->UMLの始まり
UMLの歴史(背景)No.2
• 1997年1月 UML1.0OMG(Object
Management Group)へ提案
• 1997年末 UML1.1はOMGの標準に
• 1998年
2回改定される。
• 2004年4月 UML2.0発表される!
(現在はUML2.1.1)
<<注>> 本講義ではUML1.5 & 2.0に準拠する。
UMLとは
• モデリング言語
背景と問題点
現実世界
実装された
での活動
情報システム
モデル
UMLの利点
1. システム分析や設計の結果を
理解しやすく表現できる。
2. Object-orientedの考えに基づくため、
Javaなどと相性がよい。
3. OMGが策定した仕様(de facto standard)
(http://www.omg.org/)
4. 開発者相互、開発者ー利用者間の
円滑な意思疎通ができる。
UMLの適用有効分野
• 携帯電話やカーナビゲーション機器の
「組み込みソフトウェア」の分野 などなど
UML理解のためのキーワード
• モデリング
– モデル記述言語とモデル
• オブジェクト指向
UML
開発言語
開発プロセス
開 発 ツ ー ル
UMLを学ぶ意義
意思疎通手段としての有効性
モデリング手段としての有効性
情報システム開発に
UMLの積極的活用を
UMLモデリングツールの充実
UMLのde facto standard
技術者認定試験
UML有効活用5原則
1.
2.
3.
4.
5.
各図の役割や用途のちがいを明確に意識する。
モデリングのスキル向上に近道なし。
UML活用を先導するcore team を設置する。
モデルを「均質化」する仕組み作りを心がける。
UMLモデリングツールの活用は不可欠。
モデリングツールの例
•
•
•
•
Borland together
Konesa
Rational Rose XDE Developer
Visual studio.NET Enterprise Architect
• IIOSS (http://www.iioss.org/)
• EclipsUML (http://www.omondo.com/)
• JUDE etc.
オブジェクト指向の理解も必要
•
•
•
•
•
•
•
オブジェクト
抽象化
クラスとオブジェクト(インスタンス)
データ抽象(カプセル化・隠蔽)
メッセージとメソッド
継承と集約
ポリモフィズム(polymorphism, 多相性)
など
1回目前半おわり
基礎情報技術
平成18年6月8日(金)
亀田弘之
「オブジェクト指向」理解のキーワード
1.
2.
3.
4.
5.
6.
7.
オブジェクト
抽象化
クラスとインスタンス
データ抽象(カプセル化・情報の隠蔽)
メッセージとメソッド
継承と集約
ポリモフィズム(polymorphism多相性)
など
1.オブジェクト(1)
• オブジェクト(object)とは、
– 「もの」のこと
• 例:
– 自動車、人、携帯電話器、教科書、…
1.オブジェクト(2)
• オブジェクト指向(object-oriented)というもの
の考え方は、複雑な現実世界を
「オブジェクトとそれらの相互関係」
で記述しようとするもの。
「実体概念と関係概念」
2.抽象化(1)
• 抽象化とは、
– 必要なものだけを取り出し、不要なものを捨て去
ること。
– つまり、システムの構築を目的として、オブジェク
ト(対象物)の属性や振る舞いの内、必要なもの
を選び出すこと。
2.抽象化(2)
• 例:成績管理システム
– オブジェクト: 学生など
– 学生の属性: 氏名・学籍番号・成績など
<<注>> 学生の属性としては、これらの他に
趣味・出生地・体重など
があるが、成績管理システムにとっては
関係ない(捨て去られる属性)
3.クラスとインスタンス(1)
• クラスとは、
– 設計図や型紙のようなもの(比喩的に言うと)
– 同じ性質を持つオブジェクトの集まりのこと
• インスタンスとは、
– 実際の「もの」そのもの
3.クラスとインスタンス(2-1)
• 例1:
乗用車クラス
山田さんの車
田中さんの車
中山さんの車
3.クラスとインスタンス(2-1)
• 例1:
クラス
インスタンス
乗用車クラス
山田さんの車
田中さんの車
中山さんの車
3.クラスとインスタンス(2-2)
• 例2:
生徒 ---鈴木さん
佐藤さん
吉田さん
3.クラスとインスタンス(2-2)
• 例2:
生徒 ---鈴木さん
佐藤さん
吉田さん
クラス
オブジェクト
4.データ抽象(1)
• データ抽象とは、
– カプセル化や情報隠蔽のこと
• カプセル化(encapsulation):
– オブジェクトに関して、データとそれを操作する手続
きをまとめること。
• 情報の隠蔽:
– オブジェクト内部の情報を外部から見えなくすること。
– カプセル化により、オブジェクトの内部構造などの情
報を外部から隠蔽することができる。
4.データ抽象(2)
操作1
操
作 データ
3
操作2
オブジェクトのイメージ
操作1
操
作 データ
3
操作2
オブジェクト1
オブジェクト2
オブジェクト1からはオブジェクト2のデータが
見えない。操作(method)を介する必要がある。
5.メッセージとメソッド(1)
• メッセージとは、
– オブジェクトに与える指示
• 例:あるオブジェクト1(プログラム)とオブジェクト2(プ
リンター)相互の対話。
「オブジェクト2さん、準備はできていますか?」
「オブジェクト1さん、準備OKですよ。」
「オブジェクト2さん、あなたの機種を教えてください。」
「はい、私はレーザビームプリンタですよ。」
「オブジェクト2さん、この絵を印刷して!」
「オブジェクト1さん、印刷終了しました。」
5.メッセージとメソッド(2)
• 先の例のように、相互にメッセージを送りあう
ことを、メッセージパッシング(message
passing)と言う。
• メッセージパッシングは、メソッド(操作)を介し
て行う。
メッセージパッシング(1)
メッセージ1
操作1
操
作 データ
3
操作2
オブジェクト2
オブジェクト1
メッセージ2
メッセージパッシング(1)
メッセージ1
メッセージ
パッシング
操作1
操
作 データ
3
操作2
オブジェクト2
オブジェクト1
メッセージ2
メッセージパッシング(2)
メッセージ1
メソッドを介する
操作1
操
作 データ
3
操作2
オブジェクト2
オブジェクト1
メッセージ2
メッセージパッシング(3)
• メッセージの送り方(例):
dbcon = driveManager.getConnection(RDBNAME);
System.out.println(“認証エラー”);
メッセージパッシング(3)
• メッセージの送り方(例):
dbcon = driveManager.getConnection(RDBNAME);
オブジェクト
メソッド
メッセージパッシング(4)
• 他のオブジェクトに処理を任せることを、委譲
と言う。
• 例:
– Aさん:「お母さん、明日のお弁当作ってね。」
– お母さん:「お弁当のおかず買ってきて。」
「Aさん」は「お母さんに」お弁当つくりの処理を委
譲し、「お母さん」は「Aさん」におかずの買出し処
理を委譲している。
6.継承と集約
• 継承とは、
– 新たなクラスを作成する際に、既存のクラスの共
通部分を引き継ぐこと。
– 継承は、is-a関係になっている。
3.継承と集約(2)
• 例:
自動車クラス
レーシングカー
クラス
バスクラス
タクシークラス
3.継承と集約(2)
• 例:
自動車クラス
is-a関係
Racing car is a car.
レーシングカー
クラス
バスクラス
タクシークラス
3.継承と集約(2)
• 継承の例:
自動車クラス
一般化
is-a関係
Racing car is a car.
特殊化
レーシングカー
クラス
バスクラス
タクシークラス
3.継承と集約(3-1)
• 継承の例:
犬
しろ
哺乳類
猫
ポチ
ミーちゃん
鯨
太郎
カモノハシ
Melbourn動物園
のカモノハシJohn
3.継承と集約(3-2)
• 継承の例:
犬
しろ
哺乳類
猫
ポチ
ミーちゃん
スーパークラス
とサブクラス
鯨
太郎
カモノハシ
Melbourn動物園
のカモノハシJohn
クラスとインスタンス
犬クラスのインスタンス
実体
3.継承と集約(4-1)
• 集約とは、
– 部品(component)を組み合わせること。
– コンポーネントを組み合わせた全体を、コンポ
ジット(composite)あるいはコンテナ(container)と
呼ぶ。
– 集約は、part-of関係になっている。
3.継承と集約(4-2)
車 台
窓ガラス
ボディ
タイヤ
エンジン
ハンドル
3.継承と集約(4-2)
Part of 関係
Engine is a
part of a car
車 台
窓ガラス
ボディ
タイヤ
エンジン
ハンドル
・車台・ボディ・エンジンは、自動車のコンポーネント
・自動車がコンポジット(コンテナ)
7.ポリモルフィズム
• ポリモフィズムとは、
– 異なるクラスに対して、同じメソッドでそれぞれの
動作を実行させること。
– 例:
今日はここまで
• Let’s call it a day.
一日目後半おわり
成績評価の方法
• レポートです。
• 課題は後日Webと掲示板で公表します。