4-2- 応 C に関する知識 本カリキュラムでは C での OSS 開発において セキュリティを強化し 機能性や信頼性を向上するために必要となる様々な知識や 並 Ⅰ. 概要列処理による効率を考慮した技術 様々なライブラリを通じて可搬性や使用性を向上させる技術などを学習する 更に OSS のソースコ

Similar documents
4-4- 応スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語のうち 特に Ruby について学習し 応用的なアプリケーション開発の手法を習得する Ⅰ. 概要フレームワークによる Web アプリケーション開発やデータベース操作について学習する Ⅱ. 対象専門分野職種共通 Ⅲ.

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

6-2- 応ネットワークセキュリティに関する知識 1 独立行政法人情報処理推進機構

2-3- 基 Linux のシステム管理に関する知識 1 独立行政法人情報処理推進機構

Microsoft Word 基_シラバス.doc

1-1- 基 OSS 概要に関する知識 ソフトウェアの新たな開発手法となりソフトウェア業界で大きな影響力を持つようになったオープンソースについて学習する 本カリキュラム Ⅰ. 概要では オープンソースの登場から現在に至る発展の経緯や代表的なソフトウェアの特徴を理解する 講義の後半では実際にソフトウェ

6-3.OS セキュリティに関する知識 OS のセキュリティ機能として必要な機能と オープンソース OS とし Ⅰ. 概要てもっとも利用が期待される Linux のセキュリティ管理に関して 電子メール Web CGI DNS などの具体的な管理手法について学ぶ Ⅱ. 対象専門分野職種共通 Ⅲ. 受講

PowerPoint プレゼンテーション

講座内容 第 1 回オープンソースの理念 ( 講義 90 分 ) オープンソースという言葉の定義と概念を理解する あわせてオープンソースの基本的なライセンスを理 解する (1) オープンソースの登場と理念 1. オープンソースの定義 2. ネットスケープ社製品のソースコード公開 3. Open So

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

講座内容 第 1 回オープンネットワークの概念と仕組み ( 講義 90 分 ) 基本的なネットワークの構成及び伝送技術について大規模化 マルチプロトコル化を中心に技術の発展と 企業インフラへの適用を理解する その基本となっている OSI 7 階層モデルについて理解する (1) ネットワークの構成と機

PGRelief C/C++ 強化ポイント説明書

Microsoft PowerPoint - OS07.pptx

講座内容 第 1 回ネットワークシステム運用の概要 ( 講義 90 分 ) ネットワーク運用管理の全体像と各運用管理作業の概要を理解する ネットワーク管理作業の重要性や注意点を理解する (1) ネットワーク運用管理の概要 1. ネットワーク運用管理の重要性 2. ネットワーク管理の全体像 3. イン

使用する前に

プログラミング基礎

2. ネットワークアプリケーションと TCP/IP 2.1. クライアント / サーバモデル TCP/IP プロトコルに従うネットワークアプリケーションの典型的モデルは, クライアント / サーバモデルである. クライアント / サーバモデルでは, クライアントからの要求に対してサーバがサービスを提

Using VectorCAST/C++ with Test Driven Development

Fortran 勉強会 第 5 回 辻野智紀

開発ツールのコラボレーション機能を検証する

LAMP スタック:品質およびセキュリティ

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

NetworkVantage 9

TFTP serverの実装

機能改善 4.1. テキスト型テスト問題の任意選択肢でイメージカタログを利用できるように対応しました 4.2. ユーザ情報の作成時や検索時のパフォーマンス改善を行いました 4.3. ユーザ情報作成時にブラウザのオートコンプリート機能に保存されているユーザ ID とパスワードが自動的に メールア ドレ

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ

POSIXプログラミング Pthreads編

4-1- 基 Java に関する知識 1 独立行政法人情報処理推進機構

PowerPoint プレゼンテーション

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

.NET テクノロジー概説 /WindowsAzure 入門 コード P-2 0:00~7:00 ( 休憩 時間含む ) 前提条件 Windows の操作経験 ( エクスプローラの操作 ファイルの操作 ) があること 最低開講人数 0 名.NET テクノロジー概説 /WindowsAzure 入門

サイト名

Cuoreテンプレート

モバイル統合アプリケーション 障害切り分け手順書

スライド 1

Microsoft Office Visioによる 施設管理について

DBMSリポジトリへの移行マニュアル

01-introduction.ppt

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

