Presentation is loading. Please wait.

Presentation is loading. Please wait.

実践的ソフトエア開発 ー第4日目ー 平成29年5月8日(月) 担当:亀田.

Similar presentations


Presentation on theme: "実践的ソフトエア開発 ー第4日目ー 平成29年5月8日(月) 担当:亀田."— Presentation transcript:

1 実践的ソフトエア開発 ー第4日目ー 平成29年5月8日(月) 担当:亀田

2 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
参考文献 情報デザイン原論 「ものごと」を形にするテンプレート, ロバート・ヤコブソン(編), 食野雅子(訳), 電機大出版局(2004). 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

3 それでは始めましょう 一呼吸して、気持ちをこちらに集中させて ください。
集中力を高め、それを維持し続けることは成功のための 秘訣です。訓練してください。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

4 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
前回までのポイントの確認 ITのプロになるためには何が必要か? これを考えるための素材をお話しました。 SEの仕事はプログラミングだけではない ソフトウェアのライフサイクル オブジェクト指向 モデリング言語 UML など ソフトウェア開発過程の概要 UMLの概説 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

5 ITのプロとは 技術に関して深い理解がある 技術を身につけている 仕事の進め方を知っている コスト計算ができる
哲学・思想(個別技術から技術史等に対する) 技術を身につけている オブジェクト指向、UML、デザインパターン など 仕事の進め方を知っている ソフトウェアとは ソフトウェア開発とは プロジェクトとは など コスト計算ができる 実社会の在り方・仕組みを理解している。 大学ではまず基礎・基本をしっかり身につけよう! 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

6 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
ソフトウェアのライフサイクル 要求分析 設計 プログラミング デバッグ 評価 運用 ⇒再び1へ戻る 何を作るの? どうるの? 作成作業 (デバッグも) 本当にできた? 実際に使おう! ちょっと変更 ソフトウェアの開発工程でもある 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

7 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
UMLでの各種ビュー(3) 論理ビュー ユースケースビュー クラス図 オブジェクト図 シーケンス図 ユースケース図 アクティビティ図 ステートマシン図 (ステートチャート) コミュニケーション図 (コラボレーション図) コンポーネント図 配置図 コンポーネントビュー 並行性ビュー 配置ビュー 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

8 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
今日の話し 要求分析(コーヒーメーカを例として) ユースケースとユースケース図 よい設計とは UMLツール その他 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

9 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
要求分析 まずはここから始まる。 (「必要は発明の母」) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

10 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
要求分析 電子掲示板システム(東京工科大向け) コーヒーメーカ カードゲーム(BlackJack) 図書館システム 小売店販売管理システム など 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

11 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
コーヒーメーカ 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

12 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
WikiPediaより引用(2008/05/16) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

13 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
要求される仕様 商品名:Mark IV Special 用途:コーヒーを入れるための装置 具体的な仕様は配布資料参照のこと。 これを元に要求を分析してみよう (深く理解してみよう) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

14 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
分析メモ ハードウェア構成ではなく 処理(振る舞い)の側面から分析 誰が,どんな振る舞いをするのか? 誰が誰にどんな時に呼び出されるのか。  (注) 誰=インスタンス 振る舞い=メソッド どんな時に=ロジック など 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

15 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
ユースケース ユースケースとは、システムが提供する サービスや機能をユーザの視点から記述するもの。 ユースケースを表現する方法は2つある。 ユースケース記述(シナリオ記述) 文章で記述 ユースケース図 ダイアグラムで記述 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

16 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
ユースケース記述 ユースケース記述は大きく2つに大別される 基本ユースケース 標準的なあるいは本来の処理を記述 代替ユースケース 例外的なケース(場合)を記述 例:ログイン失敗 など 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

17 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
ユースケースの参考書 ユースケース実践ガイド―効果的なユースケースの書き方,アリスター コーバーン,翔泳社(2001). “Writing Effective Use Cases,” Alistair Cockburn, Addison-Wesley(2001). 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

18 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
さて、… 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

19 Mark IV Special Coffee Maker
(配布資料参照) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

20 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

21 Mark IV Special Coffee Maker
煮沸器(boiler)の電熱線(heater)、on/off可 保温プレート(warmer plate)の電熱線も。 保温プレートのセンサ。 状態:warmerEmpty, potEmpty, potNotEmpty 煮沸器のセンサ。水の有無判定。 状態:boilerEmpty, boilerNotEmpty ドリップボタン。ドリップ開始ボタン。インジケータ(light)付き。ドリップ完了時に点灯。 蒸気圧抑制バルブ。開くと蒸気圧降下。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

