ソフトウェア開発

00-実践する、コツコツと、少しづつ

@shokos さんのブログのすすめからバトンを頂き、新卒準備カレンダー 2011春のエントリーをお届けします。自分がブログを書き始めたのは2007年です。ブランクはあるものの、業界経験は約11年ですから、まあ半分くらいの期間はブログを書いていることになりま…

ソフトウェア開発会社に入って学ぶべき最初の事

主に受託開発がメインのソフトウェア開発を行っている会社に入って学ぶべき最初の事です。よく、プログラミング言語を幾つか学べとか、技術的な部分が重要と言われています。しかし、個人的にはそれも大切かと思いますが、最近は開発プロセス・テスト技法・…

同値クラステスト

同値クラスとは「内部的に同じ値として扱う範囲」であり、同値クラステストはプログラマが自然と行っているテスト手法の1つです。 例えば、整数を1つ引数に取り20未満である場合にtrueを返す関数があったとします。この関数をテストする為の妥当な入力値と…

テストケースの入力値

ソフトウェアテストのテストケースでは、ある入力値に対して期待する結果となることを検証します。すべての入力値に対してテストケースを作成できたとすれば、完璧なテストとなるわけですが、現実問題としてすべての入力値に対するテストケースは網羅できま…

パーフェクトソフトウェア

完璧なソフトウェアは作ることができませんし、作ろうとしてもいけません。 これは、ソフトウェア開発のテストに関する最も重要で基本的な事でありながら、中々理解されない事です。他のどんなものでもそうですが、作り手が人間である以上は完璧な物を作るこ…

提案力とコミュニケーション

ソフトウェア開発に携わるならば、論理的に分析する能力は重要ですが、それと同等に表現力や提案力も重要です。ソフトウェア開発を行っていれば、個人で自分のためにソフトウェアを開発してるのでもない限りは、そのソフトウェアの特徴や売りなどを顧客・ユ…

ソフトウェア開発とテスト

ソフトウェアは形を持たないため、「ソフトウェアを定量的に評価する」という事が困難です。このため、ソフトウェア開発ではテストを通して、主に品質を評価しています。しかし、建物を作ると言っても超高層ビルから犬小屋まであるように、ソフトウェア開発…

テストのプロセス

というわけで、「はじめて学ぶ ソフトウェアのテスト技法」を読み直しているので、メモ*1。 テストとは? IEEE 標準規格 610.12-1990による定義。 ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、…

97-ステートに注目する

「プログラマが知るべき97のこと」の97個目のエピソードは、ステート(状態)に関する話です。学習を怠っていないプログラマであれば、「ステート」という言葉を聞いて「ステートマシン(図)」と「ステートパターン」などを連想すると思います。このエピソー…

96-テストは正確に、具体的に

「プログラマが知るべき97のこと」の96個目のエピソードは、ユニットテストに関する話です。 先にも書いたとおり、ユニットテストにおいては、実装コードの「偶然の仕様」への合致を確認するのではなく、コードの動きが本来の要求に合っているかを確認するこ…

95-ペアプログラミングと「フロー」

「プログラマが知るべき97のこと」の95個目のエピソードは、ペアプログラミングに関する話です。ペアプログラミングとは、文字通り2人1組でプログラミングをする事です。1つの事を2人でやるのですから、倍の時間を費やすことになると感じ、そんな非効率…

94-リンカは魔法のプログラムではない

「プログラマが知るべき97のこと」の94個目のエピソードは、リンカに関する話です。最近はJavaを初めとしてコンパイルは行われてもモジュール(ライブラリ)は動的に解決されたり、スクリプト言語のようにそもそも動的に実行される言語が多くをしめており、…

93-エラーを無視するな

「プログラマが知るべき97のこと」の93個目のエピソードは、エラーとエラーハンドリングに関する話です。完璧なシステムを作ることはできません。時にはプログラム上の問題ではなく外的要因でも発生する可能性があるエラーは厄介なものです。しかし、エラー…

92-顧客の言葉はそのまま受け取らない

「プログラマが知るべき97のこと」の92個目のエピソードは、顧客とのコミュニケーションに関する話です。ソフトウェア開発に慣れてきて自分がどんなソフトウェアを作れるかという事が解ってくると陥りがちな事に、「顧客が要求を提示してくれない」と勘違い…

91-良いプログラマになるには

「プログラマが知るべき97のこと」の91個目のエピソードは、良いプログラマの条件に関する話です。きのこ本に書かれているエピソードは97+10本ありますが、大きくテストに関する話とプログラマとしてどうあるべきかという話がかなりの割合を占めています。こ…

90-コードを見る人のためにテストを書く

