marunomaruno-memo

marunomaruno-memo

Doxygen

2007年03月13日 | C / C++
Doxygen
http://www.doxygen.jp/

Let’s use doxygen!
http://www.fides.dti.ne.jp/~oka-t/doxygen.html

doxygenのメモ
http://hp.vector.co.jp/authors/VA014436/prg_memo/tools/t002.html

コード構造を視覚化せよ!!(Graphviz & Doxygen)
http://skazami.web.infoseek.co.jp/tools/Graphviz_Doxygen.htm

Doxygenを使ってみる(1)
http://freepg.fc2web.com/tool/topic_doxygen_001.html

Doxygenを使ってみる(2)
http://freepg.fc2web.com/tool/topic_doxygen_002.html

Graphviz - Graph Visualization Software
http://www.graphviz.org/
graphviz-2.12.exe

Graphviz
http://homepage3.nifty.com/kaku-chan/graphviz/index.html


Eclipse CDT

2006年12月17日 | C / C++
Eclipse CDT
http://csx.jp/~marunomaruno/cdt01.html?c=appendix#00


組込みソフトウェア開発における品質向上の勧め(コーディング編)

2006年11月27日 | C / C++
組込みソフトウェア開発における品質向上の勧め(コーディング編)
http://www.seshop.com/detail.asp?pid=5998



  編: 独立行政法人情報処理推進機構 ソフトウェア・エンジニアリング・センター


  商品番号:109500
ISBN:4798109509
サイズ:A5
ページ:48
販売価格:\315(本体\300 消費税5%)
発売日:2005/05/20
出版社:株式会社翔泳社


1 はじめに

背景と問題提起、ソフトウェア品質の重要性

2 ソフトウェア品質とは

ソフトウェアバグと品質
ソフトウェア品質特性モデル
ソフトウェア品質低下の原因
組込みソフトウェア特有の品質

3 ソフトウェア品質向上の考え方

設計品質の向上
ソースコード品質の向上
V&Vによる品質向上
ソフトウェア品質関連の規格と利用方法

4 ソースコード品質向上のための技術

ソースコードの標準化
ソースコードの再利用
ソースコードの定量評価とコードレビュー

5 コーディング作法

コーディング作法/規約とは
利用可能なコーディング作法/規約
コーディング作法/規約の上手な利用方法
SEC版コーディング作法の概要
付録 SEC版コーディング作法の例


組込みソフトウェア開発向けコーディング作法ガイド[C言語版]

2006年11月27日 | C / C++
組込みソフトウェア開発向けコーディング作法ガイド[C言語版]
http://www.seshop.com/detail.asp?pid=7066&mode=spec


  編: 独立行政法人情報処理推進機構 ソフトウェア・エンジニアリング・センター


  商品番号:111890
ISBN:4798111899
サイズ:B5変
ページ:176
販売価格:\1,800(本体\1,714 消費税5%)
発売日:2006/05/31
出版社:株式会社翔泳社



Part 1 コーディング作法ガイドの読み方

1 概要
  1.1 コーディング作法とは
  1.2 コーディング作法の目的と位置づけ・想定利用者
  1.3 コーディング作法の特徴
  1.4 本ガイド利用に関する注意事項
2 ソースコード品質のとらえ方
  2.1 品質特性
  2.2 品質特性と作法・ルールの考え方
3 本ガイドの利用方法
  3.1 本ガイドの利用シーン
  3.2 新規コーディング規約の作成
  3.3 既存コーディング規約の充実
  3.4 プログラマの研修、独習のための学習教材

Part 2 組込みソフトウェア向けコーディング作法:作法表

作法表の読み方
作法表中の用語
組込みソフトウェア向けコーディング作法
  信頼性
  保守性
  移植性
  効率性

Part 3 組込みソフトウェアにありがちなコーディングミス

組込みソフトウェアにありがちなコーディングミス
  1 意味のない式や分
  2 誤った式や分
  3 誤ったメモリの使用
  4 論理演算の勘違いによる誤り
  5 タイプミスによる誤り
  6 コンパイラによってはエラーにならないケースがある記述

付録

付録 A 作法・ルール一覧
付録 B C言語文法によるルール分類
付録 C 処理系定義文書化テンプレート


