Presentation is loading. Please wait.

Presentation is loading. Please wait.

基礎情報技術 ー第2日目ー 平成20年5月9日(金) 担当:亀田.

Similar presentations


Presentation on theme: "基礎情報技術 ー第2日目ー 平成20年5月9日(金) 担当:亀田."— Presentation transcript:

1 基礎情報技術 ー第2日目ー 平成20年5月9日(金) 担当:亀田

2 確認 授業で使用した資料は授業終了後にWebにて公開します。 ノートにメモを取ってください。 (キーワードや図だけでも結構です。)
毎回レポート課題がでます。 (前回のレポートは授業終了時に回収します。)

3 それでは始めましょう

4 前回のポイントの確認 ITのプロになるためには何が必要か? これを考えるための素材をお話しました。

5 前回のポイントの確認 SEの仕事はプログラミングだけではない ソフトウェアのライフサイクル オブジェクト指向 モデリング言語 UML など

6 授業概要 ITエンジニアのプロフェッショナルになるためには、プロとしての嗜み(たしなみ)と作法を身につけることも大切である。本授業では、今後プロとしてソフトウェアかかわる人たちにとって避けて通ることのできない嗜み・作法を簡単な演習を通じて紹介するとともに、学生の皆さんにそれらの必要性・重要性を身を持って理解してもらうことを目指す。 具体的には、ソフトウェア開発を上流工程から下流工程へ向けて実際に体験してもらいながら、UML(Unified Modeling Language)やプロジェクト管理等の紹介を行う。 ITシステム ≠ プログラミング であることや、ソフトウェア開発におけるコミュニケーションの意義、プロジェクト管理の重要性についてなど、多くのことを学生の皆さん自らが気づくことを期待する。

7 今日の内容 要求仕様を作ってみよう ソフトウェア開発過程の概要 UMLの概説 Javaプログラミング など 今日の課題(課題番号No2)

8 ソフトウェア開発過程の概要 「ソフトウェアは実際にどのような作業工程を 経て作れば良いのか?」 ということ。

9 ソフトウェア開発過程の確立 これは未解決問題の1つです!

10 よいプログラムは どうやって作れば良いのか?
バグのない 動作効率のよい 開発コストがかからない メンテナンスがしやすい 急な修正・変更にも対応できる 拡張性のある 汎用性のある などなど こんなプログラムってどうやって作る のだろうか?

11 疑問:プログラミング言語の分類は今後もこれでいいのだろうか?
例えば、プログラミング言語 これにもいろいろな工夫がなされてきた 事務処理計算向き言語 科学技術計算向き言語 人工知能研究向き言語 など (こんな分類のもと、さまざまな言語が考案されてきた。) 疑問:プログラミング言語の分類は今後もこれでいいのだろうか?

12 要求仕様としては… 対象としている処理(機能・サービス)を記述・実現することができなければならない。
人間にとって使いやすく、分かりやすいものであって欲しい。 Fortran:計算式をそのまま書ける Cobol:自然言語に近い表現が可能 Pascal: ____________________ C: ________________________ Java: ______________________ 考えてみてください。

13 よりよいプログラムをもとめて… 機能の整理 モジュール化/階層化 構造化プログラミング
モジュールの独立性 (関数型言語、データ抽象化、  =>オブジェクト指向) ソフトウェア開発法 プログラミング言語側から 開発法側から

14 具体的に見てみよう プログラミングの側面から 開発手法の側面から

15 工学部情報工学科での講義資料より 担当:亀田弘之(東京工科大学)
プログラム工学Ⅲ (ダイジェスト版) 工学部情報工学科での講義資料より 担当:亀田弘之(東京工科大学)

16 C言語の歴史 1972年 誕生(Dennis M. Ritchie) UNIX開発用言語として使用 ハードウェアの発達により新しい機能追加
方言の発生 1989年 ANSI規格制定 1990年 ISO規格制定 1993年 JIS C制定

17 問題 C言語は今後どのような発展の道をたどるか論じなさい。
BASIC、PASCAL、FORTRAN、COBOL、LISP、PROLOGなどの他の言語の歴史を調べ、各言語がどのような背景・目的で誕生し、どのような道をたどっているか論ぜよ。

