Download presentation
Presentation is loading. Please wait.
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とともに、筆記用具を必ず持参してください。 次回からがこの授業の肝です。 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.