CUnit for Mr.Ando.

2006年11月05日 | C / C++
■CUnit

CUnit は、 C / C++ プログラムの単体テストを行うツールです。

■CUnit

CUnit for Mr.Ando.
http://park.ruru.ne.jp/ando/work/CUnitForAndo/html/index_ja.html

■インストール

CUnitForAndo.tar.gz を展開します。

./CUnitForAndo/CUnitForAndo -- 本体.
./CUnitForAndo/easySample -- 簡単なサンプル.
./CUnitForAndo/Sample1/test
./CUnitForAndo/Sample1/test1
./CUnitForAndo/Sample1/test2
./CUnitForAndo/Sample1/real -- サンプル1.
./CUnitForAndo/Sample1/test
./CUnitForAndo/Sample2/real -- サンプル2.
./CUnitForAndo/Sample2/test
./CUnitForAndo/Sample3/real -- サンプル3.
./CUnitForAndo/Sample3/test
./Makefile -- 圧縮とテスト用.
./README.txt -- ライセンス.
./CUnitForAndo/html



■CUnitForAndo の使用法

1. ソースファイル

---- sq.c ----------------------------------------------
1
2 /** 被テスト関数 */
3 int sq(int a) {
4 return a * a;
5 }
-----------------------------------------------------------

この関数をテストします。


2. テスト・ドライバーの準備

---- sq_test.c ------------------------------------------
1 #include <stdio.h>
2 #include <testRunner.h>
3
4 int sq(int);
5 static unsigned int test01(void);
6 static unsigned int test02(void);
7 static unsigned int test03(void);
8
9 /** Main function. */
10 int main(void) {
11 testRunner(test01);
12 testRunner(test02);
13 testRunner(test03);
14 return 0;
15 }
16
17 /** test case */
18 unsigned int test01(void) {
19 TEST_ASSERT_EQUALS(0, sq(0));
20 return 0;
21 }
22
23 unsigned int test02(void) {
24 TEST_ASSERT_EQUALS(1, sq(1));
25 return 0;
26 }
27
28 unsigned int test03(void) {
29 TEST_ASSERT_EQUALS(2, sq(2)); // これは誤りになる
30 return 0;
31 }
-----------------------------------------------------------

■テストの実行

1. コンパイル+連係編集

ソースファイルは、CUnitForAndo をインストールしたディレクトリーとは別にあります。

$ gcc -c sq.c

$ gcc -ggdb -Wall -I../CUnitForAndo/CUnitForAndo/include
-I../CUnitForAndo/CUnitForAndo/include -c sq_test.c

$ gcc -ggdb -Wall -I../CUnitForAndo/CUnitForAndo/include
-I../CUnitForAndo/CUnitForAndo/include -c testRunner.c
# なお、testRunner.c もコンパイル/リンクする必要があります。

$ gcc sq.o sq_test.o testRunner.o

(注)必要に応じて、インクルード・ファイルの位置を変えてください。


2. テスト

$ ./a.out
OK (1 tests)
OK (1 tests)
sq_test.c:29: error: TestCaseError<0x00000002><0x00000004>
NG (now 0 ok...)


■その他の情報

./CUnitForAndo/html を参照してください。

Windows C

2006年10月13日 | C / C++
■Visual C++ 2005 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/

■Visual C++ Develop Center
http://www.microsoft.com/japan/msdn/visualc/

■Visual C++ Express Edition フォーラム
http://forums.microsoft.com/MSDN-JA/ShowForum.aspx?ForumID=188&SiteID=7

■PlatformSDKのインストール方法↓
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

■Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

■猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/

■Visual C++
http://laboratory.sub.jp/c++/index.html

■Visual C++の勉強部屋
http://homepage3.nifty.com/ishidate/vcpp.htm

■Visual C++
http://homepage1.nifty.com/MADIA/vc/index.html

■Visual C++ 入門 (MFC)
http://mail2.nara-edu.ac.jp/~asait/visual_cpp/intro_cpp.htm


Resource Standard Metrics

2006年04月22日 | C / C++
Resource Standard Metrics
C/C++, Java and C# Metrics
Code Analysis for Code Reviews and Acceptance
Source Code Metrics for CMMI and ISO 9001
http://msquaredtechnologies.com/m2rsm/index.htm