chapter 3 chapter 単純な HTTP クライアント / サーバ 61 HTTP クライアントの実装 62 HTTP サーバの実装 Chapter2 のまとめ 67 UDP 3-1 UDP の特徴とプログラミング UDP のプログラミング 71

5-1- 応開発フレームワークに関する知識 開発フレームワークを利用した Web アプリケーションの実装方法を理 Ⅰ. 概要解する MVC や OR マッピング DIxAOP といった技術を理解する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 5-1- 基開発フレームワークに関す

Python によるジオプロセシング スクリプト入門

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

Insert your Title here

1

D5-2_S _003.pptx

SystemDirector Developer's Studio(V3.2) 適用ガイド

Cisco ViewMail for Microsoft Outlook クイックスタートガイド (リリース 8.5 以降)

AquesTalk プログラミングガイド

SOC Report

プレポスト【問題】

BOM for Windows Ver

4-3- 基 C++ に関する知識 オープンソースシステムのソースを解読する上で C++ の知識は必須であるといえる 本カリキュラムでは まずオブジェクト指向に関する Ⅰ. 概要理解を深め クラスの扱い方について学習し STL を使用してアルゴリズムとデータ構造を実装する方法を学習する Ⅱ. 対象専

b

TopSE並行システム はじめに

D-View 6.0 Firmware Release Notes

PowerPoint Presentation

目次 研究目的 背景システム開発について実験および評価結論

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

Oracle SQL Developer Data Modeler

WEBシステムのセキュリティ技術

セキュリティ設定ツールインストール 桐セキュリティ設定ツールインストール C: K3 KIRIV9 Security フォルダ内 KISECURE をダブルクリックして設定を開始します 初回セキュリティ設定ツールを起動時はウィザート形式で設定します メッセージにしたがって初期設定を行ってください セ

PowerPoint プレゼンテーション

FTP_RW_ProgramDescription_jp_V100

◎phpapi.indd

メール設定

Python によるジオプロセシング スクリプト入門

スライド 1

Sylpheed とは オープンソースのメールソフト ライセンスは GPL+LGPL 高速 軽量 高機能 高い操作性 高い信頼性 導入が容易 マルチプラットフォーム Windows, Linux, etc. 多言語対応 ( 約 30 ヶ国語 )

MMUなしプロセッサ用Linuxの共有ライブラリ機構

PowerPoint プレゼンテーション

Microsoft Word - WebClass Ver 9.08f 主な追加機能・修正点.docx

WebOTXプロファイラを使用したメモリリーク調査方法

1013  動的解析によるBOTコマンドの自動抽出

在学生向けメールサービス

CLUSTERPRO for Linux PostgreSQL HowTo

Source Insight

Microsoft Visual Studio 2010 Professional Data Sheet

インテル(R) Visual Fortran コンパイラ 10.0

Microsoft Word - ModelAnalys操作マニュアル_

Microsoft PowerPoint - KanriManual.ppt

939061j

FTPサーバーへのアクセス権限設定

ServerView Resource Orchestrator V3.0 ネットワーク構成情報ファイルツール(Excel形式)の利用方法

プログラミングI第10回

memo

べきでない悪意のあるSQL 文が攻撃者から入力された場合 データベースで実行される前にSQL 文として処理されないよう無効化する必要がありますが ( 図 1 1) 無効化されずにデータベースで実行された場合 データベースの操作が可能となります ( 図 1 2) 本脆弱性を悪用するとデータベース接続ユ

マニュアル訂正連絡票

情報漏洩対策ソリューション ESS REC のご説明

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

DocuPrint 4050 PostScript ユーザーズガイド

MxLogonサーバサイドツールキット用UI

目次 1 VirtualBoot for Hyper-V とは バックアップを実行するマシンの設定 確認すべきこと SPX によるバックアップ VirtualBoot for Hyper-V を実行するマシンの設定 確

Microsoft Word - ManagerIPChange.doc

VBコンバータ利用方法

VPN 接続の設定

Transcription:

4-2- 応 C に関する知識 1