18 C言語の特徴 構造化プログラミング向き ハードウェアが透けて見える高水準言語 豊富なデータタイプ コンパクトな言語仕様
関数形式によるモジュール化 移植性が比較的高い

19 構造化プログラミングとは 処理手続きをいくつかの単位に分割し、主となる処理は大まかに記述とし、細部はサブルーチンとして記述していく方法。エドガー・ダイクストラらによって提唱された。ダイクストラは、大規模化したプログラムを効率よく記述しプログラム設計上のミスが起きにくいようにするための方法論を検討した。その結果1960年代後半に、構造化定理を証明し、構造化プログラミングを提唱した。

20 構造化定理 1つの入り口と1つの出口を持つようなプログラムは、「順次・反復・分岐」の3つの基本的な論理構造によって記述できる(Dijikstra)。 順次 反復 分岐

21 分岐 順次 反復 S = S + 1 X = f(S, 5) S = g(X) + S

22 問題 C言語の特徴を、Javaなどの他の言語と比較して述べよ。

23 3.プログラムの基本的なパターン #include <stdio.h> main( ) { } 本体

24 3.プログラムの基本的なパターン #include <stdio.h> main( ) {
double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); }

25 3.プログラムの基本的なパターン #include <stdio.h> main( ) {
double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, & fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } Cのプログラム

26 3.プログラムの基本的なパターン #include <stdio.h> main( ) {
double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); }

27

28 5.構造化プログラミングと制御構造

29 分岐 順次 反復 S = S + 1 X = f(S, 5) S = g(X) + S 構造化プログラミング

30 5.構造化プログラミングと制御構造 順次 反復 分岐 for文 while文 do-while文 goto文 break文
continue文 switch文 & case文

31 For文 Syntax: for(式1; 式2; 式3) 文 例: for( i=1; i <= 100; i++)
s = s + i; s=s+i i++ i<=100 i=1 Flow Chart

32

33 今度は、… プログラミングの側面から 開発手法の側面から

34 ソフトウェアのライフサイクル(1) 要求分析 設計 プログラミング デバッグ 評価 運用 ⇒再び1へ戻る

35 ソフトウェアのライフサイクル(2) 何(どんなもの)を作ればいいの? どう作ればいの? 作成作業そのもの(デバッグもやりながら)
本当にちゃんとできたのかな? 実際に使おう! ちょっと変更したいな。

36 ソフトウェア開発モデル ウォーターフォール(water fall)モデル プロトタイピングによるソフトウェア開発
インクリメンタルモデルとイテラティブモデル スパイラルモデル データフローモデル アジャイルモデル モデル駆動型 =>一長一短あり 自主問題:  ウォーターフォールモデル , スパイラルモデルおよび  モデル駆動型アーキテクチャ(MDA)について調べよ。

37 ソフトウェア開発過程の確立 現時点では、経験的・体験的にtry! 銀の弾丸はあるのだろうか?

38 問題 「銀の弾丸」とはソフトウェア工学の分野では何を意味しているのでしょうか?調べてみてください。

39 銀の弾丸とは ソフトウェア開発の現場における諸問題に対して、あまねく通用する万能解決策のこと。
このような「万能な解決策(銀の弾丸)は存在しない」という表現で、ソフトウェア開発の難しさを表現することがある。

40 銀の弾丸はなくても… あきらめてはいけない! 1つの提案が「モデリング」とそれを記述・表現するための「モデル記述言語」である。
 (以下、その話をしましょう)

41 今日の内容(再) 要求仕様を作ってみよう ソフトウェア開発過程の概要 UMLの概説 Javaプログラミング など
今日の課題(課題番号No2)

42 UMLの歴史 (前回資料参照) とにかく、いいプログラムはいい設計が大切、という観点から、さまざまな開発手法が考えられてきた。

43 それでわかったこと 要求仕様の明確化 それにもとづくきちっとした設計 設計にきちんと基づく「実装」 要求仕様に対応した検証 が大切
プラットフォームに依存しない 「機能やサービス」のレベル プラットフォームに依存する 「実装」レベル 設計にきちんと基づく「実装」 要求仕様に対応した検証  が大切