Funco
A Functional Cohesion Software Measurement Tool for C Programs
http://www.cs.colostate.edu/~bieman/funco.html

Scientific Toolworks, Inc.
http://www.scitools.com/

http://www.xlsoft.com/jp/products/rsm/




EclipseではじめるC

2006年03月03日 | C / C++
EclipseではじめるC
http://www.seshop.com/detail.asp?pid=6709

EclipseではじめるC



  著: NRIラーニングネットワーク株式会社


  商品番号:110320
添付:CD-ROM 1点
ISBN:4798110329
サイズ:B5変
ページ:272
販売価格:\2,079(本体\1,980 消費税5%)
発売日:2006/02/01
出版社:株式会社翔泳社


TRY 0 Eclipseでプログラミングをはじめよう!

インストール Eclipseをインストールしてみよう

TRY 1 はじめの一歩~プログラマへの道~

基本 簡単なプログラムを体験してみよう
応用 キーボードから入力した文字を読み取るプログラムを作ってみよう
練習問題 1
練習問題 2

TRY 2 カンタン計算プログラム

基本 和、差、積、商を求めるプログラムを作ってみよう
応用 計算方法を指定して必要な計算だけしてもらうプログラムを作ってみよう
練習問題 1
練習問題 2

TRY 3 あなたの星座は?

基本 誕生日から星座を割り出すプログラムを作ってみよう
応用 星座別の性格診断プログラムを作ってみよう
練習問題 1

TRY 4 数あてゲーム

基本 数あてプログラムを作ってみよう
応用 ビンゴするまでの回数を表示するプログラムを作ってみよう
練習問題 1
練習問題 2

TRY 5 ひとクラス何人いるの?

基本 ひとクラスの人数を計算するプログラムを作ってみよう
応用その1 関数を作ってみよう
応用その2 ポインタを使った関数を作ってみよう
練習問題 1
練習問題 2

TRY 6 合格者はだれ?

基本 5人分の点数を配列で管理するプログラムを作ってみよう
応用 5人分の名前も配列で管理するプログラムを作ってみよう
練習問題 1
練習問題 2

TRY 7 成績をキチンと管理

基本 1人分の名前と点数をファイルに保存するプログラムを作ってみよう
応用 ファイルに保存した名前と点数を読み込んでみよう
練習問題 1
練習問題 2

TRY 8 成績をキチンと管理(チャレンジ編)

基本 10人分の成績データをまとめて管理するプログラムを作ってみよう
応用 保存したデータを読み込むプログラムを作ってみよう
練習問題 1
練習問題 2

Additional TRY WideStudioでGUIプログラミングを体験してみよう

GUIプログラム入門
インストール WideStudioをインストールしてみよう
GUI画面の作成 WideStudioでボタン付きのウィンドウを作ってみよう
プログラミング ボタンにプログラムを記述してみよう


CppUnitによるXP実践テスト技法

2006年02月04日 | C / C++
CppUnitによるXP - eXtreme Programming - 実践テスト技法

すでに絶版
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0571-1

著 者: 大月美佳
定 価: 2,415円 (本体 2,300円)
ISBNコード: 4-7980-0571-1
初版発売日: 2003/07/11
判 型: A5
色 数: 1色
ページ数: 304
CD/DVD: 無し

サポートページ
http://www.mikamama.com/CppUnitBook/

第1章 テスト駆動型開発のススメ
1.1 テストって何?
1.1.1 一般的なソフトウェア・テスト
1.1.2 この本で対象とするテスト
1.1.3 テストケース
1.2 なぜテストが必要なのか
1.2.1 このバグはどこからきたの?
1.2.2 作り変えられない!
1.3 テスト駆動型開発って何?
1.3.1 テスト駆動型開発の流れ
1.3.2 なぜテストを先に書かねばならないか
1.3.3 xUnitとテスト駆動型開発
1.4 それで結局何が嬉しいの?

