基礎情報技術 ー第4日目ー 平成27年5月1日(金) 担当:亀田
参考文献 情報デザイン原論 「ものごと」を形にするテンプレート, ロバート・ヤコブソン(編), 食野雅子(訳), 電機大出版局(2004).
集中力を高め、それを維持し続けることは成功のための 秘訣です。訓練してください。 それでは始めましょう 一呼吸して、気持ちをこちらに集中させて ください。 集中力を高め、それを維持し続けることは成功のための 秘訣です。訓練してください。
前回までのポイントの確認 ITのプロになるためには何が必要か? これを考えるための素材をお話しました。 ソフトウェア開発過程の概要 SEの仕事はプログラミングだけではない ソフトウェアのライフサイクル オブジェクト指向 モデリング言語 UML など ソフトウェア開発過程の概要 UMLの概説
大学ではまず基礎・基本をしっかり身につけよう! ITのプロとは 技術に関して深い理解がある 哲学・思想(個別技術から技術史等に対する) 技術を身につけている オブジェクト指向、UML、デザインパターン など 仕事の進め方を知っている ソフトウェアとは ソフトウェア開発とは プロジェクトとは など コスト計算ができる 実社会の在り方・仕組みを理解している。 大学ではまず基礎・基本をしっかり身につけよう!
ソフトウェアのライフサイクル 要求分析 設計 プログラミング デバッグ 評価 運用 何を作るの? どうるの? 作成作業 (デバッグも) ⇒再び1へ戻る 何を作るの? どうるの? 作成作業 (デバッグも) 本当にできた? 実際に使おう! ちょっと変更 ソフトウェアの開発工程でもある
UMLでの各種ビュー(3) 論理ビュー ユースケースビュー クラス図 オブジェクト図 シーケンス図 アクティビティ図 ユースケース図 ステートマシン図 (ステートチャート) コミュニケーション図 (コラボレーション図) コンポーネント図 配置図 コンポーネントビュー 並行性ビュー 配置ビュー
今日の話し 要求分析(コーヒーメーカを例として) ユースケースとユースケース図 よい設計とは UMLツール グループ分けについて その他
要求分析 まずはここから始まる。 (「必要は発明の母」)
要求分析 電子掲示板システム(東京工科大向け) コーヒーメーカ カードゲーム(BlackJack) 図書館システム 小売店販売管理システム など
コーヒーメーカ
WikiPediaより引用(2008/05/16)
要求される仕様 商品名:Mark IV Special 用途:コーヒーを入れるための装置 具体的な仕様は配布資料参照のこと。 これを元に要求を分析してみよう (深く理解してみよう)
分析メモ ハードウェア構成ではなく 処理(振る舞い)の側面から分析 誰が,どんな振る舞いをするのか? 誰が誰にどんな時に呼び出されるのか。 (注) 誰=インスタンス 振る舞い=メソッド どんな時に=ロジック など
ユースケース ユースケースとは、システムが提供する サービスや機能をユーザの視点から記述するもの。 ユースケースを表現する方法は2つある。 ユースケース記述(シナリオ記述) 文章で記述 ユースケース図 ダイアグラムで記述
ユースケース記述 ユースケース記述は大きく2つに大別される 基本ユースケース 代替ユースケース 標準的なあるいは本来の処理を記述 例外的なケース(場合)を記述 例:ログイン失敗 など
ユースケースの参考書 ユースケース実践ガイド―効果的なユースケースの書き方,アリスター コーバーン,翔泳社(2001). “Writing Effective Use Cases,” Alistair Cockburn, Addison-Wesley(2001).
さて、…
Mark IV Special Coffee Maker (配布資料参照)
Mark IV Special Coffee Maker 煮沸器(boiler)の電熱線(heater)、on/off可 保温プレート(warmer plate)の電熱線も。 保温プレートのセンサ。 状態:warmerEmpty, potEmpty, potNotEmpty 煮沸器のセンサ。水の有無判定。 状態:boilerEmpty, boilerNotEmpty ドリップボタン。ドリップ開始ボタン。インジケータ(light)付き。ドリップ完了時に点灯。 蒸気圧抑制バルブ。開くと蒸気圧降下。
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;
APIの説明(2) この関数は、煮沸器のスイッチの状態を返す。煮沸器のスイッチは、煮沸器に水が半分以上あるかどうかを検出するフロート式スイッチ。 public int getBoilerStatus(); public static final int BOILER_EMPTY = 0; public static final int BOILER_NOT_EMPTY = 1;
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;
APIの説明(4) この関数は、煮沸器内の電熱線のオン/オフを切り替える。 public void setBoilerState(int boilerStatus); public static final int BOILER_ON = 0; public static final int BOILER_OFF = 1;
APIの説明(5) この関数は、保温プレート内の電熱線のオン/オフを切り替える。 */ public void setWarmerState(int warmerState); public static final int WARMER_ON = 0; public static final int WARMER_OFF = 1;
APIの説明(6) この関数は、インジケータのオン/オフを切り替える。 インジケータは、ドリップが完了すると点灯し、[ドリップ]ボタンが押されると消える。 public void setIndicatorState(int indicatorState); public static final int INDICATOR_ON = 0; public static final int INDICATOR_OFF = 1;
APIの説明(7) この関数は、蒸気圧調整バルブを開閉する。バルブが閉まっていると、煮沸器内の蒸気圧によって 熱湯がコーヒーフィルタ状に噴き出す。バルブが開いていると、煮沸器内の蒸気が外に排出され、中の水はフィルタ上に噴き出なくなる。 public void setReleifValveState(int releifValveState); public static final int VALVE_OPEN = 0; public static final int VALVE_OFF = 1;
コーヒーメーカの ユースケース記述とユースケース図 (自分で書いてみよう!)
シナリオ フィルタをフィルタホルダーに入れる。 コーヒーをためる容器をセットする。 水を用意する。 開始のボタンを押す。 ...
便利なUMLツール(astah)の紹介 各自ダウンロードしてください。 中村太一先生の講義用ホームページ (学内専用サイト)から正規版が コピーできます。(CS学部生限定!!!) 簡単な説明を順次授業中にします。 フリー版(Community版)でもかまいません。 他のUMLツールでもOKです。
自由課題 UMLツールとしてどのようなものがあるのか、調べなさい。 ソフトウェア名 製造・販売会社名 価格 機能 動作環境 その他
よい設計とは 分かりやすい 変更しやすい 再利用しやすい などの特徴を持った設計のこと
設計を悪くする要因 硬直性 脆弱性 低移植性 粘着性 不要な複雑さ 不要な繰り返し 不透明さ など
硬直性:システムの変更しにくさ。 脆弱性:1つの変更が他の多くの変更を 引き起こしてしまう。 低移植性:システムのコンポーネント化が 不十分なため、再利用しにくい。 粘着性:エディットーコンパイルーテストが 終わらない。
不要な複雑さ:いつか役立つであろう コードであふれている。 不要な繰り返し:カット&ペーストの オンパレード。 不透明さ:内容が込み入っていて作成者の 意図が見えない。
では「良い設計」はどうすれば いいのか? (次回以降、順次説明します。)
ここから重要なお知らせ
これは授業最終回の時に提出してもらいます。 必ず提出してください 宿題(確認) 大学の掲示版として、「個人専用の掲示板」を作るとしたらどんなものがいいのかを考え、以下の3点に関して文書化しなさい。 表示画面のデザイン(外見のデザイン) 提供する情報・サービス(情報デザイン) サービスの利用形態(誰がいつ何をどのように等) 仲間と相談してもいいよ。 最終回までの 課題でしたよね! これは授業最終回の時に提出してもらいます。
この宿題のための予備として次のページのレポート課題No.1を次回までにやってください。 (単位取得希望者全員)
レポート課題No.1 大学の掲示版として、「新しいスマホアプリの掲示板システム」を東京工科大学に提案したい。そのために、システムユースケース(第1版)を作成してください。つまり、どのようなサービスを提供して欲しいのかを簡単な説明を添えて列挙してください。 仲間と相談してもいいよ。 これは次週提出してもらいます。
おわりに 次回からは… グループに分かれてPBLを実施します。 (Project Based Learning) グループごとにソフトウェア開発を実践してもらいます。 従って、たくさんのドキュメントを書きます。 PCとともに、筆記用具を必ず持参してください。 次回からがこの授業の肝です。