44 UMLはモデル記述のための言語(図で標記)
これらのレベルごとに、当該システムをモデル化することが大切。 その際、モデルを記述する表現(言語)が必要。  => UML の登場! UMLはモデル記述のための言語(図で標記)

45 UML各種ダイアグラムの紹介 ユースケース図 クラス図 その他のUML図

46 UMLとは (ソフトウェア工学的観点から)
UML(Unified Modeling Language) システム開発の分野で現在最も注目されているツール(仕様等の記述言語)の1つ。 システムの構想をビジュアルに表現できる。 (visual language) 誰とでも誤解なく意思疎通できる。 (communication tool) 何を作るのかは、明確にしておかなければ…

47 UMLとは (言語論的観点から) UMLは言語 の1つ 言語 音声言語 (Spoken Language):
所謂話し言葉 若者語 etc. 文字言語 (Written Language) : 書き言葉 法律文 etc. 視覚言語 (Visual Language): 手話 (sign language) ダイヤグラム(Flowchart, UML etc.) etc.

48 ちょっと雑談(1) 言語とは 思考のための道具 知識を記述し蓄えるための道具 意思疎通のための道具 上記のことを意識しておくことが大切!

49 ちょっと雑談(2) UMLとは 思考のための道具 知識を記述し蓄えるための道具 意思疎通のための道具 通常はこの点のみが強調されている

50 ちょっと雑談(3) Syntax v.s. Semantics (統語論 v.s. 意味論) 表現形式 v.s. 意味内容

51 ちょっと雑談(4) Syntax v.s. Semantics (統語論 v.s. 意味論) 表現形式 v.s. 意味内容
今日はこちらに 重点を置く こちらの理解が本質

