わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

DBゼミの勘所: 1. 構想〜隠された課題に気づく

班分けが決まり,課題を渡されたら,まず,コピーをとります.
そのコピーした紙に,システム構築のための情報を書き込んでいきます.書き方,あるいは詳細化の方法は,プログラミング課題を読み解く〜三角形の面積 - わさっきを参考にしてください.
読みながら,「書かれている情報」を組み合わせるだけで,システム完成に至るかを,よく検討します.そして,隠された課題を見つけ出しましょう.
例えば,大学の成績管理のデータベースを作るために概念設計せよという課題を考えてみます.すぐに,「学生」,「科目」,「履修」*1といった実体あるいは関連を思い浮かべるでしょう.ですが,それを組み合わせるだけでは,隠された課題に気づいていないことになります*2
大学の成績管理では,「再履修の扱い」を解決しておかないといけません.
具体的には,「ある年度に不合格になったら,翌年度以降に同じ名前の科目を履修できる」「合格になった科目は,再履修できない」などについて,設計するデータベースと,適切な問い合わせを使えば,実現できるようにしておくべきでしょう.
再履修の問題は不可欠ですが,他に「科目の読み替え」とか「卒業判定」*3というのも,隠された課題に入れていいかもしれません.
グループの各メンバが対等の立場でシステムを構築する*4,DBゼミにおいては,おのおのが上のように「詳細化」と「隠された課題の発見」をしてから,顔を合わせて打ち合わせするといいでしょう.そして,「課題文で課せられている条件の洗い出し」と「隠された課題の検討」をします.前者は,設計しやすいように,箇条書きにして,並べ替えます.後者については,DBゼミで解決するのは,少なくとも1個,多くても2〜3個です.最優先で解決すべき「隠された課題」を含めますが,それを決めるには,三人寄れば文殊の知恵というやつを活用しましょう.
データベースの設計に限らず,課題文で直接明記されていない,「隠された課題」を見つけることは,試験で与えられた問題に対してどんな観点で解くかを決めるときに有用ですし,人間関係についても,相手に「お!」と思ってもらえやすくなります*5
ところで,隠された課題をどのように見つけ,目に見える形にすればいいかについては,一朝一夕では身につかないもので,本や漫画を読む習慣をつけるといいでしょう.漫画のおすすめは,『ゼロ』と『王様の仕立て屋サルト・フィニート〜』です.どちらもSUPER JUMPで連載中です.流し読みのではなく,「最初に与えられた課題は何か?」「解決者が見つけた,隠された課題は何か?」に注意しましょう.

*1:「成績」,いわゆる得点については,成績がついたか否か,あるいは試験を放棄したかなどを含め,履修が持つ属性とすべきでしょうね.

*2:試験で制限時間があるとか,テーブル数に上限があるとかいった場合は,それに従わないといけませんが.

*3:入学年度ごとに単位数や取るべき科目が異なることまで対処すると,実用的なデータベースシステムになりそうですね….なのですが,当学部では,4年次学生(卒検着手していない学生を含む)には,10月に単位履修状況を書き込んで単位数に漏れがないか,卒業までにどの分類から何科目とればいいかをチェックする仕組みをとっています.さらに,サイエンスコースの学生は1年生から半期ごとに,どの科目の単位を修得したかをチェックリストに書き込むようにして,単位数だけでなく学修時間を把握するようにしています.

*4:研究室活動や仕事においては,各関係者が対等の立場ではありませんが.

*5:まあ過ぎたるはなお及ばざるが如しってやつで,隠された課題を,どのように目に見える形にするかについては,相手さんに大きく依存するのですが.