4-2- 応 C に関する知識 本カリキュラムでは C での OSS 開発において セキュリティを強化し 機能性や信頼性を向上するために必要となる様々な知識や 並 Ⅰ. 概要列処理による効率を考慮した技術 様々なライブラリを通じて可搬性や使用性を向上させる技術などを学習する 更に OSS のソースコードリーディングによる技能向上方法を学習する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 4-2- 基 C に関する知識 を受講済みであるこ受講前提と または 同等の知識を有すること プロセスと仮想アドレス空間に関して理解する アーキテクチャとセキュリティに関する手法を理解する テストとデバッグの意義と手法に関して理解する ライブラリの概念や 構築方法と利用方法を理解する 並列処理の概念と利用方法を理解する Ⅳ. 学習目標 ネットワークプログラミングの概要と実装方法を理解する データベースプログラミングの意義と構築方法を理解する GUI ライブラリやその他開発ライブラリの利用方法を理解する ポータビリティと国際化の概要と手法を理解する コードリーディングの意義と手法を理解する C 実践プログラミング Ⅴ. 使用教科書 Steve Oualline 著 オライリー ジャパン刊教材等その他 オリジナル教材やソースコードを教材として用いる Ⅵ. 習得スキル講義終了後の受講レポート 定量アンケート 知識確認ミニテスト の評価方法演習問題の取り組み状況を総合的に判断して評価を行う Ⅶ. カリキュラムレベル 3( 応用 ) 第 1 回 ~ 第 12 回の構成 2

講座内容 第 1 回メモリアロケートの詳細 ( 講義 + ワークショップ 90 分 ) プロセスと仮想アドレス空間の概念について理解する 更に 仮想アドレス空間を構成する 5 つの領域の 特徴を学習し メモリアロケートの詳細内容を理解する (1) メモリアロケートの概要 1 プロセスとは ( プログラムの実行単位 プロセス ID など) 2 仮想アドレス空間とは ( 物理メモリとの対応 プログラム間での干渉防止 など ) (2) 仮想アドレス空間の構成 1 テキスト領域の特徴 ( 機械語命令 読み取り専用 存続期間 など ) 2 データ領域の特徴 ( 初期化指定あり 静的変数 グローバル変数 存続期間 など ) 3 BSS 領域の特徴 ( 初期化指定なし 静的変数 グローバル変数 0 で初期化 存続期間 など ) 4 ヒープ領域の特徴 ( 動的確保 存続期間 など ) 5 スタック領域の特徴 ( 自動変数 ブロック 存続期間 など ) 6 サンプルプログラム 第 2 回アーキテクチャとセキュリティ ( 講義 + ワークショップ 90 分 ) CPU のアーキテクチャが異なることを考慮しなければならない項目について学習する また メモリを管理 する上でセキュリティに注意しなければならない事項を理解する (1) アーキテクチャ 1 アーキテクチャの違いによる諸問題 (CPU の違い ) 2 データのサイズ (32 ビット CPU 64 ビット CPU long 型 pointer 型 など ) 3 エンディアン ( ビッグエンディアン リトルエンディアン バイエンディアン など ) 4 サンプルプログラム (2) セキュリティ 1 変数とセキュリティ ( 変数のバインド ) 2 バッファオーバーラン ( 不正な参照 不正な書き換え scanf strcpy など) 3 バッファアンダーラン ( 不正な参照 不正な書き換え ポインタの減算 など ) 4 メモリリーク ( 動的領域の解放忘れ メモリリークの累積 パフォーマンスの低下 malloc など) 5 二重解放 ( 再利用領域の不正解放 free など) 6 サンプルプログラム 3

第 3 回テストとデバッグ ( 講義 + ワークショップ 90 分 ) OSS の品質保証活動を支援するテストとデバッグの手順を理解する また OSS の単体テストを自動化す るフレームワーク カバレジ測定ツール デバッグツールの使用方法を学習する (1) テスト 1 テストの概要 ( 品質保証活動 ユニットテスト カバレジ OSS のテストツール など ) 2 ユニットテストの手法 ( テスト対象 テストケース テスト環境 回帰テスト カバレジ測定 など ) 3 ユニットテスト自動化ツール (CUnit Cutter など) 4 カバレジ測定ツール (gcov lcov など) 5 サンプルプログラム (2) デバッグ 1 デバッグの概要 ( テストとデバッグ テストケースの改修 OSS のデバッグツール など ) 2 デバッグの手順 ( エラー内容 再現手順 発生箇所 原因 修正方法 修正実施 など ) 3 シンボリックデバッガ (gdb xxgdb など) 4 メモリエラー検出ツール (ElectricFence MEMWATCH など) 5 サンプルプログラム 第 4 回ライブラリの構築と利用 ( 講義 + ワークショップ 90 分 ) 汎用性と再利用性といったライブラリの概念と 静的ライブラリや共有ライブラリの特徴を理解する また それぞれのライブラリによって異なる利用方法や ライブラリの構築方法を学習する (1) ライブラリ 1 ライブラリとは ( 汎用的な関数群 再利用 形式 など ) 2 静的ライブラリの特徴 ( コンパイル時にリンク 構築容易 プログラムの容量大 など ) 3 共有ライブラリの特徴 ( 実行時リンク 軽量 配置 共有ライブラリの更新 動的ロード など ) (2) 静的ライブラリの構築と利用 1 構築方法 (gcc のオブジェクトファイル生成用オプション ar の使用方法 拡張子 など ) 2 利用方法 (gcc でのコンパイル方法 ) 3 サンプルプログラム (3) 共有ライブラリの構築と利用 1 構築方法 (gcc のオプション soname バージョン番号 など) 2 インストール方法 ( 配置場所の指定 シンボリックリンク など ) 3 利用方法 (gcc の共有ライブラリ指定オプション など ) 4 サンプルプログラム 4