52 参考情報 思考と言語について 意味への取り組みについて ヴィゴツキー:“思考と言語,” 柴田義松(訳), 新読書社(2001).
柴田義松:“ヴィゴツキー入門,”寺小屋新書(2006). 思考と言語研究会(電子情報通信学会) ( ) 12月に工科大で開催 (参加料無料) 意味への取り組みについて Semantic Web( Semantic Computing( Web2.0

53 さて、…

54 UMLとは これから作ろうとしているシステム(ソフトウェア)の概念をさまざまな側面から切り出し、表現する図(ダイアグラム)群のこと。 作りたいと思っているもの   → 概念   → 仕様   → 実装 完成したシステム(ソフトウェア)

55 UMLで使用する図(新) ユースケース図 クラス図 オブジェクト図 シーケンス図 ステートマシン図 (ステートチャート図) アクティビティ図
コンポーネント図 コミュニケーション図(コラボレーション図) 配置図 コンポジット図 タイミング図 相互作用概念図 順序と内容を確認すること!

56 ユースケース図 定義: システムの機能・要件(ユースケース)を ユーザ等(アクター )の視点で示した図
システムの使われ方(要求・機能)を記述するための図 要件(ユースケース)やアクターを具体例で示す。

57 (参考)ユースケース ユースケースを図示する方法が ユースケース図である。
ユースケース(システム要求機能)の 記述方法は、場合によってはテキストでも 良い。 講義では飛ばしました。By KAMEDA

58 ユースケースの参考図書 ・Alistair Cockburn: Writing Effective Use Cases, Addison-Wesley, ISBN (2000) ・ユースケース実践ガイドー効果的なユースケースの書き方:アリスターコーバーン,翔泳社, ISBN (2001) 講義では飛ばしました。By KAMEDA

59 システムの具体例 例: 講習会予約システム 缶ジュースの自動販売機 トランプゲーム(BlackJack) お風呂温度・水量設定システム
スケジュール閲覧システム チャットシステム

60 講習会予約システム

61 タンジブルソフトウェア入門と人工知能特論コースを取ろうかなぁ…
講習会予約システム タンジブルソフトウェア入門と人工知能特論コースを取ろうかなぁ… 申込みをしている風景   講習受講希望者 Model: Chiaki KUBOMURA 協力:山野美容芸術短期大学

62 タンジブルソフトウェアは空いているけど、人工知能特論はどうかなぁ…
講習会予約システム 事務処理をしている風景 タンジブルソフトウェアは空いているけど、人工知能特論はどうかなぁ… 受講登録事務員 Model: Chiaki KUBOMURA 協力:山野美容芸術短期大学

63 講習会予約システム 要件(要求される機能): 申込み キャンセル 領収書発行 など アクター: 受講者 経理担当 顧客管理システム

64 缶ジュースの自動販売機 要件: コイン投入待ち 金額計算 販売可能商品の表示 購入希望商品の選定 商品の出力 釣銭の出力 アクター: 購入者

65 トランプゲーム(BlackJack) 要件: カードシャッフル カード要求 持ち札の把握 勝敗の判定 勝敗結果の表示 アクター: プレイヤ

66 講習会予約システム(再) 要件(要求される機能): 申込み キャンセル 領収書発行 など アクター: 受講者 経理担当 顧客管理システム

67 講習会予約システム ー ユースケース図 ー

68 講習会予約システム ユースケース アクター 関連 システム境界

69 ユースケース図の用語(1) アクター: システムと相互作用する 利用者や外部システムの役割 ユースケースを駆動する。
人間(利用者)、外部システム、ハードウェア Stickman とも言う

70 ユースケース図の用語(2) ユースケース: システムが提供する機能(振る舞い) アクターとシステムとの対話をモデル化
ユースケースにより、システムの用途が網羅 ユースケース名

71 ユースケース図の用語(3) 関連: システム境界: アクターとユースケースとの関係 関係があれば線で結ぶ システムの外部と内部とを区別する。
関連名 内部 外部

72 トランプゲーム ー ユースケース図 ー (練習:各自で描いてみよう!) アクター:___ ユースケース:___

73 プログラマにとっては、ソースコードの方がもっと大切です。
クラス図 とても重要な図です。 特に、programmerにとっては。 プログラマにとっては、ソースコードの方がもっと大切です。

74 クラス図 定義: システムの静的な構造を表したもの 問題領域やシステムの構造を、論理的・静的に捉えるためのもの

75 クラス図の例 学生と学部 0..* 1 学生 学部 学生番号 氏名 - 学部名 住所 所在地 電話番号 +学生情報取得() + 入学手続き
0..* 1 学生 学部 学生番号 氏名 住所 - 学部名 所在地 電話番号 +学生情報取得() + 入学手続き + 休学手続き + 転学部手続き

76 クラス図の例 学生と学部 クラス名 関係 0..* 1 学生 学部 学生番号 氏名 - 氏名 住所 住所 電話番号 属性 +学生情報取得()
0..* 1 学生 学部 学生番号 氏名 住所 - 氏名 住所 電話番号 属性 +学生情報取得() + 入学手続き + 休学手続き + 転学部手続き 操作

77 クラス図の例 学生と学部 クラス名 多重度 0..* 1 学生 学部 学生番号 氏名 - 氏名 住所 住所 電話番号 属性
0..* 1 学生 学部 学生番号 氏名 住所 - 氏名 住所 電話番号 属性 +学生情報取得() + 入学手続き + 休学手続き + 転学部手続き 操作

78 クラス図の用語(1) クラス: 具体物(インスタンス)を抽象化したもの 属性の操作(関数)をもつ インスタンスの設計図に相当 クラス名
属 性 操 作

79 クラス図の用語(1) クラス: 具体物(インスタンス)を抽象化したもの 属性と属性の操作(関数)をもつ インスタンスの設計図に相当
後で参照するためのもの クラス名 属性のみ(属性値なし) 属 性 操 作 (属性に対する)関数

80 クラス図の用語(2) 関係:クラス間の相互関係 クラスA クラスB 関連 集約 合成 汎化 依存

81 クラス図の用語(3-1) 多重度: クラスから生成されるインスタンス(オブジェクト)の個数などを表す。

82 クラス図の用語(3-2) 多重度の記述法: n nのみ 通常は0や1が使われる 1.. 1以上 1..* 1以上
n nのみ 通常は0や1が使われる 1.. 1以上 1..* 1以上 * 任意の数 他の数字と組合わせて使用 1,3,7 1か3か7 離散値を扱う場合に使用 例: 3..*  3以上

83 クラス図の例(再) 学生と学部 多重度1 多重度0以上 クラス名 多重度 0..* 1 学生 学部 学生番号 氏名 - 氏名 住所 住所
0..* 1 学生 学部 学生番号 氏名 住所 - 氏名 住所 電話番号 属性 +学生情報取得() + 入学手続き + 休学手続き + 転学部手続き 操作

84 練習問題 (クラス図の作成)

85 クラスの例1 自動車クラス is-a関係 Racing car is a car. レーシング カークラス バスクラス タクシークラス

86 自動車のクラス階層(1) 自動車 レーシングカー バス タクシー

87 自動車のクラス階層(2) 自動車 レーシングカー バス タクシー

88 例:自動車とその部品(1) 車 台 ボディ エンジン 窓ガラス タイヤ ハンドル

89 例:自動車とその部品(2) 車 台 ボディイ エンジン 窓ガラス タイヤ ハンドル

90 例:自動車とその部品(3) 自動車 車 台 ボディ エンジン

91 例:自動車とその部品(4) 自動車のクラス階層 自動車とその部品 これらを区別する方法は… 形式が同じになっている!!

92 例:自動車のクラス階層 自動車 レーシングカー バス タクシー 汎化 特化

93 例:自動車とその部品(3) 自動車    車 台 ボディ エンジン

94 合成の関係の場合 自動車    車 台 ボディ エンジン

95 集約の関係の場合 家 族   お父さん お母さん 子供

96 オブジェクト図 定義: クラス図に出てくるオブジェクトの相互関係を示したもの 静的構造を把握

97 オブジェクト図の例 クラス図 学部 学生 オブジェクト図 :学部 :学生 鈴木 CS :学生 佐藤 :学生 田中

98 オブジェクト図の例 クラス図 学部 学生 オブジェクト図 :学部 :学生 オブジェクト名 鈴木 CS :学生 佐藤 リンク :学生 田中

99 シーケンス図 定義: オブジェクト相互の協調またはメッセージを、時間軸に着目して表示する図

100 シーケンス図の例 :obj1 :obj2

101 コミュニケーション図 定義: オブジェクト間のメッセージのやり取りを、接続関係に着目して記す図 シーケンス図とほぼ同じ内容となる。
着目点が異なる。

102 コミュニケーション図の例 1:番号入力 3:実行 2:確認ランプ :obj01 :検索コントローラ 4:結果画面表示 5:結果表示
検索結果画面

103 ステートマシン図 定義: オブジェクトの状態の変化や、その変化が起きるための条件を表す図

104 ステートマシン図の例 ジュースの自動販売機 待機中 コイン投入 キャンセル [120円以上] 商品選択 ジュース販売 コイン投入中 購入可
[120円未満] コイン投入

105 アクティビティ図 定義: システムの動的側面をフローチャートの要領で表現する図。 (並行処理を表現することができる。)

106 アクティビティ図の例 アクター1 アクター2

107 その他の図 コンポーネント図: 配置図: ソースファイルなど、システム開発に必要なコンポーネントとそれらの依存関係を表現する図
システムを実行するハードウェアの配置やそれらの相互接続関係を表現する図

108 UMLで使う図(再) ユースケース図 クラス図 オブジェクト図 シーケンス図 ステートマシン図(ステートチャート) アクティビティ図
コミュニケーション図 配置図 etc.

109 UMLでの5つのビュー(1) システム開発を成功させるためには、開発するシステムを多様な視点(ビュー)から眺めることが大切。

110 UMLでの5つのビュー(2) ユースケースビュー 論理ビュー 並行性ビュー コンポーネントビュー 配置ビュー

111 UMLでの各種ビュー(3) 論理ビュー ユースケースビュー クラス図 オブジェクト図 シーケンス図 アクティビティ図 ユースケース図
ステートマシン図 (ステートチャート) コミュニケーション図 (コラボレーション図) コンポーネント図 配置図 コンポーネントビュー 並行性ビュー 配置ビュー

112 UMLでの5つのビュー(4) ユースケースビュー: アクタの視点からシステムの機能を見る視点
ユースケースビュー: アクタの視点からシステムの機能を見る視点 論理ビュー: システムの論理的構造をみる視点(ビジネスロジックなど) 並行性ビュー: 処理の同期・非同期に着目する視点 コンポーネントビュー:開発者のビュー。ソフトウェアコンポーネントの依存関係を見るビュー。 配置ビュー: 物理的配置を見るためのビュー

113 UMLでの各種ビュー(3) 論理ビュー ユースケースビュー クラス図 オブジェクト図 シーケンス図 アクティビティ図 ユースケース図 状態図
コラボレーション図 コンポーネント図 配置図 コンポーネントビュー 並行性ビュー 配置ビュー

114 ここまでのまとめ ソフトウェア開発は大変だ。いいプログラムなんかなかなかできない。でも、仕様をしっかり決めたり、きちんとした設計をすることは大切だよね。その一助としてモデリング言語(UML)を用いてモデル化をしっかりやろう。          (上流工程は重要だ!)

115 UMLの各ダイアグラムの使い方は、システム開発を実践しながら覚えていきましょう。 (UMLの話はまずはここまで。)

116 次は、… ちょっと話を変えて…

117 今日の内容(再) 要求仕様を作ってみよう ソフトウェア開発過程の概要 UMLの概説 Javaプログラミング など
今日の課題(課題番号No2)

118 最後にはシステム(プログラム)を作らなければ面白くないので、 少しJavaの話をします。

119 Javaプログラムの例 import javax.swing.JFrame;
public class SimpleFrame extends JFrame{ public SimpleFrame(){ super(“Frame Title”); setSize(300,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] arguments){ SimpleFrame sf = new SimpleFrame();

120 練習問題 前述のプログラムを実際に実行してみなさい。

121 今日の内容(再) 要求仕様を作ってみよう ソフトウェア開発過程の概要 UMLの概説 Javaプログラミング など
今日の課題(課題番号No2)

122 次回までの課題

123 レポートではない課題1 先ほどのJavaのプログラムを実際に実行させて見なさい。必要ならば、Javaの開発環境を整備しておくこと。 (JavacコマンドやJavaコマンドが使えればOK。エディターも必要ならばそろえておいてください。)

124 レポートではない課題2 教科書の の4つの図が読めるように、練習してください。 (図に描かれていることを口頭で説明できればOKです。)
図1-1-3 図1-1-10 図1-1-18 図1-1-21 の4つの図が読めるように、練習してください。 (図に描かれていることを口頭で説明できればOKです。)

125 レポート課題No.2 大学の掲示版として、「個人専用の掲示板」を作るとしたらどんなものがいいのかを考え、以下の3点に関して文書化しなさい。
表示画面のデザイン(外見のデザイン) 提供する情報・サービス(情報デザイン) サービスの利用形態(誰がいつ何をどのように等) 仲間と相談してもいいよ。 これは次回提出してもらいます。

126 次回の予告 次回からソフトウェア開発に取り掛かります。
UML関連のツール(JudeとEclipse)の話を します。 「弘法は筆を選ばず」といいますが、IT技術者とりわけプロフェッショナルIT技術者にとっては、ツール(tool,道具)は重要です。具体的なツールの話をしますので、欠席をすると損をしますよ… PCとネットワークケーブルを持参してください。 それではまた次週!

127 All is over.

128 レポート課題No1 教科書の8ページから40ページまでを読んで、専門用語と思われる用語を抽出し以下のように分類しなさい。
提出してください レポート課題No1 教科書の8ページから40ページまでを読んで、専門用語と思われる用語を抽出し以下のように分類しなさい。 [手順0] A4の紙を3枚用意し、各用紙の右上に○、△、×の印を大きめに書く。 [手順1] 教科書の8~40ページを順に読む。 [手順2] 専門用語を見つけ、もし知っている用語ならば○の紙に、知らない用語ならば×の紙に、それ以外は△の紙に、それぞれ順次書き込む。 [手順3] 集まったらコピーをとり、表紙を付けて次回授業時に提出する。原本は手元に保存しておくこと。


Download ppt "基礎情報技術 ー第2日目ー 平成20年5月9日(金) 担当:亀田."

Similar presentations


Ads by Google