第2章 CppUnitを使ってみよう
2.1 CppUnitを導入する前に
2.1.1 対象とする環境
2.1.2 対象とするCppUnit
2.1.3 対象とするCppUnitのバージョン
2.2 CppUnitをインストールしてみよう
2.2.1 CppUnitをダウンロードしよう
2.2.2 GNU C++でのインストール
2.2.3 SRPMからのインストール
2.2.4 Visual C++でのインストール9)
2.3 サンプルコードを実行してみよう
2.3.1 サンプルコードの中身
2.3.2 GNU C++でのサンプル実行
2.3.3 SRPMでインストールした場合のサンプル実行
2.3.4 Visual C++でのサンプル実行
2.4 環境を整備するためのTIPS
2.4.1 GNU makeの設定
2.4.2 Visual C++での初期設定


第3章 ダミープロジェクトとXP
3.1 豆返しゲーム
3.1.1 要望を整理してみる
3.1.2 eXtreme Programming
3.1.3 eXtreme Programmingを採用する理由
3.2 計画ゲーム
3.2.1 ストーリーを書き出してみる
3.2.2 ストーリーの優先順位を決める
3.2.3 ストーリーをタスクに分割する
3.2.4 タスクを分配して見積もる
3.3 CRCカード
3.3.1 クラスを割り出す
3.3.2 シミュレートしてみる
3.4 XPのプラクティス
3.4.1 コーディング標準を決めておく
3.4.2 バージョン管理システムを使う


第4章 テスト駆動型開発をやってみる
4.1 クラスに対するテストクラスを作ろう
4.1.1 テストクラスのはじめの一歩
4.1.2 Boardクラス用テストクラスはじめの一歩
4.1.2 Boardクラス用テストクラスへのテストメソッド追加
4.1.3 もっと詳しく
4.2 状態保持についてテストを考えてみよう
4.2.1 Makefileを作っておこう
4.2.2 初期状態のテストを書く
4.2.3 リファクタリング
4.2.4 テストデータを増やしてみる
4.3 例外処理について考えてみる
4.3.1 宣言部と実装部の分離
4.3.2 例外のテストケースを考えてみる
4.3.3 CPPUNIT_TEST_EXCEPTIONを使ってみる
4.3.4 最終的な実装
4.4 タスクを追加してみる
4.4.1 責務からインターフェースを考える
4.4.2 他の置ける手について
4.4.3 toString()の導入
4.4.4 toString()を利用したテスト
4.4.5 白1手目のテスト
4.4.6 黒2手目のテスト
4.4.6 2個以上ひっくり返す
4.4.7 ボード端での挙動チェック
4.5 置き場判定についてテストを考えてみよう
4.5.1 8方向全てひっくり返せなかったとき
4.5.2 テストケースを考えてみる
4.5.3 おまけのテストケース
4.5.4 重複のテストケース
4.5.5 境界オーバーのテストケース
4.6 簡易UIを作ってみよう
4.6.1 SimpleUIクラスのCRCカード
4.6.2 SimpleUIクラス用テストクラスの準備
4.6.3 盤の状態更新を試みる
4.6.4 盤の状態と手番の出力
4.6.5 入力待ちと入力チェック
4.6.6 駆動部
4.6.7 SimpleBeanReversiGame
4.7 Visual C++ 6.0でのテスト
4.7.1 主プロジェクトBeanReversiGameの用意
4.7.2 テストプロジェクトTestMainの用意
4.7.3 TestMainにファイルを作成・登録していく
4.7.4 環境の違いによる挙動の違い
4.7.5 SimpleBeanReversiGameプロジェクトの追加


第5章 テスト駆動型開発まとめ
5.1 テスト駆動型開発のまとめ
5.1.1 テスト駆動型開発の流れ
5.1.2 インターフェースについて
5.1.3 TODOリストについて
5.1.4 テストケースについて
5.1.5 テスト記述直後の実装戦略について
5.1.6 リファクタリングについて
5.2 テスト駆動型開発用テンプレート
5.2.1 テストクラス用テンプレート
5.2.2 Main部分テンプレート
5.2.3 Makefileテンプレート
5.2.4 テンプレート自動生成について
5.3 (おまけ)CppUnitの高度な機能
5.3.1 GUIの利用
5.3.2 多様な出力形式
5.3.3 テストクラスのカテゴライズ


