基礎情報技術 ー第2日目ー 平成24年4月27日(金) 担当:亀田 確認 • 授業で使用した資料は授業終了後に Web(http://kameken.clique.jp/)にて 公開します。 • 授業中はノートにメモを取ってください。 (キーワードや図だけでも結構です。) • レポート課題や小テストがある? 2 © 2012年 東京工科大学 Hiroyuki Kameda それでは始めましょう 3 © 2012年 東京工科大学 Hiroyuki Kameda ウォーミングアップ問題 問題:プログラミングに必要な才能は何? 3つ以上答えなさい。 4 © 2012年 東京工科大学 Hiroyuki Kameda 本講義のポイントの確認 • ITのプロになるためには何が必要か? これを考えるための素材をお話します。 5 © 2012年 東京工科大学 Hiroyuki Kameda 前回のポイントの確認 • • • • SEの仕事はプログラミングだけではない ソフトウェアのライフサイクル オブジェクト指向 モデリング言語 UML など (これらは回を追ってさらに詳しく話します。) 6 © 2012年 東京工科大学 Hiroyuki Kameda 授業概要(確認) • ITエンジニアのプロフェッショナルになるためには、プロとして の嗜み(たしなみ)と作法を身につけることも大切である。本 授業では、今後プロとしてソフトウェアかかわる人たちにとっ て避けて通ることのできない嗜み・作法を簡単な演習を通じ て紹介するとともに、学生の皆さんにそれらの必要性・重要 性を身を持って理解してもらうことを目指す。 • 具体的には、ソフトウェア開発を上流工程から下流工程へ向 けて実際に体験してもらいながら、UML(Unified Modeling Language)やプロジェクト管理等の紹介を行う。 • ITシステム ≠ プログラミング であることや、ソフトウェア開発 におけるコミュニケーションの意義、プロジェクト管理の重要 性についてなど、多くのことを学生の皆さん自らが気づくこと を期待する。 7 © 2012年 東京工科大学 Hiroyuki Kameda 今日の内容 • イントロの続き – プログラミング言語 – プログラミング – プログラミング工学 – ソフトウェア開発 – ソフトウェア工学 8 © 2012年 東京工科大学 Hiroyuki Kameda ソフトウェア開発過程の概要 • 「ソフトウェアは実際にどのような作業工程を 経て作れば良いのか?」 ということ。 9 © 2012年 東京工科大学 Hiroyuki Kameda ソフトウェア開発過程の確立 これは未解決問題 の1つです! 10 © 2012年 東京工科大学 Hiroyuki Kameda よいプログラムは どうやって作れば良いのか? • • • • • • • バグのない 動作効率のよい 開発コストがかからない メンテナンスがしやすい 急な修正・変更にも対応できる 拡張性のある 汎用性のある などなど こんなプログラムって どうやって作る のだろうか? 11 © 2012年 東京工科大学 Hiroyuki Kameda 例えば、プログラミング言語 これにもいろいろな工夫がなされてきた • 事務処理計算向き言語 • 科学技術計算向き言語 • 人工知能研究向き言語 など (こんな分類のもと、さまざまな言語が考案さ れてきた。) 疑問:プログラミング言語の分類は今後もこれでいいのだろうか? 12 © 2012年 東京工科大学 Hiroyuki Kameda 要求仕様としては… • 対象としている処理(機能・サービス)を記述・ 実現することができなければならない。 • 人間にとって使いやすく、分かりやすいもので あって欲しい。 Fortran:計算式をそのまま書ける Cobol:自然言語に近い表現が可能 Pascal: ____________________ C: ________________________ Java: ______________________ 考えてみて ください。 13 © 2012年 東京工科大学 Hiroyuki Kameda よりよいプログラムをもとめて… • • • • 機能の整理 モジュール化/階層化 構造化プログラミング モジュールの独立性 (関数型言語、データ抽象化、 =>オブジェクト指向) • ソフトウェア開発法 プログラミング 言語側から 開発法側から 14 © 2012年 東京工科大学 Hiroyuki Kameda 具体的に見てみよう • プログラミングの側面から • 開発手法の側面から 15 © 2012年 東京工科大学 Hiroyuki Kameda プログラム工学Ⅲ (ダイジェスト版) 工学部情報工学科での講義資料より 担当:亀田弘之(東京工科大学) C言語の歴史 • • • • • • • 1972年 誕生(Dennis M. Ritchie) UNIX開発用言語として使用 ハードウェアの発達により新しい機能追加 方言の発生 1989年 ANSI規格制定 1990年 ISO規格制定 1993年 JIS C制定 17 © 2012年 東京工科大学 Hiroyuki Kameda 問題 1. C言語は今後どのような発展の道をたどる か論じなさい。 2. BASIC、PASCAL、FORTRAN、COBOL、 LISP、PROLOGなどの他の言語の歴史を 調べ、各言語がどのような背景・目的で誕 生し、どのような道をたどっているか論ぜよ。 18 © 2012年 東京工科大学 Hiroyuki Kameda C言語の特徴 1. 2. 3. 4. 5. 6. 構造化プログラミング向き ハードウェアが透けて見える高水準言語 豊富なデータタイプ コンパクトな言語仕様 関数形式によるモジュール化 移植性が比較的高い 19 © 2012年 東京工科大学 Hiroyuki Kameda 構造化プログラミングとは • 処理手続きをいくつかの単位に分割し、主と なる処理は大まかに記述とし、細部はサブ ルーチンとして記述していく方法。エドガー・ダ イクストラらによって提唱された。ダイクストラ は、大規模化したプログラムを効率よく記述し プログラム設計上のミスが起きにくいようにす るための方法論を検討した。その結果1960 年代後半に、構造化定理を証明し、構造化プ ログラミングを提唱した。 20 © 2012年 東京工科大学 Hiroyuki Kameda 構造化定理 • 1つの入り口と1つの出口を持つようなプログ ラムは、「順次・反復・分岐」の3つの基本的な 論理構造によって記述できる(Dijikstra)。 順次 反復 分岐 21 © 2012年 東京工科大学 Hiroyuki Kameda 順次 反復 分岐 S=S+1 X = f(S, 5) S = g(X) + S © 2012年 東京工科大学 Hiroyuki Kameda 22 問題 1. C言語の特徴を、Javaなどの他の言語と比 較して述べよ。 23 © 2012年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン #include <stdio.h> main( ) { 本体 } 24 © 2012年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } 25 © 2012年 東京工科大学 Hiroyuki Kameda 3.プログラムの基本的なパターン Cのプリプロセッサ用 #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, & fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } Cのプログラム © 2012年 東京工科大学 Hiroyuki Kameda 26 3.プログラムの基本的なパターン #include <stdio.h> main( ) { double fahrenheit; /* 華氏 */ double celsius; /* 摂氏 */ scanf(“%f”, &fahrenheit); celsius = ( fahrenheit – 32 )*5.0/9.0; printf(“%f”, celsius); } 27 © 2012年 東京工科大学 Hiroyuki Kameda 中略 28 © 2012年 東京工科大学 Hiroyuki Kameda 5.構造化プログラミングと制御構造 29 © 2012年 東京工科大学 Hiroyuki Kameda 順次 反復 分岐 S=S+1 X = f(S, 5) S = g(X) + S 構造化プログラミング 30 © 2012年 東京工科大学 Hiroyuki Kameda 5.構造化プログラミングと制御構造 • 順次 • 反復 – for文 – while文 – do-while文 • 分岐 – – – – goto文 break文 continue文 switch文 & case文 31 © 2012年 東京工科大学 Hiroyuki Kameda For文 • Syntax: for(式1; 式2; 式3) 文 • 例: for( i=1; i <= 100; i++) s = s + i; i=1 i<=100 s=s+i i++ 32 © 2012年 東京工科大学 Hiroyuki Kameda Flow Chart こんな具合でした... • Javaの話と似ていませんでしたか? 33 © 2012年 東京工科大学 Hiroyuki Kameda 今度は、… • プログラミングの側面から • 開発手法の側面から 34 © 2012年 東京工科大学 Hiroyuki Kameda ソフトウェアのライフサイクル(1) 1. 2. 3. 4. 5. 6. 要求分析 設計 プログラミング デバッグ 評価 運用 ⇒再び1へ戻る 35 © 2012年 東京工科大学 Hiroyuki Kameda ソフトウェアのライフサイクル(2) 1. 2. 3. 4. 5. 6. 何(どんなもの)を作ればいいの? どう作ればいの? 作成作業そのもの(デバッグもやりながら) 本当にちゃんとできたのかな? 実際に使おう! ちょっと変更したいな。 36 © 2012年 東京工科大学 Hiroyuki Kameda ソフトウェア開発モデル • • • • • • • ウォーターフォール(water fall)モデル プロトタイピングによるソフトウェア開発 インクリメンタルモデルとイテラティブモデル スパイラルモデル データフローモデル アジャイルモデル モデル駆動型 =>一長一短あり 自主問題: ウォーターフォールモデル , スパイラルモデルおよび モデル駆動型アーキテクチャ(MDA)について調べよ。 © 2012年 東京工科大学 Hiroyuki Kameda 37 ソフトウェア開発過程の確立 現時点では、経験的・ 体験的にtry! 銀の弾丸はあるのだろうか? 38 © 2012年 東京工科大学 Hiroyuki Kameda 問題 • 「銀の弾丸」とはソフトウェア工学の分野では 何を意味しているのでしょうか?調べてみてく ださい。 39 © 2012年 東京工科大学 Hiroyuki Kameda 銀の弾丸とは • ソフトウェア開発の現場における諸問題に対 して、あまねく通用する万能解決策のこと。 • このような「万能な解決策(銀の弾丸)は存在 しない」という表現で、ソフトウェア開発の難し さを表現することがある。 40 © 2012年 東京工科大学 Hiroyuki Kameda 銀の弾丸はなくても… • あきらめてはいけない! – 1つの提案が「モデリング」とそれを記述・表現す るための「モデル記述言語」である。 (以下、その話をしましょう) 41 © 2012年 東京工科大学 Hiroyuki Kameda クールダウン問題 問題:プログラミングに必要な才能は何? 1.優れた数学者の論理性 2.エジソンのような工学(エンジニア)の才能 3.銀行員のような作業の正確さ 4.推理作家のような発想力 5.ビジネスマンの実務性 6.協働作業をいとわない性格 7.経営的な関心も理解できる能力 8.その他(具体的に: ) © 2012年 東京工科大学 Hiroyuki Kameda 42
© Copyright 2024 ExpyDoc