コンテンツにスキップ

演習ガイド

ソフトウェア工学における問題解決

ソフトウェア工学では,実際の世界での問題(やりたいこと,調べたいこと)を,

  • モデル化し,
  • 計算手順を考え,
  • プログラム化し,

計算機を用いて表現したり, 解を求めることを行います.

次のような観点で,問題を見直してみることが重要です.

  • モデル化を行うために,もともとの問題から,「本質的なことだけ」を取り出す
  • コンピュータとプログラムによる「実現しやすさ」や「適切性」を考える

ソフトウェアの設計

ソフトウェアを設計する際に行うこと

  • 実際の世界や頭の中にある問題をいかに計算機で実現するか?を考える.
  • モデルを考えるのは人間の頭であり,頭の中で考えたことを問題やモデルとして詳細化し,プログラム化していく.
  • 代表的な方法としては以下のものがある.
    • トップダウン設計
      • 実現へ向けて大きな問題を,分割設計していく.
    • オブジェクト指向設計
      • 問題の中の部品(モジュール)を独立設計していく.
    • 問題によって適切な設計方法がある.
  • 問題の構造を理解し,より小さな問題へ分割し,
  • 処理の流れを考え
  • 設計案,実現案,モジュール毎のインタフェースなどを決める
    • 分割された仕事(モジュール)間の取り決め(インタフェース)を行う
  • 仕事量の見積と実現可能性を検討し, 再設計.

プログラミングによる実現

プログラムは実現のための手段.

  • 与えられた計算機環境で,「手順(アルゴリズム)」と「表現方法(データ構造)」を具体的に考える.
  • プログラミングと設計の見直し,部品毎のデバッグ,改良.
  • 部品を結合し,全体を完成させる.

いわゆるプログラミングだけでなく,下記についてもよく考える.

  • 開発言語
  • 開発環境
  • ライブラリやツールキット
  • バージョン管理
  • 実行環境

演習

演習の目的

ソフトウェアの開発プロセスを経験する!

  • 自分たちが興味を持てて,実現可能な問題の設定を行う.
  • ソフトウェアの設計を行う(どうやって実現するか? できそうか?)
  • 仕様,インタフェースと部品(モジュール)分けの大切さを学ぶ.
  • 設計したものを実際に作る(プログラム化).
  • グループでの作業に慣れる.

ソフトウェア開発ってどんなことなのかを体験する(プログラミングはソフトウェア開発のごく一部でしかない).

演習の方針

  • 4〜6人程度のグループでやりたいこと(半年程度でできること)を決める.
    • 簡単すぎるものはNGです!
  • グループでのソフトウェア設計および製作(班長,副班長を決めて)
  • テーマ,やり方等,班の中で合意を得て取り組みましょう.

  • 100%完成しなくてもいいから,自分達なりに考え,体験してください.

  • 失敗して,反省して,成長することが本講義の目的です.

講義する(予定の)こと

  • 演習時間中は,プログラム開発の方法や,そのために必要な知識,プログラミングについて講義します.
    • HTML(CSS),JavaScriptなどの基本プログラミング
    • 画像やスプライトなどの表示,アニメーション
    • 時間やイベントを扱うプログラム
    • デバッガ
  • 時間は足りないので,プログラム作りは授業以外の空いている時間を利用しましょう!

プログラミングに関して

  • モジュール化とインタフェースを積極的に使うこと.
  • 言語,ライブラリについて理解すること.
  • Ubuntu の 作業環境をよくすること
  • プログラミングのための道具を積極的に理解・活用すること.
  • 期待通りに動いているかどうか,デバッグやテストの方法を考え,慣れること.
  • 「より良くする」ことを厭わないこと.プログラミングの経験から計画変更できるように.
  • HTML と JavaScript に慣れること.

提出物

  1. 簡易企画書
    • テーマ(タイトル,キャッチコピー)
    • 概要
    • 対象者
    • 画面イメージなど
  2. 要求仕様書
  3. 外部仕様書(使う側から見た,概観)
    • 外部仕様に含まれる「もの」と「操作」
  4. 部品(モジュール)分けと処理の流れ
  5. モジュール毎の仕様(使い方,インタフェース)
    • モジュール内部の仕様も(モジュールの実現方法)
  6. 班のWikiページ
  7. 作成したプログラム,ドキュメント,WEBページ

こころがけ

  • 記録班Wikiを積極的に使いましょう!)
    • どんどんWikiに書き溜めてください.
      • 分からないエラーが出たとき
      • 使えそうな情報を見つけたとき
      • 内容の間違いに気づいたとき
  • 自分で調べる <- 重要!
  • 班員とは積極的にコミュニケーションを取りましょう.独りで抱えてはダメです.
  • 演習以外の時間にもプログラミングしましょう.見合う何かが得られます.