付録A リファレンス
A.1 クラス CppUnit::Test
publicなコンストラクタ、デストラクタ
publicなメンバ関数
A.2 クラス CppUnit::TestFixture
publicなコンストラクタ、デストラクタ
publicなメンバ関数
A.3 クラス CppUnit::TestCase
publicなコンストラクタ、デストラクタ
privateなコンストラクタ、デストラクタ
publicなメンバ関数
protectedなメンバ関数
privateなメンバ関数
privateなメンバデータ
A.4 ASSERTマクロ群
A.5 クラス CppUnit::TestSuite
publicなコンストラクタ、デストラクタ
privateなコンストラクタ、デストラクタ
publicなメンバ関数
privateなメンバ関数
privateなメンバデータ
A.6 TestFixture作成を支援するためのマクロ群
A.7 クラス CppUnit::TextUi::TestRunner
publicなコンストラクタ、デストラクタ
publicなメンバ関数
protectedなメンバ関数
protectedなメンバデータ
A.8 クラス CppUnit::Outputter
publicなコンストラクタ、デストラクタ
publicなメンバ関数
A.9 クラス CppUnit::TextOutputter
publicなコンストラクタ、デストラクタ
publicなメンバ関数
Protectedなメンバデータ
privateなメンバ関数
A.10 クラス CppUnit::CompilerOutputter
publicなコンストラクタ、デストラクタ
privateなコンストラクタ、デストラクタ
publicなメンバ関数
privateなメンバ関数
privateなメンバデータ
A.11 クラス CppUnit::XmlOutputter
publicなコンストラクタ、デストラクタ
privateなコンストラクタ、デストラクタ
publicなメンバ関数
privateなメンバ関数
privateなメンバデータ
A.12 クラス CppUnit::MfcUi::TestRunner
publicなコンストラクタ、デストラクタ
publicなメンバ関数
protectedなメンバ関数
protectedなメンバデータ


プログラミングの宝箱 アルゴリズムとデータ構造

2005年12月30日 | C / C++
プログラミングの宝箱 アルゴリズムとデータ構造
http://www.cmagazine.jp/books/takarabako/index.html

プログラミングの宝箱
アルゴリズムとデータ構造

紀平拓男・春日伸弥 著
376ページ
本体価格2,800円
2003年6月発行
ISBN 4-7973-2419-8

第1章 ソート
大量のデータを整理する
バブルソート
クイックソート
マージソート
ソートの「安定性」
そのほかのソート方法
最適なソートは?

第2章 サーチ
リニアサーチ
バイナリサーチ
数値配列以外への応用
超整理法?

第3章 リスト
データ構造?
いくつあるかわからないデータ
リスト登場
リストのサーチ
応用例――自己組織化探索

第4章 スタック&キュー
スタックとは?
スタックの実装
リストとスタック
スタックの利用例1――カッコの対応
スタック利用例2――簡単な数式の計算
キューとは?
キューとリスト
キューの利用例

第5章 再帰呼び出し
再帰呼び出しとは
再帰のしくみ
最大公約数を求める
開き直り数

第6章 ツリー構造
樹形図のように枝分かれ
ツリー構造
2分木(binary tree)
多数の子ノードをもつツリー

第7章 マップとハッシュ
キーから値をサーチする
2分木を使ったツリーマップ
スマートなハッシュマップ
ハッシュ値の決め方

第8章 浮動小数点型と数値計算
たかがfloat,されどfloat
誤差は油断大敵
複雑な方程式を解く

第9章 文字列検索
文字列を検索する
最も単純な文字列検索
検索のムダを省く(KMP法)
現実的に優れた方法(BM法)
文字列以外への応用

第10章 バックトラック法と幅優先探索
開き直って試行錯誤
バックトラック法
堂々めぐりと遠回り
幅優先探索法

第11章 動的計画法
分割統治法(トップダウン的な問題解決)
コイン問題の解法
ナップザック問題を動的計画法で解く
動的計画法に適している問題
バックトラック法と動的計画法の比較

第12章 アルゴリズムで遊ぶ~テンパズルに挑戦
4つの数字で10を作る
どのように解くか方針を立てる
逆ポーランド記法について
逆ポーランド記法を用いたアプローチ
まとめ