第 5 回並列処理 ( 講義 + ワークショップ 90 分 ) 並列処理と並行処理についての概念を学習し 逐次処理と並列処理の違いを理解する 更に 並列処理 の技法として マルチプロセスとマルチスレッドの実装方法を学習する (1) 並列処理 1 並列処理の概念 ( デュアルコアとシングルコア 並列処理と並行処理 SMP など) 2 マルチプロセス ( 複数のプロセスと仮想アドレス空間 プロセス間の通信 など ) 3 マルチスレッド ( プロセスとスレッド 同一仮想アドレス空間 スレッドセーフ など ) (2) マルチプロセスの実装 1 プロセスの生成 (fork 親子関係 自プロセスの複製 など) 2 プロセスの制御 ( プロセス ID 制御の分岐 など) 3 プロセスの待機と終了 (wait _exit 子プロセスの回収 ゾンビプロセス など) 4 サンプルプログラム (3) マルチスレッドの実装 1 スレッドの生成 (pthread_create メインスレッド スレッド関数 親子関係 など) 2 スレッドの制御 ( グローバル変数や静的変数の問題 スレッドセーフ関数 など ) 3 スレッドの待機と終了 (pthread_join return pthread_exit リソース解放 など) 4 サンプルプログラム 第 6 回ネットワーク ( 講義 + ワークショップ 90 分 ) TCP/IP でのクライアントプロセス サーバプロセスといった ネットワークプログラミングの概要を理解し ソケット利用したネットワークプログラミングの実装方法を学習する (1) ネットワークプログラミング 1 ネットワークプログラミングとは (TCP/IP IP アドレス クライアント サーバ など ) (2) ソケット 1 ソケットとは ( ソケット API セッション管理 ストリーム など) 2 ソケットの生成と解放 (socket bind ポート番号 close など) 3 サーバ側での同期の確立 ( 接続要求受付開始 listen 同時接続可能数 accept 待機 など) 4 クライアント側での同期の確立 ( 接続要求 connect など) 5 データの送受信 ( ストリームに書き出し ストリームから読み込み など ) 6 サンプルプログラム 5

第 7 回データベース ( 講義 + ワークショップ 90 分 ) データベースシステムの構成要素として アプリケーションと DBMS の関連性などについて理解する また C によるデータベースプログラミングの実装として DBMS ライブラリの使用方法を学習する (1) データベースプログラミング 1 データベースプログラミングの概要 ( 大量で複雑なデータ DBMS 安全性 効率性 など) 2 様々な DBMS(PostgreSQL MySQL SQLite ほぼ共通の SQL 文 CRUD 操作 など ) 3 C によるデータベースプログラミングの特徴 ( 処理速度 エンベデッド系 エンタプライズ系 など ) (2) DBMS ライブラリの使用 1 SQLite3 の導入 ( パッケージマネージャでのインストール など ) 2 データベースハンドルの取得 (sqlite3_open データベース名 など) 3 データベースの CRUD 操作 (sqlite3_exec SQL 文指定 コールバック関数 並列処理 など ) 4 データベースハンドルの解放 (sqlite3_close など) 5 サンプルプログラム 第 8 回 GUI( 講義 + ワークショップ 90 分 ) GUI アプリケーション開発の概要を理解する 更に GTK+ の導入方法 基本的な構造 特徴について学習 し GTK+ で使われるシグナルとコールバックの概念を理解する (1) GTK+ 1 GTK+ の概要 (GIMP GLib GDK シグナルとコールバック など) 2 GTK+ の導入 ( パッケージマネージャでのインストール など ) (2) Glade 1 Glade の概要 ( インタフェースビルダ コールバック関数のスケルトン など ) 2 Glade の導入 ( パッケージマネージャでのインストール など ) (3) 代表的なウィジェット 1 ウィジェットとは ( ウィンドウ ボタン メニュー コンテナ など ) 2 ウィンドウ ウィジェット (GtkWindow GtkDialog など) 3 ボタン ウィジェット (GtkButton GtkToggleButton など) 4 メニュー ウィジェット (GtkMenu GtkMenuItem など) 5 コンテナ ウィジェット (GtkTable GtkToolbar など) 6 サンプルプログラム 6