「プログラマが知るべき97のこと」の90個目のエピソードは、テストに関する話です。きのこ本には本当に多くのテストに関するエピソードがあります。テストの書き方、目的、心構えなど様々なテストに関する重要なトピックがありますが、このエピソードでは「…

89-関数の「サイズ」を小さくする

「プログラマが知るべき97のこと」の88個目のエピソードは、関数の「サイズ」に関する話です。このエピソードで述べられている関数の「サイズ」とは、コードの量という意味ではなく、そのコードが表現している数学関数のサイズという意味です。関数というも…

88-コードは生涯サポートするつもりで書く

「プログラマが知るべき97のこと」の88個目のエピソードは、コードを書く時の心構えに関する話です。このエピソードでは、きのこ本では97の大切な事が書かれているが、共通して言えることは「気持ちの持ち方、さらに言えば、取り組む態度」が重要であると書…

87-プログラマとテスターが協力してできること

「プログラマが知るべき97のこと」の87個目のエピソードは、テストに関する話です。テストは、ソフトウェア開発で避けて通れない重要なプロセスです。しかし、テストというものは予想以上に難しいものです。プログラミングにたくさんの手法や考え方があるよ…

86-WETなシステムはボトルネックが見つかりにくい

「プログラマが知るべき97のこと」の86個目のエピソードは、DRYとパフォーマンスチューニングに関する話です。DRY(Don't Repeat Yourslef)は、きのこ本でも何回か登場している有名な原則で、システムの中で同じものが複数あることは避けるというものです。…

85-冗長なログは眠りを妨げる

「プログラマが知るべき97のこと」の85個目のエピソードは、ロギングに関する話です。ソフトウェア開発をしていく中で何かと面倒で優先度を低くされる事が多いのは、ロギングとエラーハンドリングでしょう。どちらもユースケースにおける基本シナリオを実装…

84-正しいアルゴリズムとデータ構造を選ぶ

「プログラマが知るべき97のこと」の84個目のエピソードは、アルゴリズムとデータ構造に関する話です。アルゴリズムとデータ構造といえば、プログラミングを学ぶ中で基礎中の基礎であったと言えます。ですが、プログラミング言語が高度に進化し、プログラマ…

83-UNIXツールを共にする

「プログラマが知るべき97のこと」の83個目のエピソードは、UNIXツールに関する話です。自分はUNIX(Linux)はある程度は使えるものの日常的に使っているわけではなく、UNIXツールに関するスキルはあまりありません。ホーム言語がJavaという事もあり、基本は…

82-他者への思いやりを意識したコーディング

「プログラマが知るべき97のこと」の82個目のエピソードは、コーディングとコミュニケーションに関する話です。他のエピソードでも何度か登場していますが、現在のプログラミングは孤独な作業ではありません。ほとんどの開発はチームで行い、自分の書いたコ…

81-エラーがエラーを相殺してしまう

「プログラマが知るべき97のこと」の81個目のエピソードは、不具合に関する話です。ソフトウェア開発では、可能な限り不具合を減らす為に様々なテストを行います。テストにはクラスやモジュール単位で行うユニットテストもあれば、最終的にユーザが受入を判…

80-1人より2人

「プログラマが知るべき97のこと」の80個目のエピソードは、ペアプログラミングに関する話です。従来のプログラミングと言えば、1人で黙々と集中して行うイメージが強いものでした。しかし、このエピソードにも書かれているように近年はプログラミング作業…

79-テストのないソフトウェア開発はあり得ない

「プログラマが知るべき97のこと」の79個目のエピソードは、テストに関する話です。きのこ本には97+10本のエピソードが収められていますが、id:t-wadaさんがTDDBC札幌でも話されていたようになんらかの形でテストに言及したエピソードはかなりの割合を占めて…

78-テストは夜間と週末に

「プログラマが知るべき97のこと」の78個目のエピソードは、ナイトリービルドに関する話です。近年、ハードウェアのコストは充分に下がりマルチコアが当たり前の時代です。一昔前では考えられないようなスペックのマシンが安価で入手できます。それに伴いビ…

77-偶然の仕様ではなく本物の仕様のためのテストを書く

「プログラマが知るべき97のこと」の77個目のエピソードは、テストに関する話です。自分にとって、このエピソードはきのこ本の中で最も重要で、今後実践していく課題の1つです。テストは、ソフトウェア開発を進めていく中で、避けられない一番の問題です。…

76-コード分析ツールを利用する

「プログラマが知るべき97のこと」の76個目のエピソードは、コードの静的チェックに関する話です。どんなプログラマであれ、プログラミング中にミスがなくなる事はありません。訓練を積むことでミスを減らすことは出来たとしてもゼロには出来ません。これは…