|
授業概要/Course outline
|
|
この特別研究Iでは、オブジェクト指向技術を母体にしてソフトウェアを迅速に開発し運用し保守する手法(エ クストリームプログラミングを基にするアジャイルなソフトウェア開発)に焦点を当てる。 産業界において、知識(知っていること)と方法(適切に操れること)のつりあいが大切であり、双方を素早く 応用することが切望されている。従来の手法と趣を異にする「機敏(アジャイル:agile)にソフトウェアを開発 する手法」を試行錯誤しながらも実践できるようになり、その長短に言及してゆくのが特別研究Iの目的である。 この授業では、スマートフォンのようなICT(情報通信技術)を活用しながら行い、授業に援用するスライドな どの資料もすべて事前に電子的に配付される。それらの資料へのメモ書きなども電子的に(ペーパーレスで)行う ことを強く推奨する。また、講義を視聴する(座学)だけでなく、触れる・試すなど、五感を使って参加・体験を 促進する実習(ハンズオン方式のアクティブラーニング)を含む。 同時にソフトウェア開発・運用・保守の厳しさや険しさの自覚を働きかける。人命にかかわるような、社会基盤 にかかわるような、ミッションクリティカルと呼ばれる極めて重要なソフトウェア開発・運用・保守が多く存在す る。けっして不具合を出して(バグって)はならない。そのようなソフトウェア開発・運用・保守に長く(25年間 以上も)携わってきた講師自らの実務経験を基にして、その勘どころ(知識・技術・技能の一端)を伝えて(垣間 見せて)ゆく。 ■前もってどのような科目の履修が望ましいか: ・応用プログラミング(Java/Python/C) ・ソフトウェア工学I・II ・アルゴリズムとデータ構造 ・ヒューマンインタフェース ・プロジェクト演習 ・プログラミング言語 ・言語オートマトン ・分散処理システム ・コンピュータグラフィックス ・オペレーティングシステム ■今後どのような科目を履修するのに役立つか: ・特別研究IIA・IIB
|
|
授業形態,授業方法等/Course form・type
|
|
【授業形態】
対面授業
【授業方法】
実験
実習
・アクティブ・ラーニング授業
(
形態:
ディスカッション,ディベート
/
プレゼンテーション
)
特別研究の計画や内容や進捗などについて、発表(プレゼンテーション)や討論(ディスカッション・ディベー ト)をふんだんに行う。
・実務経験のある教員による授業
この授業は、実務経験が豊富な教員が担当する。国内および国外でのコンピュータ・ネットワーク・システム開 発の実務経験があり、特にプログラミングやソフトウェアデザインそしてプロジェクトマネジメントの経験が著し く、スーパープログラマ(伝説のプログラマ)という異名を持つ。日本のオブジェクト指向プログラミングおよび オブジェクト指向分析設計の創成期を作った。その経験をふんだんに活かしながら行う実践的で実験的な研究開発 のための授業である。
・その他
講義を視聴するだけでなく、触れる・試すなど、五感を使って参加・体験を促進する実践的な学び(ハンズオン方式のアクティブラーニング)を含む。
|
|
授業内容・授業計画/Course description・plan
|
|
可視化(みてわかる)・可聴化(きいてわかる)・可触化(ふれてわかる)を研究のライトモチーフとして、3 次元グラフィックス・マルチメディア・ネットワークなどを利用したアプリケーションソフトウェア(応用プログ ラム)の開発に取り組む。何を開発するのかを策定する(学生と教員が相談して決めてゆく)プロセス自体も重要 な研究開発活動の一環である。 常に、学生と教員(もしくは学生と学生)の間にペアプログラミング状態を作り出し、実際の開発プロセスを進 めてゆく。オブジェクト指向分析を行って要求仕様を固め、オブジェクト指向デザインを施して基本設計書と詳細 設計書を作成する。同時にテスト仕様書も作る。その際に可能なかぎりデザインパターンを援用する。 プログラミング言語としてオブジェクト指向分析設計の成果を反映させやすいSmalltalkやPythonやJavaなどの オブジェクト指向プログラミング言語(その総合化開発環境を含む)を採用して実装を行う。テスト仕様書にした がって単体テストおよび結合テストをきちんと施し、正しく動作する高品質なプログラムの完成を導く。 そして、上述の仕様書・設計書・取り扱い説明書(マニュアル)などのドキュメントの整備を図り、産業界でも 通用するような成果物(納品物)の体裁を整える。ソフトウェア開発プロセスをアジャイルに一通り体験し、そこ に横たわっているソフトウェア工学的な研究課題に目星をつける。 特別研究であるがゆえに、個々人で内容や計画や指導が異なるが、以下の事柄については共通に解題してゆく。 [A]セキュアということ [B]サーバのたてかた [C]ジェネラリティとは [D]アフォーダンスとは [E]レトリックとは [F]オープンソースとは [G]エクストリームプログラミングとは [H]じゅんとは 青木特研のモットーは「まず、やってみる、それから、学ぶ」である。以下に大まかな特別研究(卒業研究)の マイルストーンを示す。 [第01回〜第05回] アジャイルなオブジェクト指向ソフトウェア開発の解題と実践(ペアプログラミングによるオブジェクト指向プ ログラム開発の解題と実践)に関する従来技術や関連研究を調査する。また、研究開発に必要なツール、開発環境 を修得する。 [第06回〜第10回] アジャイルなオブジェクト指向ソフトウェア開発の解題と実践(ペアプログラミングによるオブジェクト指向プ ログラム開発の解題と実践)する。 [第11回〜第15回] アジャイルなオブジェクト指向ソフトウェア開発の解題と実践した成果物をリポジトリにコミットしながらまと め、課題などを洗い出し、報告し発表する。
|
|
準備学習等(事前・事後学習)/Preparation and assignments
|
|
オブジェクト指向プログラミングを充分に復習して臨んでほしい。有用なプログラムの書き取りをする前には、 優秀なプログラムの読み取りと聞き取りが先行する。プログラムが上手に書けないのは、読んだプログラムの量に 不足がある。書く練習よりも読む練習を大切にしながら、事前学習と事後学習をこつこつ行うこと。 [第01回〜第05回] 〔事前学習〕参考書の中の関係するところを調べて臨むこと、そして、プログラム断片をイディオムにしてくるこ と。日々研究室へ出てきて特別研究(卒業研究)に励むこと。励んだ事柄を特別研究活動の報告として、スライド を作成し、発表(プレゼンテーション)に備えること。 〔事後学習〕ペアプログラミングで習い覚えたことの反復練習、そして、頭にあるものを可能な限り外在化してリ ポジトリに格納し、開示できるものは積極的に公開すること。日々研究室へ出てきて特別研究(卒業研究)に励む こと。ホウ・レン・ソウ(報・連・相:報告・連絡・相談)を欠かさぬこと。 [第06回〜第10回] 〔事前学習〕アジャイルなオブジェクト指向ソフトウェア開発を少しでも実践して授業に臨むこと。日々研究室へ 出てきて特別研究(卒業研究)に勤しむこと。勤しんだ事柄を特別研究活動の報告として、スライドを作成し、発 表(プレゼンテーション)に備えること。 〔事後学習〕講義を視聴する(座学)だけでなく、触れる・試すなど、五感を使って参加・体験を促進する実習( ハンズオン方式のアクティブラーニング)を、再度、再々度、繰り返し実践して身につけること。日々研究室へ出 てきて特別研究(卒業研究)に勤しむこと。ホウ・レン・ソウ(報・連・相:報告・連絡・相談)を欠かさぬこと。 [第11回〜第15回] 〔事前学習〕研究テーマに沿ったオブジェクト指向ソフトウェア開発をアジャイルで実践した成果物の提出準備を リポジトリを介して行うこと。日々研究室へ出てきて特別研究(卒業研究)に励むこと。励んだ事柄を特別研究活 動の報告として、スライドを作成し、発表(プレゼンテーション)に備えること。 〔事後学習〕成果物をリポジトリにコミットすること。また、毎回の発表に使用したスライドなども確とリポジト リにコミットすること。日々研究室へ出てきて特別研究(卒業研究)に励むこと。ホウ・レン・ソウ(報・連・相 :報告・連絡・相談)を欠かさぬこと。
|
|
授業の到達目標/Expected outcome
|
|
専門知識として情報理工学分野の科学技術 専門知識として情報と人間のシステム 専門知識としてデータと情報の数学と論理 専門技能としてプログラミング 専門技能として特定分野の技能 専門技能として基礎的技能 を身につけることができる。 特別研究IIAおよびIIBへと歩を進めるための足固めをするのが本年度の到達すべき目標である。特別研究Iは次 年度のための予行という位置づけである。指導にあたる教員は企業で長年(25年以上)にわたってソフトウェア開 発を行ってきた経験を有する。それらを上手に受け継いで吸収し、次年度の特別研究IIAおよびIIBへの糧とし、そ して、就職(進学)してからの将来へとつなげること。
|
|
身につく資質・能力/Competencies to be attained
|
|
|
・思考力
・幅広い教養
・主体性
・発信力
・協働性・協調性
・倫理性
・創造性
|
専門知識・専門技能
【情報理工学部 情報理工学科】 ・情報理工学分野の科学技術 ・情報と人間のシステム ・データと情報の数学と論理 ・プログラミング ・特定分野の技能 ・基礎的技能
|
|
|
履修上の注意/Special notes, cautions
|
|
毎日のように研究室(実験室)に来て、積極的に研究開発活動に取り組むように。研究室をホームポジションに して活動するスタイル(習慣)を確立すること。必要となるプログラミング技術やデザイン能力を向上させるため に、コードリーディング(美しいプログラムの読み)を日課にすることを強く勧める。そして、書籍や論文を読み、 研究室の他のメンバと盛んにディスカッションを行い、お互いにデモンストレーションやプレゼンテーションをし 合うことが大切である。
|
|
評価方法/Evaluation
|
|
出席は大変に重要である。授業時間割当以外に執り行う研究室イベント(ミーティングやブリーフィングそして パワーランチやペアプログラミングなど)への参加も不可欠である。常にホウ・レン・ソウ(報・連・相:報告・ 連絡・相談)を心がけて確と行うこと。それらへの参画度合い点を50%とし、取り組んだ成果物(アプリケーショ ンソフトウェア一式)の出来具合を50%とし、それらをもって総合的に評価する。
|
|
教 材/Text and materials
|
|
教科書:配付資料 参考書:青木淳,浅岡浩子,澤本依里『Smalltalkで学ぶオブジェクト指向プログラミングの本質』(日経BP社 ,2008) 参考書:Kent Beck『XPエクストリーム・プログラミング入門』(ピアソンエデュケーション,2000) 参考書:Kent Beck,Martin Fowler『XPエクストリーム・プログラミング実行計画』(ピアソンエデュケーショ ン,2001) 参照URL:http://www.cc.kyoto-su.ac.jp/~atsushi/ 参照URL:http://aokilab.kyoto-su.ac.jp/
|
|
質問や相談の方法/Instructor contact
|
|
研究室:第2実験室棟3階65実験室 オフィスアワー:木曜日3限(13:15-14:45) 連絡先:配付資料の表紙に記載されているメールアドレス 授業に関する質問やホウレンソウ(報告・連絡・相談)がある場合には、オフィスアワーの時間に研究室へ訪問 するか、メールで問い合わせること。
|
|
|
|