第 9 回演習 Ⅰ( ネットワーク マルチスレッド )( ワークショップ 90 分 ) ソケット API を使用してチャットを行うクライアントとサーバを作成し マルチスレッドの利用方法や 各種ラ イブラリの使用方法を学習する (1) 演習の要件 1 ソケット API を使用して同期を確立する 2 受信したメッセージをターミナルに表示する 3 ターミナルでユーザのメッセージ入力を受け付ける 4 入力されたメッセージを相手に送信する 5 EOF が入力されるまで 2から4を繰り返す 6 発展演習 : 送受信のブロッキングをマルチスレッドで回避する 7 発展演習 : 送受信のブロッキングを select で回避する 第 10 回演習 Ⅱ(GUI データベース )( ワークショップ 90 分 ) GUI でデータベースを操作するアプリケーションを作成することで シグナルの利用方法や 各種ライブラ リの使用方法を学習する (1) 演習の要件 1 データベースは SQLite3 を使用する 2 GUI の構築には GTK+ と Glade を使用する 3 ユーザの SQL 文をテキスト ウィジェットに入力する 4 実行のボタン ウィジェットが押されると SQL 文を実行する 5 SQL 文の実行結果をリスト ウィジェットで出力する 6 終了のボタン ウィジェットが押されると プログラムを終了する 7

第 11 回ポータビリティと国際化 ( 講義 + ワークショップ 90 分 ) OSS のポータビリティとして LSB の概要と 国際化として OpenI18N の概要を理解する 更に C における国 際化の手法として ロケールの設定にあわせた変換方法を学習する (1) ポータビリティ 1 ポータビリティの概要 ( 異なる環境での動作 移植性 LSB 国際化 など) 2 LSB( 標準規格 異なるディストリビューションでの動作 テストスイート など ) (2) 国際化 1 国際化の概要 ( 国や地域によって異なるものへの対応 OpenI18N など) 2 GNU gettext とは ( ソースコードを国際化 ロケール設定で文字列切り換え など ) 3 ソースコードの準備 (gettext のマクロ定義 setlocale textdomain bindtextdomain など) 4 po ファイルの作成 (xgettext pot ファイル po ファイル編集 msgid msgstr など) 5 mo ファイルの作成 (msgfmt po ファイルを mo ファイルにコンパイル ドメイン名 など ) 6 mo ファイルの配置 ( コード内で指定したディレクトリに配置 ロケールの切り換え など ) 7 サンプルプログラム 第 12 回コードリーディング ( 講義 + ワークショップ 90 分 ) OSS を読み解くことの意義を理解し コードリーディングに有効な手法を学習する 更に解析に有用な統合 開発環境やツール類を学習する (1) ソースコードリーディング 1 ソースコードリーディングの概要 ( 市場で使用されている技術 改善策の考察 など ) (2) コード解析手法 1 動的解析とは ( デバッガの利用 プロファイラの利用 など ) 2 静的解析とは ( テキストエディタの利用 クロスリファレンサの利用 など ) 3 統合開発環境の活用 (Eclipse など) (3) 解析手順 1 全体像の把握 ( 実行して全体の動作を概観 フォルダ構成 など ) 2 開発意図の理解 ( 開発者ドキュメント 変更履歴 バージョン管理 バグトラッキング など ) 3 詳細分析 ( 検索 トレース データ構造の変化 処理の流れ 動作予測 問題点の仮説 など ) (4) 読みやすいコード 1 コーディング規約 ( 可読性 保守性 命名規則 コメントのルール など ) 2 サンプルソース 以上 8