22 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明 この関数は、保温プレートセンサの状態を返す。このセンサにより、ポットが置かれているかどうか、ポットの中にコーヒーがあるかを検出する。 public int getWarmerPlateStatus(); public static final int WARMER_EMPTY = 0; public static final int POT_EMPTY = 1; public static final int POT_NOT_EMPTY = 2; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

23 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(2) この関数は、煮沸器のスイッチの状態を返す。煮沸器のスイッチは、煮沸器に水が半分以上あるかどうかを検出するフロート式スイッチ。 public int getBoilerStatus(); public static final int BOILER_EMPTY = 0; public static final int BOILER_NOT_EMPTY = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

24 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(3) この関数は、[ドリップ]ボタンの状態を返す。 [ドリップ]ボタンは、その状態を記憶する一時的なスイッチ。この関数は呼び出されるたびに、記憶された状態が返され、状態は BREW_BUTTON_NOT_PUSHUED にリセットされる。従って、この関数が非常に遅いレートでポールされても、[ドリップ]ボタンが押されたことを検出できる。 public int getBrewButtonStatus(); public static final int BREW_BUTTON_PUSHED = 0; public static final int BREW_BUTTON_NOT_PUSHED = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

25 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(4) この関数は、煮沸器内の電熱線のオン/オフを切り替える。 public void setBoilerState(int boilerStatus); public static final int BOILER_ON = 0; public static final int BOILER_OFF = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

26 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(5) この関数は、保温プレート内の電熱線のオン/オフを切り替える。 */ public void setWarmerState(int warmerState); public static final int WARMER_ON = 0; public static final int WARMER_OFF = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

27 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(6) この関数は、インジケータのオン/オフを切り替える。 インジケータは、ドリップが完了すると点灯し、[ドリップ]ボタンが押されると消える。 public void setIndicatorState(int indicatorState); public static final int INDICATOR_ON = 0; public static final int INDICATOR_OFF = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

28 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
APIの説明(7) この関数は、蒸気圧調整バルブを開閉する。バルブが閉まっていると、煮沸器内の蒸気圧によって 熱湯がコーヒーフィルタ状に噴き出す。バルブが開いていると、煮沸器内の蒸気が外に排出され、中の水はフィルタ上に噴き出なくなる。 public void setReleifValveState(int releifValveState); public static final int VALVE_OPEN = 0; public static final int VALVE_OFF = 1; 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

29 コーヒーメーカの ユースケース記述とユースケース図
(自分で書いてみよう!) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

30 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
シナリオ フィルタをフィルタホルダーに入れる。 コーヒーをためる容器をセットする。 水を用意する。 開始のボタンを押す。 ... 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

31 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
便利なUMLツール(astah)の紹介 各自ダウンロードしてください。 中村太一先生の講義用ホームページ (学内専用サイト)から正規版が コピーできます。(CS学部生限定!!!) 簡単な説明を順次授業中にします。 フリー版(Community版)でもかまいません。 他のUMLツールでもOKです。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

32 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
自由課題 UMLツールとしてどのようなものがあるのか、調べなさい。 ソフトウェア名 製造・販売会社名 価格 機能 動作環境 その他 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

33 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
よい設計とは 分かりやすい 変更しやすい 再利用しやすい  などの特徴を持った設計のこと 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

34 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
設計を悪くする要因 硬直性 脆弱性 低移植性 粘着性 不要な複雑さ 不要な繰り返し 不透明さ など 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

35 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
硬直性:システムの変更しにくさ。 脆弱性:1つの変更が他の多くの変更を      引き起こしてしまう。 低移植性:システムのコンポーネント化が      不十分なため、再利用しにくい。 粘着性:エディットーコンパイルーテストが      終わらない。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

36 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
不要な複雑さ:いつか役立つであろう          コードであふれている。 不要な繰り返し:カット&ペーストの            オンパレード。 不透明さ:内容が込み入っていて作成者の       意図が見えない。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

37 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
では「良い設計」はどうすれば いいのか? (次回以降、順次説明します。) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之

38 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
おわりに 次回からは… グループに分かれてPBLを実施します。 (Project Based Learning) PBL自体については次回説明をします。 グループごとにソフトウェア開発を実践してもらいます。 従って、たくさんのドキュメントを書きます。 PCとともに、筆記用具を必ず持参してください。 次回からがこの授業の肝です。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之


Download ppt "実践的ソフトエア開発 ー第4日目ー 平成29年5月8日(月) 担当:亀田."

Similar presentations


Ads by Google